From ac8e29977aac325fc9223ae38326a0ece7a74101 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 6 Jul 1998 17:21:35 +0000 Subject: Update. 1998-07-06 Ulrich Drepper * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): Improve generated strings a bit. --- sysdeps/generic/elf/backtracesyms.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/generic/elf/backtracesyms.c b/sysdeps/generic/elf/backtracesyms.c index 4147d956eb..7de0bfc9ee 100644 --- a/sysdeps/generic/elf/backtracesyms.c +++ b/sysdeps/generic/elf/backtracesyms.c @@ -53,7 +53,7 @@ __backtrace_symbols (array, size) "()[+offset]. */ total += (strlen (info[cnt].dli_fname ?: "") + (info[cnt].dli_sname - ? strlen (info[cnt].dli_sname) + 3 + ? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3 : 1) + WORD_WIDTH + 6); else @@ -72,12 +72,22 @@ __backtrace_symbols (array, size) if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0') - last += 1 + sprintf (last, "%s%s%s%s[+%p]", - info[cnt].dli_fname ?: "", - info[cnt].dli_sname ? "(" : "", - info[cnt].dli_sname ?: "", - info[cnt].dli_sname ? ") " : " ", - info[cnt].dli_fbase); + { + char buf[20]; + + if (array[cnt] >= (void *) info[cnt].dli_saddr) + sprintf (buf, "+0x%x", array[cnt] - info[cnt].dli_saddr); + else + sprintf (buf, "-0x%x", info[cnt].dli_saddr - array[cnt]); + + last += 1 + sprintf (last, "%s%s%s%s%s[+%p]", + info[cnt].dli_fname ?: "", + info[cnt].dli_sname ? "(" : "", + info[cnt].dli_sname ?: "", + info[cnt].dli_sname ? buf : "", + info[cnt].dli_sname ? ") " : " ", + array[cnt]); + } else last += 1 + sprintf (last, "[+%p]", array[cnt]); } -- cgit 1.4.1