about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h35
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h2
3 files changed, 11 insertions, 31 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 47a0dd8ff3..0b22326e6e 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,10 @@
 2003-06-15  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/unix/sysv/linux/i386/dl-sysdep.h
+	(DL_SYSINFO_IMPLEMENTATION): Use CFI opcodes.
+	* sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
+	(DL_SYSINFO_IMPLEMENTATION): Likewise.
+
 	* pthreadP.h (LIBC_CANCEL_ASYNC): Also define for librt.
 	(LIBC_CANCEL_RESET): Likewise.
 	Declare __librt_enable_asynccancel and __librt_disable_asynccancel.
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
index 5d6d7fb9ff..109ffd1cf6 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
@@ -51,41 +51,14 @@ extern void _dl_sysinfo_int80 (void) attribute_hidden;
 # define DL_SYSINFO_IMPLEMENTATION \
   asm (".text\n\t"							      \
        ".type _dl_sysinfo_int80,@function\n\t"				      \
-       ".hidden _dl_sysinfo_int80\n"					      \
+       ".hidden _dl_sysinfo_int80\n\t"					      \
+       CFI_STARTPROC "\n"						      \
        "_dl_sysinfo_int80:\n\t"						      \
        "int $0x80;\n\t"							      \
        "ret;\n\t"							      \
-       ".LEND_dl_sysinfo_int80\n\t"					      \
+       CFI_ENDPROC "\n"							      \
        ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t"		      \
-       ".previous;\n\t"							      \
-       ".section .eh_frame,\"a\",@progbits\n"				      \
-       ".LSTARTFRAMEDLSI:\n\t"						      \
-       ".long .LENDCIEDLSI-.LSTARTCIEDLSI\n"				      \
-       ".LSTARTCIEDLSI:\n\t"						      \
-       ".long 0\n\t"		/* CIE ID */				      \
-       ".byte 1\n\t"		/* Version number */			      \
-       ".string \"zR\"\n\t"	/* NUL-terminated augmentation string */      \
-       ".uleb128 1\n\t"		/* Code alignment factor */		      \
-       ".sleb128 -4\n\t"	/* Data alignment factor */		      \
-       ".byte 8\n\t"		/* Return address register column */	      \
-       ".uleb128 1\n\t"		/* Augmentation value length */		      \
-       ".byte 0x1b\n\t"		/* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */	      \
-       ".byte 0x0c\n\t"		/* DW_CFA_def_cfa */			      \
-       ".uleb128 4\n\t"							      \
-       ".uleb128 4\n\t"							      \
-       ".byte 0x88\n\t"		/* DW_CFA_offset, column 0x8 */		      \
-       ".uleb128 1\n\t"							      \
-       ".align 4\n"							      \
-       ".LENDCIEDLSI:\n\t"						      \
-       ".long .LENDFDEDLSI-.LSTARTFDEDLSI\n"	/* Length FDE */	      \
-       ".LSTARTFDEDLSI:\n\t"						      \
-       ".long .LSTARTFDEDLSI-.LSTARTFRAMEDLSI\n\t" /* CIE pointer */	      \
-       ".long _dl_sysinfo_int80-.\n\t"	/* PC-relative start address */	      \
-       ".long .LEND_dl_sysinfo_int80-_dl_sysinfo_int80\n\t"		      \
-       ".uleb128 0\n\t"							      \
-       ".align 4\n"							      \
-       ".LENDFDEDLSI:\n\t"						      \
-       ".previous");
+       ".previous;");
 #endif
 
 #endif	/* dl-sysdep.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h b/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
index b880238a93..b7771318a6 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
@@ -49,9 +49,11 @@ extern void _dl_sysinfo_int80 (void) attribute_hidden;
   asm (".text\n\t"							      \
        ".type _dl_sysinfo_int80,@function\n\t"				      \
        ".hidden _dl_sysinfo_int80\n"					      \
+       CFI_STARTPROC "\n"						      \
        "_dl_sysinfo_int80:\n\t"						      \
        "int $0x80;\n\t"							      \
        "ret;\n\t"							      \
+       CFI_ENDPROC "\n"							      \
        ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t"		      \
        ".previous");
 #endif