This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

.cfi_sections


Hello!

I have a need for using .cfi_sections in glibc code.  .cfi_sections is a
recent addition to binutils' as, done by Jakub on 2009-10-02.

2009-12-08  Thomas Schwinge  <thomas@codesourcery.com>

	* configure.in (libc_cv_asm_cfi_directive_sections): New test.
	(HAVE_ASM_CFI_DIRECTIVE_SECTIONS): Set depending on its outcome.
	* sysdeps/generic/sysdep.h (cfi_sections, CFI_SECTIONS): Define
        accordingly.

Index: configure.in
===================================================================
--- configure.in	(revision 9348)
+++ configure.in	(working copy)
@@ -1951,6 +1951,24 @@
 rm -f conftest*])
 if test $libc_cv_asm_cfi_directives = yes; then
   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
+
+  AC_CACHE_CHECK([whether the CFI directive .cfi_sections is supported],
+  [libc_cv_asm_cfi_directive_sections],
+  [cat > conftest.s <<EOF
+	.text
+	.cfi_sections .debug_frame, .eh_frame
+	.cfi_startproc
+	.cfi_endproc
+EOF
+  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+    libc_cv_asm_cfi_directive_sections=yes
+  else
+    libc_cv_asm_cfi_directive_sections=no
+  fi
+  rm -f conftest*])
+  if test $libc_cv_asm_cfi_directive_sections = yes; then
+    AC_DEFINE(HAVE_ASM_CFI_DIRECTIVE_SECTIONS)
+  fi
 fi
 
 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
Index: sysdeps/generic/sysdep.h
===================================================================
--- sysdeps/generic/sysdep.h	(revision 9348)
+++ sysdeps/generic/sysdep.h	(working copy)
@@ -88,6 +88,12 @@
 #  define cfi_lsda(enc, exp)
 # endif
 
+# ifdef HAVE_ASM_CFI_DIRECTIVE_SECTIONS
+#  define cfi_sections(sections_list...) .cfi_sections sections_list
+# else
+#  define cfi_sections(sections_list...)
+# endif
+
 #else /* ! ASSEMBLER */
 # ifdef HAVE_ASM_CFI_DIRECTIVES
 #  define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
@@ -144,6 +150,12 @@
 #  define CFI_LSDA(enc, exp)
 # endif
 
+# ifdef HAVE_ASM_CFI_DIRECTIVE_SECTIONS
+#  define CFI_SECTIONS(sections_list...) ".cfi_sections " #sections_list
+# else
+#  define CFI_SECTIONS(sections_list...)
+# endif
+
 #endif /* __ASSEMBLER__ */
 
 /* Values used for encoding parameter of cfi_personality and cfi_lsda.  */


Regards,
 Thomas

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]