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]

[COMMITTED PATCH] Use pragmas rather than makefiles for necessary options for unwind code.


Verified on x86_64-linux-gnu that no generated code (including unwind info)
changes.  Also tested arm-linux-gnueabihf that no generated code changes;
there was one difference in the EABI unwind info for __unwind_freeres,
which I don't understand but also deem wholly unimportant.

Thanks,
Roland


2014-12-16  Roland McGrath  <roland@hack.frob.com>

	* nptl/unwind.c: Use pragma to turn on -fexceptions.
	* sysdeps/nptl/unwind-forcedunwind.c: Use pragma to turn on
	-fexceptions and -fasynchronous-unwind-tables.
	* sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c: Likewise.
	* sysdeps/gnu/unwind-resume.c: Likewise.
	* nptl/Makefile (CFLAGS-unwind.c, CFLAGS-unwind-forcedunwind.c):
	Variables removed.
	* sysdeps/gnu/Makefile
	[$(subdir) = csu] (CFLAGS-unwind-resume.c): Likewise.
	[$(subdir) = rt] (CFLAGS-rt-unwind-resume.c): Likewise.

--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -146,9 +146,6 @@ libpthread-static-only-routines = pthread_atfork
 
 # nptl-init.c contains sigcancel_handler().
 CFLAGS-nptl-init.c = -fexceptions -fasynchronous-unwind-tables
-# The unwind code itself,
-CFLAGS-unwind.c = -fexceptions
-CFLAGS-unwind-forcedunwind.c = -fexceptions -fasynchronous-unwind-tables
 
 # The following three functions must be async-cancel safe.
 CFLAGS-pthread_cancel.c = -fexceptions -fasynchronous-unwind-tables
--- a/nptl/unwind.c
+++ b/nptl/unwind.c
@@ -25,6 +25,8 @@
 #include "pthreadP.h"
 #include <jmpbuf-unwind.h>
 
+#pragma GCC optimize "-fexceptions"
+
 #ifdef HAVE_FORCED_UNWIND
 
 #ifdef _STACK_GROWS_DOWN
--- a/sysdeps/gnu/Makefile
+++ b/sysdeps/gnu/Makefile
@@ -79,11 +79,9 @@ endif
 ifeq ($(subdir),csu)
 routines += unwind-resume
 shared-only-routines += unwind-resume
-CFLAGS-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables
 endif
 
 ifeq ($(subdir),rt)
 librt-sysdep_routines += rt-unwind-resume
 librt-shared-only-routines += rt-unwind-resume
-CFLAGS-rt-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables
 endif
--- a/sysdeps/gnu/unwind-resume.c
+++ b/sysdeps/gnu/unwind-resume.c
@@ -21,6 +21,8 @@
 #include <unwind.h>
 #include <gnu/lib-names.h>
 
+#pragma GCC optimize ("-fexceptions", "-fasynchronous-unwind-tables")
+
 static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
   __attribute__ ((noreturn));
 static _Unwind_Reason_Code (*libgcc_s_personality)
--- a/sysdeps/nptl/unwind-forcedunwind.c
+++ b/sysdeps/nptl/unwind-forcedunwind.c
@@ -23,6 +23,8 @@
 #include <sysdep.h>
 #include <gnu/lib-names.h>
 
+#pragma GCC optimize ("-fexceptions", "-fasynchronous-unwind-tables")
+
 static void *libgcc_s_handle;
 static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
 static _Unwind_Reason_Code (*libgcc_s_personality)
--- a/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
+++ b/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
@@ -21,6 +21,8 @@
 #include <unwind.h>
 #include <pthreadP.h>
 
+#pragma GCC optimize ("-fexceptions", "-fasynchronous-unwind-tables")
+
 static void *libgcc_s_handle;
 static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
   __attribute_used__;


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