1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00
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:
Ulrich Drepper
2003-11-19 06:12:51 +00:00
parent ad7f28c29d
commit c9002c1b7a
7 changed files with 74 additions and 14 deletions

View File

@ -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)

View File

@ -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