From: Adam Fedor <fedor@doc.com>
To: Andrew Cagney <ac131313@redhat.com>
Cc: David Carlton <carlton@math.stanford.edu>,
GDB Patches <gdb-patches@sources.redhat.com>,
Daniel Jacobowitz <drow@mvista.com>
Subject: Re: [RFA] Compile objc-lang.c, objc-exp.tab.c [1/5]
Date: Tue, 01 Apr 2003 04:09:00 -0000 [thread overview]
Message-ID: <3E8910F5.2090507@doc.com> (raw)
In-Reply-To: <3E88DDD0.2090603@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 215 bytes --]
Andrew Cagney wrote:
>
>
> Hmm, good catch. Any reason for the unknown language demangler to not
> just do c++ demangling?
>
OK. Here I've add java_demangle and now ukn_lang_demangle uses
cplus_demangle.
[-- Attachment #2: language_demangle.patch --]
[-- Type: text/plain, Size: 16652 bytes --]
2003-03-31 Adam Fedor <fedor@gnu.org>
* Makefile.in (c_lang.o, jv_lang.o, language.o): Add $(demangle_h).
* language.h (struct language_defn): Add la_demangle.
(language_demangle): Declare.
* language.c (language_demangle): New function.
(unk_lang_demangle): Likewise.
(unknown_language_defn, auto_language_defn, local_language_defn):
Add ukn_lang_demangle.
* ada-lang.c (ada_language_defn): Add NULL for la_demangle element.
* f-lang.c, m2-lang.c, p-lang.c, scm-lang.c: Likewise.
* c-lang.c (c_language_defn, asm_language_defn): Likewise.
(cplus_language_defn): Add cplus_demangle for la_demangle element.
* jv-lang.c (java_demangle): New function
(java_language_defn): Use it for la_demangle element.
* objc-lang.c (objc_demangle): Add options argument
(objc_language_defn): Use objc_demangle for la_demangle element.
* maint.c (maintenance_demangle): Remove language_objc and
language_cplus case. Use language_demangle in the default case.
* utils.c (fprintf_symbol_filtered): Remove language_cplus,
language_java, and langauge_objc case. Use langauge_demangle
in the default case.
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.354
diff -u -p -r1.354 Makefile.in
--- Makefile.in 30 Mar 2003 14:52:41 -0000 1.354
+++ Makefile.in 1 Apr 2003 04:00:49 -0000
@@ -1568,7 +1568,8 @@ builtin-regs.o: builtin-regs.c $(defs_h)
$(gdb_string_h) $(gdb_assert_h)
c-lang.o: c-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
$(parser_defs_h) $(language_h) $(c_lang_h) $(valprint_h) \
- $(macroscope_h) $(gdb_assert_h) $(charset_h) $(gdb_string_h)
+ $(macroscope_h) $(gdb_assert_h) $(charset_h) $(gdb_string_h) \
+ $(demangle_h)
c-typeprint.o: c-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
$(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
$(language_h) $(demangle_h) $(c_lang_h) $(typeprint_h) $(cp_abi_h) \
@@ -1847,7 +1848,7 @@ irix5-nat.o: irix5-nat.c $(defs_h) $(inf
jv-lang.o: jv-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
$(parser_defs_h) $(language_h) $(gdbtypes_h) $(symtab_h) \
$(symfile_h) $(objfiles_h) $(gdb_string_h) $(value_h) $(c_lang_h) \
- $(jv_lang_h) $(gdbcore_h) $(block_h)
+ $(jv_lang_h) $(gdbcore_h) $(block_h) $(demangle_h)
jv-typeprint.o: jv-typeprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
$(value_h) $(demangle_h) $(jv_lang_h) $(gdb_string_h) $(typeprint_h) \
$(c_lang_h) $(cp_abi_h)
@@ -1859,7 +1860,7 @@ kod.o: kod.c $(defs_h) $(command_h) $(gd
$(kod_h)
language.o: language.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
$(value_h) $(gdbcmd_h) $(expression_h) $(language_h) $(target_h) \
- $(parser_defs_h) $(jv_lang_h)
+ $(parser_defs_h) $(jv_lang_h) $(demangle_h)
lin-lwp.o: lin-lwp.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(gdb_wait_h) \
$(gdbthread_h) $(inferior_h) $(target_h) $(regcache_h) $(gdbcmd_h)
linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
Index: ada-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/ada-lang.c,v
retrieving revision 1.22
diff -u -p -r1.22 ada-lang.c
--- ada-lang.c 26 Mar 2003 03:39:43 -0000 1.22
+++ ada-lang.c 1 Apr 2003 04:01:00 -0000
@@ -8081,6 +8081,7 @@ const struct language_defn ada_language_
ada_val_print, /* Print a value using appropriate syntax */
ada_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
#if 0
{"8#%lo#", "8#", "o", "#"}, /* Octal format info */
Index: c-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/c-lang.c,v
retrieving revision 1.17
diff -u -p -r1.17 c-lang.c
--- c-lang.c 26 Mar 2003 03:39:43 -0000 1.17
+++ c-lang.c 1 Apr 2003 04:01:00 -0000
@@ -31,6 +31,7 @@
#include "gdb_assert.h"
#include "charset.h"
#include "gdb_string.h"
+#include "demangle.h"
extern void _initialize_c_language (void);
static void c_emit_char (int c, struct ui_file * stream, int quoter);
@@ -553,6 +554,7 @@ const struct language_defn c_language_de
c_val_print, /* Print a value using appropriate syntax */
c_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
@@ -606,6 +608,7 @@ const struct language_defn cplus_languag
c_val_print, /* Print a value using appropriate syntax */
c_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ cplus_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
@@ -636,6 +639,7 @@ const struct language_defn asm_language_
c_val_print, /* Print a value using appropriate syntax */
c_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: f-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/f-lang.c,v
retrieving revision 1.12
diff -u -p -r1.12 f-lang.c
--- f-lang.c 26 Mar 2003 03:39:43 -0000 1.12
+++ f-lang.c 1 Apr 2003 04:01:00 -0000
@@ -473,6 +473,7 @@ const struct language_defn f_language_de
f_val_print, /* Print a value using appropriate syntax */
c_value_print, /* FIXME */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%o", "0", "o", ""}, /* Octal format info */
{"%d", "", "d", ""}, /* Decimal format info */
Index: jv-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/jv-lang.c,v
retrieving revision 1.16
diff -u -p -r1.16 jv-lang.c
--- jv-lang.c 26 Mar 2003 03:39:44 -0000 1.16
+++ jv-lang.c 1 Apr 2003 04:01:00 -0000
@@ -34,6 +34,7 @@
#include "jv-lang.h"
#include "gdbcore.h"
#include "block.h"
+#include "demangle.h"
#include <ctype.h>
struct type *java_int_type;
@@ -996,6 +997,12 @@ java_create_fundamental_type (struct obj
return c_create_fundamental_type (objfile, typeid);
}
+static char *java_demangle (const char *mangled, int options)
+{
+ return cplus_demangle (mangled, options | DMGL_JAVA);
+}
+
+
/* Table mapping opcodes into strings for printing operators
and precedences of the operators. */
@@ -1055,6 +1062,7 @@ const struct language_defn java_language
java_val_print, /* Print a value using appropriate syntax */
java_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ java_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: language.c
===================================================================
RCS file: /cvs/src/src/gdb/language.c,v
retrieving revision 1.32
diff -u -p -r1.32 language.c
--- language.c 26 Mar 2003 03:39:44 -0000 1.32
+++ language.c 1 Apr 2003 04:01:02 -0000
@@ -44,6 +44,7 @@
#include "target.h"
#include "parser-defs.h"
#include "jv-lang.h"
+#include "demangle.h"
extern void _initialize_language (void);
@@ -1361,6 +1362,21 @@ skip_language_trampoline (CORE_ADDR pc)
return 0;
}
+/* Return demangled language symbol, or NULL.
+ FIXME: Options are only useful for certain languages and ignored
+ by others, so it would be better to remove them here and have a
+ more flexible demangler for the languages that need it.
+ FIXME: Sometimes the demangler is invoked when we don't know the
+ language, so we can't use this everywhere. */
+char *
+language_demangle (const struct language_defn *current_language,
+ const char *mangled, int options)
+{
+ if (current_language != NULL && current_language->la_demangle)
+ return current_language->la_demangle (mangled, options);
+ return NULL;
+}
+
/* Define the language that is no language. */
@@ -1428,6 +1444,13 @@ static CORE_ADDR unk_lang_trampoline (CO
return 0;
}
+/* Unknown languages just use the cplus demangler. */
+static char *unk_lang_demangle (const char *mangled, int options)
+{
+ return cplus_demangle (mangled, options);
+}
+
+
static struct type **const (unknown_builtin_types[]) =
{
0
@@ -1456,6 +1479,7 @@ const struct language_defn unknown_langu
unk_lang_val_print, /* Print a value using appropriate syntax */
unk_lang_value_print, /* Print a top-level value */
unk_lang_trampoline, /* Language specific skip_trampoline */
+ unk_lang_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
@@ -1487,6 +1511,7 @@ const struct language_defn auto_language
unk_lang_val_print, /* Print a value using appropriate syntax */
unk_lang_value_print, /* Print a top-level value */
unk_lang_trampoline, /* Language specific skip_trampoline */
+ unk_lang_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
@@ -1517,6 +1542,7 @@ const struct language_defn local_languag
unk_lang_val_print, /* Print a value using appropriate syntax */
unk_lang_value_print, /* Print a top-level value */
unk_lang_trampoline, /* Language specific skip_trampoline */
+ unk_lang_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: language.h
===================================================================
RCS file: /cvs/src/src/gdb/language.h,v
retrieving revision 1.17
diff -u -p -r1.17 language.h
--- language.h 26 Mar 2003 03:39:44 -0000 1.17
+++ language.h 1 Apr 2003 04:01:05 -0000
@@ -209,6 +209,9 @@ struct language_defn
if it isn't a language tramp for this language. */
CORE_ADDR (*skip_trampoline) (CORE_ADDR pc);
+ /* Return demangled language symbol, or NULL. */
+ char *(*la_demangle) (const char *mangled, int options);
+
/* Base 2 (binary) formats. */
struct language_format_info la_binary_format;
@@ -474,5 +477,9 @@ extern enum language get_frame_language
/* Check for a language-specific trampoline. */
extern CORE_ADDR skip_language_trampoline (CORE_ADDR pc);
+
+/* Return demangled language symbol, or NULL. */
+extern char *language_demangle (const struct language_defn *current_language,
+ const char *mangled, int options);
#endif /* defined (LANGUAGE_H) */
Index: m2-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/m2-lang.c,v
retrieving revision 1.8
diff -u -p -r1.8 m2-lang.c
--- m2-lang.c 26 Mar 2003 03:39:44 -0000 1.8
+++ m2-lang.c 1 Apr 2003 04:01:05 -0000
@@ -427,6 +427,7 @@ const struct language_defn m2_language_d
m2_val_print, /* Print a value using appropriate syntax */
c_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"%loB", "", "o", "B"}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: maint.c
===================================================================
RCS file: /cvs/src/src/gdb/maint.c,v
retrieving revision 1.35
diff -u -p -r1.35 maint.c
--- maint.c 20 Feb 2003 17:17:24 -0000 1.35
+++ maint.c 1 Apr 2003 04:01:12 -0000
@@ -153,13 +153,9 @@ maintenance_demangle (char *args, int fr
{
switch (current_language->la_language)
{
- case language_objc:
- /* Commented out until ObjC handling is enabled. */
- /* demangled = objc_demangle (args); */
- /* break; */
- case language_cplus:
default:
- demangled = cplus_demangle (args, DMGL_ANSI | DMGL_PARAMS);
+ demangled = language_demangle (current_language, args,
+ DMGL_ANSI | DMGL_PARAMS);
break;
}
if (demangled != NULL)
Index: objc-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/objc-lang.c,v
retrieving revision 1.14
diff -u -p -r1.14 objc-lang.c
--- objc-lang.c 26 Mar 2003 03:39:44 -0000 1.14
+++ objc-lang.c 1 Apr 2003 04:01:17 -0000
@@ -237,7 +237,7 @@ value_nsstring (char *ptr, int len)
/* Objective-C name demangling. */
char *
-objc_demangle (const char *mangled)
+objc_demangle (const char *mangled, int options)
{
char *demangled, *cp;
@@ -700,6 +700,7 @@ const struct language_defn objc_language
c_val_print, /* Print a value using appropriate syntax */
c_value_print, /* Print a top-level value */
objc_skip_trampoline, /* Language specific skip_trampoline */
+ objc_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: objc-lang.h
===================================================================
RCS file: /cvs/src/src/gdb/objc-lang.h,v
retrieving revision 1.8
diff -u -p -r1.8 objc-lang.h
--- objc-lang.h 25 Mar 2003 02:18:55 -0000 1.8
+++ objc-lang.h 1 Apr 2003 04:01:17 -0000
@@ -41,7 +41,7 @@ extern int c_value_print (struct value *
extern CORE_ADDR lookup_objc_class (char *classname);
extern int lookup_child_selector (char *methodname);
-extern char *objc_demangle (const char *mangled);
+extern char *objc_demangle (const char *mangled, int options);
extern int find_objc_msgcall (CORE_ADDR pc, CORE_ADDR *new_pc);
Index: p-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/p-lang.c,v
retrieving revision 1.10
diff -u -p -r1.10 p-lang.c
--- p-lang.c 26 Mar 2003 03:39:44 -0000 1.10
+++ p-lang.c 1 Apr 2003 04:01:19 -0000
@@ -462,6 +462,7 @@ const struct language_defn pascal_langua
pascal_val_print, /* Print a value using appropriate syntax */
pascal_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "%", "b", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: scm-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/scm-lang.c,v
retrieving revision 1.14
diff -u -p -r1.14 scm-lang.c
--- scm-lang.c 26 Mar 2003 03:39:44 -0000 1.14
+++ scm-lang.c 1 Apr 2003 04:01:19 -0000
@@ -251,6 +251,7 @@ const struct language_defn scm_language_
scm_val_print, /* Print a value using appropriate syntax */
scm_value_print, /* Print a top-level value */
NULL, /* Language specific skip_trampoline */
+ NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"#o%lo", "#o", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
Index: utils.c
===================================================================
RCS file: /cvs/src/src/gdb/utils.c,v
retrieving revision 1.98
diff -u -p -r1.98 utils.c
--- utils.c 26 Feb 2003 14:35:19 -0000 1.98
+++ utils.c 1 Apr 2003 04:01:30 -0000
@@ -2300,18 +2300,9 @@ fprintf_symbol_filtered (struct ui_file
{
switch (lang)
{
- case language_cplus:
- demangled = cplus_demangle (name, arg_mode);
- break;
- case language_java:
- demangled = cplus_demangle (name, arg_mode | DMGL_JAVA);
- break;
- case language_objc:
- /* Commented out until ObjC handling is enabled. */
- /*demangled = objc_demangle (name); */
- /*break; */
default:
- demangled = NULL;
+ demangled = language_demangle (language_def (lang),
+ name, arg_mode);
break;
}
fputs_filtered (demangled ? demangled : name, stream);
next prev parent reply other threads:[~2003-04-01 4:09 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-03 22:06 Adam Fedor
2003-02-19 19:02 ` Elena Zannoni
2003-02-19 20:27 ` Adam Fedor
2003-02-19 21:11 ` Elena Zannoni
2003-03-20 21:27 ` Andrew Cagney
2003-03-20 21:39 ` Daniel Jacobowitz
2003-03-20 22:13 ` Andrew Cagney
2003-03-20 22:19 ` Daniel Jacobowitz
2003-03-31 2:23 ` Adam Fedor
2003-03-31 22:39 ` Andrew Cagney
2003-03-31 22:53 ` David Carlton
2003-03-31 23:03 ` David Carlton
2003-03-31 23:15 ` Adam Fedor
2003-04-01 0:31 ` Andrew Cagney
2003-04-01 0:45 ` David Carlton
2003-04-01 4:09 ` Adam Fedor [this message]
2003-04-01 21:31 ` David Carlton
2003-04-01 21:38 ` Daniel Jacobowitz
2003-03-20 22:22 ` David Ayers
2003-03-20 21:35 ` Andrew Cagney
2003-03-24 17:46 ` Adam Fedor
2003-03-24 18:25 ` Andrew Cagney
2003-03-25 2:23 ` Adam Fedor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3E8910F5.2090507@doc.com \
--to=fedor@doc.com \
--cc=ac131313@redhat.com \
--cc=carlton@math.stanford.edu \
--cc=drow@mvista.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox