From: Jeroen Dekkers <jeroen@dekkers.cx>
To: gdb-gnats@sources.redhat.com, nobody@sources.redhat.com,
alvaro@alobbs.com, gdb-prs@sources.redhat.com,
gdb-patches@sources.redhat.com
Subject: Re: gdb/2009: Segmentation faults on AMD64
Date: Sun, 16 Oct 2005 12:59:00 -0000 [thread overview]
Message-ID: <87psq5lis4.wl%jeroen@vrijschrift.org> (raw)
I debugged this segfault and it is caused by incorrect debug
information generated by GCC on AMD64, see http://gcc.gnu.org/PR24400.
The problem is that the filenumbers in the .debug_macinfo arex
wrong. They jump from 0xf to 0x11, skipping 0x10, so the last filename
has a number which isn't in the filename table.
GDB blindly uses the number as index into the filename table,
resulting in a segfault. The following patch adds a check whether the
index isn't bigger than the size of the table.
2005-10-16 Jeroen Dekkers <jeroen@dekkers.cx>
Fix PR gdb/2009.
* dwarf2read.c (file_full_name): Check whether FILE isn't bigger
than the size of the filename table.
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.183
diff -u -p -r1.183 dwarf2read.c
--- dwarf2read.c 1 Aug 2005 04:06:27 -0000 1.183
+++ dwarf2read.c 16 Oct 2005 12:43:23 -0000
@@ -8810,7 +8810,19 @@ dwarf_alloc_die (void)
static char *
file_full_name (int file, struct line_header *lh, const char *comp_dir)
{
- struct file_entry *fe = &lh->file_names[file - 1];
+ struct file_entry *fe;
+
+ /* Check whether FILE isn't bigger than the number of filenames in
+ the table. There used to be a bug in GCC (PR24400) which would
+ generate an index that is one higher than the size of the
+ table. */
+ if (file > lh->num_file_names)
+ {
+ complaint (&symfile_complaints, _("invalid file index number in macro section"));
+ return xstrdup ("/invalid/file/index");
+ }
+
+ fe = &lh->file_names[file - 1];
if (IS_ABSOLUTE_PATH (fe->name))
return xstrdup (fe->name);
next reply other threads:[~2005-10-16 12:59 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-16 12:59 Jeroen Dekkers [this message]
[not found] ` <vt21x2l6y1b.fsf@theseus.home.>
2005-10-16 21:23 ` Jeroen Dekkers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87psq5lis4.wl%jeroen@vrijschrift.org \
--to=jeroen@dekkers.cx \
--cc=alvaro@alobbs.com \
--cc=gdb-gnats@sources.redhat.com \
--cc=gdb-patches@sources.redhat.com \
--cc=gdb-prs@sources.redhat.com \
--cc=nobody@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox