https://sourceware.org/bugzilla/show_bug.cgi?id=33243
Bug ID: 33243
Summary: gnu-debuglink (objdump 1) FAILs on Solaris/amd64
Product: binutils
Version: 2.46 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: binutils
Assignee: unassigned at sourceware dot org
Reporter: ro at gcc dot gnu.org
Target Milestone: ---
Target: amd64-pc-solaris2.11
The "gnu-debuglink (objdump 1)" test FAILs on Solaris/amd64 (only, i386, sparc,
and sparcv9 are fine):
FAIL: gnu-debuglink (objdump 1)
The failure is
spawn -ignore SIGHUP diff tmpdir/testprog.dump tmpdir/testprog.compress.dump
30c30,32
< 400660: ff 35 b2 05 20 00 ff 25 b4 05 20 00 0f 1f 40 00 .5.. ..%..
...@.
---
> 400660: ff 35 b2 05 20 00 push 0x2005b2(%rip) # 600c18
> <_GLOBAL_OFFSET_TABLE_+0x8>
> 400666: ff 25 b4 05 20 00 jmp *0x2005b4(%rip) # 600c20
> <_GLOBAL_OFFSET_TABLE_+0x10>
> 40066c: 0f 1f 40 00 nopl 0x0(%rax)
i.e. in the first case (objdump -d testprog), the PLT of the original
executable
isn't disassembled while in the second (objdump -d -WK, on the output of
objcopy --add-gnu-debuglink=testprog.compress testprog.strip testprog) it is.
I couldn't make much sense of that. Running a debug build of objdump under
gdb shows that in objdump.c (disassemble_section), l.4091, insns is set
differently:
without -WK: with -WK:
insn false true
disassemble_all false false
sym != NULL != NULL
sym->section 0x905af0 0x90d310
== !=
section 0x905af0 0x905af0
without -WK:
(gdb) p *sym->section
$17 = {name = 0x906ad4 ".plt", next = 0x905c18, prev = 0x9059c8, id = 25,
section_id = 0, index = 9, flags = 283, user_set_vma = 1, linker_mark = 0,
linker_has_input = 0, gc_mark = 0, compress_status = 0, segment_mark = 0,
sec_info_type = 0, use_rela_p = 1, mmapped_p = 0, alloced = 0, sec_flg0 = 0,
sec_flg1 = 0, sec_flg2 = 0, sec_flg3 = 0, sec_flg4 = 0, sec_flg5 = 0,
vma = 4195936, lma = 4195936, size = 96, rawsize = 0, compressed_size = 0,
output_offset = 0, output_section = 0x0, relocation = 0x0,
orelocation = 0x0, reloc_count = 0, alignment_power = 4, filepos = 1632,
rel_filepos = 0, line_filepos = 0, userdata = 0x0, contents = 0x0,
lineno = 0x0, lineno_count = 0, entsize = 0, kept_section = 0x0,
moving_line_filepos = 0, target_index = 0, used_by_bfd = 0x907770,
constructor_chain = 0x0, owner = 0x901610, symbol = 0x9078e0, map_head = {
link_order = 0x0, s = 0x0, linked_to_symbol_name = 0x0}, map_tail = {
link_order = 0x0, s = 0x0, linked_to_symbol_name = 0x0},
already_assigned = 0x0, type = 0}
with -WK:
(gdb) p *sym->section
$28 = {name = 0x921184 ".plt", next = 0x90d438, prev = 0x90d1e8, id = 77,
section_id = 0, index = 9, flags = 25, user_set_vma = 1, linker_mark = 0,
linker_has_input = 0, gc_mark = 0, compress_status = 0, segment_mark = 0,
sec_info_type = 0, use_rela_p = 1, mmapped_p = 0, alloced = 0, sec_flg0 = 0,
sec_flg1 = 0, sec_flg2 = 0, sec_flg3 = 0, sec_flg4 = 0, sec_flg5 = 0,
vma = 4195936, lma = 4195936, size = 96, rawsize = 0, compressed_size = 0,
output_offset = 0, output_section = 0x0, relocation = 0x0,
orelocation = 0x0, reloc_count = 0, alignment_power = 4, filepos = 400,
rel_filepos = 0, line_filepos = 0, userdata = 0x0, contents = 0x0,
lineno = 0x0, lineno_count = 0, entsize = 0, kept_section = 0x0,
moving_line_filepos = 0, target_index = 0, used_by_bfd = 0x921e68,
constructor_chain = 0x0, owner = 0x903fd0, symbol = 0x921f90, map_head = {
link_order = 0x0, s = 0x0, linked_to_symbol_name = 0x0}, map_tail = {
link_order = 0x0, s = 0x0, linked_to_symbol_name = 0x0},
already_assigned = 0x0, type = 0}
(gdb) p *section
$29 = {name = 0x906ad4 ".plt", next = 0x905c18, prev = 0x9059c8, id = 25,
section_id = 0, index = 9, flags = 283, user_set_vma = 1, linker_mark = 0,
linker_has_input = 0, gc_mark = 0, compress_status = 0, segment_mark = 0,
sec_info_type = 0, use_rela_p = 1, mmapped_p = 0, alloced = 0, sec_flg0 = 0,
sec_flg1 = 0, sec_flg2 = 0, sec_flg3 = 0, sec_flg4 = 0, sec_flg5 = 0,
vma = 4195936, lma = 4195936, size = 96, rawsize = 0, compressed_size = 0,
output_offset = 0, output_section = 0x0, relocation = 0x0,
orelocation = 0x0, reloc_count = 0, alignment_power = 4, filepos = 1632,
rel_filepos = 0, line_filepos = 0, userdata = 0x0, contents = 0x0,
lineno = 0x0, lineno_count = 0, entsize = 0, kept_section = 0x0,
moving_line_filepos = 0, target_index = 0, used_by_bfd = 0x907770,
constructor_chain = 0x0, owner = 0x901610, symbol = 0x9078e0, map_head = {
link_order = 0x0, s = 0x0, linked_to_symbol_name = 0x0}, map_tail = {
link_order = 0x0, s = 0x0, linked_to_symbol_name = 0x0},
already_assigned = 0x0, type = 0}
i.e. in the working -WK case there are two different .plt sections while in
the failing one there's only one.
I'm attaching the script used to create the different versions and the save
outputs.
--
You are receiving this mail because:
You are on the CC list for the bug.