[Bug libstdc++/87308] pretty printer for std::any fails with: Python Exception <type 'exceptions.ValueError'> Unknown manager function in std::any
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 23 13:19:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87308
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jeff Garrett from comment #0)
> Note that both a1 and a2 are interpreted as holding type main::{lambda()#2},
> but a1 actually holds main::{lambda()#1}.
I can fix the regex to work for lambdas, but I'm not sure what to do about that
part.
The debuginfo for the manager just shows the type as "main()::<lambda()>" which
doesn't uniquely identify the type. The function's gdb.Symbol.linkage_name
property (which is supposed to be the mangled name) is the same as its
gdb.Symbol.name, so that doesn't help.
The problem isn't specific to lambdas, but to any local type:
#include <any>
int main()
{
std::any a3, a4;
{
struct local { } l;
a3 = l;
}
{
struct local { int i = 2; } l2;
a4 = l2;
}
__builtin_trap();
}
g++ -std=c++17 87308.cc && gdb -q -ex r -ex "p a3" -ex "p a4" -ex qq a.out
Reading symbols from a.out...done.
Starting program: /tmp/a.out
Program received signal SIGILL, Illegal instruction.
main () at 87308.cc:16
16 __builtin_trap();
$1 = std::any containing local = {[contained value] = {i = 0}}
$2 = std::any containing local = {[contained value] = {i = 2}}
More information about the Gcc-bugs
mailing list