crtstuff.c (frame_dummy, [...]): Call _Jv_RegisterClasses through a function pointer.
authorJakub Jelinek <jakub@redhat.com>
Wed, 21 Jan 2004 16:01:26 +0000 (17:01 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 21 Jan 2004 16:01:26 +0000 (17:01 +0100)
* crtstuff.c (frame_dummy, __do_global_ctors_1): Call
_Jv_RegisterClasses through a function pointer.

From-SVN: r76287

gcc/ChangeLog
gcc/crtstuff.c

index ac0537ffee360de8a475967f43bf9d0b269dafcb..67a1f8e96a87b119e4e6c65cc7544abb2d927ff8 100644 (file)
@@ -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
index b9a29a0ba607ec3dc485440d36a571f7d8d4c822..c4dbbfc95f78f8ba7c11e00dea76d785e2af8891 100644 (file)
@@ -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 */