diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-06-17 10:24:52 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-06-17 10:24:52 +0000 |
commit | e021cda255e14eebecde2fc1c92446e25a2ee761 (patch) | |
tree | 6746be232f86a08ad1d4d253907fafddd47b697a | |
parent | 0751550d36d19aed015a210f8c5868a1ee6508ed (diff) | |
download | glibc-e021cda255e14eebecde2fc1c92446e25a2ee761.tar.gz glibc-e021cda255e14eebecde2fc1c92446e25a2ee761.tar.xz glibc-e021cda255e14eebecde2fc1c92446e25a2ee761.zip |
Update.
1998-06-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/generic/backtrace.c (INNER_THAN): New definition, use it to compare stack addresses.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/generic/backtrace.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index f627e8ba29..ca68a03702 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +1998-06-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * sysdeps/generic/backtrace.c (INNER_THAN): New definition, use it + to compare stack addresses. + 1998-06-17 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/alpha/glob.c: Include glob.h before diff --git a/sysdeps/generic/backtrace.c b/sysdeps/generic/backtrace.c index 7ac1d5f2c4..2d329e19cf 100644 --- a/sysdeps/generic/backtrace.c +++ b/sysdeps/generic/backtrace.c @@ -44,6 +44,11 @@ extern void *__libc_stack_end; # define CURRENT_STACK_FRAME ({ char __csf; &__csf; }) #endif +/* By default we assume that the stack grows downward. */ +#ifndef INNER_THAN +# define INNER_THAN < +#endif + struct layout { struct layout *next; @@ -67,7 +72,8 @@ __backtrace (array, size) current = (struct layout *) top_frame; while (cnt < size) { - if ((void *) current < top_stack || (void *) current > __libc_stack_end) + if ((void *) current INNER_THAN top_stack + || !((void *) current INNER_THAN __libc_stack_end)) /* This means the address is out of range. Note that for the toplevel we see a frame pointer with value NULL which clearly is out of range. */ |