This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[gold commit] PR gold/19567: Fix overflow checking for 32-bit pc-relative relocations on x32
- From: Cary Coutant <ccoutant at gmail dot com>
- To: Binutils <binutils at sourceware dot org>
- Date: Sat, 6 Feb 2016 14:49:19 -0800
- Subject: [gold commit] PR gold/19567: Fix overflow checking for 32-bit pc-relative relocations on x32
- Authentication-results: sourceware.org; auth=none
One of the problems in PR 19567 is that x32 is really using 64-bit
addressing, while pretending to be 32-bit. Even though the object file
format is 32-bit, we need to do the overflow checking with 64-bit
arithmetic (because that's what the hardware will be using).
This patch overrides the pcrela32_check functions in reloc.h with
target-specific versions that do 64-bit checking.
I've also updated the test case to use -Tdata instead of adding a huge
.space directive, to reduce the size of the .o files.
-cary
2016-02-06 Cary Coutant <ccoutant@gmail.com>
gold/
PR gold/19567
* reloc.h (Relocate_functions::Overflow_check): Add comments.
* x86_64.cc (X86_64_relocate_functions): New class.
(Target_x86_64::Relocate::relocate): Use the new class.
* testsuite/Makefile.am (x86_64_overflow_pc32): Add -Tdata option.
(x32_overflow_pc32): New test case.
* testsuite/Makefile.in: Regenerate.
* testsuite/x32_overflow_pc32.sh: New script.
* testsuite/x86_64_overflow_pc32.s: Remove .space directive.