Commit 3b60dd8e by Bryce McKinlay Committed by Bryce McKinlay

Add support for Java demangling under the v3 ABI:

	* cp-demangle.c (NAMESPACE_SEPARATOR): New define.
	(struct demangling_def): Add `style' field.
	(demangling_new): New parameter `style'. Set it in demangling_t.
	(demangle_prefix): Use NAMESPACE_SEPARATOR.
	(demangle_type_ptr): Don't emit pointer symbol if doing Java output.
	(cp_demangle): New parameter `style'. Pass it to demangling_new().
	(main): Call cp_demangle with extra parameter.
	(java_demangle_v3): New function.
	(java_builtin_type_names): New. Table of primitive type names used
	for Java demangling.
	(demangle_builtin_type): Look up in java_builtin_type_names if doing
	Java output.
	* cplus-dem.c (cplus_demangle): Use java_demangle_v3 to do Java
	demangling.
	(long_options): Remove obsolete `java' option.
	(main): Remove explicit handling of `java' option. Instead, pass style
	parameter in cplus_demangle flags as gdb does.
	* testsuite/demangle.expected: Add some Java test cases.

From-SVN: r39399
parent 4bae4eb5
2001-01-31 Bryce McKinlay <bryce@albatross.co.nz>
* include/demangle.h: Add prototype for java_demangle_v3.
2001-01-29 Phil Edwards <pme@sources.redhat.com> 2001-01-29 Phil Edwards <pme@sources.redhat.com>
* COPYING.LIB: Update to LGPL 2.1 from the FSF. * COPYING.LIB: Update to LGPL 2.1 from the FSF.
......
...@@ -120,8 +120,11 @@ cplus_demangle_set_style PARAMS ((enum demangling_styles style)); ...@@ -120,8 +120,11 @@ cplus_demangle_set_style PARAMS ((enum demangling_styles style));
extern enum demangling_styles extern enum demangling_styles
cplus_demangle_name_to_style PARAMS ((const char *name)); cplus_demangle_name_to_style PARAMS ((const char *name));
/* V3 ABI demangling entry point, defined in cp-demangle.c. */ /* V3 ABI demangling entry points, defined in cp-demangle.c. */
extern char* extern char*
cplus_demangle_v3 PARAMS ((const char* mangled)); cplus_demangle_v3 PARAMS ((const char* mangled));
extern char*
java_demangle_v3 PARAMS ((const char* mangled));
#endif /* DEMANGLE_H */ #endif /* DEMANGLE_H */
2001-01-31 Bryce McKinlay <bryce@albatross.co.nz>
Add support for Java demangling under the v3 ABI:
* cp-demangle.c (NAMESPACE_SEPARATOR): New define.
(struct demangling_def): Add `style' field.
(demangling_new): New parameter `style'. Set it in demangling_t.
(demangle_prefix): Use NAMESPACE_SEPARATOR.
(demangle_type_ptr): Don't emit pointer symbol if doing Java output.
(cp_demangle): New parameter `style'. Pass it to demangling_new().
(main): Call cp_demangle with extra parameter.
(java_demangle_v3): New function.
(java_builtin_type_names): New. Table of primitive type names used
for Java demangling.
(demangle_builtin_type): Look up in java_builtin_type_names if doing
Java output.
* cplus-dem.c (cplus_demangle): Use java_demangle_v3 to do Java
demangling.
(long_options): Remove obsolete `java' option.
(main): Remove explicit handling of `java' option. Instead, pass style
parameter in cplus_demangle flags as gdb does.
* testsuite/demangle.expected: Add some Java test cases.
2001-01-29 Phil Edwards <pme@sources.redhat.com> 2001-01-29 Phil Edwards <pme@sources.redhat.com>
* COPYING.LIB: Update to LGPL 2.1 from the FSF. * COPYING.LIB: Update to LGPL 2.1 from the FSF.
......
/* Demangler for GNU C++ /* Demangler for GNU C++
Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999, Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999,
2000 Free Software Foundation, Inc. 2000, 2001 Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.uucp) Written by James Clark (jjc@jclark.uucp)
Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling
Modified by Satish Pai (pai@apollo.hp.com) for HP demangling Modified by Satish Pai (pai@apollo.hp.com) for HP demangling
...@@ -922,6 +922,13 @@ cplus_demangle (mangled, options) ...@@ -922,6 +922,13 @@ cplus_demangle (mangled, options)
return ret; return ret;
} }
if (JAVA_DEMANGLING)
{
ret = java_demangle_v3 (mangled);
if (ret)
return ret;
}
if (GNAT_DEMANGLING) if (GNAT_DEMANGLING)
return ada_demangle(mangled,options); return ada_demangle(mangled,options);
...@@ -4950,7 +4957,6 @@ static struct option long_options[] = { ...@@ -4950,7 +4957,6 @@ static struct option long_options[] = {
{"strip-underscores", no_argument, 0, '_'}, {"strip-underscores", no_argument, 0, '_'},
{"format", required_argument, 0, 's'}, {"format", required_argument, 0, 's'},
{"help", no_argument, 0, 'h'}, {"help", no_argument, 0, 'h'},
{"java", no_argument, 0, 'j'},
{"no-strip-underscores", no_argument, 0, 'n'}, {"no-strip-underscores", no_argument, 0, 'n'},
{"version", no_argument, 0, 'v'}, {"version", no_argument, 0, 'v'},
{0, no_argument, 0, 0} {0, no_argument, 0, 0}
...@@ -5044,12 +5050,13 @@ main (argc, argv) ...@@ -5044,12 +5050,13 @@ main (argc, argv)
char *result; char *result;
int c; int c;
const char *valid_symbols; const char *valid_symbols;
enum demangling_styles style;
program_name = argv[0]; program_name = argv[0];
strip_underscore = prepends_underscore; strip_underscore = prepends_underscore;
while ((c = getopt_long (argc, argv, "_ns:j", long_options, (int *) 0)) != EOF) while ((c = getopt_long (argc, argv, "_ns:", long_options, (int *) 0)) != EOF)
{ {
switch (c) switch (c)
{ {
...@@ -5067,13 +5074,8 @@ main (argc, argv) ...@@ -5067,13 +5074,8 @@ main (argc, argv)
case '_': case '_':
strip_underscore = 1; strip_underscore = 1;
break; break;
case 'j':
flags |= DMGL_JAVA;
break;
case 's': case 's':
{ {
enum demangling_styles style;
style = cplus_demangle_name_to_style (optarg); style = cplus_demangle_name_to_style (optarg);
if (style == unknown_demangling) if (style == unknown_demangling)
{ {
...@@ -5146,7 +5148,7 @@ main (argc, argv) ...@@ -5146,7 +5148,7 @@ main (argc, argv)
skip_first = i; skip_first = i;
mbuffer[i] = 0; mbuffer[i] = 0;
flags |= style;
result = cplus_demangle (mbuffer + skip_first, flags); result = cplus_demangle (mbuffer + skip_first, flags);
if (result) if (result)
{ {
......
...@@ -2566,3 +2566,23 @@ _27_GLOBAL_.N.__12burst_app_ct.app_instance ...@@ -2566,3 +2566,23 @@ _27_GLOBAL_.N.__12burst_app_ct.app_instance
--format=gnu --format=gnu
_26_GLOBAL_\$N\$_tmp_n.iilg4Gya\$app_instance _26_GLOBAL_\$N\$_tmp_n.iilg4Gya\$app_instance
{anonymous}::app_instance {anonymous}::app_instance
#
--format=java
_ZN4java3awt10ScrollPane7addImplEPNS0_9ComponentEPNS_4lang6ObjectEi
java.awt.ScrollPane.addImpl(java.awt.Component, java.lang.Object, int)
#
--format=java
_ZN4java3awt4geom15AffineTransform9getMatrixEP6JArrayIdE
java.awt.geom.AffineTransform.getMatrix(double[])
#
--format=java
_ZN23Mangle$Inner$InnerInner3fooEP6JArrayIPS0_IiEEdPS0_IPS0_IPS0_IPS0_IPN4java4lang6StringEEEEEPS0_IPS0_IPN6MangleEEE
Mangle$Inner$InnerInner.foo(int[][], double, java.lang.String[][][][], Mangle[][])
#
--format=java
_ZN6JArray1tEP6JArrayIPS_E
JArray.t(JArray[])
#
--format=java
_ZN4Prim1iEibcdfwPN4java4lang6StringEsx
Prim.i(int, boolean, byte, double, float, char, java.lang.String, short, long)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment