Bug 4815 – CodeView: Global and Static symbols should have unmangled names

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2010-09-05T00:35:00Z
Last change time
2015-06-09T05:14:38Z
Keywords
patch
Assigned to
nobody
Creator
aldonunez1

Attachments

IDFilenameSummaryContent-TypeSize
9534815.txtSet and check prettyIdent.text/plain1499

Comments

Comment #0 by aldonunez1 — 2010-09-05T00:35:07Z
Global and Static symbols should have their names stored fully qualified but unmangled in the CodeView debug info. In contrast, Public symbols, because they are meant to expose names to other object files, should have their mangled linkage names stored, as they already are. Right now Global and Static symbol names are stored mangled. This causes problems when debugging. Storing them mangled defeats the ability of a debugger to use the hash table made by the linker in order to look up variables the user wants to evaluate and functions in a callstack. It also seems to offer no meaningful service, because mangled names are more appropriate for linking than debugging. This affects at least the following kinds of symbol records in the sstGlobalSym and sstStaticSym sections (not sstGlobalPub): S_LDATA32 S_GDATA32 S_LPROC32 S_GPROC32 S_THUNK32 S_LTHREAD32 S_GTHREAD32 S_UDT (already OK) The following article gives some explanation of the separation in treating name mangling. It applies to PDB format, but it's believed that PDB derives from CodeView, so I think the article applies equally to both. http://msdn.microsoft.com/en-us/library/ff553493(VS.85).aspx
Comment #1 by aldonunez1 — 2011-04-28T01:14:05Z
Created attachment 953 Set and check prettyIdent. We can fix this by setting and checking symbol::prettyIdent in the right places.
Comment #2 by bugzilla — 2011-04-28T12:17:43Z