mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 17:24:48 +00:00
Debug Info: Add basic support for external types references.
This is a necessary prerequisite for bootstrapping the emission of debug info inside modules. - Adds a FlagExternalTypeRef to DICompositeType. External types must have a unique identifier. - External type references are emitted using a forward declaration with a DW_AT_signature([DW_FORM_ref_sig8]) based on the UID. http://reviews.llvm.org/D9612 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242302 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -467,7 +467,10 @@ void DwarfDebug::beginModule() {
|
||||
for (auto *Ty : CUNode->getRetainedTypes()) {
|
||||
// The retained types array by design contains pointers to
|
||||
// MDNodes rather than DIRefs. Unique them here.
|
||||
CU.getOrCreateTypeDIE(cast<DIType>(resolve(Ty->getRef())));
|
||||
DIType *RT = cast<DIType>(resolve(Ty->getRef()));
|
||||
if (!RT->isExternalTypeRef())
|
||||
// There is no point in force-emitting a forward declaration.
|
||||
CU.getOrCreateTypeDIE(RT);
|
||||
}
|
||||
// Emit imported_modules last so that the relevant context is already
|
||||
// available.
|
||||
@ -1884,7 +1887,7 @@ MCDwarfDwoLineTable *DwarfDebug::getDwoLineTable(const DwarfCompileUnit &CU) {
|
||||
return &SplitTypeUnitFileTable;
|
||||
}
|
||||
|
||||
static uint64_t makeTypeSignature(StringRef Identifier) {
|
||||
uint64_t DwarfDebug::makeTypeSignature(StringRef Identifier) {
|
||||
MD5 Hash;
|
||||
Hash.update(Identifier);
|
||||
// ... take the least significant 8 bytes and return those. Our MD5
|
||||
|
Reference in New Issue
Block a user