diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-11-19 06:12:51 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-11-19 06:12:51 +0000 |
commit | c9002c1b7a648fe49b8472d6dc6724c78fa1329f (patch) | |
tree | b9a61d0ea66ac08f3bc064d1ddd8823a3e65ebba /sysdeps/unix/sysv/linux/ia64 | |
parent | ad7f28c29d06ddb4506d0d75e089732740b5bd2b (diff) | |
download | glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.tar.gz glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.tar.xz glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.zip |
Update.
2003-11-14 David Mosberger <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/sysdep.h (GAS_ALIGN_BREAKS_UNWIND_INFO): Define this macro to indicate that all existing GAS versions have a problem with .align inside a function. * sysdeps/ia64/memccpy.S: Work around GAS_ALIGN_BREAKS_UNWIND_INFO bug. * sysdeps/ia64/memcpy.S: Likewise. * sysdeps/ia64/memset.S: Likewise. * sysdeps/ia64/memmove.S: Likewise. Also move the jump-table to out of .text into .rodata, where it belongs. * sysdeps/unix/sysv/linux/ia64/pipe.S: There is no need to save/restore input-arguments, because they're necessarily preserved by the kernel to support syscall-restart.
Diffstat (limited to 'sysdeps/unix/sysv/linux/ia64')
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/pipe.S | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/sysdep.h | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/ia64/pipe.S b/sysdeps/unix/sysv/linux/ia64/pipe.S index d798fcda6b..60624df3cb 100644 --- a/sysdeps/unix/sysv/linux/ia64/pipe.S +++ b/sysdeps/unix/sysv/linux/ia64/pipe.S @@ -22,15 +22,14 @@ #include <sysdep.h> ENTRY(__pipe) - st8 [sp]=r32 // save ptr across system call + .regstk 1,0,0,0 DO_CALL (SYS_ify (pipe)) - ld8 r2=[sp] cmp.ne p6,p0=-1,r10 ;; -(p6) st4 [r2]=r8,4 +(p6) st4 [in0]=r8,4 (p6) mov ret0=0 ;; -(p6) st4 [r2]=r9 +(p6) st4 [in0]=r9 (p6) ret br.cond.spnt.few __syscall_error PSEUDO_END(__pipe) diff --git a/sysdeps/unix/sysv/linux/ia64/sysdep.h b/sysdeps/unix/sysv/linux/ia64/sysdep.h index 1768bd0e3e..c298461cc2 100644 --- a/sysdeps/unix/sysv/linux/ia64/sysdep.h +++ b/sysdeps/unix/sysv/linux/ia64/sysdep.h @@ -24,6 +24,13 @@ #include <sysdeps/unix/sysdep.h> #include <sysdeps/ia64/sysdep.h> +/* As of GAS v2.4.90.0.7, including a ".align" directive inside a + function will cause bad unwind info to be emitted (GAS doesn't know + how to account for the padding introduced by the .align directive). + Turning on this macro will work around this bug by introducing the + necessary padding explicitly. */ +#define GAS_ALIGN_BREAKS_UNWIND_INFO + /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h of the kernel. But these symbols do not follow the SYS_* syntax |