aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--nptl/Makefile3
-rw-r--r--nptl/unwind.c2
-rw-r--r--sysdeps/gnu/Makefile2
-rw-r--r--sysdeps/gnu/unwind-resume.c2
-rw-r--r--sysdeps/nptl/unwind-forcedunwind.c2
-rw-r--r--sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c2
7 files changed, 21 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 76a9849..aac7f32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+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.
+
2014-12-16 Joseph Myers <joseph@codesourcery.com>
[BZ #17719]
diff --git a/nptl/Makefile b/nptl/Makefile
index 3d61ec1..2b804b2 100644
--- 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
diff --git a/nptl/unwind.c b/nptl/unwind.c
index f109019..e50900e 100644
--- 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
diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile
index ba495ed..8d407f7 100644
--- 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
diff --git a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c
index 5044a71..a23d19a 100644
--- 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)
diff --git a/sysdeps/nptl/unwind-forcedunwind.c b/sysdeps/nptl/unwind-forcedunwind.c
index 9d7bdc5..bbb366f 100644
--- 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)
diff --git a/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c b/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
index 660d148..3f347a0 100644
--- 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__;