mirror of
https://sourceware.org/git/glibc.git
synced 2025-05-28 16:21:30 +03:00
Update.
* sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): Minimal cleanups. Add assert to ensure memory handling is correct.
This commit is contained in:
parent
4ab5b7b53f
commit
88d88a58d7
@ -1,5 +1,8 @@
|
|||||||
2001-01-09 Ulrich Drepper <drepper@redhat.com>
|
2001-01-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
|
||||||
|
Minimal cleanups. Add assert to ensure memory handling is correct.
|
||||||
|
|
||||||
* manual/conf.texi (File Minimums): Fix _POSIX_PATH_MAX value.
|
* manual/conf.texi (File Minimums): Fix _POSIX_PATH_MAX value.
|
||||||
Reported by Ben Collins <bcollins@debian.org>.
|
Reported by Ben Collins <bcollins@debian.org>.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return list with names for address in backtrace.
|
/* Return list with names for address in backtrace.
|
||||||
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
|
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||||
|
|
||||||
@ -18,6 +18,7 @@
|
|||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -50,7 +51,7 @@ __backtrace_symbols (array, size)
|
|||||||
status[cnt] = _dl_addr (array[cnt], &info[cnt]);
|
status[cnt] = _dl_addr (array[cnt], &info[cnt]);
|
||||||
if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
|
if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
|
||||||
/* We have some info, compute the length of the string which will be
|
/* We have some info, compute the length of the string which will be
|
||||||
"<fct-name>(<sym-name>)[+offset]. */
|
"<file-name>(<sym-name>) [+offset]. */
|
||||||
total += (strlen (info[cnt].dli_fname ?: "")
|
total += (strlen (info[cnt].dli_fname ?: "")
|
||||||
+ (info[cnt].dli_sname
|
+ (info[cnt].dli_sname
|
||||||
? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3
|
? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3
|
||||||
@ -61,7 +62,7 @@ __backtrace_symbols (array, size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate memory for the result. */
|
/* Allocate memory for the result. */
|
||||||
result = malloc (size * sizeof (char *) + total);
|
result = (char **) malloc (size * sizeof (char *) + total);
|
||||||
if (result != NULL)
|
if (result != NULL)
|
||||||
{
|
{
|
||||||
char *last = (char *) (result + size);
|
char *last = (char *) (result + size);
|
||||||
@ -93,6 +94,7 @@ __backtrace_symbols (array, size)
|
|||||||
else
|
else
|
||||||
last += 1 + sprintf (last, "[%p]", array[cnt]);
|
last += 1 + sprintf (last, "[%p]", array[cnt]);
|
||||||
}
|
}
|
||||||
|
assert (last <= (char *) result + size * sizeof (char *) + total);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user