aboutsummaryrefslogtreecommitdiff
path: root/libbb/ptr_to_globals.c
diff options
context:
space:
mode:
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 f8ccbf142..48cf8d86c 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
+