1/*- 2 * Copyright (c) 1994 Sean Eric Fagan 3 * Copyright (c) 1994 S�ren Schmidt 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * |
29 * $FreeBSD: head/sys/i386/ibcs2/imgact_coff.c 103128 2002-09-09 15:51:10Z robert $ |
30 */ 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/fcntl.h> 35#include <sys/imgact.h> 36#include <sys/kernel.h> 37#include <sys/lock.h> --- 346 unchanged lines hidden (view full) --- 384 if(scns[i].s_size) { 385 char *libbuf; 386 int emul_path_len = strlen(ibcs2_emul_path); 387 388 libbuf = malloc(MAXPATHLEN + emul_path_len, 389 M_TEMP, M_WAITOK); 390 strcpy(libbuf, ibcs2_emul_path); 391 |
392 for (j = off; j < scns[i].s_size + off;) { 393 long stroff, nextoff; |
394 char *libname; 395 |
396 nextoff = 4 * *(long *)(buf + j); 397 stroff = 4 * *(long *)(buf + j + sizeof(long)); |
398 |
399 libname = buf + j + stroff; 400 j += nextoff; 401 |
402 DPRINTF(("%s(%d): shared library %s\n", 403 __FILE__, __LINE__, libname)); 404 strcpy(&libbuf[emul_path_len], libname); 405/* XXXKSE only 1:1 in coff */ error = coff_load_file( 406 FIRST_THREAD_IN_PROC(imgp->proc), libbuf); 407 if (error) 408 error = coff_load_file( 409 FIRST_THREAD_IN_PROC(imgp->proc), --- 84 unchanged lines hidden --- |