Expected output of gdb.cp/no-dmgl-verbose.exp

Keith Seitz keiths@redhat.com
Mon Apr 12 18:45:46 GMT 2021


On 4/12/21 11:16 AM, Luis Machado via Gdb wrote:
> I'm trying to determine why this particular test is failing (for both
> aarch64-linux and x86_64-linux on Ubuntu 18.04/20.04) and what the
> expected outcome is.
> 
> In my case, the only symbol I see for function "f" is the following:
> 
> "f(std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >)"
> 
> There is no "f(std::string)" nor "f(std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >)" symbol.
> 

Wow, such a long time ago! IIRC...

This test was written to ensure that "std::string" was used
instead of "std::basic_string<...>" (which is now called something
else again). Something about "that's what nm and other tools tell users,
so we should not mention the symbol's real (linkage) name, either."

The "no-dmgl-verbose" refers to the DMGL_VERBOSE option
of the demangler, which does this.

There is even special logic in our typedef-replacing machinery to
enforce this. [NOTE: `ignore_typedefs' in cp-support.c is also "out-
of-date" wrt to this naming change. So none of that has likely been
"working" for many years, but then at very quick glance, "nm -C" doesn't
do this anymore, either.]

I was against it then, so I certainly do not mind getting rid of this test
or limiting it to C++ installations that typedef the "older" std::basic_string<...>
to std::string.

Keith



More information about the Gdb mailing list