MIPS: Preset EF_MIPS_ABI2 with n32 ELF objects
authorMaciej W. Rozycki <macro@imgtec.com>
Mon, 23 Oct 2017 14:39:46 +0000 (15:39 +0100)
committerMaciej W. Rozycki <macro@imgtec.com>
Mon, 23 Oct 2017 14:39:46 +0000 (15:39 +0100)
commitdefc8e2b3576c28fd5651763348ae23c18a94170
treecba196c96f3af1293b8d9140c53f48187bcdc0c0
parentee6872beb1912af41a506c8aea34af7d2f873d04
MIPS: Preset EF_MIPS_ABI2 with n32 ELF objects

Fix a bug in MIPS n32 ELF object file generation and make such objects
consistent with the n32 BFD requested, by presetting the EF_MIPS_ABI2
flag in the `e_flags' member of the newly created ELF file header, as it
is this flag that tells n32 objects apart from o32 objects.

This flag will then stay set through to output file generation for
writers such as GAS or GDB's `generate-core-file' command.  Readers will
overwrite the whole of `e_flags' along with the rest of the ELF file
header in `elf_swap_ehdr_in' and then verify in `mips_elf_n32_object_p'
that the flag is still set before accepting an input file as an n32
object.

The issue was discovered with GDB's `generate-core-file' command making
o32 core files out of n32 debuggees.

bfd/
* elfn32-mips.c (mips_elf_n32_mkobject): New prototype and
function.
(bfd_elf32_mkobject): Use `mips_elf_n32_mkobject' rather than
`_bfd_mips_elf_mkobject'.

gas/
* config/tc-mips.c (mips_elf_final_processing): Don't set
EF_MIPS_ABI2 in `e_flags'.
bfd/ChangeLog
bfd/elfn32-mips.c
gas/ChangeLog
gas/config/tc-mips.c