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>
* COPYING.LIB: Update to LGPL 2.1 from the FSF.
......
......@@ -120,8 +120,11 @@ cplus_demangle_set_style PARAMS ((enum demangling_styles style));
extern enum demangling_styles
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*
cplus_demangle_v3 PARAMS ((const char* mangled));
extern char*
java_demangle_v3 PARAMS ((const char* mangled));
#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>
* COPYING.LIB: Update to LGPL 2.1 from the FSF.
......
/* Demangler for GNU C++
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)
Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling
Modified by Satish Pai (pai@apollo.hp.com) for HP demangling
......@@ -922,6 +922,13 @@ cplus_demangle (mangled, options)
return ret;
}
if (JAVA_DEMANGLING)
{
ret = java_demangle_v3 (mangled);
if (ret)
return ret;
}
if (GNAT_DEMANGLING)
return ada_demangle(mangled,options);
......@@ -4950,7 +4957,6 @@ static struct option long_options[] = {
{"strip-underscores", no_argument, 0, '_'},
{"format", required_argument, 0, 's'},
{"help", no_argument, 0, 'h'},
{"java", no_argument, 0, 'j'},
{"no-strip-underscores", no_argument, 0, 'n'},
{"version", no_argument, 0, 'v'},
{0, no_argument, 0, 0}
......@@ -5044,12 +5050,13 @@ main (argc, argv)
char *result;
int c;
const char *valid_symbols;
enum demangling_styles style;
program_name = argv[0];
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)
{
......@@ -5067,13 +5074,8 @@ main (argc, argv)
case '_':
strip_underscore = 1;
break;
case 'j':
flags |= DMGL_JAVA;
break;
case 's':
{
enum demangling_styles style;
style = cplus_demangle_name_to_style (optarg);
if (style == unknown_demangling)
{
......@@ -5146,7 +5148,7 @@ main (argc, argv)
skip_first = i;
mbuffer[i] = 0;
flags |= style;
result = cplus_demangle (mbuffer + skip_first, flags);
if (result)
{
......
......@@ -2566,3 +2566,23 @@ _27_GLOBAL_.N.__12burst_app_ct.app_instance
--format=gnu
_26_GLOBAL_\$N\$_tmp_n.iilg4Gya\$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