This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFA PATCH 1/3 V3] Remember the case pattern that allowed finding a field of this.
- From: "Pierre Muller" <pierre dot muller at ics-cnrs dot unistra dot fr>
- To: "'Pierre Muller'" <pierre dot muller at ics-cnrs dot unistra dot fr>, "'Pedro Alves'" <palves at redhat dot com>
- Cc: "'gdb-patches'" <gdb-patches at sourceware dot org>
- Date: Fri, 23 Jan 2015 01:26:43 +0100
- Subject: [RFA PATCH 1/3 V3] Remember the case pattern that allowed finding a field of this.
- Authentication-results: sourceware.org; auth=none
- References: <54ae4586 dot 01e3440a dot 7b06 dot fffff844SMTPIN_ADDED_BROKEN at mx dot google dot com> <54AE605A dot 8050308 at redhat dot com> <54ae7f9f dot c323460a dot 36ed dot ffffff30SMTPIN_ADDED_BROKEN at mx dot google dot com> <54AE8914 dot 4010507 at redhat dot com> <54ae911b dot 85e3440a dot 1d96 dot 5ffdSMTPIN_ADDED_BROKEN at mx dot google dot com> <54AFB2E5 dot 5080307 at redhat dot com> <001501d02c27$9fe84350$dfb8c9f0$ at muller@ics-cnrs.unistra.fr>
For this one also,
an update is necessary:
I realized that I got wrong output
for some field of this variables,
and it turned out to be due to missing
initialization of some local variables.
gdb/ChangeLog entry:
2015-01-22 Pierre Muller <muller@sourceware.org>
PR pascal/17815
* p-exp.y (yylex): Remember the case pattern that allowed finding
a field of this.
---
gdb/p-exp.y | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index a1c78bf..101de09 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -1551,7 +1551,7 @@ yylex (void)
int is_a_field = 0;
int hextype;
-
+ is_a_field_of_this.type = NULL;
if (search_field && current_type)
is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
if (is_a_field)
@@ -1598,15 +1598,20 @@ yylex (void)
VAR_DOMAIN, &is_a_field_of_this);
}
- if (is_a_field)
+ if (is_a_field || (is_a_field_of_this.type != NULL))
{
tempbuf = (char *) realloc (tempbuf, namelen + 1);
strncpy (tempbuf, tmp, namelen);
tempbuf [namelen] = 0;
yylval.sval.ptr = tempbuf;
yylval.sval.length = namelen;
+ yylval.ssym.sym = NULL;
free (uptokstart);
- return FIELDNAME;
+ yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
+ if (is_a_field)
+ return FIELDNAME;
+ else
+ return NAME;
}
/* Call lookup_symtab, not lookup_partial_symtab, in case there are
no psymtabs (coff, xcoff, or some future change to blow away the
@@ -1739,7 +1744,6 @@ yylex (void)
free(uptokstart);
/* Any other kind of symbol. */
yylval.ssym.sym = sym;
- yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
return NAME;
}
}
--
2.1.4