This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug gdb/17384] android arm gdb "Cannot access memory at address" when I "stepi" over "blx"
- From: "martin at minimum dot se" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Mon, 22 Sep 2014 09:12:43 +0000
- Subject: [Bug gdb/17384] android arm gdb "Cannot access memory at address" when I "stepi" over "blx"
- Auto-submitted: auto-generated
- References: <bug-17384-4717 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=17384
--- Comment #21 from molsson <martin at minimum dot se> ---
If I run with a breakpoint on frame_unwind_find_by_frame() as I step of the
"blx" instruction, I see this happening:
It doesn't exit early when checking "target_get_unwinder" and
"target_get_tailcall_unwinder", instead it goes into the "unwinders loop";
these unwinders seem to be:
$1 = {
type = DUMMY_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x4f6e66 <dummy_frame_this_id>,
prev_register = 0x4f6db9 <dummy_frame_prev_register>,
unwind_data = 0x0,
sniffer = 0x4f6c83 <dummy_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$2 = {
type = INLINE_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x6905f2 <inline_frame_this_id>,
prev_register = 0x69075d <inline_frame_prev_register>,
unwind_data = 0x0,
sniffer = 0x690783 <inline_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$3 = {
type = NORMAL_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802db0,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$4 = {
type = NORMAL_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802d50,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$5 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802cf0,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$6 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802c90,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$7 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802c30,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$8 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802bd0,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$9 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802b70,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$10 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x69ea4e <tramp_frame_this_id>,
prev_register = 0x69ea8e <tramp_frame_prev_register>,
unwind_data = 0x1802ae0,
sniffer = 0x69ec2f <tramp_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$11 = {
type = NORMAL_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x410457 <arm_stub_this_id>,
prev_register = 0x40e2e1 <arm_prologue_prev_register>,
unwind_data = 0x0,
sniffer = 0x4104e8 <arm_stub_unwind_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$12 = {
type = TAILCALL_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x61f731 <tailcall_frame_this_id>,
prev_register = 0x61fa95 <tailcall_frame_prev_register>,
unwind_data = 0x0,
sniffer = 0x61fb29 <tailcall_frame_sniffer>,
dealloc_cache = 0x61fe9c <tailcall_frame_dealloc_cache>,
prev_arch = 0x61fec2 <tailcall_frame_prev_arch>
}
$13 = {
type = NORMAL_FRAME,
stop_reason = 0x61c7fd <dwarf2_frame_unwind_stop_reason>,
this_id = 0x61c84f <dwarf2_frame_this_id>,
prev_register = 0x61c925 <dwarf2_frame_prev_register>,
unwind_data = 0x0,
sniffer = 0x61cde1 <dwarf2_frame_sniffer>,
dealloc_cache = 0x61cd90 <dwarf2_frame_dealloc_cache>,
prev_arch = 0x0
}
$14 = {
type = SIGTRAMP_FRAME,
stop_reason = 0x61c7fd <dwarf2_frame_unwind_stop_reason>,
this_id = 0x61c84f <dwarf2_frame_this_id>,
prev_register = 0x61c925 <dwarf2_frame_prev_register>,
unwind_data = 0x0,
sniffer = 0x61cde1 <dwarf2_frame_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
$15 = {
type = NORMAL_FRAME,
stop_reason = 0x68dfa1 <default_frame_unwind_stop_reason>,
this_id = 0x40e204 <arm_prologue_this_id>,
prev_register = 0x40e2e1 <arm_prologue_prev_register>,
unwind_data = 0x0,
sniffer = 0x410197 <arm_exidx_unwind_sniffer>,
dealloc_cache = 0x0,
prev_arch = 0x0
}
This last unwinder (labelled $15 above) is the first one where I hit the
"return;" part of the loop and thereby exit frame_unwind_find_by_frame().
--
You are receiving this mail because:
You are on the CC list for the bug.