aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-04-06 19:03:35 +0930
committerAlan Modra <amodra@gmail.com>2021-04-09 16:56:43 +0930
commitc3f72de4f53bc3e5f13762633d78d8a7efb8dd79 (patch)
treed1be8ec3633ed86a3451c392d0202444f9a72f6e /include
parent39178037a1cd78fed67b82aeec0313817c079c2a (diff)
downloadgdb-c3f72de4f53bc3e5f13762633d78d8a7efb8dd79.zip
gdb-c3f72de4f53bc3e5f13762633d78d8a7efb8dd79.tar.gz
gdb-c3f72de4f53bc3e5f13762633d78d8a7efb8dd79.tar.bz2
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.
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog4
-rw-r--r--include/dis-asm.h4
2 files changed, 8 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 639f2bf..752b8fe 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-09 Alan Modra <amodra@gmail.com>
+
+ * dis-asm.h (struct disassemble_info): Add dynrelbuf and dynrelcount.
+
2021-04-06 Alan Modra <amodra@gmail.com>
* dis-asm.h (struct disassemble_info <symbol_at_address_func>):
diff --git a/include/dis-asm.h b/include/dis-asm.h
index f3562fa..e8b42b0 100644
--- a/include/dis-asm.h
+++ b/include/dis-asm.h
@@ -114,6 +114,10 @@ typedef struct disassemble_info
/* Set if the user has requested wide output. */
#define WIDE_OUTPUT (1u << 28)
+ /* Dynamic relocations, if they have been loaded. */
+ arelent **dynrelbuf;
+ long dynrelcount;
+
/* Use internally by the target specific disassembly code. */
void *private_data;