This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/17384] android arm gdb "Cannot access memory at address" when I "stepi" over "blx"


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]