This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] [ARC] Allow disassembly if BFD is not available


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]