Re: [PATCH] Revised display-linkage-name

Michael Eager
2013-05-22T21:42:37Z

On 05/22/2013 12:28 PM, Eli Zaretskii wrote:
>> Date: Wed, 22 May 2013 11:03:22 -0700
>> From: Michael Eager <eager@eagerm.com>
>> CC: Tom Tromey <tromey@redhat.com>
>>
>> Changes:
>> Add NEWS and docs.
>> Add linkage name to "info break" listing.
>> Add MI annotations.
>> Add command to set/show display length limit, remove define.
>> Add test case.
>
> Thanks.
>
>> +set|show display-linkage-name-len
>> +
>> + Set the maximum number of characters to display in the linkage name,
>> + if display-linkage-name is on. The default is 20.
>
> Do we really need this? Why not display the whole name always?

With C++, and especially with templates, the linker name can become
very long.

>
>> +@kindex set display-linkage-name @code{on}|@code{off}
>
> Please remove the on|off part from the index entry. Just the command
> is enough.

OK.

>
>> +@cindex list linker symbol names
>
> Is "linker symbol name" how users would expect this to be called? I
> wouldn't. Index entries should use phrases that readers might have in
> mind when they are looking for the stuff described in this section.
>
> I think the correct terminology is "linkage name".

The only reference I find using Google to "linkage name" is in DWARF.
I don't consider this to be common or widely used terminology. I
personally would look for "symbol name", which unfortunately has multiple
meanings.

I'm happy to use "linkage name", but I don't think that this is a
phrase readers might have in mind, unless they had just been reading
the DWARF spec.

>
>> +The default is @code{off}, which means that @value{GDBN} will only
>> +display the function name used in the source. When @code{on}, @value{GDBN}
>> +will also display the symbol name used by the linker within brackets if it is
>> +different from the name in the source. This can be useful with compilers
>> +which may prepend characters to a source name, for example, an underscore.
>> +
>> +This is different from "set print asm-demangle on" which only displays
>> +the linkage name for C++ symbols and does not display the source name.
>
> Isn't it confusing to have 2 subtly different settings that actually
> achieve almost the same? How about a single setting, perhaps a
> tristate, instead of 2 separate booleans?

I don't think it is confusing.

The two options are significantly different, both in implementation and
definition. Asm-demangle is only mentioned as contrast in information provided.

The functionality provided by display-linkage-name is not related to C++.
There is no demangling being performed. Trying to combine two unrelated
options into one would make a hash of the coding for both.

>
>> +@kindex set display-linkage-name-len
>> +@kindex show display-linkage-name-len
>> +@cindex list linker symbol names
> ^^^^^^^^^^^^^^^^^^^^^^^^
> Copy/paste error? You already have an identical index entry a few
> lines above.

Oops.

>
>> +@item set display-linkage-name-len @var{len}
>> +@itemx show display-linkage-name-len @var{len}
>> +Set the maximum number of characters of linkage name to display. The
>> +@code{show} command displays the current setting. The default is @code{20}.
>
> I think we don't need this setting. After all, we show source-level
> function names in their full glory, right?

Source level names are limited in size. Linker names may be thousands
of characters long.