aboutsummaryrefslogtreecommitdiff
path: root/gold/ChangeLog
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2016-02-06 14:47:05 -0800
committerCary Coutant <ccoutant@gmail.com>2016-02-06 14:47:05 -0800
commit19ef3f4d2eaac10e98c7ba3f9eace8609ab5278e (patch)
treef759db3d5c30cc937c6bf904c5b5e200f9350d45 /gold/ChangeLog
parent72c55146bb505642994637071b305bf4d30ef685 (diff)
downloadgdb-19ef3f4d2eaac10e98c7ba3f9eace8609ab5278e.zip
gdb-19ef3f4d2eaac10e98c7ba3f9eace8609ab5278e.tar.gz
gdb-19ef3f4d2eaac10e98c7ba3f9eace8609ab5278e.tar.bz2
Fix overflow checking for 32-bit pc-relative relocations on x32.
The problem here 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. 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.
Diffstat (limited to 'gold/ChangeLog')
-rw-r--r--gold/ChangeLog12
1 files changed, 12 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index a8184fc..628547e 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,17 @@
2016-02-06 Cary Coutant <ccoutant@gmail.com>
+ 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.
+
+2016-02-06 Cary Coutant <ccoutant@gmail.com>
+
PR gold/19577
* reloc.h (Bits::has_unsigned_overflow32): Fix static_cast.
(Bits::has_unsigned_overflow): Remove unnecessary static_cast.