Skip site navigation (1)Skip section navigation (2)
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>