Re: [PATCH v3 1/3] Use bfd_mach_mips4000 as the default machine type for 64-bit MIPS ABIs.

Maciej W. Rozycki
2017-01-04T02:09:25Z

On Tue, 3 Jan 2017, John Baldwin wrote:

> If the flags word of an ELF header is empty, _bfd_elf_mips_mach always
> returned bfd_mach_mips3000 which is a 32-bit MIPS ABI. This change
> uses bfd_mach_mips4000 if the ELF class identifies a 64-bit binary.

Since this touches the MIPS port I'll have a look at it in details when I
am back next week.

In particular I'm a bit concerned about the inconsistency between n64 and
n32 it introduces by making one default to `bfd_mach_mips4000' but not the
other, while both are 64-bit ABIs requiring a 64-bit processor to run.
Which is also already known at the time `_bfd_elf_mips_mach' is being
called. So rather than changing its API entirely perhaps we just need an
extra `need_64bit' or suchlike extra argument for the callee to select the
BFD appropriately if the ISA is set incorrectly in the ELF object.

Also can you please remind me why this is the case in the first place and
how exactly such ELF objects are annotated, e.g. can we identify (limit
the handling of) such faulty objects with the EI_OSABI marker for example?
NB this should be explained in details for posterity in the commit message
itself.

Thanks,

Maciej