Fix ARM build with GCC trunk.
authorJoseph Myers <joseph@codesourcery.com>
Tue, 20 May 2014 21:27:13 +0000 (21:27 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 20 May 2014 21:27:13 +0000 (21:27 +0000)
sysdeps/unix/sysv/linux/arm/unwind-resume.c and
sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c have static
variables that are written in C code but only read from toplevel asms.
Current GCC trunk now optimizes away such apparently write-only static
variables, so causing a build failure.  This patch marks those
variables with __attribute_used__ to avoid that optimization.

Tested that this fixes the build for ARM.

* sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
(libgcc_s_resume): Use __attribute_used__.
* sysdeps/unix/sysv/linux/arm/unwind-resume.c (libgcc_s_resume):
Likewise.

ChangeLog
sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
sysdeps/unix/sysv/linux/arm/unwind-resume.c

index 390f181..7f49fbb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-05-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
+       (libgcc_s_resume): Use __attribute_used__.
+       * sysdeps/unix/sysv/linux/arm/unwind-resume.c (libgcc_s_resume):
+       Likewise.
+
 2014-05-20  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
        * sysdeps/powerpc/fpu/math_private.h [__copysignf]: Fix copysign macro
index 6ccd9b4..660d148 100644 (file)
@@ -22,7 +22,8 @@
 #include <pthreadP.h>
 
 static void *libgcc_s_handle;
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
+  __attribute_used__;
 static _Unwind_Reason_Code (*libgcc_s_personality)
   (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *);
 static _Unwind_Reason_Code (*libgcc_s_forcedunwind)
index bff3e2b..1f1eb71 100644 (file)
@@ -20,7 +20,8 @@
 #include <stdio.h>
 #include <unwind.h>
 
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
+  __attribute_used__;
 static _Unwind_Reason_Code (*libgcc_s_personality)
   (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *);