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