aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-02-17 18:04:32 +0000
committerJakub Jelinek <jakub@redhat.com>2004-02-17 18:04:32 +0000
commit173ad41dc69cf118d93bc6240a3c658e222ee75f (patch)
treebccf5c7f467225e9062a4544b0d917998fe0775c
parent5a8bdc9b4d8cc42c30b4114d027072a81b964ddd (diff)
* crtstuff.c (frame_dummy, __do_global_ctors_1): Call
_Jv_RegisterClasses through a function pointer. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-3_3-rhl-branch@77965 138bc75d-0d04-0410-961f-82ee72b054a4
-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 3b5279e0714..a4120a38958 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * crtstuff.c (frame_dummy, __do_global_ctors_1): Call
+ _Jv_RegisterClasses through a function pointer.
+
2003-02-09 Richard Henderson <rth@redhat.com>
* libgcc-std.ver (__clztf2): New.
diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c
index cdc447d248d..1e9c4f68b7f 100644
--- a/gcc/crtstuff.c
+++ b/gcc/crtstuff.c
@@ -317,8 +317,13 @@ frame_dummy (void)
#endif
#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 */
}
@@ -408,8 +413,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 */