Date: Fri, 15 Mar 1996 13:37:39 +0100 From: se@zpr.uni-koeln.de (Stefan Esser) To: John Polstra <jdp@polstra.com> Cc: current@freebsd.org Subject: Re: Elfkit-1.0.1 announcement Message-ID: <199603151237.AA01920@Sisyphos> In-Reply-To: John Polstra <jdp@polstra.com> "Re: Elfkit-1.0.1 announcement" (Mar 14, 20:19)
next in thread | previous in thread | raw e-mail | index | archive | help
On Mar 14, 20:19, John Polstra wrote: } Subject: Re: Elfkit-1.0.1 announcement } Andreas Klemm wrote: } } > I tried to build up elfkit but had big trouble to compile the } > patched libc (2.1.0). } > Are there any newer patches available? Best would be, if one could } > use -current's libc, then the header files certainly would fit } > better ... } } Yes, that's the plan, don't worry. We will be tracking -current soon. Well, thince I built it under -current last night, I thought I might just send my libc diffs for review. I tried to get everything merged into the THREAD code, but didn't actually build a library with thread support to test it ... Regards, STefan PS: Go into the libc directory and apply with patch -p1 < PATCHFILE diff -r -C2 libc/Makefile libc_elf/Makefile *** libc/Makefile Tue Feb 6 21:35:31 1996 --- libc_elf/Makefile Fri Mar 15 00:34:24 1996 *************** *** 6,9 **** --- 6,32 ---- # from CFLAGS below. To remove these strings from just the system call # stubs, remove just -DSYSLIBC_RCS from CFLAGS. + + PREFIX = /usr/local/elf + TARGET = i386-unknown-freebsdelf + ELFDIR = ${PREFIX}/${TARGET} + ELFBIN = ${PREFIX}/${TARGET}/bin + ELFLIB = ${PREFIX}/${TARGET}/lib + AR= ${ELFBIN}/ar + AS= ${ELFBIN}/as + CC= ${ELFBIN}/cc + CPP= ${ELFBIN}/cpp + LD= ${ELFBIN}/ld + RANLIB= ${ELFBIN}/ranlib + STRIP= # install runs /usr/bin/strip, which cannot handle ELF files + + LIBDIR = ${ELFLIB} + + CFLAGS += -g + LDADD += -soname libc.so.1 + INTERNALLIB = yes + NOMAN = noman + LINKS+= ${LIBDIR}/libc.so.${SHLIB_MAJOR}.${SHLIB_MINOR} ${LIBDIR}/libc.so.1 + LINKS+= ${LIBDIR}/libc.so.${SHLIB_MAJOR}.${SHLIB_MINOR} ${LIBDIR}/libc.so + LIB=c SHLIB_MAJOR= 3 *************** *** 13,18 **** CLEANFILES+=tags INSTALL_PIC_ARCHIVE= yes - PRECIOUSLIB= yes .include "${.CURDIR}/db/Makefile.inc" .include "${.CURDIR}/compat-43/Makefile.inc" --- 36,41 ---- CLEANFILES+=tags INSTALL_PIC_ARCHIVE= yes + .include "${.CURDIR}/elf/Makefile.inc" .include "${.CURDIR}/db/Makefile.inc" .include "${.CURDIR}/compat-43/Makefile.inc" *************** *** 61,64 **** --- 84,94 ---- sed "s;\([^:]*\):\([^(]*\)(\([^, )]*\)\(.*\);\3 \1 /^\2(\3\4$$/;" \ >> tags; sort -o tags tags + + lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} + @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) + @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} + @${LD} -shared \ + -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ + ${SOBJS} ${LDDESTDIR} ${LDADD} .include <bsd.lib.mk> diff -r -C2 libc/gmon/gmon.c libc_elf/gmon/gmon.c *** libc/gmon/gmon.c Tue May 30 07:40:34 1995 --- libc_elf/gmon/gmon.c Fri Mar 15 01:10:59 1996 *************** *** 45,49 **** --- 45,53 ---- #include <unistd.h> + #if defined(__ELF__) + extern char *minbrk asm (".minbrk"); + #else /* __ELF__ */ extern char *minbrk asm ("minbrk"); + #endif /* __ELF__ */ struct gmonparam _gmonparam = { GMON_PROF_OFF }; diff -r -C2 libc/i386/DEFS.h libc_elf/i386/DEFS.h *** libc/i386/DEFS.h Fri Aug 5 03:17:56 1994 --- libc_elf/i386/DEFS.h Fri Mar 15 00:34:25 1996 *************** *** 49,63 **** #endif #ifdef PROF #define ALTENTRY(x) _START_ENTRY \ ! .globl _/**/x; .type _/**/x,@function; _/**/x:; \ _MID_ENTRY \ ! call mcount; jmp 9f #define ENTRY(x) _START_ENTRY \ ! .globl _/**/x; .type _/**/x,@function; _/**/x:; \ _MID_ENTRY \ ! call mcount; 9: --- 49,84 ---- #endif + #if __STDC__ + #define _GLUE(a,b) a ## b + #else + #define _GLUE(a,b) a/**/b + #endif + + /* + * CNAME and HIDENAME manage the relationship between symbol names in C + * and the equivalent assembly language names. CNAME is given a name as + * it would be used in a C program. It expands to the equivalent assembly + * language name. HIDENAME is given an assembly-language name, and expands + * to a possibly-modified form that will be invisible to C programs. + */ + #if defined(__ELF__) /* { */ + #define CNAME(csym) csym + #define HIDENAME(asmsym) _GLUE(.,asmsym) + #else /* } { */ + #define CNAME(csym) _GLUE(_,csym) + #define HIDENAME(asmsym) asmsym + #endif /* } */ + #ifdef PROF #define ALTENTRY(x) _START_ENTRY \ ! .globl CNAME(x); .type CNAME(x),@function; CNAME(x):; \ _MID_ENTRY \ ! call HIDENAME(mcount); jmp 9f #define ENTRY(x) _START_ENTRY \ ! .globl CNAME(x); .type CNAME(x),@function; CNAME(x):; \ _MID_ENTRY \ ! call HIDENAME(mcount); 9: *************** *** 65,79 **** .globl x; .type x,@function; x:; \ _MID_ENTRY \ ! call mcount; jmp 9f #define ASENTRY(x) _START_ENTRY \ .globl x; .type x,@function; x:; \ _MID_ENTRY \ ! call mcount; 9: #else /* !PROF */ ! #define ENTRY(x) _START_ENTRY .globl _/**/x; .type _/**/x,@function; \ ! _/**/x: #define ALTENTRY(x) ENTRY(x) --- 86,100 ---- .globl x; .type x,@function; x:; \ _MID_ENTRY \ ! call HIDENAME(mcount); jmp 9f #define ASENTRY(x) _START_ENTRY \ .globl x; .type x,@function; x:; \ _MID_ENTRY \ ! call HIDENAME(mcount); 9: #else /* !PROF */ ! #define ENTRY(x) _START_ENTRY .globl CNAME(x); .type CNAME(x),@function; \ ! CNAME(x): #define ALTENTRY(x) ENTRY(x) diff -r -C2 libc/i386/SYS.h libc_elf/i386/SYS.h *** libc/i386/SYS.h Mon Jan 22 01:00:51 1996 --- libc_elf/i386/SYS.h Fri Mar 15 01:00:05 1996 *************** *** 62,66 **** #endif ! #define SYSCALL(x) 2: jmp cerror; ENTRY(x); lea SYS_/**/x,%eax; LCALL(7,0); jb 2b #define RSYSCALL(x) SYSCALL(x); ret --- 62,66 ---- #endif ! #define SYSCALL(x) 2: PIC_PROLOGUE; jmp HIDENAME(cerror); ENTRY(x); lea _GLUE(SYS_,x),%eax; LCALL(7,0); jb 2b #define RSYSCALL(x) SYSCALL(x); ret *************** *** 70,74 **** * private to the threaded library. */ ! #define PSYSCALL(x) 2: jmp cerror; ENTRY(_thread_sys_/**/x); lea SYS_/**/x,%eax; LCALL(7,0); jb 2b #else /* --- 70,74 ---- * private to the threaded library. */ ! #define PSYSCALL(x) 2: jmp HIDENAME(cerror); ENTRY(_GLUE(_thread_sys,x)); lea _GLUE(SYS_,x),%eax; LCALL(7,0); jb 2b #else /* *************** *** 79,84 **** #endif #define PRSYSCALL(x) PSYSCALL(x); ret ! #define PSEUDO(x,y) ENTRY(x); lea SYS_/**/y, %eax; ; LCALL(7,0); ret ! #define CALL(x,y) call _/**/y; addl $4*x,%esp /* gas fucks up offset -- although we don't currently need it, do for BCS */ #define LCALL(x,y) .byte 0x9a ; .long y; .word x --- 79,84 ---- #endif #define PRSYSCALL(x) PSYSCALL(x); ret ! #define PSEUDO(x,y) ENTRY(x); lea _GLUE(SYS_,y), %eax; LCALL(7,0); ret ! #define CALL(x,y) call _GLUE(SYS_,y); addl $4*x,%esp /* gas fucks up offset -- although we don't currently need it, do for BCS */ #define LCALL(x,y) .byte 0x9a ; .long y; .word x *************** *** 86,88 **** #define ASMSTR .asciz ! .globl cerror --- 86,88 ---- #define ASMSTR .asciz ! .globl HIDENAME(cerror) diff -r -C2 libc/i386/gen/modf.S libc_elf/i386/gen/modf.S *** libc/i386/gen/modf.S Mon Jan 23 02:27:05 1995 --- libc_elf/i386/gen/modf.S Fri Mar 15 00:34:31 1996 *************** *** 51,58 **** /* With CHOP mode on, frndint behaves as TRUNC does. Useful. */ .text ! .globl _modf ! .type _modf,@function ! _modf: pushl %ebp movl %esp,%ebp --- 51,61 ---- /* With CHOP mode on, frndint behaves as TRUNC does. Useful. */ + + #include "DEFS.h" + .text ! .globl CNAME(modf) ! .type CNAME(modf),@function ! CNAME(modf): pushl %ebp movl %esp,%ebp diff -r -C2 libc/i386/gen/setjmp.S libc_elf/i386/gen/setjmp.S *** libc/i386/gen/setjmp.S Mon Jan 22 01:00:53 1996 --- libc_elf/i386/gen/setjmp.S Fri Mar 15 01:01:14 1996 *************** *** 62,68 **** pushl $0 #ifdef _THREAD_SAFE ! call PIC_PLT(__thread_sys_sigblock) #else ! call PIC_PLT(_sigblock) #endif popl %edx --- 62,68 ---- pushl $0 #ifdef _THREAD_SAFE ! call PIC_PLT(CNAME(_thread_sys_sigblock)) #else ! call PIC_PLT(CNAME(sigblock)) #endif popl %edx *************** *** 88,94 **** pushl 24(%edx) #ifdef _THREAD_SAFE ! call PIC_PLT(__thread_sys_sigsetmask) #else ! call PIC_PLT(_sigsetmask) /* XXX this is not reentrant */ #endif popl %eax --- 88,94 ---- pushl 24(%edx) #ifdef _THREAD_SAFE ! call PIC_PLT(CNAME(_thread_sys_sigsetmask)) #else ! call PIC_PLT(CNAME(sigsetmask)) /* XXX this is not reentrant */ #endif popl %eax diff -r -C2 libc/i386/gen/sigsetjmp.S libc_elf/i386/gen/sigsetjmp.S *** libc/i386/gen/sigsetjmp.S Sat Feb 17 13:25:21 1996 --- libc_elf/i386/gen/sigsetjmp.S Fri Mar 15 01:00:54 1996 *************** *** 72,78 **** pushl $0 #ifdef _THREAD_SAFE ! call PIC_PLT(__thread_sys_sigblock) #else ! call PIC_PLT(_sigblock) #endif addl $4,%esp --- 72,78 ---- pushl $0 #ifdef _THREAD_SAFE ! call PIC_PLT(CNAME(_thread_sys_sigblock)) #else ! call PIC_PLT(CNAME(sigblock)) #endif addl $4,%esp *************** *** 100,106 **** pushl 24(%edx) #ifdef _THREAD_SAFE ! call PIC_PLT(__thread_sys_sigsetmask) #else ! call PIC_PLT(_sigsetmask) #endif addl $4,%esp --- 100,106 ---- pushl 24(%edx) #ifdef _THREAD_SAFE ! call PIC_PLT(CNAME(_thread_sys_sigsetmask)) #else ! call PIC_PLT(CNAME(sigsetmask)) #endif addl $4,%esp diff -r -C2 libc/i386/sys/Ovfork.S libc_elf/i386/sys/Ovfork.S *** libc/i386/sys/Ovfork.S Mon Jan 22 01:00:56 1996 --- libc_elf/i386/sys/Ovfork.S Fri Mar 15 00:57:38 1996 *************** *** 51,61 **** * */ ! .set vfork,66 ! .globl _vfork ! .type _vfork,@function ! _vfork: popl %ecx /* my rta into ecx */ ! movl $vfork, %eax LCALL(7,0) jb verror --- 51,61 ---- * */ ! .set HIDENAME(vfork),66 ! .globl CNAME(vfork) ! .type CNAME(vfork),@function ! CNAME(vfork): popl %ecx /* my rta into ecx */ ! movl $ HIDENAME(vfork), %eax LCALL(7,0) jb verror *************** *** 68,79 **** * Threaded version using __error(). */ ! .globl ___error ! .type ___error,@function verror: pushl %eax #ifdef PIC ! call PIC_PLT(___error) #else ! call ___error #endif popl %ecx --- 68,79 ---- * Threaded version using __error(). */ ! .globl CNAME(__error) ! .type CNAME(__error),@function verror: pushl %eax #ifdef PIC ! call PIC_PLT(CNAME(__error)) #else ! call CNAME(__error) #endif popl %ecx *************** *** 85,97 **** * Non-threaded version using global errno. */ ! .globl _errno verror: #ifdef PIC PIC_PROLOGUE ! movl PIC_GOT(_errno), %edx movl %eax,(%edx) PIC_EPILOGUE #else ! movl %eax,_errno #endif movl $-1,%eax --- 85,97 ---- * Non-threaded version using global errno. */ ! .globl CNAME(errno) verror: #ifdef PIC PIC_PROLOGUE ! movl PIC_GOT(CNAME(errno)), %edx movl %eax,(%edx) PIC_EPILOGUE #else ! movl %eax,CNAME(errno) #endif movl $-1,%eax diff -r -C2 libc/i386/sys/brk.S libc_elf/i386/sys/brk.S *** libc/i386/sys/brk.S Mon Jan 23 02:29:39 1995 --- libc_elf/i386/sys/brk.S Fri Mar 15 00:34:36 1996 *************** *** 46,51 **** #define SYS_brk 17 ! .globl curbrk ! .globl minbrk ENTRY(_brk) jmp ok --- 46,51 ---- #define SYS_brk 17 ! .globl HIDENAME(curbrk) ! .globl HIDENAME(minbrk) ENTRY(_brk) jmp ok *************** *** 55,60 **** movl 4(%esp),%eax PIC_PROLOGUE ! movl PIC_GOT(curbrk),%edx # set up GOT addressing ! movl PIC_GOT(minbrk),%ecx # cmpl %eax,(%ecx) PIC_EPILOGUE --- 55,60 ---- movl 4(%esp),%eax PIC_PROLOGUE ! movl PIC_GOT(HIDENAME(curbrk)),%edx # set up GOT addressing ! movl PIC_GOT(HIDENAME(minbrk)),%ecx # cmpl %eax,(%ecx) PIC_EPILOGUE *************** *** 71,82 **** ret err: ! jmp PIC_PLT(cerror) #else movl 4(%esp),%eax ! cmpl %eax,minbrk jl ok ! movl minbrk,%eax movl %eax,4(%esp) ok: --- 71,83 ---- ret err: ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) #else movl 4(%esp),%eax ! cmpl %eax,HIDENAME(minbrk) jl ok ! movl HIDENAME(minbrk),%eax movl %eax,4(%esp) ok: *************** *** 85,92 **** jb err movl 4(%esp),%eax ! movl %eax,curbrk movl $0,%eax ret err: ! jmp cerror #endif --- 86,93 ---- jb err movl 4(%esp),%eax ! movl %eax,HIDENAME(curbrk) movl $0,%eax ret err: ! jmp HIDENAME(cerror) #endif diff -r -C2 libc/i386/sys/cerror.S libc_elf/i386/sys/cerror.S *** libc/i386/sys/cerror.S Mon Jan 22 01:00:57 1996 --- libc_elf/i386/sys/cerror.S Fri Mar 15 00:51:04 1996 *************** *** 48,59 **** * Threaded version using __error(). */ ! .globl ___error ! .type ___error,@function ! cerror: pushl %eax #ifdef PIC ! call PIC_PLT(___error) #else ! call ___error #endif popl %ecx --- 48,59 ---- * Threaded version using __error(). */ ! .globl CNAME(__error) ! .type CNAME(__error),@function ! HIDENAME(cerror): pushl %eax #ifdef PIC ! call PIC_PLT(CNAME(__error)) #else ! call CNAME(__error) #endif popl %ecx *************** *** 67,79 **** * Non-threaded version using global errno. */ ! .globl _errno ! cerror: #ifdef PIC ! PIC_PROLOGUE ! movl PIC_GOT(_errno),%ecx movl %eax,(%ecx) PIC_EPILOGUE #else ! movl %eax,_errno #endif movl $-1,%eax --- 67,80 ---- * Non-threaded version using global errno. */ ! ! .globl CNAME(errno) ! HIDENAME(cerror): #ifdef PIC ! /* The caller must execute the PIC prologue before jumping to cerror. */ ! movl PIC_GOT(CNAME(errno)),%ecx movl %eax,(%ecx) PIC_EPILOGUE #else ! movl %eax,CNAME(errno) #endif movl $-1,%eax diff -r -C2 libc/i386/sys/exect.S libc_elf/i386/sys/exect.S *** libc/i386/sys/exect.S Mon Jan 23 02:29:46 1995 --- libc_elf/i386/sys/exect.S Fri Mar 15 00:34:36 1996 *************** *** 53,55 **** popf LCALL(7,0) ! jmp cerror /* exect(file, argv, env); */ --- 53,56 ---- popf LCALL(7,0) ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) /* exect(file, argv, env); */ diff -r -C2 libc/i386/sys/ptrace.S libc_elf/i386/sys/ptrace.S *** libc/i386/sys/ptrace.S Mon Jan 23 02:29:59 1995 --- libc_elf/i386/sys/ptrace.S Fri Mar 15 00:34:36 1996 *************** *** 48,56 **** #ifdef PIC PIC_PROLOGUE ! movl PIC_GOT(_errno),%edx movl %eax,(%edx) PIC_EPILOGUE #else ! movl %eax,_errno #endif lea SYS_ptrace,%eax --- 48,56 ---- #ifdef PIC PIC_PROLOGUE ! movl PIC_GOT(CNAME(errno)),%edx movl %eax,(%edx) PIC_EPILOGUE #else ! movl %eax,CNAME(errno) #endif lea SYS_ptrace,%eax *************** *** 59,61 **** ret err: ! jmp cerror --- 59,62 ---- ret err: ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) diff -r -C2 libc/i386/sys/sbrk.S libc_elf/i386/sys/sbrk.S *** libc/i386/sys/sbrk.S Wed Oct 4 16:58:57 1995 --- libc_elf/i386/sys/sbrk.S Fri Mar 15 00:47:24 1996 *************** *** 46,56 **** #define SYS_brk 17 ! .globl _end ! .globl minbrk ! .globl curbrk .data ! minbrk: .long _end ! curbrk: .long _end .text --- 46,56 ---- #define SYS_brk 17 ! .globl CNAME(end) ! .globl HIDENAME(minbrk) ! .globl HIDENAME(curbrk) .data ! HIDENAME(minbrk): .long CNAME(end) ! HIDENAME(curbrk): .long CNAME(end) .text *************** *** 59,63 **** movl 4(%esp),%ecx PIC_PROLOGUE ! movl PIC_GOT(curbrk),%edx movl (%edx),%eax PIC_EPILOGUE --- 59,63 ---- movl 4(%esp),%ecx PIC_PROLOGUE ! movl PIC_GOT(HIDENAME(curbrk)),%edx movl (%edx),%eax PIC_EPILOGUE *************** *** 69,73 **** jb err PIC_PROLOGUE ! movl PIC_GOT(curbrk),%edx movl (%edx),%eax addl %ecx,(%edx) --- 69,73 ---- jb err PIC_PROLOGUE ! movl PIC_GOT(HIDENAME(curbrk)),%edx movl (%edx),%eax addl %ecx,(%edx) *************** *** 76,96 **** ret err: ! jmp PIC_PLT(cerror) #else /* !PIC */ movl 4(%esp),%ecx ! movl curbrk,%eax ! testl %ecx,%ecx ! jz back addl %eax,4(%esp) lea SYS_brk,%eax LCALL(7,0) jb err ! movl curbrk,%eax ! addl %ecx,curbrk ! back: ret err: ! jmp cerror #endif /* PIC */ --- 76,94 ---- ret err: ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) #else /* !PIC */ movl 4(%esp),%ecx ! movl HIDENAME(curbrk),%eax addl %eax,4(%esp) lea SYS_brk,%eax LCALL(7,0) jb err ! movl HIDENAME(curbrk),%eax ! addl %ecx,HIDENAME(curbrk) ret err: ! jmp HIDENAME(cerror) #endif /* PIC */ diff -r -C2 libc/i386/sys/setlogin.S libc_elf/i386/sys/setlogin.S *** libc/i386/sys/setlogin.S Mon Jan 23 02:30:06 1995 --- libc_elf/i386/sys/setlogin.S Fri Mar 15 00:34:36 1996 *************** *** 44,48 **** #include "SYS.h" ! .globl __logname_valid /* in getlogin() */ SYSCALL(setlogin) --- 44,48 ---- #include "SYS.h" ! .globl CNAME(_logname_valid) /* in getlogin() */ SYSCALL(setlogin) *************** *** 50,59 **** PIC_PROLOGUE pushl %eax ! movl PIC_GOT(__logname_valid),%eax movl $0,(%eax) popl %eax PIC_EPILOGUE #else ! movl $0,__logname_valid #endif ret /* setlogin(name) */ --- 50,59 ---- PIC_PROLOGUE pushl %eax ! movl PIC_GOT(CNAME(_logname_valid)),%eax movl $0,(%eax) popl %eax PIC_EPILOGUE #else ! movl $0,CNAME(_logname_valid) #endif ret /* setlogin(name) */ diff -r -C2 libc/i386/sys/sigprocmask.S libc_elf/i386/sys/sigprocmask.S *** libc/i386/sys/sigprocmask.S Mon Jan 22 01:00:59 1996 --- libc_elf/i386/sys/sigprocmask.S Fri Mar 15 00:34:36 1996 *************** *** 45,49 **** err: ! jmp cerror #ifdef _THREAD_SAFE --- 45,50 ---- err: ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) #ifdef _THREAD_SAFE diff -r -C2 libc/i386/sys/sigreturn.S libc_elf/i386/sys/sigreturn.S *** libc/i386/sys/sigreturn.S Mon Jan 22 01:01:00 1996 --- libc_elf/i386/sys/sigreturn.S Fri Mar 15 00:34:36 1996 *************** *** 50,55 **** #undef ENTRY #define ENTRY(x) \ ! .globl _/**/x; .align 2; _/**/x: pusha ; \ ! .data; 1:; .long 0; .text; movl $1b,%eax; call mcount; popa ; nop #endif /* PROF */ --- 50,55 ---- #undef ENTRY #define ENTRY(x) \ ! .globl CNAME(x); .align 2; CNAME(x): pusha ; \ ! .data; 1:; .long 0; .text; movl $1b,%eax; call HIDENAME(mcount); popa ; nop #endif /* PROF */ diff -r -C2 libc/i386/sys/sigsuspend.S libc_elf/i386/sys/sigsuspend.S *** libc/i386/sys/sigsuspend.S Mon Jan 22 01:01:01 1996 --- libc_elf/i386/sys/sigsuspend.S Fri Mar 15 00:34:36 1996 *************** *** 45,49 **** err: ! jmp cerror #ifdef _THREAD_SAFE --- 45,50 ---- err: ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) #ifdef _THREAD_SAFE diff -r -C2 libc/i386/sys/syscall.S libc_elf/i386/sys/syscall.S *** libc/i386/sys/syscall.S Mon Jan 23 02:30:24 1995 --- libc_elf/i386/sys/syscall.S Fri Mar 15 00:34:36 1996 *************** *** 54,56 **** ret 1: ! jmp cerror --- 54,57 ---- ret 1: ! PIC_PROLOGUE ! jmp PIC_PLT(HIDENAME(cerror)) -- Stefan Esser, Zentrum fuer Paralleles Rechnen Tel: +49 221 4706021 Universitaet zu Koeln, Weyertal 80, 50931 Koeln FAX: +49 221 4705160 ============================================================================== http://www.zpr.uni-koeln.de/~se <se@ZPR.Uni-Koeln.DE>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603151237.AA01920>