about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-05-20 21:27:13 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-05-20 21:27:13 +0000
commit175cef4163dd60f95106cfd5f593b8a4e09d02c9 (patch)
treeae412697f6735c98673619f69aded223f389cd4c /sysdeps/unix
parent7c112a38127d1d1df0d31ac4ce437294b7813229 (diff)
downloadglibc-175cef4163dd60f95106cfd5f593b8a4e09d02c9.tar.gz
glibc-175cef4163dd60f95106cfd5f593b8a4e09d02c9.tar.xz
glibc-175cef4163dd60f95106cfd5f593b8a4e09d02c9.zip
Fix ARM build with GCC trunk.
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.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c3
-rw-r--r--sysdeps/unix/sysv/linux/arm/unwind-resume.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c b/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
index 6ccd9b43a1..660d1488e1 100644
--- a/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
+++ b/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
@@ -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)
diff --git a/sysdeps/unix/sysv/linux/arm/unwind-resume.c b/sysdeps/unix/sysv/linux/arm/unwind-resume.c
index bff3e2b4f1..1f1eb71741 100644
--- a/sysdeps/unix/sysv/linux/arm/unwind-resume.c
+++ b/sysdeps/unix/sysv/linux/arm/unwind-resume.c
@@ -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 *);