| Summary: | [-fPIE/-pie] FAIL: gdb.arch/amd64-entry-value-param.exp: call 1: p y | ||
|---|---|---|---|
| Product: | gdb | Reporter: | Tom de Vries <vries> |
| Component: | symtab | Assignee: | Not yet assigned to anyone <unassigned> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | jan |
| Priority: | P2 | ||
| Version: | HEAD | ||
| Target Milestone: | 12.1 | ||
| Host: | Target: | ||
| Build: | Last reconfirmed: | ||
| Project(s) to access: | ssh public key: | ||
| Attachments: | Tentative patch | ||
|
Description
Tom de Vries
2019-08-08 14:33:52 UTC
Setting a breakpoint on throw_error, we get:
...
Thread 1 "gdb" hit Breakpoint 2, throw_error (error=NO_ENTRY_VALUE_ERROR,
fmt=0xb57318 "DW_OP_entry_value resolving cannot find DW_TAG_call_site %s in %s")
at src/gdb/gdbsupport/common-exceptions.c:222
222 va_start (args, fmt);
(gdb) bt
#0 throw_error (error=NO_ENTRY_VALUE_ERROR,
fmt=0xb57318 "DW_OP_entry_value resolving cannot find DW_TAG_call_site %s in %s")
at src/gdb/gdbsupport/common-exceptions.c:222
#1 0x0000000000479158 in call_site_for_pc (gdbarch=0x1a9a730, pc=93824992233083)
at src/gdb/block.c:237
#2 0x000000000059b023 in call_site_find_chain_1 (gdbarch=0x1a9a730, caller_pc=93824992233083,
callee_pc=93824992233040) at src/gdb/dwarf2loc.c:1097
#3 0x000000000059b3fc in call_site_find_chain (gdbarch=0x1a9a730, caller_pc=93824992233083,
callee_pc=93824992233040) at src/gdb/dwarf2loc.c:1201
#4 0x000000000058c41e in dwarf2_tailcall_sniffer_first (this_frame=0x1a4db00, tailcall_cachep=0x1a4dc08,
entry_cfa_sp_offsetp=0x0) at src/gdb/dwarf2-frame-tailcall.c:391
#5 0x000000000058f3f8 in dwarf2_frame_prev_register (this_frame=0x1a4db00, this_cache=0x1a4db18, regnum=16)
at src/gdb/dwarf2-frame.c:1236
#6 0x0000000000629105 in frame_unwind_register_value (next_frame=0x1a4db00, regnum=16)
at src/gdb/frame.c:1229
#7 0x0000000000628ca4 in frame_register_unwind (next_frame=0x1a4db00, regnum=16, optimizedp=0x7fffffffc5bc,
unavailablep=0x7fffffffc5b8, lvalp=0x7fffffffc5a8, addrp=0x7fffffffc5b0, realnump=0x7fffffffc5ac,
bufferp=0x7fffffffc5e8 "") at src/gdb/frame.c:1132
#8 0x0000000000628f95 in frame_unwind_register (next_frame=0x1a4db00, regnum=16, buf=0x7fffffffc5e8 "")
at src/gdb/frame.c:1188
#9 0x000000000069a36e in i386_unwind_pc (gdbarch=0x1a9a730, next_frame=0x1a4db00)
at src/gdb/i386-tdep.c:1967
#10 0x000000000063bf53 in gdbarch_unwind_pc (gdbarch=0x1a9a730, next_frame=0x1a4db00)
at src/gdb/gdbarch.c:3085
#11 0x0000000000628616 in frame_unwind_pc (this_frame=0x1a4db00) at src/gdb/frame.c:928
#12 0x000000000062b536 in get_frame_pc (frame=0x1b8ef80) at src/gdb/frame.c:2399
#13 0x000000000062b614 in get_frame_address_in_block (this_frame=0x1b8ef80)
at src/gdb/frame.c:2429
#14 0x00000000006d8352 in inline_frame_sniffer (self=0xbe83e0 <inline_frame_unwind>, this_frame=0x1b8ef80,
this_cache=0x1b8ef98) at src/gdb/inline-frame.c:204
#15 0x0000000000626491 in frame_unwind_try_unwinder (this_frame=0x1b8ef80, this_cache=0x1b8ef98,
unwinder=0xbe83e0 <inline_frame_unwind>) at src/gdb/frame-unwind.c:107
#16 0x00000000006265fe in frame_unwind_find_by_frame (this_frame=0x1b8ef80, this_cache=0x1b8ef98)
at src/gdb/frame-unwind.c:165
#17 0x0000000000627a57 in compute_frame_id (fi=0x1b8ef80) at src/gdb/frame.c:546
#18 0x000000000062a777 in get_prev_frame_if_no_cycle (this_frame=0x1a4db00)
at src/gdb/frame.c:1927
#19 0x000000000062ae87 in get_prev_frame_always_1 (this_frame=0x1a4db00)
at src/gdb/frame.c:2108
#20 0x000000000062aeaf in get_prev_frame_always (this_frame=0x1a4db00)
at src/gdb/frame.c:2124
#21 0x000000000062b43a in get_prev_frame (this_frame=0x1a4db00) at src/gdb/frame.c:2376
#22 0x000000000059bbb4 in value_of_dwarf_reg_entry (type=0x1a164e0, frame=0x1a4db00,
kind=CALL_SITE_PARAMETER_DWARF_REG, kind_u=...) at src/gdb/dwarf2loc.c:1449
#23 0x000000000059bd5f in value_of_dwarf_block_entry (type=0x1a164e0, frame=0x1a4db00, block=0x1a30085 "U\aK",
block_len=1) at src/gdb/dwarf2loc.c:1501
#24 0x000000000059ffff in locexpr_read_variable_at_entry (symbol=0x1a64610, frame=0x1a4db00)
at src/gdb/dwarf2loc.c:3543
#25 0x0000000000866ad8 in read_frame_arg (fp_opts=..., sym=0x1a64610, frame=0x1a4db00, argp=0x7fffffffcb80,
entryargp=0x7fffffffcba0) at src/gdb/stack.c:496
#26 0x00000000008675b7 in print_frame_args (fp_opts=..., func=0x1a645a0, frame=0x1a4db00, num=-1,
stream=0x1a6e070) at src/gdb/stack.c:818
#27 0x000000000086873e in print_frame (fp_opts=..., frame=0x1a4db00, print_level=0, print_what=SRC_AND_LOC,
print_args=1, sal=...) at src/gdb/stack.c:1332
#28 0x0000000000867d54 in print_frame_info (fp_opts=..., frame=0x1a4db00, print_level=0, print_what=SRC_AND_LOC,
print_args=1, set_current_sal=1) at src/gdb/stack.c:1031
#29 0x00000000008662d6 in print_stack_frame (frame=0x1a4db00, print_level=0, print_what=SRC_AND_LOC,
set_current_sal=1) at src/gdb/stack.c:305
#30 0x00000000006d1423 in print_stop_location (ws=0x7fffffffd020)
at src/gdb/infrun.c:7809
#31 0x00000000006d148a in print_stop_event (uiout=0x1a18a00, displays=true)
at src/gdb/infrun.c:7826
#32 0x00000000008fae0f in tui_on_normal_stop (bs=0x1ab9fe0, print_frame=1)
at src/gdb/tui/tui-interp.c:99
#33 0x0000000000445d3a in std::_Function_handler<void (bpstats*, int), void (*)(bpstats*, int)>::_M_invoke(std::_Any_data const&, bpstats*&&, int&&) (__functor=..., __args#0=@0x7fffffffd140: 0x1ab9fe0,
__args#1=@0x7fffffffd13c: 1) at /usr/include/c++/8/bits/std_function.h:297
#34 0x00000000006d5a14 in std::function<void (bpstats*, int)>::operator()(bpstats*, int) const (this=0x131b220,
__args#0=0x1ab9fe0, __args#1=1) at /usr/include/c++/8/bits/std_function.h:687
#35 0x00000000006d51be in gdb::observers::observable<bpstats*, int>::notify (
this=0x11f72a0 <gdb::observers::normal_stop>, args#0=0x1ab9fe0, args#1=1)
at src/gdb/gdbsupport/observable.h:106
#36 0x00000000006d1b5e in normal_stop () at src/gdb/infrun.c:8098
#37 0x00000000006c8b87 in fetch_inferior_event (client_data=0x0)
at src/gdb/infrun.c:3781
#38 0x00000000006b087b in inferior_event_handler (event_type=INF_REG_EVENT, client_data=0x0)
at src/gdb/inf-loop.c:43
#39 0x000000000070223c in handle_target_event (error=0, client_data=0x0)
at src/gdb/linux-nat.c:4352
#40 0x000000000060de3d in handle_file_event (file_ptr=0x1a5b670, ready_mask=1)
at src/gdb/event-loop.c:731
#41 0x000000000060e3e0 in gdb_wait_for_event (block=0) at src/gdb/event-loop.c:857
#42 0x000000000060d2b1 in gdb_do_one_event () at src/gdb/event-loop.c:321
#43 0x00000000008d7cbb in wait_sync_command_done () at src/gdb/top.c:510
#44 0x00000000008d7d33 in maybe_wait_sync_command_done (was_sync=0) at src/gdb/top.c:527
#45 0x00000000008d8144 in execute_command (p=0x7fffffffe134 "", from_tty=0)
at src/gdb/top.c:629
#46 0x0000000000726e66 in catch_command_errors (command=0x8d7d4c <execute_command(char const*, int)>,
arg=0x7fffffffe131 "run", from_tty=0) at src/gdb/main.c:372
#47 0x0000000000728065 in captured_main_1 (context=0x7fffffffda70)
at src/gdb/main.c:1136
#48 0x00000000007281a5 in captured_main (data=0x7fffffffda70) at src/gdb/main.c:1161
#49 0x0000000000728210 in gdb_main (args=0x7fffffffda70) at src/gdb/main.c:1186
#50 0x00000000004123f9 in main (argc=13, argv=0x7fffffffdb78) at src/gdb/gdb.c:32
...
Hmm, AFAIU, we call read_call_site_scope and try to update the pc to have the relocated value: ... baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); ... pc = attr_value_as_address (attr) + baseaddr; pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc); ... but unfortunately, objfile_relocate1 has not been called yet, so baseaddr is 0. Created attachment 11943 [details]
Tentative patch
This patch makes the test-case pass with -fPIE/-pie.
|