MIPS/opcodes: Also set disassembler's ASE flags from ELF structures
authorMaciej W. Rozycki <macro@imgtec.com>
Wed, 14 Dec 2016 21:49:56 +0000 (21:49 +0000)
committerMaciej W. Rozycki <macro@imgtec.com>
Wed, 14 Dec 2016 22:12:21 +0000 (22:12 +0000)
commit5e7fc731f80e0d08385a05ad47dda332a49d9341
treef6c5fa7ce09db166b982357e18920de0cb1f070f
parent8184783a4069e04deb2e43b4ad0d66d80f1ad2df
MIPS/opcodes: Also set disassembler's ASE flags from ELF structures

Respect any ASE flags recorded in ELF file structures for the purpose of
selecting instructions to be disassembled, preventing code from being
hex-dumped even though having been clearly indicated as valid at the
assembly time.  Use date from the MIPS ABI flags structure if present,
and otherwise there may be an MDMX ASE flag set in the ELF file header.
For backwards compatibility only set extra flags and do not clear any,
preserving all previously set by the architecture selected to be
disassembled for.

include/
* elf/mips.h (Elf_Internal_ABIFlags_v0): Also declare struct
typedef as `elf_internal_abiflags_v0'.

bfd/
* bfd-in.h (elf_internal_abiflags_v0): New struct declaration.
(bfd_mips_elf_get_abiflags): New prototype.
* elfxx-mips.c (bfd_mips_elf_get_abiflags): New function.
* bfd-in2.h: Regenerate.

opcodes/
* mips-dis.c (mips_convert_abiflags_ases): New function.
(set_default_mips_dis_options): Also infer ASE flags from ELF
file structures.

binutils/
* testsuite/binutils-all/mips/mips-ase-1.d: New test.
* testsuite/binutils-all/mips/mips-ase-2.d: New test.
* testsuite/binutils-all/mips/mips-ase-3.d: New test.
* testsuite/binutils-all/mips/mips-ase-1.s: New test source.
* testsuite/binutils-all/mips/mips-ase-2.s: New test source.
* testsuite/binutils-all/mips/mips.exp: Run the new tests.
15 files changed:
bfd/ChangeLog
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/elfxx-mips.c
binutils/ChangeLog
binutils/testsuite/binutils-all/mips/mips-ase-1.d [new file with mode: 0644]
binutils/testsuite/binutils-all/mips/mips-ase-1.s [new file with mode: 0644]
binutils/testsuite/binutils-all/mips/mips-ase-2.d [new file with mode: 0644]
binutils/testsuite/binutils-all/mips/mips-ase-2.s [new file with mode: 0644]
binutils/testsuite/binutils-all/mips/mips-ase-3.d [new file with mode: 0644]
binutils/testsuite/binutils-all/mips/mips.exp
include/ChangeLog
include/elf/mips.h
opcodes/ChangeLog
opcodes/mips-dis.c