include/
2008-01-26 David Daney <ddaney@avtrex.com> * demangle.h (demangle_component_type): Add DEMANGLE_COMPONENT_JAVA_RESOURCE, DEMANGLE_COMPONENT_COMPOUND_NAME, and DEMANGLE_COMPONENT_CHARACTER as new enum values. (demangle_component): Add struct s_character to union u. libiberty/ 2008-01-26 David Daney <ddaney@avtrex.com> * cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE, DEMANGLE_COMPONENT_COMPOUND_NAME, and DEMANGLE_COMPONENT_CHARACTER cases. (d_make_comp): Handle DEMANGLE_COMPONENT_COMPOUND_NAME and DEMANGLE_COMPONENT_JAVA_RESOURCE cases. (d_make_character): New function. (d_java_resource): Same. (d_special_name): Handle "Gr" case. (d_print_comp): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE, DEMANGLE_COMPONENT_COMPOUND_NAME, and DEMANGLE_COMPONENT_CHARACTER cases. * testsuite/demangle-expected: Add test for java resource name mangling.
This commit is contained in:
parent
3880c9e785
commit
830ef6349c
5 changed files with 168 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2008-01-26 David Daney <ddaney@avtrex.com>
|
||||||
|
|
||||||
|
* demangle.h (demangle_component_type): Add
|
||||||
|
DEMANGLE_COMPONENT_JAVA_RESOURCE,
|
||||||
|
DEMANGLE_COMPONENT_COMPOUND_NAME, and
|
||||||
|
DEMANGLE_COMPONENT_CHARACTER as new enum values.
|
||||||
|
(demangle_component): Add struct s_character to union u.
|
||||||
|
|
||||||
2008-01-23 Eric B. Weddington <eric.weddington@atmel.com>
|
2008-01-23 Eric B. Weddington <eric.weddington@atmel.com>
|
||||||
|
|
||||||
* opcode/avr.h (AVR_ISA_RF401): Add new opcode set for at86rf401.
|
* opcode/avr.h (AVR_ISA_RF401): Add new opcode set for at86rf401.
|
||||||
|
|
|
@ -362,7 +362,15 @@ enum demangle_component_type
|
||||||
using 'n' instead of '-', we want a way to indicate a negative
|
using 'n' instead of '-', we want a way to indicate a negative
|
||||||
number which involves neither modifying the mangled string nor
|
number which involves neither modifying the mangled string nor
|
||||||
allocating a new copy of the literal in memory. */
|
allocating a new copy of the literal in memory. */
|
||||||
DEMANGLE_COMPONENT_LITERAL_NEG
|
DEMANGLE_COMPONENT_LITERAL_NEG,
|
||||||
|
/* A libgcj compiled resource. The left subtree is the name of the
|
||||||
|
resource. */
|
||||||
|
DEMANGLE_COMPONENT_JAVA_RESOURCE,
|
||||||
|
/* A name formed by the concatenation of two parts. The left
|
||||||
|
subtree is the first part and the right subtree the second. */
|
||||||
|
DEMANGLE_COMPONENT_COMPOUND_NAME,
|
||||||
|
/* A name formed by a single character. */
|
||||||
|
DEMANGLE_COMPONENT_CHARACTER
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Types which are only used internally. */
|
/* Types which are only used internally. */
|
||||||
|
@ -448,6 +456,12 @@ struct demangle_component
|
||||||
long number;
|
long number;
|
||||||
} s_number;
|
} s_number;
|
||||||
|
|
||||||
|
/* For DEMANGLE_COMPONENT_CHARACTER. */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int character;
|
||||||
|
} s_character;
|
||||||
|
|
||||||
/* For other types. */
|
/* For other types. */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,19 @@
|
||||||
|
2008-01-26 David Daney <ddaney@avtrex.com>
|
||||||
|
|
||||||
|
* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
|
||||||
|
DEMANGLE_COMPONENT_COMPOUND_NAME, and
|
||||||
|
DEMANGLE_COMPONENT_CHARACTER cases.
|
||||||
|
(d_make_comp): Handle DEMANGLE_COMPONENT_COMPOUND_NAME and
|
||||||
|
DEMANGLE_COMPONENT_JAVA_RESOURCE cases.
|
||||||
|
(d_make_character): New function.
|
||||||
|
(d_java_resource): Same.
|
||||||
|
(d_special_name): Handle "Gr" case.
|
||||||
|
(d_print_comp): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
|
||||||
|
DEMANGLE_COMPONENT_COMPOUND_NAME, and
|
||||||
|
DEMANGLE_COMPONENT_CHARACTER cases.
|
||||||
|
* testsuite/demangle-expected: Add test for java resource name
|
||||||
|
mangling.
|
||||||
|
|
||||||
2008-01-23 Thiago Jung Bauermann <bauerman@br.ibm.com>
|
2008-01-23 Thiago Jung Bauermann <bauerman@br.ibm.com>
|
||||||
|
|
||||||
* cplus-dem.c (demangle_function_name): Changed to return value
|
* cplus-dem.c (demangle_function_name): Changed to return value
|
||||||
|
|
|
@ -650,6 +650,15 @@ d_dump (struct demangle_component *dc, int indent)
|
||||||
case DEMANGLE_COMPONENT_LITERAL_NEG:
|
case DEMANGLE_COMPONENT_LITERAL_NEG:
|
||||||
printf ("negative literal\n");
|
printf ("negative literal\n");
|
||||||
break;
|
break;
|
||||||
|
case DEMANGLE_COMPONENT_JAVA_RESOURCE:
|
||||||
|
printf ("java resource\n");
|
||||||
|
break;
|
||||||
|
case DEMANGLE_COMPONENT_COMPOUND_NAME:
|
||||||
|
printf ("compound name\n");
|
||||||
|
break;
|
||||||
|
case DEMANGLE_COMPONENT_CHARACTER:
|
||||||
|
printf ("character '%c'\n", dc->u.s_character.character);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
d_dump (d_left (dc), indent + 2);
|
d_dump (d_left (dc), indent + 2);
|
||||||
|
@ -769,6 +778,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
|
||||||
case DEMANGLE_COMPONENT_TRINARY_ARG2:
|
case DEMANGLE_COMPONENT_TRINARY_ARG2:
|
||||||
case DEMANGLE_COMPONENT_LITERAL:
|
case DEMANGLE_COMPONENT_LITERAL:
|
||||||
case DEMANGLE_COMPONENT_LITERAL_NEG:
|
case DEMANGLE_COMPONENT_LITERAL_NEG:
|
||||||
|
case DEMANGLE_COMPONENT_COMPOUND_NAME:
|
||||||
if (left == NULL || right == NULL)
|
if (left == NULL || right == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
break;
|
break;
|
||||||
|
@ -795,6 +805,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
|
||||||
case DEMANGLE_COMPONENT_ARGLIST:
|
case DEMANGLE_COMPONENT_ARGLIST:
|
||||||
case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
|
case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
|
||||||
case DEMANGLE_COMPONENT_CAST:
|
case DEMANGLE_COMPONENT_CAST:
|
||||||
|
case DEMANGLE_COMPONENT_JAVA_RESOURCE:
|
||||||
if (left == NULL)
|
if (left == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
break;
|
break;
|
||||||
|
@ -1501,6 +1512,102 @@ d_operator_name (struct d_info *di)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct demangle_component *
|
||||||
|
d_make_character (struct d_info *di, int c)
|
||||||
|
{
|
||||||
|
struct demangle_component *p;
|
||||||
|
p = d_make_empty (di);
|
||||||
|
if (p != NULL)
|
||||||
|
{
|
||||||
|
p->type = DEMANGLE_COMPONENT_CHARACTER;
|
||||||
|
p->u.s_character.character = c;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct demangle_component *
|
||||||
|
d_java_resource (struct d_info *di)
|
||||||
|
{
|
||||||
|
struct demangle_component *p = NULL;
|
||||||
|
struct demangle_component *next = NULL;
|
||||||
|
long len, i;
|
||||||
|
char c;
|
||||||
|
const char *str;
|
||||||
|
|
||||||
|
len = d_number (di);
|
||||||
|
if (len <= 1)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* Eat the leading '_'. */
|
||||||
|
if (d_next_char (di) != '_')
|
||||||
|
return NULL;
|
||||||
|
len--;
|
||||||
|
|
||||||
|
str = d_str (di);
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
while (len > 0)
|
||||||
|
{
|
||||||
|
c = str[i];
|
||||||
|
if (!c)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* Each chunk is either a '$' escape... */
|
||||||
|
if (c == '$')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
switch (str[i++])
|
||||||
|
{
|
||||||
|
case 'S':
|
||||||
|
c = '/';
|
||||||
|
break;
|
||||||
|
case '_':
|
||||||
|
c = '.';
|
||||||
|
break;
|
||||||
|
case '$':
|
||||||
|
c = '$';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
next = d_make_character (di, c);
|
||||||
|
d_advance (di, i);
|
||||||
|
str = d_str (di);
|
||||||
|
len -= i;
|
||||||
|
i = 0;
|
||||||
|
if (next == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* ... or a sequence of characters. */
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (i < len && str[i] && str[i] != '$')
|
||||||
|
i++;
|
||||||
|
|
||||||
|
next = d_make_name (di, str, i);
|
||||||
|
d_advance (di, i);
|
||||||
|
str = d_str (di);
|
||||||
|
len -= i;
|
||||||
|
i = 0;
|
||||||
|
if (next == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p == NULL)
|
||||||
|
p = next;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p = d_make_comp (di, DEMANGLE_COMPONENT_COMPOUND_NAME, p, next);
|
||||||
|
if (p == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p = d_make_comp (di, DEMANGLE_COMPONENT_JAVA_RESOURCE, p, NULL);
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
/* <special-name> ::= TV <type>
|
/* <special-name> ::= TV <type>
|
||||||
::= TT <type>
|
::= TT <type>
|
||||||
::= TI <type>
|
::= TI <type>
|
||||||
|
@ -1514,6 +1621,7 @@ d_operator_name (struct d_info *di)
|
||||||
::= TJ <type>
|
::= TJ <type>
|
||||||
::= GR <name>
|
::= GR <name>
|
||||||
::= GA <encoding>
|
::= GA <encoding>
|
||||||
|
::= Gr <resource name>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct demangle_component *
|
static struct demangle_component *
|
||||||
|
@ -1605,6 +1713,9 @@ d_special_name (struct d_info *di)
|
||||||
return d_make_comp (di, DEMANGLE_COMPONENT_HIDDEN_ALIAS,
|
return d_make_comp (di, DEMANGLE_COMPONENT_HIDDEN_ALIAS,
|
||||||
d_encoding (di, 0), NULL);
|
d_encoding (di, 0), NULL);
|
||||||
|
|
||||||
|
case 'r':
|
||||||
|
return d_java_resource (di);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -3552,6 +3663,20 @@ d_print_comp (struct d_print_info *dpi,
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case DEMANGLE_COMPONENT_JAVA_RESOURCE:
|
||||||
|
d_append_string (dpi, "java resource ");
|
||||||
|
d_print_comp (dpi, d_left (dc));
|
||||||
|
return;
|
||||||
|
|
||||||
|
case DEMANGLE_COMPONENT_COMPOUND_NAME:
|
||||||
|
d_print_comp (dpi, d_left (dc));
|
||||||
|
d_print_comp (dpi, d_right (dc));
|
||||||
|
return;
|
||||||
|
|
||||||
|
case DEMANGLE_COMPONENT_CHARACTER:
|
||||||
|
d_append_char (dpi, dc->u.s_character.character);
|
||||||
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
d_print_error (dpi);
|
d_print_error (dpi);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -3858,3 +3858,7 @@ foo()::var1
|
||||||
--format=gnu-v3
|
--format=gnu-v3
|
||||||
_ZZN7myspaceL3foo_1EvEN11localstruct1fEZNS_3fooEvE16otherlocalstruct
|
_ZZN7myspaceL3foo_1EvEN11localstruct1fEZNS_3fooEvE16otherlocalstruct
|
||||||
myspace::foo()::localstruct::f(myspace::foo()::otherlocalstruct)
|
myspace::foo()::localstruct::f(myspace::foo()::otherlocalstruct)
|
||||||
|
# Java resource name
|
||||||
|
--format=gnu-v3
|
||||||
|
_ZGr32_java$Sutil$Siso4217$_properties
|
||||||
|
java resource java/util/iso4217.properties
|
||||||
|
|
Loading…
Reference in a new issue