[PATCH] Handle crazy mips 64 little endian case.

Richard Sandiford rsandifo at linux.vnet.ibm.com
Mon Apr 29 04:20:35 PDT 2013


Rafael Espíndola <rafael.espindola at gmail.com> writes:
> On 22 April 2013 09:28, Richard Sandiford <rsandifo at linux.vnet.ibm.com> wrote:
>> Rafael Ávila de Espíndola <rafael.espindola at gmail.com> writes:
>>> + // Mip64 little endian has a "special" encoding of r_info. Instead
>>> of one
>>> + // 64 bit little endian number, it is a little ending 32 bit number
>>> followed
>>> +    // by a 32 bit big endian number.
>>
>> A bit pedantic, sorry, but it's more accurate to say that, on both big
>> and little endian n64, what generic ELF64 calls r_info is instead a
>> 32-bit symbol index (r_sym) followed by 4 byte fields (r_ssym, r_type3,
>> r_type2, r_type).  It's just that the code is choosing to represent all
>> 5 fields as a single 64-bit integer.
>
> Well, calling this a "mips endian" has the big advantaged that we can
> patch it in exactly one place in the llvm codebase. If we were to
> instead have the notion of "mips ELF" with other fields instead of
> r_info, many more places would have to be updated.

Understood, and FWIW binutils does the same thing.  I just thought
the comment was a bit misleading.

Thanks,
Richard





More information about the llvm-commits mailing list