Re: [rfa] delete macro SYMBOL_LINKAGE_NAME

Elena Zannoni
2003-02-03T18:30:02Z

David Carlton writes:
> This is the first part of my plan to clean up symbol accessors. It
> deletes the macro SYMBOL_LINKAGE_NAME: that macro is only used in two
> places in one function, and is easy to replace by an equivalent use of
> asm_demangle, SYMBOL_SOURCE_NAME, and SYMBOL_NAME. Given that I'd
> like to use the name SYMBOL_LINKAGE_NAME for something else, I'd like
> to get rid of its current use.
>

can you expand a bit?

> Tested on i686-pc-linux-gnu/GCC3.1/DWARF-2 (and seems obviously
> correct by inspection, assuming that you agree that its goal is
> valid). OK to commit?
>

Ok in theory, but I don't understand something, see below.

> David Carlton
> carlton@math.stanford.edu
>
> 2003-01-20 David Carlton <carlton@math.stanford.edu>
>
> * symtab.h (SYMBOL_LINKAGE_NAME): Delete.
> * printcmd.c (build_address_symbolic): Replace uses of
> SYMBOL_LINKAGE_NAME by equivalent uses of SYMBOL_SOURCE_NAME,
> SYMBOL_NAME, and asm_demangle.
> Update copyright.
>
> Index: symtab.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.h,v
> retrieving revision 1.55
> diff -u -p -r1.55 symtab.h
> --- symtab.h 19 Jan 2003 04:06:46 -0000 1.55
> +++ symtab.h 21 Jan 2003 00:18:36 -0000
> @@ -172,17 +172,6 @@ extern char *symbol_demangled_name (stru
> ? SYMBOL_DEMANGLED_NAME (symbol) \
> : SYMBOL_NAME (symbol))
>
> -/* Macro that returns the "natural assembly name" of a symbol. In C++ this is
> - the "mangled" form of the name if demangle is off, or if demangle is on and
> - asm_demangle is off. Otherwise if asm_demangle is on it is the "demangled"
> - form. In other languages this is just the symbol name. The result should
> - never be NULL. */
> -
> -#define SYMBOL_LINKAGE_NAME(symbol) \
> - (demangle && asm_demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL \
> - ? SYMBOL_DEMANGLED_NAME (symbol) \
> - : SYMBOL_NAME (symbol))
> -
> /* Macro that tests a symbol for a match against a specified name string.
> First test the unencoded name, then looks for and test a C++ encoded
> name if it exists. Note that whitespace is ignored while attempting to
> Index: printcmd.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/printcmd.c,v
> retrieving revision 1.50
> diff -u -p -r1.50 printcmd.c
> --- printcmd.c 21 Nov 2002 18:54:44 -0000 1.50
> +++ printcmd.c 21 Jan 2003 00:56:47 -0000
> @@ -1,7 +1,7 @@
> /* Print values for GNU debugger GDB.
>
> Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
> - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
> + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
> Foundation, Inc.
>
> This file is part of GDB.
> @@ -639,10 +639,10 @@ build_address_symbolic (CORE_ADDR addr,
> if (symbol)
> {
> name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
> - if (do_demangle)
> + if (do_demangle || asm_demangle)

why this change? I must be missing something.

> name_temp = SYMBOL_SOURCE_NAME (symbol);
> else
> - name_temp = SYMBOL_LINKAGE_NAME (symbol);
> + name_temp = SYMBOL_NAME (symbol);
> }
>

this one is ok.

> if (msymbol != NULL)
> @@ -654,10 +654,10 @@ build_address_symbolic (CORE_ADDR addr,
> symbol = 0;
> symtab = 0;
> name_location = SYMBOL_VALUE_ADDRESS (msymbol);
> - if (do_demangle)
> + if (do_demangle || asm_demangle)
> name_temp = SYMBOL_SOURCE_NAME (msymbol);
> else
> - name_temp = SYMBOL_LINKAGE_NAME (msymbol);
> + name_temp = SYMBOL_NAME (msymbol);
> }
> }
> if (symbol == NULL && msymbol == NULL)