mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-10-31 23:29:26 +01:00
Fix merge conflict.
2004/12/02 23:51:00-08:00 hp.com!davidm (do_backtrace): Also print the symbol offset. Increase nesting-level tolerance to 64 so we can test programs with deeply nested call-chains without triggering spurious warnings. 2004/11/30 22:44:47-08:00 mostang.com!davidm (do_backtrace): Print IP if unw_get_proc_info() fails. 2004/11/23 18:01:09-08:00 mostang.com!davidm (do_backtrace): Fix "start_ip might be used uninitialized" warning. (Logical change 1.290)
This commit is contained in:
parent
e02ef902df
commit
95c9a4a21e
1 changed files with 17 additions and 6 deletions
|
@ -68,11 +68,12 @@ static struct UPT_info *ui;
|
|||
void
|
||||
do_backtrace (pid_t target_pid)
|
||||
{
|
||||
unw_word_t ip, sp, start_ip = 0, off;
|
||||
int n = 0, ret;
|
||||
unw_proc_info_t pi;
|
||||
unw_word_t ip, sp, start_ip;
|
||||
unw_cursor_t c;
|
||||
char buf[512];
|
||||
size_t len;
|
||||
|
||||
ret = unw_init_remote (&c, as, ui);
|
||||
if (ret < 0)
|
||||
|
@ -89,13 +90,22 @@ do_backtrace (pid_t target_pid)
|
|||
|
||||
buf[0] = '\0';
|
||||
if (print_names)
|
||||
unw_get_proc_name (&c, buf, sizeof (buf), NULL);
|
||||
unw_get_proc_name (&c, buf, sizeof (buf), &off);
|
||||
|
||||
if (verbose)
|
||||
printf ("%016lx %-32s (sp=%016lx)\n", (long) ip, buf, (long) sp);
|
||||
{
|
||||
if (off)
|
||||
{
|
||||
len = strlen (buf);
|
||||
if (len >= sizeof (buf) - 32)
|
||||
len = sizeof (buf) - 32;
|
||||
sprintf (buf + len, "+0x%lx", off);
|
||||
}
|
||||
printf ("%016lx %-32s (sp=%016lx)\n", (long) ip, buf, (long) sp);
|
||||
}
|
||||
|
||||
if ((ret = unw_get_proc_info (&c, &pi)) < 0)
|
||||
panic ("unw_get_proc_info() failed: ret=%d\n", ret);
|
||||
panic ("unw_get_proc_info(ip=0x%lx) failed: ret=%d\n", (long) ip, ret);
|
||||
else if (verbose)
|
||||
printf ("\tproc=%016lx-%016lx\n\thandler=%lx lsda=%lx",
|
||||
(long) pi.start_ip, (long) pi.end_ip,
|
||||
|
@ -122,10 +132,11 @@ do_backtrace (pid_t target_pid)
|
|||
ret, (long) ip, (long) start_ip);
|
||||
}
|
||||
|
||||
if (++n > 32)
|
||||
if (++n > 64)
|
||||
{
|
||||
/* guard against bad unwind info in old libraries... */
|
||||
panic ("too deeply nested---assuming bogus unwind\n");
|
||||
panic ("too deeply nested---assuming bogus unwind (start ip=%lx)\n",
|
||||
(long) start_ip);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue