PowerPC disassembly of pcrel references
authorAlan Modra <amodra@gmail.com>
Tue, 6 Apr 2021 09:33:35 +0000 (19:03 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 9 Apr 2021 07:26:43 +0000 (16:56 +0930)
commitc3f72de4f53bc3e5f13762633d78d8a7efb8dd79
treed1be8ec3633ed86a3451c392d0202444f9a72f6e
parent39178037a1cd78fed67b82aeec0313817c079c2a
PowerPC disassembly of pcrel references

This adds some annotation to Power10 pcrel instructions, displaying
the target address (ie. pc + D34 field) plus a symbol if there is one
at exactly that target address.  pld from the .got or .plt will also
look up the entry and display it, symbolically if there is a dynamic
relocation on the entry.

include/
* dis-asm.h (struct disassemble_info): Add dynrelbuf and dynrelcount.
binutils/
* objdump.c (struct objdump_disasm_info): Delete dynrelbuf and
dynrelcount.
(find_symbol_for_address): Adjust for dynrelbuf and dynrelcount move.
(disassemble_section, disassemble_data): Likewise.
opcodes/
* ppc-dis.c (struct dis_private): Add "special".
(POWERPC_DIALECT): Delete.  Replace uses with..
(private_data): ..this.  New inline function.
(disassemble_init_powerpc): Init "special" names.
(skip_optional_operands): Add is_pcrel arg, set when detecting R
field of prefix instructions.
(bsearch_reloc, print_got_plt): New functions.
(print_insn_powerpc): For pcrel instructions, print target address
and symbol if known, and decode plt and got loads too.
gas/
* testsuite/gas/ppc/prefix-pcrel.d: Update expected output.
* testsuite/gas/ppc/prefix-reloc.d: Likewise.
* gas/testsuite/gas/ppc/vsx_32byte.d: Likewise.
ld/
* testsuite/ld-powerpc/inlinepcrel-1.d: Update expected output.
* testsuite/ld-powerpc/inlinepcrel-2.d: Likewise.
* testsuite/ld-powerpc/notoc2.d: Likewise.
* testsuite/ld-powerpc/notoc3.d: Likewise.
* testsuite/ld-powerpc/pcrelopt.d: Likewise.
* testsuite/ld-powerpc/startstop.d: Likewise.
* testsuite/ld-powerpc/tlsget.d: Likewise.
* testsuite/ld-powerpc/tlsget2.d: Likewise.
* testsuite/ld-powerpc/tlsld.d: Likewise.
* testsuite/ld-powerpc/weak1.d: Likewise.
* testsuite/ld-powerpc/weak1so.d: Likewise.
22 files changed:
binutils/ChangeLog
binutils/objdump.c
gas/ChangeLog
gas/testsuite/gas/ppc/prefix-pcrel.d
gas/testsuite/gas/ppc/prefix-reloc.d
gas/testsuite/gas/ppc/vsx_32byte.d
include/ChangeLog
include/dis-asm.h
ld/ChangeLog
ld/testsuite/ld-powerpc/inlinepcrel-1.d
ld/testsuite/ld-powerpc/inlinepcrel-2.d
ld/testsuite/ld-powerpc/notoc2.d
ld/testsuite/ld-powerpc/notoc3.d
ld/testsuite/ld-powerpc/pcrelopt.d
ld/testsuite/ld-powerpc/startstop.d
ld/testsuite/ld-powerpc/tlsget.d
ld/testsuite/ld-powerpc/tlsget2.d
ld/testsuite/ld-powerpc/tlsld.d
ld/testsuite/ld-powerpc/weak1.d
ld/testsuite/ld-powerpc/weak1so.d
opcodes/ChangeLog
opcodes/ppc-dis.c