diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-02-17 18:04:32 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2004-02-17 18:04:32 +0000 |
commit | 173ad41dc69cf118d93bc6240a3c658e222ee75f (patch) | |
tree | bccf5c7f467225e9062a4544b0d917998fe0775c | |
parent | 5a8bdc9b4d8cc42c30b4114d027072a81b964ddd (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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/crtstuff.c | 18 |
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 */ |