svn commit: r184547 - in head/lib/libc/amd64: . gen stdlib string sys

Peter Wemm peter at FreeBSD.org
Sat Nov 1 18:10:56 PDT 2008


Author: peter
Date: Sun Nov  2 01:10:54 2008
New Revision: 184547
URL: http://svn.freebsd.org/changeset/base/184547

Log:
  We've been lax about matching END() macros in asm code for some time.  This
  is used to set the ELF size attribute for functions.  It isn't normally
  critical but some things can make use of it (gdb for stack traces).
  Valgrind needs it so I'm adding it in.  The problem is present on all
  branches and on both i386 and amd64.

Modified:
  head/lib/libc/amd64/SYS.h
  head/lib/libc/amd64/gen/_setjmp.S
  head/lib/libc/amd64/gen/fabs.S
  head/lib/libc/amd64/gen/modf.S
  head/lib/libc/amd64/gen/rfork_thread.S
  head/lib/libc/amd64/gen/setjmp.S
  head/lib/libc/amd64/gen/sigsetjmp.S
  head/lib/libc/amd64/stdlib/div.S
  head/lib/libc/amd64/stdlib/ldiv.S
  head/lib/libc/amd64/stdlib/lldiv.S
  head/lib/libc/amd64/string/bcmp.S
  head/lib/libc/amd64/string/bcopy.S
  head/lib/libc/amd64/string/bzero.S
  head/lib/libc/amd64/string/memcmp.S
  head/lib/libc/amd64/string/memset.S
  head/lib/libc/amd64/string/strcat.S
  head/lib/libc/amd64/string/strcmp.S
  head/lib/libc/amd64/string/strcpy.S
  head/lib/libc/amd64/sys/brk.S
  head/lib/libc/amd64/sys/exect.S
  head/lib/libc/amd64/sys/getcontext.S
  head/lib/libc/amd64/sys/pipe.S
  head/lib/libc/amd64/sys/ptrace.S
  head/lib/libc/amd64/sys/reboot.S
  head/lib/libc/amd64/sys/sbrk.S
  head/lib/libc/amd64/sys/setlogin.S
  head/lib/libc/amd64/sys/vfork.S

Modified: head/lib/libc/amd64/SYS.h
==============================================================================
--- head/lib/libc/amd64/SYS.h	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/SYS.h	Sun Nov  2 01:10:54 2008	(r184547)
@@ -43,13 +43,15 @@
 			.weak CNAME(__CONCAT(_,x));			\
 			.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
 			mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret; \
-			2: movq PIC_GOT(HIDENAME(cerror)),%rcx; jmp *%rcx
+			2: movq PIC_GOT(HIDENAME(cerror)),%rcx; jmp *%rcx; \
+			END(__CONCAT(__sys_,x))
 
 #define	PSEUDO(x)	ENTRY(__CONCAT(__sys_,x));			\
 			.weak CNAME(__CONCAT(_,x));			\
 			.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
 			mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret ; \
-			2: movq PIC_GOT(HIDENAME(cerror)),%rcx; jmp *%rcx
+			2: movq PIC_GOT(HIDENAME(cerror)),%rcx; jmp *%rcx; \
+			END(__CONCAT(__sys_,x))
 #else
 #define	RSYSCALL(x)	ENTRY(__CONCAT(__sys_,x));			\
 			.weak CNAME(x);					\
@@ -57,13 +59,15 @@
 			.weak CNAME(__CONCAT(_,x));			\
 			.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
 			mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret; \
-			2: jmp HIDENAME(cerror)
+			2: jmp HIDENAME(cerror);			\
+			END(__CONCAT(__sys_,x))
 
 #define	PSEUDO(x)	ENTRY(__CONCAT(__sys_,x));			\
 			.weak CNAME(__CONCAT(_,x));			\
 			.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
 			mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret; \
-			2: jmp HIDENAME(cerror)
+			2: jmp HIDENAME(cerror);			\
+			END(__CONCAT(__sys_,x))
 #endif
 
 #define KERNCALL	movq %rcx, %r10; syscall

Modified: head/lib/libc/amd64/gen/_setjmp.S
==============================================================================
--- head/lib/libc/amd64/gen/_setjmp.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/gen/_setjmp.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -61,6 +61,7 @@ ENTRY(_setjmp)
 	stmxcsr	68(%rax)		/*    and mxcsr */
 	xorq	%rax,%rax
 	ret
+END(_setjmp)
 
 	.weak	CNAME(_longjmp)
 	.set	CNAME(_longjmp),CNAME(___longjmp)
@@ -90,3 +91,4 @@ ENTRY(___longjmp)
 	incq	%rax
 1:	movq	%rcx,0(%rsp)
 	ret
+END(___longjmp)

Modified: head/lib/libc/amd64/gen/fabs.S
==============================================================================
--- head/lib/libc/amd64/gen/fabs.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/gen/fabs.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -37,6 +37,7 @@ ENTRY(fabs)
 	movsd	signbit(%rip), %xmm0
 	andnpd  %xmm1, %xmm0
 	ret
+END(fabs)
 
 	.data
 signbit:

Modified: head/lib/libc/amd64/gen/modf.S
==============================================================================
--- head/lib/libc/amd64/gen/modf.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/gen/modf.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -86,3 +86,4 @@ ENTRY(modf)
 	movsd   -8(%rsp),%xmm0
 
 	ret
+END(modf)

Modified: head/lib/libc/amd64/gen/rfork_thread.S
==============================================================================
--- head/lib/libc/amd64/gen/rfork_thread.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/gen/rfork_thread.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -99,3 +99,4 @@ ENTRY(rfork_thread)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(rfork_thread)

Modified: head/lib/libc/amd64/gen/setjmp.S
==============================================================================
--- head/lib/libc/amd64/gen/setjmp.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/gen/setjmp.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -70,6 +70,7 @@ ENTRY(setjmp)
 	stmxcsr	68(%rcx)		/*    and mxcsr */
 	xorq	%rax,%rax
 	ret
+END(setjmp)
 
 	.weak CNAME(longjmp)
 	.set CNAME(longjmp),CNAME(__longjmp)
@@ -108,3 +109,4 @@ ENTRY(__longjmp)
 	incq	%rax
 1:	movq	%rcx,0(%rsp)
 	ret
+END(__longjmp)

Modified: head/lib/libc/amd64/gen/sigsetjmp.S
==============================================================================
--- head/lib/libc/amd64/gen/sigsetjmp.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/gen/sigsetjmp.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -77,6 +77,7 @@ ENTRY(sigsetjmp)
 	fnstcw	64(%rcx)		/* 8; fpu cw */
 	xorq	%rax,%rax
 	ret
+END(sigsetjmp)
 
 	.weak CNAME(siglongjmp)
 	.set CNAME(siglongjmp),CNAME(__siglongjmp)
@@ -109,3 +110,4 @@ ENTRY(__siglongjmp)
 	incq	%rax
 1:	movq	%rcx,0(%rsp)
 	ret
+END(__siglongjmp)

Modified: head/lib/libc/amd64/stdlib/div.S
==============================================================================
--- head/lib/libc/amd64/stdlib/div.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/stdlib/div.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -15,3 +15,4 @@ ENTRY(div)
 	salq	$32,%rdx
 	orq	%rdx,%rax
 	ret
+END(div)

Modified: head/lib/libc/amd64/stdlib/ldiv.S
==============================================================================
--- head/lib/libc/amd64/stdlib/ldiv.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/stdlib/ldiv.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -13,3 +13,4 @@ ENTRY(ldiv)
 	cqto
 	idivq	%rsi
 	ret
+END(ldiv)

Modified: head/lib/libc/amd64/stdlib/lldiv.S
==============================================================================
--- head/lib/libc/amd64/stdlib/lldiv.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/stdlib/lldiv.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -13,3 +13,4 @@ ENTRY(lldiv)
 	cqto
 	idivq	%rsi
 	ret
+END(lldiv)

Modified: head/lib/libc/amd64/string/bcmp.S
==============================================================================
--- head/lib/libc/amd64/string/bcmp.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/bcmp.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -22,3 +22,4 @@ L1:
 	setne	%al
 	movsbl	%al,%eax
 	ret
+END(bcmp)

Modified: head/lib/libc/amd64/string/bcopy.S
==============================================================================
--- head/lib/libc/amd64/string/bcopy.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/bcopy.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -86,3 +86,12 @@ ENTRY(bcopy)
 	movsq
 	cld
 	ret
+#ifdef MEMCOPY
+END(memcpy)
+#else
+#ifdef MEMMOVE
+END(memmove)
+#else
+END(bcopy)
+#endif
+#endif

Modified: head/lib/libc/amd64/string/bzero.S
==============================================================================
--- head/lib/libc/amd64/string/bzero.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/bzero.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -41,3 +41,4 @@ L1:	movq	%rsi,%rcx		/* zero remainder by
 	stosb
 
 	ret
+END(bzero)

Modified: head/lib/libc/amd64/string/memcmp.S
==============================================================================
--- head/lib/libc/amd64/string/memcmp.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/memcmp.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -39,3 +39,4 @@ L6:	xorl	%eax,%eax		/* Perform unsigned 
 	movb	-1(%rsi),%dl
 	subl    %edx,%eax
 	ret
+END(memcmp)

Modified: head/lib/libc/amd64/string/memset.S
==============================================================================
--- head/lib/libc/amd64/string/memset.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/memset.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -58,3 +58,4 @@ L1:	rep
 	movq	%r11,%rax
 
 	ret
+END(memset)

Modified: head/lib/libc/amd64/string/strcat.S
==============================================================================
--- head/lib/libc/amd64/string/strcat.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/strcat.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -163,3 +163,4 @@ ENTRY(strcat)
 
 .Ldone:
 	ret
+END(strcat)

Modified: head/lib/libc/amd64/string/strcmp.S
==============================================================================
--- head/lib/libc/amd64/string/strcmp.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/strcmp.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -71,3 +71,4 @@ ENTRY(strcmp)
 	movzbq	%dl,%rdx
 	subq	%rdx,%rax
 	ret
+END(strcmp)

Modified: head/lib/libc/amd64/string/strcpy.S
==============================================================================
--- head/lib/libc/amd64/string/strcpy.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/string/strcpy.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -109,3 +109,4 @@ ENTRY(strcpy)
 
 .Ldone:
 	ret
+END(strcpy)

Modified: head/lib/libc/amd64/sys/brk.S
==============================================================================
--- head/lib/libc/amd64/sys/brk.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/brk.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
 ENTRY(_brk)
 	pushq	%rdi
 	jmp	ok
+END(_brk)
 
 ENTRY(brk)
 	pushq	%rdi
@@ -81,3 +82,4 @@ err:
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(brk)

Modified: head/lib/libc/amd64/sys/exect.S
==============================================================================
--- head/lib/libc/amd64/sys/exect.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/exect.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -53,3 +53,4 @@ ENTRY(exect)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(exect)

Modified: head/lib/libc/amd64/sys/getcontext.S
==============================================================================
--- head/lib/libc/amd64/sys/getcontext.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/getcontext.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -52,3 +52,4 @@ ENTRY(__sys_getcontext)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(__sys_getcontext)

Modified: head/lib/libc/amd64/sys/pipe.S
==============================================================================
--- head/lib/libc/amd64/sys/pipe.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/pipe.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -57,3 +57,4 @@ ENTRY(__sys_pipe)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(__sys_pipe)

Modified: head/lib/libc/amd64/sys/ptrace.S
==============================================================================
--- head/lib/libc/amd64/sys/ptrace.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/ptrace.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -57,3 +57,4 @@ err:
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(ptrace)

Modified: head/lib/libc/amd64/sys/reboot.S
==============================================================================
--- head/lib/libc/amd64/sys/reboot.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/reboot.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -54,3 +54,4 @@ ENTRY(__sys_reboot)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(__sys_reboot)

Modified: head/lib/libc/amd64/sys/sbrk.S
==============================================================================
--- head/lib/libc/amd64/sys/sbrk.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/sbrk.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -85,3 +85,4 @@ err:
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(sbrk)

Modified: head/lib/libc/amd64/sys/setlogin.S
==============================================================================
--- head/lib/libc/amd64/sys/setlogin.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/setlogin.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -62,3 +62,4 @@ ENTRY(__sys_setlogin)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(__sys_setlogin)

Modified: head/lib/libc/amd64/sys/vfork.S
==============================================================================
--- head/lib/libc/amd64/sys/vfork.S	Sun Nov  2 00:41:26 2008	(r184546)
+++ head/lib/libc/amd64/sys/vfork.S	Sun Nov  2 01:10:54 2008	(r184547)
@@ -56,3 +56,4 @@ ENTRY(__sys_vfork)
 #else
 	jmp	HIDENAME(cerror)
 #endif
+END(__sys_vfork)


More information about the svn-src-all mailing list