summaryrefslogtreecommitdiff
path: root/libbb/ptr_to_globals.c
diff options
context:
space:
mode:
authorDenis Vlasenko2008-04-11 11:27:29 +0000
committerDenis Vlasenko2008-04-11 11:27:29 +0000
commit93b8263652ac001247ff923499bdc04ab0a1a4c4 (patch)
tree9c608c11471a562bbb359ec661cb4e3a9cd5489a /libbb/ptr_to_globals.c
parent80f647c21c4457b5f74f5cdd87b789a0fa0d7c0d (diff)
downloadbusybox-93b8263652ac001247ff923499bdc04ab0a1a4c4.zip
busybox-93b8263652ac001247ff923499bdc04ab0a1a4c4.tar.gz
fix build with gcc -combine
Diffstat (limited to 'libbb/ptr_to_globals.c')
-rw-r--r--libbb/ptr_to_globals.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libbb/ptr_to_globals.c b/libbb/ptr_to_globals.c
index f8ccbf1..48cf8d8 100644
--- a/libbb/ptr_to_globals.c
+++ b/libbb/ptr_to_globals.c
@@ -5,7 +5,20 @@
* Licensed under GPLv2, see file LICENSE in this tarball for details.
*/
+struct globals;
+
+#ifndef GCC_COMBINE
+
/* We cheat here. It is declared as const ptr in libbb.h,
* but here we make it live in R/W memory */
-struct globals;
struct globals *ptr_to_globals;
+
+#else
+
+/* gcc -combine will see through and complain */
+/* Using alternative method which is more likely to break
+ * on weird architectures, compilers, linkers and so on */
+struct globals *const ptr_to_globals __attribute__ ((section (".data")));
+
+#endif
+