summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/initfini.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common/initfini.c')
-rw-r--r--libc/sysdeps/linux/common/initfini.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/initfini.c b/libc/sysdeps/linux/common/initfini.c
index 4a6ebee75..927ed1db3 100644
--- a/libc/sysdeps/linux/common/initfini.c
+++ b/libc/sysdeps/linux/common/initfini.c
@@ -109,6 +109,11 @@ void _init (void)
asm ("ALIGN");
asm("END_INIT");
+#if defined(__sh__)
+ /* This is a horrible hack, but seems to be necessary to
+ * make this work for the Hitachi SH processors */
+ asm ("\n.L5:\n\t.long _GLOBAL_OFFSET_TABLE_\n");
+#endif
/* Now the epilog. */
asm ("\n/*@_init_PROLOG_ENDS*/");
asm ("\n/*@_init_EPILOG_BEGINS*/");
@@ -129,6 +134,11 @@ void _fini (void)
/* End of the _fini prolog. */
asm ("ALIGN");
asm ("END_FINI");
+#if defined(__sh__)
+ /* This is a horrible hack, but seems to be necessary to
+ * make this work for the Hitachi SH processors */
+ asm ("\n.L10:\n\t.long _GLOBAL_OFFSET_TABLE_\n");
+#endif
asm ("\n/*@_fini_PROLOG_ENDS*/");
{