aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-01-21 17:01:26 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2004-01-21 17:01:26 +0100
commitbfccaa6f7006c6f1a56f6b8e4194583e8cddd2f4 (patch)
treec3b288134c597c606d66497b6e532680dad3420f /gcc
parentc3cda381c7dec4b95c20275629acc7194c68a324 (diff)
downloadgcc-bfccaa6f7006c6f1a56f6b8e4194583e8cddd2f4.zip
gcc-bfccaa6f7006c6f1a56f6b8e4194583e8cddd2f4.tar.gz
gcc-bfccaa6f7006c6f1a56f6b8e4194583e8cddd2f4.tar.bz2
crtstuff.c (frame_dummy, [...]): Call _Jv_RegisterClasses through a function pointer.
* crtstuff.c (frame_dummy, __do_global_ctors_1): Call _Jv_RegisterClasses through a function pointer. From-SVN: r76287
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/crtstuff.c18
2 files changed, 19 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ac0537f..67a1f8e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ * crtstuff.c (frame_dummy, __do_global_ctors_1): Call
+ _Jv_RegisterClasses through a function pointer.
+
2004-01-21 Falk Hueffner <falk@debian.org>
PR target/12898
diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c
index b9a29a0b..c4dbbfc 100644
--- a/gcc/crtstuff.c
+++ b/gcc/crtstuff.c
@@ -312,8 +312,13 @@ frame_dummy (void)
#endif /* CRT_GET_RFIB_DATA */
#endif /* USE_EH_FRAME_REGISTRY */
#ifdef JCR_SECTION_NAME
- if (__JCR_LIST__[0] && _Jv_RegisterClasses)
- _Jv_RegisterClasses (__JCR_LIST__);
+ if (__JCR_LIST__[0])
+ {
+ void (*register_classes) (void *) = _Jv_RegisterClasses;
+ __asm ("" : "+r" (register_classes));
+ if (register_classes)
+ register_classes (__JCR_LIST__);
+ }
#endif /* JCR_SECTION_NAME */
}
@@ -395,8 +400,13 @@ __do_global_ctors_1(void)
__register_frame_info (__EH_FRAME_BEGIN__, &object);
#endif
#ifdef JCR_SECTION_NAME
- if (__JCR_LIST__[0] && _Jv_RegisterClasses)
- _Jv_RegisterClasses (__JCR_LIST__);
+ if (__JCR_LIST__[0])
+ {
+ void (*register_classes) (void *) = _Jv_RegisterClasses;
+ __asm ("" : "+r" (register_classes));
+ if (register_classes)
+ register_classes (__JCR_LIST__);
+ }
#endif
}
#endif /* USE_EH_FRAME_REGISTRY || JCR_SECTION_NAME */