digitalmars.D.debugger - GDB demangling
- ANtlord (92/92) Dec 03 2018 Hello!
- Rainer Schuetze (4/17) Dec 03 2018 The mangling has changed with dmd 2.077 to reduce the size of symbols.
- ANtlord (6/8) Dec 04 2018 What is the state of the PR? As far as I see hasn't been updated
- Rainer Schuetze (9/18) Dec 04 2018 Some paperwork had to be done with the FSF but that is completed. I
Hello!
Short time ago I created a plugin that demangles D symbols in
call stack. I'm gonna to add the code to upstream. After a little
research mail lists and code of gdb I see a couple of mentions
about demangling of D code. Also, I found threads in the forum
about support of the demangling that was implemented by GDC team.
But I see partially demangling when I'm debugging my favorite
project DCD. Look at the call stack
_D7dsymbol6symbol7DSymbol__T17getFirstPartNamedTSQBvQBqQBmZQBfMNgFSQCn16string_interning14Interned
tringZPNgSQEdQDyQDu (this=, name={
data = "*constructor*"
})
at dsymbol/src/dsymbol/symbol.d:234
dsymbol.conversion.first.FirstPass.visit(const(dparse.ast.StructBody)) (this=,
structBody=)
at dsymbol/src/dsymbol/conversion/first.d:401
_D6dparse3ast17StructDeclaration6acceptMxFCQBpQBl10ASTVisitorZv
(this=, visitor=)
at libdparse/src/dparse/ast.d-mixin-2757:2759
_D7dsymbol10conversion5first9FirstPass__T25visitAggregateDeclarationTxC6dparse3ast17StructDeclarationZQCjMFxQBmEQEg6symb
l14CompletionKindZv (this=, kind=115 's', dec=)
at dsymbol/src/dsymbol/conversion/first.d:809
dsymbol.conversion.first.FirstPass.visit(const(dparse.ast.StructDeclaration))
(this=, dec=)
at dsymbol/src/dsymbol/conversion/first.d:184
(this=, visitor=)
at libdparse/src/dparse/ast.d:1244
dsymbol.conversion.first.FirstPass.visit(const(dparse.ast.Declaration)) (this=,
dec=)
at dsymbol/src/dsymbol/conversion/first.d:315
visitor=)
at libdparse/src/dparse/ast.d-mixin-2196:2198
dsymbol.conversion.first.FirstPass.visit(const(dparse.ast.Module)) (this=, mod=)
at dsymbol/src/dsymbol/conversion/first.d:338
dsymbol/src/dsymbol/conversion/first.d:91
_D7dsymbol11modulecache11ModuleCache11cacheModuleMFAyaZPSQCd6symbol7DSymbol
(this=, location="/usr/include/dmd/phobos/etc/c/odbc/sqltypes.d")
at dsymbol/src/dsymbol/modulecache.d:236
_D7dsymbol10conversion6second13resolveImportFPSQBt6symbol7DSymbolKS10containers12unrolledlist__T12UnrolledListTPSQEh11type_lookup10TypeLookupTS4stdx9allocator10mallocator10MallocatorVbi0Vmi64ZQDsKSQHn11module
ache11ModuleCacheZv (cache=, typeLookups=, acSymbol=)
at dsymbol/src/dsymbol/conversion/second.d:142
_D7dsymbol10conversion6second10secondPassFPSQBq8semantic14SemanticSymbolPSQCu6scope_5ScopeKSQDm11module
ache11ModuleCacheZv (cache=, moduleScope=, currentSymbol=)
at dsymbol/src/dsymbol/conversion/second.d:61
_D7dsymbol10conversion6second10secondPassFPSQBq8semantic14SemanticSymbolPSQCu6scope_5ScopeKSQDm11module
ache11ModuleCacheZv (cache=, moduleScope=, currentSymbol=)
at dsymbol/src/dsymbol/conversion/second.d:77
_D7dsymbol11modulecache11ModuleCache11cacheModuleMFAyaZPSQCd6symbol7DSymbol
(this=, location="/usr/include/dmd/phobos/etc/c/odbc/sql.d")
at dsymbol/src/dsymbol/modulecache.d:238
_D7dsymbol10conversion6second13resolveImportFPSQBt6symbol7DSymbolKS10containers12unrolledlist__T12UnrolledListTPSQEh11type_lookup10TypeLookupTS4stdx9allocator10mallocator10MallocatorVbi0Vmi64ZQDsKSQHn11module
ache11ModuleCacheZv (cache=, typeLookups=, acSymbol=)
at dsymbol/src/dsymbol/conversion/second.d:142
_D7dsymbol10conversion6second10secondPassFPSQBq8semantic14SemanticSymbolPSQCu6scope_5ScopeKSQDm11module
ache11ModuleCacheZv (cache=, moduleScope=, currentSymbol=)
at dsymbol/src/dsymbol/conversion/second.d:61
_D7dsymbol10conversion6second10secondPassFPSQBq8semantic14SemanticSymbolPSQCu6scope_5ScopeKSQDm11module
ache11ModuleCacheZv (cache=, moduleScope=, currentSymbol=)
at dsymbol/src/dsymbol/conversion/second.d:77
_D7dsymbol11modulecache11ModuleCache11cacheModuleMFAyaZPSQCd6symbol7DSymbol
(this=, location="/usr/include/dmd/phobos/etc/c/odbc/sqlext.d")
at dsymbol/src/dsymbol/modulecache.d:238
_D7dsymbol11modulecache11ModuleCache14addImportPathsMFxAAyaZ8scanFromMFxQqZv
(this=, root="/usr/include/dmd/phobos/etc/c/odbc")
at dsymbol/src/dsymbol/modulecache.d:123
_D7dsymbol11modulecache11ModuleCache14addImportPathsMFxAAyaZ8scanFromMFxQqZv
(this=, root="/usr/include/dmd/phobos/etc/c")
at dsymbol/src/dsymbol/modulecache.d:125
_D7dsymbol11modulecache11ModuleCache14addImportPathsMFxAAyaZ8scanFromMFxQqZv
(this=, root="/usr/include/dmd/phobos/etc")
at dsymbol/src/dsymbol/modulecache.d:125
_D7dsymbol11modulecache11ModuleCache14addImportPathsMFxAAyaZ8scanFromMFxQqZv
(this=, root="/usr/include/dmd/phobos/")
at dsymbol/src/dsymbol/modulecache.d:125
dsymbol.modulecache.ModuleCache.addImportPaths(const(immutable(char)[][]))
(this=, paths={[0] = "/usr/include/dmd/phobos/"})
at dsymbol/src/dsymbol/modulecache.d:129
at src/dcd/server/main.d:167
You can see some readable messages like
dsymbol.modulecache.ModuleCache.addImportPaths(const(immutable(char)[][]))
(this=, paths={[0] = "/usr/include/dmd/phobos/"})
and some unreadable
_D7dsymbol11modulecache11ModuleCache14addImportPathsMFxAAyaZ8scanFromMFxQqZv
(this=, root="/usr/include/dmd/phobos/")
So please make me clear with the state of the demangling. Is it
supported?
Dec 03 2018
On 03/12/2018 12:29, ANtlord wrote:
You can see some readable messages like
dsymbol.modulecache.ModuleCache.addImportPaths(const(immutable(char)[][]))
(this=, paths={[0] = "/usr/include/dmd/phobos/"})
and some unreadable
_D7dsymbol11modulecache11ModuleCache14addImportPathsMFxAAyaZ8scanFromMFxQqZv
(this=, root="/usr/include/dmd/phobos/")
So please make me clear with the state of the demangling. Is it supported?
The mangling has changed with dmd 2.077 to reduce the size of symbols.
There is a patch for gdb/libiberty but it hasn't been merged yet AFAICT:
https://github.com/ibuclaw/gdb/pull/8
Dec 03 2018
On Monday, 3 December 2018 at 22:36:43 UTC, Rainer Schuetze wrote:There is a patch for gdb/libiberty but it hasn't been merged yet AFAICT: https://github.com/ibuclaw/gdb/pull/8What is the state of the PR? As far as I see hasn't been updated since 10 May. Also, can't we use D code in gdb? It helps to synchronize the demangling with the latest changes. Or it's impossible because GDB's demangling should support several versions of dlang compiler?
Dec 04 2018
On 04/12/2018 09:28, ANtlord wrote:On Monday, 3 December 2018 at 22:36:43 UTC, Rainer Schuetze wrote:Some paperwork had to be done with the FSF but that is completed. I guess Iain will merge the PR before the next major update. Also, can't we use D code in gdb? I doubt this is allowed before GDC is part of the official GNU compiler suite. This is expected to happen early next year. It helps to synchronize theThere is a patch for gdb/libiberty but it hasn't been merged yet AFAICT: https://github.com/ibuclaw/gdb/pull/8What is the state of the PR? As far as I see hasn't been updated since 10 May.demangling with the latest changes. Or it's impossible because GDB's demangling should support several versions of dlang compiler?The new mangling is a superset of the old mangling, so demangling works for both old and new versions.
Dec 04 2018








Rainer Schuetze <r.sagitario gmx.de>