objdump patch for sbin/init Segmentation fault

Mori Hiroki yamori813 at yahoo.co.jp
Wed Aug 3 03:40:56 UTC 2016


Hi

I have problem sbin/init disassemble by objdump command. I make path this problem. 

microserver % `find tmp/arm.arm/ -name objdump -type f | head -1` -d Planex_MZK-
W04G_rootfs_clean/sbin/init

Planex_MZK-W04G_rootfs_clean/sbin/init:     file format elf32-littlearm

Disassembly of section .init:

00008140 <.init>:
Segmentation fault (core dumped)
microserver % gdb `find tmp/arm.arm/ -name objdump -type f | head -1` objdump.co
re
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
Core was generated by `objdump'.
Program terminated with signal 11, Segmentation fault.
#0  0x00000000004311a6 in print_insn (pc=33088, info=0x7fffffffe800, little=1)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/libopcodes/../../../../
contrib/binutils/opcodes/arm-dis.c:3990
3990      if (info->symtab != NULL
(gdb) where
#0  0x00000000004311a6 in print_insn (pc=33088, info=0x7fffffffe800, little=1)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/libopcodes/../../../../
contrib/binutils/opcodes/arm-dis.c:3990
#1  0x000000000040314e in disassemble_section (abfd=0x800c09140, 
    section=0x800c32140, info=0x7fffffffe800)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/objdump/../../../../con
trib/binutils/binutils/objdump.c:1470
#2  0x0000000000436d1c in uM犯IH波Q0蝟 ()
#3  0x0000000000401bf6 in dump_bfd (abfd=0x800c09140)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/objdump/../../../../con
trib/binutils/binutils/objdump.c:2012
#4  0x0000000000400de3 in display_bfd (abfd=<value optimized out>)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/objdump/../../../../con
trib/binutils/binutils/objdump.c:2945
#5  0x0000000000400d2b in display_file (filename=<value optimized out>, 
    target=<value optimized out>)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/objdump/../../../../con
trib/binutils/binutils/objdump.c:3026
#6  0x0000000000400adb in main (argc=3, argv=0x7fffffffea08)
    at /storage/home/hiroki/freebsd/gnu/usr.bin/binutils/objdump/../../../../con
trib/binutils/binutils/objdump.c:3265
Current language:  auto; currently minimal
(gdb) p info->symtab
$1 = (asymbol **) 0x800c30058
(gdb) p *info->symtab
$2 = (asymbol *) 0x0
(gdb) 


diff --git a/contrib/binutils/opcodes/arm-dis.c b/contrib/binutils/opcodes/arm-dis.c
index b6ce5c6..6fb6930 100644
--- a/contrib/binutils/opcodes/arm-dis.c
+++ b/contrib/binutils/opcodes/arm-dis.c
@@ -3988,6 +3988,7 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean li
ttle)
   /* First check the full symtab for a mapping symbol, even if there
      are no usable non-mapping symbols for this address.  */
   if (info->symtab != NULL
+      && *info->symtab != NULL
       && bfd_asymbol_flavour (*info->symtab) == bfd_target_elf_flavour)
     {
       bfd_vma addr;


Regards

Hiroki Mori


More information about the freebsd-arm mailing list