From bfccaa6f7006c6f1a56f6b8e4194583e8cddd2f4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 21 Jan 2004 17:01:26 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/crtstuff.c | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac0537ffee3..67a1f8e96a8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-01-21 Jakub Jelinek + + * crtstuff.c (frame_dummy, __do_global_ctors_1): Call + _Jv_RegisterClasses through a function pointer. + 2004-01-21 Falk Hueffner PR target/12898 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 */ -- 2.30.2