projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* at-file.texi: New file.
[deliverable/binutils-gdb.git]
/
libiberty
/
cp-demangle.c
diff --git
a/libiberty/cp-demangle.c
b/libiberty/cp-demangle.c
index 6c7e859fc77910b69da5a2b200303fdf0ef3d614..8f1cfb17f87f2734e0b756390eeaa94a69dc87ab 100644
(file)
--- a/
libiberty/cp-demangle.c
+++ b/
libiberty/cp-demangle.c
@@
-1,5
+1,5
@@
/* Demangler for g++ V3 ABI.
/* Demangler for g++ V3 ABI.
- Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004
, 2005
Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@wasabisystems.com>.
This file is part of the libiberty library, which is part of GCC.
Written by Ian Lance Taylor <ian@wasabisystems.com>.
This file is part of the libiberty library, which is part of GCC.
@@
-25,7
+25,7
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 5
9 Temple Place - Suite 330, Boston, MA 02111-1307
, USA.
+ Foundation, Inc., 5
1 Franklin Street - Fifth Floor, Boston, MA 02110-1301
, USA.
*/
/* This code implements a demangler for the g++ V3 ABI. The ABI is
*/
/* This code implements a demangler for the g++ V3 ABI. The ABI is
@@
-210,7
+210,7
@@
struct d_print_template
/* Next template on the list. */
struct d_print_template *next;
/* This template. */
/* Next template on the list. */
struct d_print_template *next;
/* This template. */
- const struct demangle_component *template;
+ const struct demangle_component *template
_decl
;
};
/* A list of type modifiers. This is used while printing. */
};
/* A list of type modifiers. This is used while printing. */
@@
-520,6
+520,9
@@
d_dump (struct demangle_component *dc, int indent)
case DEMANGLE_COMPONENT_REFTEMP:
printf ("reference temporary\n");
break;
case DEMANGLE_COMPONENT_REFTEMP:
printf ("reference temporary\n");
break;
+ case DEMANGLE_COMPONENT_HIDDEN_ALIAS:
+ printf ("hidden alias\n");
+ break;
case DEMANGLE_COMPONENT_RESTRICT:
printf ("restrict\n");
break;
case DEMANGLE_COMPONENT_RESTRICT:
printf ("restrict\n");
break;
@@
-733,6
+736,7
@@
d_make_comp (struct d_info *di, enum demangle_component_type type,
case DEMANGLE_COMPONENT_JAVA_CLASS:
case DEMANGLE_COMPONENT_GUARD:
case DEMANGLE_COMPONENT_REFTEMP:
case DEMANGLE_COMPONENT_JAVA_CLASS:
case DEMANGLE_COMPONENT_GUARD:
case DEMANGLE_COMPONENT_REFTEMP:
+ case DEMANGLE_COMPONENT_HIDDEN_ALIAS:
case DEMANGLE_COMPONENT_POINTER:
case DEMANGLE_COMPONENT_REFERENCE:
case DEMANGLE_COMPONENT_COMPLEX:
case DEMANGLE_COMPONENT_POINTER:
case DEMANGLE_COMPONENT_REFERENCE:
case DEMANGLE_COMPONENT_COMPLEX:
@@
-1439,6
+1443,7
@@
d_operator_name (struct d_info *di)
::= TF <type>
::= TJ <type>
::= GR <name>
::= TF <type>
::= TJ <type>
::= GR <name>
+ ::= GA <encoding>
*/
static struct demangle_component *
*/
static struct demangle_component *
@@
-1529,6
+1534,10
@@
d_special_name (struct d_info *di)
return d_make_comp (di, DEMANGLE_COMPONENT_REFTEMP, d_name (di),
NULL);
return d_make_comp (di, DEMANGLE_COMPONENT_REFTEMP, d_name (di),
NULL);
+ case 'A':
+ return d_make_comp (di, DEMANGLE_COMPONENT_HIDDEN_ALIAS,
+ d_encoding (di, 0), NULL);
+
default:
return NULL;
}
default:
return NULL;
}
@@
-2328,7
+2337,11
@@
d_expr_primary (struct d_info *di)
}
s = d_str (di);
while (d_peek_char (di) != 'E')
}
s = d_str (di);
while (d_peek_char (di) != 'E')
- d_advance (di, 1);
+ {
+ if (d_peek_char (di) == '\0')
+ return NULL;
+ d_advance (di, 1);
+ }
ret = d_make_comp (di, t, type, d_make_name (di, s, d_str (di) - s));
}
if (d_next_char (di) != 'E')
ret = d_make_comp (di, t, type, d_make_name (di, s, d_str (di) - s));
}
if (d_next_char (di) != 'E')
@@
-2551,7
+2564,7
@@
d_print_resize (struct d_print_info *dpi, size_t add)
char *newbuf;
newalc = dpi->alc * 2;
char *newbuf;
newalc = dpi->alc * 2;
- newbuf = realloc (dpi->buf, newalc);
+ newbuf =
(char *)
realloc (dpi->buf, newalc);
if (newbuf == NULL)
{
free (dpi->buf);
if (newbuf == NULL)
{
free (dpi->buf);
@@
-2629,7
+2642,7
@@
cplus_demangle_print (int options, const struct demangle_component *dc,
dpi.options = options;
dpi.alc = estimate + 1;
dpi.options = options;
dpi.alc = estimate + 1;
- dpi.buf = malloc (dpi.alc);
+ dpi.buf =
(char *)
malloc (dpi.alc);
if (dpi.buf == NULL)
{
*palc = 1;
if (dpi.buf == NULL)
{
*palc = 1;
@@
-2730,7
+2743,7
@@
d_print_comp (struct d_print_info *dpi,
{
dpt.next = dpi->templates;
dpi->templates = &dpt;
{
dpt.next = dpi->templates;
dpi->templates = &dpt;
- dpt.template = typed_name;
+ dpt.template
_decl
= typed_name;
}
/* If typed_name is a DEMANGLE_COMPONENT_LOCAL_NAME, then
}
/* If typed_name is a DEMANGLE_COMPONENT_LOCAL_NAME, then
@@
-2826,7
+2839,7
@@
d_print_comp (struct d_print_info *dpi,
return;
}
i = dc->u.s_number.number;
return;
}
i = dc->u.s_number.number;
- for (a = d_right (dpi->templates->template);
+ for (a = d_right (dpi->templates->template
_decl
);
a != NULL;
a = d_right (a))
{
a != NULL;
a = d_right (a))
{
@@
-2931,6
+2944,11
@@
d_print_comp (struct d_print_info *dpi,
d_print_comp (dpi, d_left (dc));
return;
d_print_comp (dpi, d_left (dc));
return;
+ case DEMANGLE_COMPONENT_HIDDEN_ALIAS:
+ d_append_string_constant (dpi, "hidden alias for ");
+ d_print_comp (dpi, d_left (dc));
+ return;
+
case DEMANGLE_COMPONENT_SUB_STD:
d_append_buffer (dpi, dc->u.s_string.string, dc->u.s_string.len);
return;
case DEMANGLE_COMPONENT_SUB_STD:
d_append_buffer (dpi, dc->u.s_string.string, dc->u.s_string.len);
return;
@@
-3683,7
+3701,7
@@
d_print_cast (struct d_print_info *dpi,
dpt.next = dpi->templates;
dpi->templates = &dpt;
dpt.next = dpi->templates;
dpi->templates = &dpt;
- dpt.template = d_left (dc);
+ dpt.template
_decl
= d_left (dc);
d_print_comp (dpi, d_left (d_left (dc)));
d_print_comp (dpi, d_left (d_left (dc)));
@@
-3764,7
+3782,7
@@
d_demangle (const char* mangled, int options, size_t *palc)
{
char *r;
{
char *r;
- r = malloc (40 + len - 11);
+ r =
(char *)
malloc (40 + len - 11);
if (r == NULL)
*palc = 1;
else
if (r == NULL)
*palc = 1;
else
@@
-4144,7
+4162,7
@@
is_gnu_v3_mangled_dtor (const char *name)
#include "getopt.h"
#include "dyn-string.h"
#include "getopt.h"
#include "dyn-string.h"
-static void print_usage
PARAMS ((FILE* fp, int exit_value)
);
+static void print_usage
(FILE* fp, int exit_value
);
#define IS_ALPHA(CHAR) \
(((CHAR) >= 'a' && (CHAR) <= 'z') \
#define IS_ALPHA(CHAR) \
(((CHAR) >= 'a' && (CHAR) <= 'z') \
This page took
0.02519 seconds
and
4
git commands to generate.