From ac8e29977aac325fc9223ae38326a0ece7a74101 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 6 Jul 1998 17:21:35 +0000 Subject: [PATCH] Update. 1998-07-06 Ulrich Drepper * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): Improve generated strings a bit. --- ChangeLog | 5 +++++ sysdeps/generic/elf/backtracesyms.c | 24 +++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index bac498661b3..6d5fbe35339 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +1998-07-06 Ulrich Drepper + + * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): + Improve generated strings a bit. + 1998-07-06 14:36 Andreas Schwab * posix/Makefile (generated): Remove $(objpfx) from the names. diff --git a/sysdeps/generic/elf/backtracesyms.c b/sysdeps/generic/elf/backtracesyms.c index 4147d956eb4..7de0bfc9eea 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]); } -- 2.47.2