aboutsummaryrefslogtreecommitdiff
path: root/gdb/stabsread.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2010-01-08 08:55:16 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2010-01-08 08:55:16 +0000
commitd24d854870d0680679c8e70b8a908adc3a93f24e (patch)
treeaf2a6f9bcbdcb41c541bb5c91f584e9eae69d7cb /gdb/stabsread.c
parentf0f209491f2228ffdd28cb3ec5ec326466a633b7 (diff)
downloadgdb-d24d854870d0680679c8e70b8a908adc3a93f24e.zip
gdb-d24d854870d0680679c8e70b8a908adc3a93f24e.tar.gz
gdb-d24d854870d0680679c8e70b8a908adc3a93f24e.tar.bz2
gdb/
* stabsread.c (read_args): Handle zero arguments. gdb/testsuite/ * gdb.stabs/weird.def (args93): New.
Diffstat (limited to 'gdb/stabsread.c')
-rw-r--r--gdb/stabsread.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index 66b084f..71c168c 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -4111,7 +4111,17 @@ read_args (char **pp, int end, struct objfile *objfile, int *nargsp,
}
(*pp)++; /* get past `end' (the ':' character) */
- if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID)
+ if (n == 0)
+ {
+ /* We should read at least the THIS parameter here. Some broken stabs
+ output contained `(0,41),(0,42)=@s8;-16;,(0,43),(0,1);' where should
+ have been present ";-16,(0,43)" reference instead. This way the
+ excessive ";" marker prematurely stops the parameters parsing. */
+
+ complaint (&symfile_complaints, _("Invalid (empty) method arguments"));
+ *varargsp = 0;
+ }
+ else if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID)
*varargsp = 1;
else
{