about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2003-05-30 16:12:18 +0000
committerAndreas Jaeger <aj@suse.de>2003-05-30 16:12:18 +0000
commit2b1c0eeae3100fc8dc64909a80ea34b2be49bf88 (patch)
treeb9d025fa6452dc0eaf5e43a52b82081f4a628934 /sysdeps/unix/sysv/linux
parentb34f9a90b100fa55a64cc9c52be9787608f6d1a0 (diff)
downloadglibc-2b1c0eeae3100fc8dc64909a80ea34b2be49bf88.tar.gz
glibc-2b1c0eeae3100fc8dc64909a80ea34b2be49bf88.tar.xz
glibc-2b1c0eeae3100fc8dc64909a80ea34b2be49bf88.zip
Update.
2003-05-30  Andreas Jaeger  <aj@suse.de>

	* sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
	Add CFI directives.

	* sysdeps/unix/sysv/linux/x86_64/sigaction.c (RESTORE2): Add CFI
	directives.

	* sysdeps/generic/sysdep.h: Add CFI_* macros for C files.

	* sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER):
	Add CFI directives.
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sigaction.c5
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysdep.h4
2 files changed, 6 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/sigaction.c b/sysdeps/unix/sysv/linux/x86_64/sigaction.c
index 1d8ef6f34f..48cb447859 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/x86_64/sigaction.c
@@ -97,14 +97,15 @@ weak_alias (__libc_sigaction, sigaction)
    appropriate GDB maintainer.  */
 
 #define RESTORE(name, syscall) RESTORE2 (name, syscall)
-#define RESTORE2(name, syscall) \
+# define RESTORE2(name, syscall) \
 asm						\
   (						\
    ".align 16\n"				\
+   CFI_STARTPROC "\n"				\
    "__" #name ":\n"				\
    "	movq $" #syscall ", %rax\n"		\
    "	syscall\n"				\
+   CFI_ENDPROC "\n"				\
    );
-
 /* The return code for realtime-signals.  */
 RESTORE (restore_rt, __NR_rt_sigreturn)
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
index e88c48a9e4..430ec86a5d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
@@ -132,11 +132,13 @@
 0:						\
   xorq %rdx, %rdx;				\
   subq %rax, %rdx;				\
-  pushq %rdx					\
+  pushq %rdx;					\
+  cfi_adjust_cfa_offset(8);			\
   PUSH_ERRNO_LOCATION_RETURN;			\
   call BP_SYM (__errno_location)@PLT;		\
   POP_ERRNO_LOCATION_RETURN;			\
   popq %rdx;					\
+  cfi_adjust_cfa_offset(-8);			\
   movl %edx, (%rax);				\
   orq $-1, %rax;				\
   jmp L(pseudo_end);