https://bugs.llvm.org/show_bug.cgi?id=51384
Bug ID: 51384
Summary: Demangled name of dynamic initializer in PDB doesn't
match demangled name produced by MSVC
Product: lld
Version: unspecified
Hardware: PC
OS: Windows NT
Status: NEW
Severity: enhancement
Priority: P
Component: All Bugs
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected], [email protected]
When compiling the following code, the compiler will emit a dynamic initializer
into the executable:
class CompilerSegmentTest
{
public:
CompilerSegmentTest(void)
{
printf("CompilerSegmentTest CTR called\n");
}
~CompilerSegmentTest(void)
{
printf("CompilerSegmentTest DTR called\n");
}
};
namespace customNamespace
{
#pragma warning (disable:4074)
#pragma init_seg(compiler)
static CompilerSegmentTest g_compilerSegmentTestInstance;
#pragma warning (default:4074)
}
In the .obj file, this symbol is named
??__Eg_compilerSegmentTestInstance@customNamespace@@YAXXZ.
In the PDB file, this symbol will appear with its demangled name only, because
it is private and not contained in the public symbol stream.
When using MSVC, the demangled name in the PDB will be:
customNamespace::`dynamic initializer for 'g_compilerSegmentTestInstance''
When using lld, the demangled name in the PDB is slightly different however:
customNamespace::`dynamic initializer for 'g_compilerSegmentTestInstance'
(note the last missing ')
I've noticed this with a few symbols, and it seems that lld (or clang?) doesn't
like to emit two consecutive '' in demangled names.
--
You are receiving this mail because:
You are on the CC list for the bug._______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs