aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r--sysdeps/unix/sysv/linux/ia64/pipe.S7
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sysdep.h7
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