Thread View: gnu.gdb.bug
1 messages
1 total messages
Started by Dean R. E. Long
Sat, 09 Jan 1993 17:51
gdb-4.7 patches
Author: Dean R. E. Long
Date: Sat, 09 Jan 1993 17:51
Date: Sat, 09 Jan 1993 17:51
214 lines
5325 bytes
5325 bytes
These patches fix a number of demangling bugs related to templates.
dl
-------------
*** gdb/symtab.c.orig Fri Oct 9 09:44:31 1992
--- gdb/symtab.c Fri Jan 8 22:48:48 1993
***************
*** 2490,2501 ****
int newsize;
int i;
- /* clip symbols that cannot match */
-
- if (!cplus_match (symname, text, text_len)) {
- return;
- }
-
/* matches mangled, may match unmangled. now clip any symbol names
that we've already considered. (This is a time optimization) */
--- 2490,2495 ----
***************
*** 2516,2521 ****
--- 2510,2521 ----
symname = demangled;
} else {
+ /* clip symbols that cannot match */
+
+ if (!cplus_match (symname, text, text_len)) {
+ return;
+ }
+
symname = savestring (symname, strlen (symname));
}
*** libiberty/cplus-dem.c.orig Mon Oct 5 17:42:45 1992
--- libiberty/cplus-dem.c Sun Jan 10 01:42:17 1993
***************
*** 276,285 ****
static void
forget_types PARAMS ((struct work_stuff *));
- #if 0
static void
string_prepends PARAMS ((string *, string *));
- #endif
/* Translate count to integer, consuming tokens in the process.
Conversion terminates on the first non-digit character. */
--- 276,283 ----
***************
*** 669,675 ****
}
string_appendn (&tname, *mangled, r);
string_appendn (&trawname, *mangled, r);
- string_appendn (&trawname, "", 1);
*mangled += r;
string_append (&tname, "<");
/* get size of template parameter list */
--- 667,672 ----
***************
*** 688,697 ****
{
(*mangled)++;
success = do_type (work, mangled, &temp);
- string_appendn (&temp, "", 1);
if (success)
{
! string_append (&tname, temp.b);
}
string_delete(&temp);
if (!success)
--- 685,693 ----
{
(*mangled)++;
success = do_type (work, mangled, &temp);
if (success)
{
! string_appends (&tname, temp);
}
string_delete(&temp);
if (!success)
***************
*** 708,717 ****
is_integral = 0;
done = 0;
success = do_type (work, mangled, &temp);
- string_appendn (&temp, "", 1);
if (success)
{
! string_append (&tname, temp.b);
}
string_delete(&temp);
if (!success)
--- 704,712 ----
is_integral = 0;
done = 0;
success = do_type (work, mangled, &temp);
if (success)
{
! string_appends (&tname, temp);
}
string_delete(&temp);
if (!success)
***************
*** 825,832 ****
}
if (work -> constructor || work -> destructor)
{
! string_append (&tname, trawname.b);
}
string_delete(&trawname);
if (!success)
--- 820,833 ----
}
if (work -> constructor || work -> destructor)
{
! string_appends (&tname, trawname);
}
+ {
+ char buf[16];
+ sprintf(buf, "%d", trawname.p - trawname.b);
+ string_prepend(&trawname, buf);
+ remember_type(work, trawname.b, trawname.p - trawname.b);
+ }
string_delete(&trawname);
if (!success)
***************
*** 835,841 ****
}
else
{
! string_prepend (declp, tname.b);
string_delete (&tname);
if (work -> static_type)
--- 836,842 ----
}
else
{
! string_prepends (declp, tname);
string_delete (&tname);
if (work -> static_type)
***************
*** 842,853 ****
{
string_append (declp, *mangled + 1);
*mangled += strlen (*mangled);
- success = 1;
}
! else
! {
! success = demangle_args (work, mangled, declp);
! }
}
return (success);
}
--- 843,850 ----
{
string_append (declp, *mangled + 1);
*mangled += strlen (*mangled);
}
! success = 1;
}
return (success);
}
***************
*** 993,1001 ****
success = 0;
}
}
! else if ((scan == *mangled) && (isdigit (scan[2]) || (scan[2] == 'Q')))
{
! /* A GNU style constructor starts with "__<digit>" or "__Q". */
work -> constructor = 1;
*mangled = scan + 2;
}
--- 990,998 ----
success = 0;
}
}
! else if ((scan == *mangled) && (isdigit (scan[2]) || (scan[2] == 't')))
{
! /* A GNU style constructor starts with "__<digit>" or "__t". */
work -> constructor = 1;
*mangled = scan + 2;
}
***************
*** 2164,2171 ****
}
}
- #if 0
-
static void
string_prepends (p, s)
string *p, *s;
--- 2161,2166 ----
***************
*** 2175,2182 ****
string_prependn (p, s->b, s->p - s->b);
}
}
-
- #endif
static void
string_prependn (p, s, n)
--- 2170,2175 ----
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads