From: Adam Fedor <fedor@doc.com>
To: GDB Patches <gdb-patches@sources.redhat.com>
Cc: Daniel Jacobowitz <drow@mvista.com>,
Andrew Cagney <ac131313@redhat.com>
Subject: Re: [RFA] Compile objc-lang.c, objc-exp.tab.c [1/5]
Date: Mon, 31 Mar 2003 02:23:00 -0000 [thread overview]
Message-ID: <3E87A68C.6090301@doc.com> (raw)
In-Reply-To: <20030320221924.GA25955@nevyn.them.org>
[-- Attachment #1: Type: text/plain, Size: 998 bytes --]
Daniel Jacobowitz wrote:
> On Thu, Mar 20, 2003 at 05:13:40PM -0500, Andrew Cagney wrote:
>
>>>>
>>>>Would it be possible to make the cplus_demangle() method part of the
>>>>language vector? That way code like the patch below could be reduced to:
>>>>
>>>> /* Return demangled language symbol, or NULL. */
>>>> language_demangle (current_language, arg);
>>>>
>>>>This would in turn allow Adam to just add an equivalent objc_demangle()
>>>>method to the objc language vector, and hence eliminate the need to
>>>>always link in objc-lang.c.
>>>
>>As well as then? The places where objc is adding calls to the demangler
>>the language is known.
>
>
> My gut reaction is that it's just clutter until we decide how to solve
> the problem of not knowing demanglings. But it'll do for now. I'd
> like a comment along the lines of:
>
> /* FIXME: sometimes the demangler is invoked when we don't know the
> language, so we can't use this everywhere. */
>
Here's my crack at doing this
[-- Attachment #2: language_demangle.patch --]
[-- Type: text/plain, Size: 15256 bytes --]
2003-03-30 Adam Fedor <fedor@gnu.org>
* Makefile.in (c_lang.c, jv_lang.c): 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 (kava_language_defn): Likewise.
* 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 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 31 Mar 2003 00:22:40 -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)
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 31 Mar 2003 00:22:45 -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 31 Mar 2003 00:22:45 -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 31 Mar 2003 00:22:45 -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 31 Mar 2003 00:22:46 -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;
@@ -1055,6 +1056,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 */
+ cplus_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 31 Mar 2003 00:22:47 -0000
@@ -1361,6 +1361,16 @@ skip_language_trampoline (CORE_ADDR pc)
return 0;
}
+/* Return demangled language symbol, or NULL. */
+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 +1438,12 @@ static CORE_ADDR unk_lang_trampoline (CO
return 0;
}
+static char *unk_lang_demangle (const char *mangled, int options)
+{
+ return NULL;
+}
+
+
static struct type **const (unknown_builtin_types[]) =
{
0
@@ -1456,6 +1472,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 +1504,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 +1535,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 31 Mar 2003 00:22:47 -0000
@@ -209,6 +209,11 @@ 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.
+ FIXME: sometimes the demangler is invoked when we don't know the
+ language, so we can't use this everywhere. */
+ char *(*la_demangle) (const char *mangled, int options);
+
/* Base 2 (binary) formats. */
struct language_format_info la_binary_format;
@@ -474,5 +479,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 31 Mar 2003 00:22:47 -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 31 Mar 2003 00:22:47 -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 31 Mar 2003 00:22:48 -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 31 Mar 2003 00:22:48 -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 31 Mar 2003 00:22:49 -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 31 Mar 2003 00:22:49 -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 31 Mar 2003 00:22:50 -0000
@@ -2300,18 +2300,12 @@ 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-03-31 2:23 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 [this message]
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
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=3E87A68C.6090301@doc.com \
--to=fedor@doc.com \
--cc=ac131313@redhat.com \
--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