cp-demangle.c (demangle_identifier): Support extended Unicode characters.
* cp-demangle.c (demangle_identifier): Support extended Unicode characters. From-SVN: r55354
This commit is contained in:
parent
abf92e2699
commit
28a34ec177
@ -1,3 +1,8 @@
|
||||
2002-07-10 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp-demangle.c (demangle_identifier): Support extended Unicode
|
||||
characters.
|
||||
|
||||
2002-07-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* cp-demangle.c (demangle_v3_with_details): Wrap in
|
||||
|
@ -51,6 +51,8 @@
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#include "ansidecl.h"
|
||||
#include "libiberty.h"
|
||||
#include "dyn-string.h"
|
||||
@ -1466,9 +1468,45 @@ demangle_identifier (dm, length, identifier)
|
||||
|
||||
while (length-- > 0)
|
||||
{
|
||||
int ch;
|
||||
if (end_of_name_p (dm))
|
||||
return "Unexpected end of name in <identifier>.";
|
||||
if (!dyn_string_append_char (identifier, next_char (dm)))
|
||||
ch = next_char (dm);
|
||||
|
||||
/* Handle extended Unicode characters. We encode them as __U{hex}_,
|
||||
where {hex} omits leading 0's. For instance, '$' is encoded as
|
||||
"__U24_". */
|
||||
if (ch == '_'
|
||||
&& peek_char (dm) == '_'
|
||||
&& peek_char_next (dm) == 'U')
|
||||
{
|
||||
char buf[10];
|
||||
int pos = 0;
|
||||
advance_char (dm); advance_char (dm); length -= 2;
|
||||
while (length-- > 0)
|
||||
{
|
||||
ch = next_char (dm);
|
||||
if (!isxdigit (ch))
|
||||
break;
|
||||
buf[pos++] = ch;
|
||||
}
|
||||
if (ch != '_' || length < 0)
|
||||
return STATUS_ERROR;
|
||||
if (pos == 0)
|
||||
{
|
||||
/* __U_ just means __U. */
|
||||
if (!dyn_string_append_cstr (identifier, "__U"))
|
||||
return STATUS_ALLOCATION_FAILED;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
buf[pos] = '\0';
|
||||
ch = strtol (buf, 0, 16);
|
||||
}
|
||||
}
|
||||
|
||||
if (!dyn_string_append_char (identifier, ch))
|
||||
return STATUS_ALLOCATION_FAILED;
|
||||
}
|
||||
|
||||
|
@ -2587,6 +2587,10 @@ JArray.t(JArray[])
|
||||
_ZN4Prim1iEibcdfwPN4java4lang6StringEsx
|
||||
Prim.i(int, boolean, byte, double, float, char, java.lang.String, short, long)
|
||||
#
|
||||
--format=java
|
||||
_ZN4java4util14Map__U24_Entry11class__U24_E
|
||||
java.util.Map$Entry.class$
|
||||
#
|
||||
--format=hp
|
||||
_Utf58_0_1__1_2147483647__2147483648
|
||||
_Utf58_0_1__1_2147483647__2147483648
|
||||
|
Loading…
Reference in New Issue
Block a user