tramp.S (trampoline_setup): Use a longcall sequence in the non pic case on VxWorks.

libgcc/
        * config/rs6000/vxworks/tramp.S (trampoline_setup): Use a longcall
        sequence in the non pic case on VxWorks.

From-SVN: r187871
This commit is contained in:
Olivier Hainque 2012-05-25 08:20:03 +00:00 committed by Olivier Hainque
parent 489381473d
commit c57685107c
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2012-05-25 Olivier Hainque <hainque@adacore.com>
* config/rs6000/vxworks/tramp.S (trampoline_setup): Use a longcall
sequence in the non pic case on VxWorks.
2012-05-24 Olivier Hainque <hainque@adacore.com>
* Makefile.in: Move dependency on install-unwind_h from

View File

@ -95,6 +95,16 @@ FUNC_START(__trampoline_setup)
blr
.Labort:
/* Use a longcall sequence in the non PIC case on VxWorks, to prevent
possible relocation errors if this is module-loaded very far away from
the 'abort' entry point. */
#if defined (__VXWORKS__) && ! (defined __PIC__ || defined __pic__)
lis r11,JUMP_TARGET(abort)@ha
addic r11,r11,JUMP_TARGET(abort)@l
mtlr r11
blrl
#else
#if (defined __PIC__ || defined __pic__) && defined HAVE_AS_REL16
bcl 20,31,1f
1: mflr r30
@ -105,3 +115,5 @@ FUNC_START(__trampoline_setup)
FUNC_END(__trampoline_setup)
#endif
#endif