summaryrefslogtreecommitdiffstats
path: root/lib/libc/amd64
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2008-11-02 01:10:54 +0000
committerpeter <peter@FreeBSD.org>2008-11-02 01:10:54 +0000
commitaa63008f13d7a07b62a85c25814374cb77dc7f84 (patch)
tree2cb2d6465da97e37710c7dadb37e63548e7e9c94 /lib/libc/amd64
parent4b957256d0a1f1d1f7ae0cd19454ae63f4088568 (diff)
downloadFreeBSD-src-aa63008f13d7a07b62a85c25814374cb77dc7f84.zip
FreeBSD-src-aa63008f13d7a07b62a85c25814374cb77dc7f84.tar.gz
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.
Diffstat (limited to 'lib/libc/amd64')
-rw-r--r--lib/libc/amd64/SYS.h12
-rw-r--r--lib/libc/amd64/gen/_setjmp.S2
-rw-r--r--lib/libc/amd64/gen/fabs.S1
-rw-r--r--lib/libc/amd64/gen/modf.S1
-rw-r--r--lib/libc/amd64/gen/rfork_thread.S1
-rw-r--r--lib/libc/amd64/gen/setjmp.S2
-rw-r--r--lib/libc/amd64/gen/sigsetjmp.S2
-rw-r--r--lib/libc/amd64/stdlib/div.S1
-rw-r--r--lib/libc/amd64/stdlib/ldiv.S1
-rw-r--r--lib/libc/amd64/stdlib/lldiv.S1
-rw-r--r--lib/libc/amd64/string/bcmp.S1
-rw-r--r--lib/libc/amd64/string/bcopy.S9
-rw-r--r--lib/libc/amd64/string/bzero.S1
-rw-r--r--lib/libc/amd64/string/memcmp.S1
-rw-r--r--lib/libc/amd64/string/memset.S1
-rw-r--r--lib/libc/amd64/string/strcat.S1
-rw-r--r--lib/libc/amd64/string/strcmp.S1
-rw-r--r--lib/libc/amd64/string/strcpy.S1
-rw-r--r--lib/libc/amd64/sys/brk.S2
-rw-r--r--lib/libc/amd64/sys/exect.S1
-rw-r--r--lib/libc/amd64/sys/getcontext.S1
-rw-r--r--lib/libc/amd64/sys/pipe.S1
-rw-r--r--lib/libc/amd64/sys/ptrace.S1
-rw-r--r--lib/libc/amd64/sys/reboot.S1
-rw-r--r--lib/libc/amd64/sys/sbrk.S1
-rw-r--r--lib/libc/amd64/sys/setlogin.S1
-rw-r--r--lib/libc/amd64/sys/vfork.S1
27 files changed, 46 insertions, 4 deletions
diff --git a/lib/libc/amd64/SYS.h b/lib/libc/amd64/SYS.h
index ef75377..61d7ab4 100644
--- a/lib/libc/amd64/SYS.h
+++ b/lib/libc/amd64/SYS.h
@@ -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
diff --git a/lib/libc/amd64/gen/_setjmp.S b/lib/libc/amd64/gen/_setjmp.S
index 5d57f88..38c3c6f 100644
--- a/lib/libc/amd64/gen/_setjmp.S
+++ b/lib/libc/amd64/gen/_setjmp.S
@@ -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)
diff --git a/lib/libc/amd64/gen/fabs.S b/lib/libc/amd64/gen/fabs.S
index 59cd910..8c0c8bf 100644
--- a/lib/libc/amd64/gen/fabs.S
+++ b/lib/libc/amd64/gen/fabs.S
@@ -37,6 +37,7 @@ ENTRY(fabs)
movsd signbit(%rip), %xmm0
andnpd %xmm1, %xmm0
ret
+END(fabs)
.data
signbit:
diff --git a/lib/libc/amd64/gen/modf.S b/lib/libc/amd64/gen/modf.S
index 63eec8c..4fee38b 100644
--- a/lib/libc/amd64/gen/modf.S
+++ b/lib/libc/amd64/gen/modf.S
@@ -86,3 +86,4 @@ ENTRY(modf)
movsd -8(%rsp),%xmm0
ret
+END(modf)
diff --git a/lib/libc/amd64/gen/rfork_thread.S b/lib/libc/amd64/gen/rfork_thread.S
index aa7001c..c34a940 100644
--- a/lib/libc/amd64/gen/rfork_thread.S
+++ b/lib/libc/amd64/gen/rfork_thread.S
@@ -99,3 +99,4 @@ ENTRY(rfork_thread)
#else
jmp HIDENAME(cerror)
#endif
+END(rfork_thread)
diff --git a/lib/libc/amd64/gen/setjmp.S b/lib/libc/amd64/gen/setjmp.S
index 995c801..41de587 100644
--- a/lib/libc/amd64/gen/setjmp.S
+++ b/lib/libc/amd64/gen/setjmp.S
@@ -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)
diff --git a/lib/libc/amd64/gen/sigsetjmp.S b/lib/libc/amd64/gen/sigsetjmp.S
index 718edf9..8da4867 100644
--- a/lib/libc/amd64/gen/sigsetjmp.S
+++ b/lib/libc/amd64/gen/sigsetjmp.S
@@ -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)
diff --git a/lib/libc/amd64/stdlib/div.S b/lib/libc/amd64/stdlib/div.S
index f8595f9..f3c2a59 100644
--- a/lib/libc/amd64/stdlib/div.S
+++ b/lib/libc/amd64/stdlib/div.S
@@ -15,3 +15,4 @@ ENTRY(div)
salq $32,%rdx
orq %rdx,%rax
ret
+END(div)
diff --git a/lib/libc/amd64/stdlib/ldiv.S b/lib/libc/amd64/stdlib/ldiv.S
index de952f0..2a0a8cf 100644
--- a/lib/libc/amd64/stdlib/ldiv.S
+++ b/lib/libc/amd64/stdlib/ldiv.S
@@ -13,3 +13,4 @@ ENTRY(ldiv)
cqto
idivq %rsi
ret
+END(ldiv)
diff --git a/lib/libc/amd64/stdlib/lldiv.S b/lib/libc/amd64/stdlib/lldiv.S
index 7353754..e5ae5ca 100644
--- a/lib/libc/amd64/stdlib/lldiv.S
+++ b/lib/libc/amd64/stdlib/lldiv.S
@@ -13,3 +13,4 @@ ENTRY(lldiv)
cqto
idivq %rsi
ret
+END(lldiv)
diff --git a/lib/libc/amd64/string/bcmp.S b/lib/libc/amd64/string/bcmp.S
index 36a0c7e..375c3bc 100644
--- a/lib/libc/amd64/string/bcmp.S
+++ b/lib/libc/amd64/string/bcmp.S
@@ -22,3 +22,4 @@ L1:
setne %al
movsbl %al,%eax
ret
+END(bcmp)
diff --git a/lib/libc/amd64/string/bcopy.S b/lib/libc/amd64/string/bcopy.S
index d58f591..f7aa6d1 100644
--- a/lib/libc/amd64/string/bcopy.S
+++ b/lib/libc/amd64/string/bcopy.S
@@ -86,3 +86,12 @@ ENTRY(bcopy)
movsq
cld
ret
+#ifdef MEMCOPY
+END(memcpy)
+#else
+#ifdef MEMMOVE
+END(memmove)
+#else
+END(bcopy)
+#endif
+#endif
diff --git a/lib/libc/amd64/string/bzero.S b/lib/libc/amd64/string/bzero.S
index d9d2a45..0de67d3 100644
--- a/lib/libc/amd64/string/bzero.S
+++ b/lib/libc/amd64/string/bzero.S
@@ -41,3 +41,4 @@ L1: movq %rsi,%rcx /* zero remainder by bytes */
stosb
ret
+END(bzero)
diff --git a/lib/libc/amd64/string/memcmp.S b/lib/libc/amd64/string/memcmp.S
index 28194f8..a039b5b 100644
--- a/lib/libc/amd64/string/memcmp.S
+++ b/lib/libc/amd64/string/memcmp.S
@@ -39,3 +39,4 @@ L6: xorl %eax,%eax /* Perform unsigned comparison */
movb -1(%rsi),%dl
subl %edx,%eax
ret
+END(memcmp)
diff --git a/lib/libc/amd64/string/memset.S b/lib/libc/amd64/string/memset.S
index 142387a..ed8ba24 100644
--- a/lib/libc/amd64/string/memset.S
+++ b/lib/libc/amd64/string/memset.S
@@ -58,3 +58,4 @@ L1: rep
movq %r11,%rax
ret
+END(memset)
diff --git a/lib/libc/amd64/string/strcat.S b/lib/libc/amd64/string/strcat.S
index 78a1b56..b241ffc 100644
--- a/lib/libc/amd64/string/strcat.S
+++ b/lib/libc/amd64/string/strcat.S
@@ -163,3 +163,4 @@ ENTRY(strcat)
.Ldone:
ret
+END(strcat)
diff --git a/lib/libc/amd64/string/strcmp.S b/lib/libc/amd64/string/strcmp.S
index a7d2523..81f54cb 100644
--- a/lib/libc/amd64/string/strcmp.S
+++ b/lib/libc/amd64/string/strcmp.S
@@ -71,3 +71,4 @@ ENTRY(strcmp)
movzbq %dl,%rdx
subq %rdx,%rax
ret
+END(strcmp)
diff --git a/lib/libc/amd64/string/strcpy.S b/lib/libc/amd64/string/strcpy.S
index 04676fa..8cafa12 100644
--- a/lib/libc/amd64/string/strcpy.S
+++ b/lib/libc/amd64/string/strcpy.S
@@ -109,3 +109,4 @@ ENTRY(strcpy)
.Ldone:
ret
+END(strcpy)
diff --git a/lib/libc/amd64/sys/brk.S b/lib/libc/amd64/sys/brk.S
index 42168d8..c25daff 100644
--- a/lib/libc/amd64/sys/brk.S
+++ b/lib/libc/amd64/sys/brk.S
@@ -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)
diff --git a/lib/libc/amd64/sys/exect.S b/lib/libc/amd64/sys/exect.S
index 570cd5b..93125fa 100644
--- a/lib/libc/amd64/sys/exect.S
+++ b/lib/libc/amd64/sys/exect.S
@@ -53,3 +53,4 @@ ENTRY(exect)
#else
jmp HIDENAME(cerror)
#endif
+END(exect)
diff --git a/lib/libc/amd64/sys/getcontext.S b/lib/libc/amd64/sys/getcontext.S
index 9fa95fa..08a6493 100644
--- a/lib/libc/amd64/sys/getcontext.S
+++ b/lib/libc/amd64/sys/getcontext.S
@@ -52,3 +52,4 @@ ENTRY(__sys_getcontext)
#else
jmp HIDENAME(cerror)
#endif
+END(__sys_getcontext)
diff --git a/lib/libc/amd64/sys/pipe.S b/lib/libc/amd64/sys/pipe.S
index d97f0b8..a286064 100644
--- a/lib/libc/amd64/sys/pipe.S
+++ b/lib/libc/amd64/sys/pipe.S
@@ -57,3 +57,4 @@ ENTRY(__sys_pipe)
#else
jmp HIDENAME(cerror)
#endif
+END(__sys_pipe)
diff --git a/lib/libc/amd64/sys/ptrace.S b/lib/libc/amd64/sys/ptrace.S
index 2bb58e8..29ebade 100644
--- a/lib/libc/amd64/sys/ptrace.S
+++ b/lib/libc/amd64/sys/ptrace.S
@@ -57,3 +57,4 @@ err:
#else
jmp HIDENAME(cerror)
#endif
+END(ptrace)
diff --git a/lib/libc/amd64/sys/reboot.S b/lib/libc/amd64/sys/reboot.S
index 8495b91..59df944 100644
--- a/lib/libc/amd64/sys/reboot.S
+++ b/lib/libc/amd64/sys/reboot.S
@@ -54,3 +54,4 @@ ENTRY(__sys_reboot)
#else
jmp HIDENAME(cerror)
#endif
+END(__sys_reboot)
diff --git a/lib/libc/amd64/sys/sbrk.S b/lib/libc/amd64/sys/sbrk.S
index c5cdd26..fed3882 100644
--- a/lib/libc/amd64/sys/sbrk.S
+++ b/lib/libc/amd64/sys/sbrk.S
@@ -85,3 +85,4 @@ err:
#else
jmp HIDENAME(cerror)
#endif
+END(sbrk)
diff --git a/lib/libc/amd64/sys/setlogin.S b/lib/libc/amd64/sys/setlogin.S
index 24f957b..649289a 100644
--- a/lib/libc/amd64/sys/setlogin.S
+++ b/lib/libc/amd64/sys/setlogin.S
@@ -62,3 +62,4 @@ ENTRY(__sys_setlogin)
#else
jmp HIDENAME(cerror)
#endif
+END(__sys_setlogin)
diff --git a/lib/libc/amd64/sys/vfork.S b/lib/libc/amd64/sys/vfork.S
index eb843ff..d955e5f 100644
--- a/lib/libc/amd64/sys/vfork.S
+++ b/lib/libc/amd64/sys/vfork.S
@@ -56,3 +56,4 @@ ENTRY(__sys_vfork)
#else
jmp HIDENAME(cerror)
#endif
+END(__sys_vfork)
OpenPOWER on IntegriCloud