gdb 8.x - g++ 7.x compatibility

2018-02-02 Thread Roman Popov
Hello, I'm trying to switch from g++ 5.4 to g++ 7.2. GDB 8.0.1 however does not understand RTTI generated by g++7.2, so my Python scripts for GDB are not working. Here is a code example: struct base { virtual ~base(){} }; template< int IVAL, unsigned UVAL, unsigned long long ULLVAL> struct der

Re: gdb 8.x - g++ 7.x compatibility

2018-02-02 Thread Roman Popov
Yes, problem is still there in g++7.3 / gdb 8.1. I wonder why they decided to emit different strings to RTTI and debug info? What is the technical reason behind this? -Roman 2018-02-02 20:54 GMT-08:00 Simon Marchi : > On 2018-02-02 22:17, Roman Popov wrote: > >> Hello, >> I&

Re: gdb 8.x - g++ 7.x compatibility

2018-02-02 Thread Roman Popov
2018-02-02 20:54 GMT-08:00 Simon Marchi : > > GCC changed how it outputs unsigned template parameters in the debug info > (from 2u to just 2), and it doesn't look like it's going to change it > back. So I suppose we'll have to find a way to make GDB deal with it. > Simon > I'm not so sure about

Re: gdb 8.x - g++ 7.x compatibility

2018-02-03 Thread Roman Popov
I've just checked g++8.0.1 from trunk, and the problem is still there. And same with Clang compiler. This is indeed is a serious issue for me, since my Python scripts for gdb expect reliable dynamic type identification. However gdb is completely powerless here. So I'm forced to stay on older compi

Re: gdb 8.x - g++ 7.x compatibility

2018-02-05 Thread Roman Popov
Interestingly RTTI name also gives no guarantees: http://en.cppreference.com/w/cpp/types/type_info/name << Returns an implementation defined null-terminated character string containing the name of the type. No guarantees are given; in particular, the returned string can be identical for several ty

Re: gdb 8.x - g++ 7.x compatibility

2018-02-05 Thread Roman Popov
Do you mean that g++ guarantees uniqueness of mangled names for types? And uses name compare for operator== ? 2018-02-05 12:08 GMT-08:00 Jonathan Wakely : > On 5 February 2018 at 17:44, Roman Popov wrote: > > Interestingly RTTI name also gives no guarantees: > > http://en.cpprefe

Re: gdb 8.x - g++ 7.x compatibility

2018-02-05 Thread Roman Popov
GMT-08:00 Jonathan Wakely : > On 5 February 2018 at 20:10, Roman Popov wrote: > > Do you mean that g++ guarantees uniqueness of mangled names for types? > And > > Of course. The mangled name is determined by the ABI and must be > stable, predictable and unique, so that linking wor

Re: gdb 8.x - g++ 7.x compatibility

2018-03-01 Thread Roman Popov
Is there any progress on this problem? I'm not familiar with G++ , but I have little experience with LLVM. I can try make LLVM emitting mangled names to DW_AT_name, instead of demangled ones. This way GDB can match DW_AT_name against RTTI. And for display it can call abi::__cxa_demangle(name, NU

Re: gdb 8.x - g++ 7.x compatibility

2018-03-02 Thread Roman Popov
https://llvm.org/docs/LangRef.html#dicompositetype . So it should not be hard to propagate it to object file. I will ask on LLVM maillist if they can emit it. 2018-03-01 13:03 GMT-08:00 Jason Merrill : > On Thu, Mar 1, 2018 at 3:26 PM, Andrew Pinski wrote: > > On Thu, Mar 1, 2018 at 12:18 PM, Roman

Re: gdb 8.x - g++ 7.x compatibility

2018-03-02 Thread Roman Popov
-tidy 1220980360 1238498112 1.4% llvm-mt 74047287525328 1.6% cout<<"hello";21552 22080 2.4% -Roman 2018-03-02 15:06 GMT-08:00 Roman Popov : > Ok, sounds reasonable. In case of debugger we are indeed "linking"