With the attached testcase on mips64-elf toolchain when disassambling a o32
application which crosses addresses from 0x7fffffff to 0x80000000 objdump goes
haywire and keep on disassmbling symbol at 0x8000000.
Debugging it a bit I figured that the symbol values which are unsigned long long
are read in as signed long long at bfd_elf32_swap_symbol_in() function because
sign_extend_vma is set for mips in bfd. All the address calculations in objdump
are done unsigned for addresses and when it encounters a symbol with value
0x80000000 bfd sign extends it before putting this value into the asymbol
structure and it becomes 0xffffffff80000000 which is a large unsigned number and
all adress comparsions which involve the sybmol value start to fail.
--
Summary: objdump -d loops infinitely
Product: binutils
Version: 2.17
Status: NEW
Severity: normal
Priority: P2
Component: binutils
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: raj dot khem at gmail dot com
CC: bug-binutils at gnu dot org
GCC build triplet: i386-redhat-linux
GCC host triplet: i386-redhat-linux
GCC target triplet: mips64-elf
http://sourceware.org/bugzilla/show_bug.cgi?id=9774
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils