PATCH: PR gold/16945: Executable with -fpie and -mcmodel=large gives segfault on start
H.J. Lu
hjl.tools@gmail.com
Thu May 15 18:10:00 GMT 2014
On Thu, May 15, 2014 at 11:02 AM, Alexander Ivchenko <aivchenk@gmail.com> wrote:
> Shouldn't got_offset be the type of section_offset_type ?
That also works.
> 2014-05-15 21:31 GMT+04:00 H.J. Lu <hongjiu.lu@intel.com>:
>> There are 2 issues:
>>
>> 1. Since the GOT offset is always negative, we need to use signed int
>> to support 64-bit GOT relocations.
>> 2. R_X86_64_PLTOFF64 uses the address of GLOBAL_OFFSET_TABLE, which is
>> the address of the .got.plt section, not the .got section.
>>
>> This patch fixes both. OK for master and 2.24 branch?
>>
>> Thanks.
>>
>> H.J.
>> ---
>> 2014-05-15 H.J. Lu <hongjiu.lu@intel.com>
>>
>> PR gold/16945
>> * x86_64.cc (Target_x86_64::Relocate::relocate): Use signed int
>> for got_offset. Properly get GOT address for R_X86_64_PLTOFF64.
>>
>> diff --git a/gold/x86_64.cc b/gold/x86_64.cc
>> index 479fb42..f58c843 100644
>> --- a/gold/x86_64.cc
>> +++ b/gold/x86_64.cc
>> @@ -3327,7 +3327,9 @@ Target_x86_64<size>::Relocate::relocate(
>> // We need to subtract the size of the GOT section to get
>> // the actual offset to use in the relocation.
>> bool have_got_offset = false;
>> - unsigned int got_offset = 0;
>> + // Since the actual offset is always negative, we use signed int to
>> + // support 64-bit GOT relocations.
>
--
H.J.
More information about the Binutils
mailing list