diff options
Diffstat (limited to 'sysdeps/unix/sysv')
-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 |