Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 6 Jul 1998 17:21:35 +0000 (17:21 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 6 Jul 1998 17:21:35 +0000 (17:21 +0000)
1998-07-06  Ulrich Drepper  <drepper@cygnus.com>

* sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
Improve generated strings a bit.

ChangeLog
sysdeps/generic/elf/backtracesyms.c

index bac4986..6d5fbe3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1998-07-06  Ulrich Drepper  <drepper@cygnus.com>
+
+       * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
+       Improve generated strings a bit.
+
 1998-07-06 14:36  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
 
        * posix/Makefile (generated): Remove $(objpfx) from the names.
index 4147d95..7de0bfc 100644 (file)
@@ -53,7 +53,7 @@ __backtrace_symbols (array, size)
           "<fct-name>(<sym-name>)[+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]);
        }