[lld] r233057 - [Mips] Support MIPS N64 relocation record format

Simon Atanasyan simon at atanasyan.com
Tue Mar 24 08:54:32 PDT 2015


On Tue, Mar 24, 2015 at 4:19 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
> On Tue, Mar 24, 2015 at 9:17 AM, Simon Atanasyan <simon at atanasyan.com> wrote:
>> On Tue, Mar 24, 2015 at 4:02 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
>>> On Tue, Mar 24, 2015 at 5:57 AM, Simon Atanasyan <simon at atanasyan.com> wrote:
>>>> +  MipsELFReference(uint64_t symValue, const Elf_Rela &rel)
>>>> +      : ELFReference<ELFT>(
>>>> +            &rel, rel.r_offset - symValue, Reference::KindArch::Mips,
>>>> +            rel.getType(_isMips64EL) & 0xff, rel.getSymbol(_isMips64EL)),
>>>> +        _tag(rel.getType(_isMips64EL) >> 8) {}
>>>
>>> This code is causing a warning in MSVC because rel.getType() returns
>>> an unsigned char, but you then >> by sizeof(unsigned char). Is that
>>> intended?
>>
>> In general it is not a problem because rel.getType() has unsigned char
>> return type
>> in case of 32-bit variant of Elf_Rel_Impl only. For 32-bit MIPS ABI
>> the _tag should
>> be always zero. 64-bit variant of Elf_Rel_Impl has `uint32_t
>> getType()` declaration.
>
> Ah, so getType() really doesn't matter in the 32-bit case and can be
> initialized to 0 directly.
>
>> Anyway, thanks for the information. I will try to reorganize the code to escape
>> the warning.

Could you please check that r233088 fixes the problem?

-- 
Simon Atanasyan



More information about the llvm-commits mailing list