This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] [ARC] Allow disassembly if BFD is not available
- From: Anton Kolesov <Anton dot Kolesov at synopsys dot com>
- To: binutils at sourceware dot org
- Cc: Anton Kolesov <Anton dot Kolesov at synopsys dot com>, Francois Bedard <Francois dot Bedard at synopsys dot com>, Claudiu Zissulescu <Claudiu dot Zissulescu at synopsys dot com>, Cupertino Miranda <Cupertino dot Miranda at synopsys dot com>
- Date: Tue, 6 Sep 2016 15:33:02 +0300
- Subject: [PATCH] [ARC] Allow disassembly if BFD is not available
- Authentication-results: sourceware.org; auth=none
When debugger invokes opcodes to get disassembler, sometimes there is no
corresponding BFD instance for the debugged targets, for example if debugger has
connected to remote target and doesn't have an ELF file for an application in
the target CPU. Therefore, in this case it is not possible to determine
extensions present in target. Currently opcodes would simply has a segfault in
this, this patches makes it handle the case gracefully and return a normal
disassembler without any extension information.
opcodes/
* arc-dis.c (arc_get_disassembler): Accept the null abfd gracefully.
---
opcodes/arc-dis.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/opcodes/arc-dis.c b/opcodes/arc-dis.c
index d69a01e..21ad6b1 100644
--- a/opcodes/arc-dis.c
+++ b/opcodes/arc-dis.c
@@ -1238,11 +1238,16 @@ print_insn_arc (bfd_vma memaddr,
disassembler_ftype
arc_get_disassembler (bfd *abfd)
{
- /* Read the extenssion insns and registers, if any. */
- build_ARC_extmap (abfd);
+ /* BFD my be absent, if opcodes is invoked from the debugger that has
+ connected to remote target and doesn't have an ELF file. */
+ if (abfd != NULL)
+ {
+ /* Read the extension insns and registers, if any. */
+ build_ARC_extmap (abfd);
#ifdef DEBUG
- dump_ARC_extmap ();
+ dump_ARC_extmap ();
#endif
+ }
return print_insn_arc;
}
--
2.8.1