From d24d854870d0680679c8e70b8a908adc3a93f24e Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 8 Jan 2010 08:55:16 +0000 Subject: [PATCH] gdb/ * stabsread.c (read_args): Handle zero arguments. gdb/testsuite/ * gdb.stabs/weird.def (args93): New. --- gdb/ChangeLog | 4 ++++ gdb/stabsread.c | 12 +++++++++++- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.stabs/weird.def | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1657c7d..9cc7d5b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2010-01-09 Jan Kratochvil + + * stabsread.c (read_args): Handle zero arguments. + 2009-01-08 Joel Brobecker Cannot find in-tree libiconv.a after reconfigure. 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 { diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 208ffa5..3b0c421 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-01-09 Jan Kratochvil + + * gdb.stabs/weird.def (args93): New. + 2010-01-07 Doug Evans * lib/gdb.exp (gdb_skip_xml_test): Add comment. diff --git a/gdb/testsuite/gdb.stabs/weird.def b/gdb/testsuite/gdb.stabs/weird.def index 33116b4..71fcff6 100644 --- a/gdb/testsuite/gdb.stabs/weird.def +++ b/gdb/testsuite/gdb.stabs/weird.def @@ -880,3 +880,7 @@ var3: .stabs "sym92:\ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",N_LSYM,0,0,0 .stabs "type92:t92=\ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",N_LSYM,0,0,0 .stabs "attr92:G392=@\ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",N_GSYM,0,0, 0 + +# See read_args "Invalid (empty) method arguments" error; there is an +# unexpected semi-colon after =@s8;-16 that used to cause a GDB crash. +.stabs "args93:G93=#(0,93),(0,93)=@s8;-16;,(0,93),(0,93);",N_GSYM,0,0,0 -- 2.7.4