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 bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils