mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
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.
This commit is contained in:
@ -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)
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user