diff options
author | Alexandre Oliva <oliva@adacore.com> | 2025-07-07 23:57:02 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2025-07-07 23:57:02 -0300 |
commit | a90dad293ce4919a44b20a4a329551c4b9e1348f (patch) | |
tree | c1df485896f2664b1f02e6a11300dd67f17ed4ab /gcc/lambda-code.c | |
parent | 477abe67d34f7f8d1b0b12408e08769995b6ca9e (diff) | |
download | gcc-a90dad293ce4919a44b20a4a329551c4b9e1348f.zip gcc-a90dad293ce4919a44b20a4a329551c4b9e1348f.tar.gz gcc-a90dad293ce4919a44b20a4a329551c4b9e1348f.tar.bz2 |
[vxworks] [x86] disable vxworks6 PIC on vxworks7
VxWorks6 used symbols __GOTT_BASE__ and __GOTT_INDEX__ to obtain the
address of the global offset table. Starting with VxWorks7, that is
no longer the case, but we've still issued these symbols in
output_set_got. Do that only with VxWorks<7.
Switching to the call-based PIC register sequence, we have to set the
flag that prevents the use of the red zone, and AFAICT the reasons
that ruled out GOTOFF and other relative addressing no longer apply to
VxWorks7+.
for gcc/ChangeLog
* config/vxworks-dummy.h (TARGET_VXWORKS_VAROFF): New.
(TARGET_VXWORKS_GOTTPIC): New.
* config/vxworks.h (TARGET_VXWORKS_VAROFF): Override.
(TARGET_VXWORKS_GOTTPIC): Likewise.
* config/i386/i386.cc (output_set_got): Disable VxWorks6 GOT
sequence on VxWorks7.
(legitimize_pic_address): Accept relative addressing of
labels on VxWorks7.
(ix86_delegitimize_address_1): Likewise.
(ix86_output_addr_diff_elt): Likewise.
* config/i386/i386.md (tablejump): Likewise.
(set_got, set_got_labelled): Set no-red-zone flag on VxWorks7.
* config/i386/predicates.md (gotoff_operand): Test
TARGET_VXWORKS_VAROFF.
Diffstat (limited to 'gcc/lambda-code.c')
0 files changed, 0 insertions, 0 deletions