summaryrefslogtreecommitdiff
path: root/gcc/crtstuff.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-21 16:01:26 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-21 16:01:26 +0000
commit69c4cf505a0b052af03f5b829a30b93cd6057cbe (patch)
treec3b288134c597c606d66497b6e532680dad3420f /gcc/crtstuff.c
parent5b95257897c2a461abfcc151706f2f9b97702be2 (diff)
downloadgcc-69c4cf505a0b052af03f5b829a30b93cd6057cbe.tar.gz
* crtstuff.c (frame_dummy, __do_global_ctors_1): Call
_Jv_RegisterClasses through a function pointer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76287 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/crtstuff.c')
-rw-r--r--gcc/crtstuff.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c
index b9a29a0ba60..c4dbbfc95f7 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 */