From 3e57da382693ac0f6d31389cd507696f9c93e0b9 Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Wed, 17 Mar 1993 19:17:47 +0000 Subject: [PATCH] * xcoffread.c (MIN_TBTABSIZ): Change to 12. --- gdb/ChangeLog | 2 ++ gdb/xcoffread.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4da4f8bfb3..58e75de4e6 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 84be25fb19..cbc2f73128 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 (