mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
DwarfDebug: Walk skeletons during fission pubtypes/pubnames emission
This more accurately represents the actual walk - pubnames/pubtypes are emitted into the .o, not the .dwo, and reference the skeletons not the full units. Use the newly established ID->index invariant to lookup the underlying full unit to retrieve its public names and types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196601 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5877a5b8a2
commit
08e03ce70f
@ -2411,10 +2411,10 @@ void DwarfDebug::emitDebugPubNames(bool GnuStyle) {
|
||||
GnuStyle ? Asm->getObjFileLowering().getDwarfGnuPubNamesSection()
|
||||
: Asm->getObjFileLowering().getDwarfPubNamesSection();
|
||||
|
||||
for (SmallVectorImpl<Unit *>::const_iterator I = getUnits().begin(),
|
||||
E = getUnits().end();
|
||||
I != E; ++I) {
|
||||
Unit *TheU = *I;
|
||||
DwarfFile &Holder = useSplitDwarf() ? SkeletonHolder : InfoHolder;
|
||||
const SmallVectorImpl<Unit *> &Units = Holder.getUnits();
|
||||
for (unsigned i = 0; i != Units.size(); ++i) {
|
||||
Unit *TheU = Units[i];
|
||||
unsigned ID = TheU->getUniqueID();
|
||||
|
||||
// Start the dwarf pubnames section.
|
||||
@ -2445,7 +2445,7 @@ void DwarfDebug::emitDebugPubNames(bool GnuStyle) {
|
||||
4);
|
||||
|
||||
// Emit the pubnames for this compilation unit.
|
||||
const StringMap<const DIE *> &Globals = TheU->getGlobalNames();
|
||||
const StringMap<const DIE *> &Globals = getUnits()[ID]->getGlobalNames();
|
||||
for (StringMap<const DIE *>::const_iterator GI = Globals.begin(),
|
||||
GE = Globals.end();
|
||||
GI != GE; ++GI) {
|
||||
@ -2479,10 +2479,10 @@ void DwarfDebug::emitDebugPubTypes(bool GnuStyle) {
|
||||
GnuStyle ? Asm->getObjFileLowering().getDwarfGnuPubTypesSection()
|
||||
: Asm->getObjFileLowering().getDwarfPubTypesSection();
|
||||
|
||||
for (SmallVectorImpl<Unit *>::const_iterator I = getUnits().begin(),
|
||||
E = getUnits().end();
|
||||
I != E; ++I) {
|
||||
Unit *TheU = *I;
|
||||
DwarfFile &Holder = useSplitDwarf() ? SkeletonHolder : InfoHolder;
|
||||
const SmallVectorImpl<Unit *> &Units = Holder.getUnits();
|
||||
for (unsigned i = 0; i != Units.size(); ++i) {
|
||||
Unit *TheU = Units[i];
|
||||
unsigned ID = TheU->getUniqueID();
|
||||
|
||||
// Start the dwarf pubtypes section.
|
||||
@ -2514,7 +2514,7 @@ void DwarfDebug::emitDebugPubTypes(bool GnuStyle) {
|
||||
Asm->GetTempSymbol(ISec->getLabelBeginName(), TheU->getUniqueID()), 4);
|
||||
|
||||
// Emit the pubtypes.
|
||||
const StringMap<const DIE *> &Globals = TheU->getGlobalTypes();
|
||||
const StringMap<const DIE *> &Globals = getUnits()[ID]->getGlobalTypes();
|
||||
for (StringMap<const DIE *>::const_iterator GI = Globals.begin(),
|
||||
GE = Globals.end();
|
||||
GI != GE; ++GI) {
|
||||
|
Loading…
Reference in New Issue
Block a user