aboutsummaryrefslogtreecommitdiff
path: root/libiberty/cplus-dem.c
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@haight.constant.com>1998-11-23 12:12:03 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>1998-11-23 12:12:03 +0000
commit6e6e34b7a85567d1a0ca51ec6d7e32a50553e21e (patch)
tree2c54115e89fe35e48c49d74c3471f70a90ca0553 /libiberty/cplus-dem.c
parent25f3d2f4b71199dfce42654e6a7669800ac5600a (diff)
downloadgcc-6e6e34b7a85567d1a0ca51ec6d7e32a50553e21e.zip
gcc-6e6e34b7a85567d1a0ca51ec6d7e32a50553e21e.tar.gz
gcc-6e6e34b7a85567d1a0ca51ec6d7e32a50553e21e.tar.bz2
cplus-dem.c (demangle_fund_type): Add demangling for C9x types.
� 1998-11-16 Benjamin Kosnik <bkoz@haight.constant.com> * cplus-dem.c (demangle_fund_type): Add demangling for C9x types. From-SVN: r23799
Diffstat (limited to 'libiberty/cplus-dem.c')
-rw-r--r--libiberty/cplus-dem.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index 5ccf92f..05026c1 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -2883,6 +2883,8 @@ demangle_fund_type (work, mangled, result)
{
int done = 0;
int success = 1;
+ char buf[10];
+ int dec = 0;
string btype;
type_kind_t tk = tk_integral;
@@ -3000,6 +3002,28 @@ demangle_fund_type (work, mangled, result)
success = 0;
break;
}
+ case 'I':
+ ++(*mangled);
+ if (**mangled == '_')
+ {
+ int i;
+ ++(*mangled);
+ for (i = 0; **mangled != '_'; ++(*mangled), ++i)
+ buf[i] = **mangled;
+ buf[i] = '\0';
+ ++(*mangled);
+ }
+ else
+ {
+ strncpy (buf, *mangled, 2);
+ *mangled += 2;
+ }
+ sscanf (buf, "%x", &dec);
+ sprintf (buf, "int%i_t", dec);
+ APPEND_BLANK (result);
+ string_append (result, buf);
+ break;
+
/* fall through */
/* An explicit type, such as "6mytype" or "7integer" */
case '0':