aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/std
diff options
context:
space:
mode:
authorStafford Horne <shorne@gmail.com>2025-05-12 21:47:21 +0100
committerStafford Horne <shorne@gmail.com>2025-06-02 11:05:06 +0100
commit2588ef7423a135427c5d343461da092cbedbe194 (patch)
treedde0977d38c5d2c968c44c6fce49dab5b9c3fe4c /libstdc++-v3/testsuite/std
parent8287861f7ca7418cd924ea2491c743c72ddb55dd (diff)
downloadgcc-2588ef7423a135427c5d343461da092cbedbe194.zip
gcc-2588ef7423a135427c5d343461da092cbedbe194.tar.gz
gcc-2588ef7423a135427c5d343461da092cbedbe194.tar.bz2
or1k: Support long jump offsets with -mcmodel=large
The -mcmodel=large option was originally added to handle generation of large binaries with large PLTs. However, when compiling the Linux kernel with allyesconfig the output binary is so large that the jump instruction 26-bit immediate is not large enough to store the jump offset to some symbols when linking. Example error: relocation truncated to fit: R_OR1K_INSN_REL_26 against symbol `do_fpe_trap' defined in .text section in arch/openrisc/kernel/traps.o We fix this by forcing jump offsets to registers when -mcmodel=large. Note, to get the Linux kernel allyesconfig config to work with OpenRISC, this patch is needed along with some other patches to the Linux hand coded assembly bits. gcc/ChangeLog: * config/or1k/predicates.md (call_insn_operand): Add condition to not allow symbol_ref operands with TARGET_CMODEL_LARGE. * config/or1k/or1k.opt: Document new -mcmodel=large implications. * doc/invoke.texi: Likewise. gcc/testsuite/ChangeLog: * gcc.target/or1k/call-1.c: New test. * gcc.target/or1k/got-1.c: New test.
Diffstat (limited to 'libstdc++-v3/testsuite/std')
0 files changed, 0 insertions, 0 deletions