This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gold commit] PR gold/19567: Fix overflow checking for 32-bit pc-relative relocations on x32


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]