diff options
-rw-r--r-- | gdb/ChangeLog | 2 | ||||
-rw-r--r-- | gdb/xcoffread.c | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4da4f8b..58e75de 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,7 @@ Wed Mar 17 09:46:31 1993 Jim Kingdon (kingdon@cygnus.com) + * xcoffread.c (MIN_TBTABSIZ): Change to 12. + * xcoffread.c (xcoff_symfile_read): Only read stringtab and debugsec if there are a non-zero number of symbols. diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 84be25f..cbc2f73 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -750,9 +750,6 @@ retrieve_tracebackinfo (abfd, textsec, cs) { #define TBTABLE_BUFSIZ 2000 - /* Minimum buffer size to hold a traceback table. */ -#define MIN_TBTABSIZ 50 - static TracebackInfo tbInfo; struct tbtable *ptb; @@ -838,11 +835,19 @@ retrieve_tracebackinfo (abfd, textsec, cs) /* if we don't have the whole traceback table in the buffer, re-read the whole thing. */ + /* This is how much to read to get the traceback table. + 8 bytes of the traceback table are always present, plus we + look at parminfo. */ +#define MIN_TBTABSIZ 12 + if ((char*)pinsn > (buffer + bufferbytes - MIN_TBTABSIZ)) { /* In case if we are *very* close to the end of the text section and cannot read properly from that point on, abort by returning NULL. + + This could happen if the traceback table is only 8 bytes, + but we try to read 12 bytes of it. Handle this case more graciously -- FIXME */ if (!bfd_get_section_contents ( |