mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-14 12:18:12 +01:00
arm: ptrace: Fix order of probing unwind tables
Commit 92327a3
"ARM: prefer to unwind using DWARF info"
changes order of unwind info searching to prefer DWARF (.debug_frame)
section in prior to ARM specific (.ARM.exidx). This patch only affects
local process unwinding. Now the same is done for remote unwinding.
Sometimes probing .ARM.exidx first causes backtrace truncation
after __aeabi_ldiv0 (division by 0 handler that generates SIGFPE),
because it hits [cantunwind] generated by cross-gcc for __divsi3
function copied with __aeabi_ldiv0 from libgcc.a. Perhaps, lack of
debug info for __divsi3 causes [cantunwind], or there is a problem
converting DWARF to ARM unwind tables, but when unwinding using
DWARF, it hits proper entry, and backtrace is shown correctly.
Reported-by: Frederic Berat <fberat@de.adit-jv.com>
Signed-off-by: Vitaly Kuzmichev <Vitaly_Kuzmichev@mentor.com>
This commit is contained in:
parent
11a053f5ca
commit
7885596b9c
1 changed files with 4 additions and 4 deletions
|
@ -131,15 +131,15 @@ _UPT_find_proc_info (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
|
|||
ret = tdep_search_unwind_table (as, ip, &ui->edi.di_cache,
|
||||
pi, need_unwind_info, arg);
|
||||
|
||||
if (ret == -UNW_ENOINFO && ui->edi.di_debug.format != -1)
|
||||
ret = tdep_search_unwind_table (as, ip, &ui->edi.di_debug, pi,
|
||||
need_unwind_info, arg);
|
||||
|
||||
#if UNW_TARGET_ARM
|
||||
if (ret == -UNW_ENOINFO && ui->edi.di_arm.format != -1)
|
||||
ret = tdep_search_unwind_table (as, ip, &ui->edi.di_arm, pi,
|
||||
need_unwind_info, arg);
|
||||
#endif
|
||||
|
||||
if (ret == -UNW_ENOINFO && ui->edi.di_debug.format != -1)
|
||||
ret = tdep_search_unwind_table (as, ip, &ui->edi.di_debug, pi,
|
||||
need_unwind_info, arg);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue