Lines Matching defs:Unit

55   for (auto &Unit : Dwarf.compile_units()) {
56 Size += Unit->getLength();
558 CompileUnit &Unit, CompileUnit::DIEInfo &MyInfo, unsigned Flags) {
583 if (Unit.hasLabelAt(*LowPc))
586 DWARFUnit &OrigUnit = Unit.getOrigUnit();
594 Unit.addLabelLowPc(*LowPc, MyInfo.AddrAdjust);
613 Unit.addFunctionRange(*LowPc, *HighPc, MyInfo.AddrAdjust);
620 const DWARFFile &File, CompileUnit &Unit,
629 return shouldKeepSubprogramDIE(RelocMgr, DIE, File, Unit, MyInfo, Flags);
750 DWARFUnit &Unit = CU.getOrigUnit();
751 DWARFDataExtractor Data = Unit.getDebugInfoExtractor();
761 Unit.getFormParams());
765 Val.extractValue(Data, &Offset, Unit.getFormParams(), &Unit);
817 DWARFUnit &Unit = CU.getOrigUnit();
818 DWARFDie ParentDIE = Unit.getDIEAtIndex(AncestorIdx);
1082 CompileUnit &Unit) {
1083 const DWARFUnit &U = Unit.getOrigUnit();
1125 (Unit.hasODR() && isODRAttribute(AttrSpec.Attr))) {
1142 Unit.noteForwardReference(
1158 CompileUnit &Unit, SmallVectorImpl<uint8_t> &OutputBuffer,
1162 uint8_t OrigAddressByteSize = Unit.getOrigUnit().getAddressByteSize();
1197 RefOffset += Unit.getOrigUnit().getOffset();
1198 auto RefDie = Unit.getOrigUnit().getDIEForOffset(RefOffset);
1199 CompileUnit::DIEInfo &Info = Unit.getInfo(RefDie);
1218 Unit.getOrigUnit().getAddrOffsetSectionItem(
1236 Unit.getOrigUnit().getAddrOffsetSectionItem(
1280 CompileUnit &Unit, AttributeSpec AttrSpec, const DWARFFormValue &Val,
1296 DWARFUnit &OrigUnit = Unit.getOrigUnit();
1308 cloneExpression(Data, Expr, File, Unit, Buffer,
1309 Unit.getInfo(InputDIE).AddrAdjust, IsLittleEndian);
1346 unsigned AttrSize, const DWARFFormValue &Val, const CompileUnit &Unit,
1381 if (std::optional<uint64_t> LowPC = Unit.getLowPc())
1387 if (uint64_t HighPc = Unit.getHighPc())
1398 return Unit.getOrigUnit().getAddressByteSize();
1406 ->sizeOf(Unit.getOrigUnit().getFormParams());
1411 CompileUnit &Unit, AttributeSpec AttrSpec, const DWARFFormValue &Val,
1447 ->sizeOf(Unit.getOrigUnit().getFormParams());
1487 Unit.getOrigUnit().getRnglistOffset(*Index);
1496 AttrSize = Unit.getOrigUnit().getFormParams().getDwarfOffsetByteSize();
1508 Unit.getOrigUnit().getLoclistOffset(*Index);
1517 AttrSize = Unit.getOrigUnit().getFormParams().getDwarfOffsetByteSize();
1520 std::optional<uint64_t> LowPC = Unit.getLowPc();
1524 Value = Unit.getHighPc() - *LowPC;
1543 Unit.noteRangeAttribute(Die, Patch);
1548 Unit.getOrigUnit().getVersion())) {
1550 CompileUnit::DIEInfo &LocationDieInfo = Unit.getInfo(InputDIE);
1551 Unit.noteLocationAttribute({Patch, LocationDieInfo.InDebugMap
1569 CompileUnit &Unit, const DWARFFormValue &Val, const AttributeSpec AttrSpec,
1571 const DWARFUnit &U = Unit.getOrigUnit();
1589 File, Unit);
1595 return cloneBlockAttribute(Die, InputDIE, File, Unit, AttrSpec, Val,
1603 return cloneAddressAttribute(Die, InputDIE, AttrSpec, AttrSize, Val, Unit,
1617 return cloneScalarAttribute(Die, InputDIE, File, Unit, AttrSpec, Val,
1629 void DWARFLinker::DIECloner::addObjCAccelerator(CompileUnit &Unit,
1638 Unit.addNameAccelerator(Die, StringPool.getEntry(Names->Selector),
1640 Unit.addObjCAccelerator(Die, StringPool.getEntry(Names->ClassName),
1643 Unit.addObjCAccelerator(
1646 Unit.addNameAccelerator(
1686 const DWARFFile &File, CompileUnit &Unit,
1690 DWARFUnit &U = Unit.getOrigUnit();
1692 CompileUnit::DIEInfo &Info = Unit.getInfo(Idx);
1695 if (!Unit.getInfo(Idx).Keep)
1710 if (isODRCanonicalCandidate(InputDIE, Unit) && Info.Ctxt &&
1717 Info.Ctxt->setCanonicalDIEOffset(OutOffset + Unit.getStartOffset());
1781 Unit.getStartOffset() + OutOffset - CurAttrFixup.InputAttrStartOffset;
1790 cloneAttribute(*Die, InputDIE, File, Unit, Val, AttrSpec, AttrSize,
1799 // Add the DW_AT_APPLE_origin attribute to Compile Unit die if we have
1821 Unit.addNameAccelerator(Die, AttrInfo.MangledName,
1825 Unit.addNameAccelerator(Die, AttrInfo.NameWithoutTemplate,
1827 Unit.addNameAccelerator(Die, AttrInfo.Name,
1831 addObjCAccelerator(Unit, Die, AttrInfo.Name, DebugStrPool,
1837 Unit.addNamespaceAccelerator(Die, AttrInfo.Name);
1839 Unit.addNamespaceAccelerator(Die, AttrInfo.Name);
1851 uint32_t Hash = hashFullyQualifiedName(InputDIE, Unit, File);
1852 Unit.addTypeAccelerator(Die, AttrInfo.Name, ObjCClassIsImplementation,
1862 Unit.addTypeAccelerator(Die, AttrInfo.MangledName,
1871 if (Unit.getInfo(Idx).Keep) {
1877 if (Unit.getOrigUnit().getVersion() >= 5 && !AttrInfo.AttrStrOffsetBaseSeen &&
1903 Unit.getOrigUnit().getVersion() >= 5, Unit.getOrigUnit().getOffset(),
1914 if (DIE *Clone = cloneDIE(Child, File, Unit, PCOffset, OutOffset, Flags,
1931 void DWARFLinker::generateUnitRanges(CompileUnit &Unit, const DWARFFile &File,
1936 const auto &FunctionRanges = Unit.getFunctionRanges();
1946 TheDwarfEmitter->emitDwarfDebugArangesTable(Unit, LinkedFunctionRanges);
1948 RngListAttributesTy AllRngListAttributes = Unit.getRangesAttributes();
1950 Unit.getUnitRangesAttribute();
1954 MCSymbol *EndLabel = TheDwarfEmitter->emitDwarfDebugRangeListHeader(Unit);
1963 Unit.getOrigUnit().findRnglistFromOffset(AttributePatch.get())) {
1986 Unit, LinkedRanges, AttributePatch, AddrPool);
1989 // Emit ranges for Unit AT_ranges attribute.
1992 Unit, LinkedFunctionRanges, *UnitRngListAttribute, AddrPool);
1995 TheDwarfEmitter->emitDwarfDebugRangeListFooter(Unit, EndLabel);
2000 CompileUnit &Unit, const DWARFFile &File,
2006 Unit.getLocationAttributes();
2012 MCSymbol *EndLabel = Emitter->emitDwarfDebugLocListHeader(Unit);
2018 Unit.getOrigUnit().findLoclistFromOffset(CurLocAttr.get());
2046 Emitter->emitDwarfDebugLocListFragment(Unit, LinkedLocationExpressions,
2051 Emitter->emitDwarfDebugLocListFooter(Unit, EndLabel);
2065 CompileUnit &Unit, const uint16_t DwarfVersion) const {
2076 MCSymbol *EndLabel = Emitter->emitDwarfDebugAddrsHeader(Unit);
2077 patchAddrBase(*Unit.getOutputUnitDIE(),
2080 Unit.getOrigUnit().getAddressByteSize());
2081 Emitter->emitDwarfDebugAddrsFooter(Unit, EndLabel);
2126 void DWARFLinker::DIECloner::rememberUnitForMacroOffset(CompileUnit &Unit) {
2127 DWARFUnit &OrigUnit = Unit.getOrigUnit();
2132 UnitMacroMap.insert(std::make_pair(*MacroAttr, &Unit));
2138 UnitMacroMap.insert(std::make_pair(*MacroAttr, &Unit));
2143 void DWARFLinker::DIECloner::generateLineTableForUnit(CompileUnit &Unit) {
2148 DWARFDie CUDie = Unit.getOrigUnit().getUnitDIE();
2154 if (auto *OutputDIE = Unit.getOutputUnitDIE())
2158 ObjFile.Dwarf->getLineTableForUnit(&Unit.getOrigUnit())) {
2183 const auto &FunctionRanges = Unit.getFunctionRanges();
2241 Emitter->emitLineTableForUnit(LineTable, Unit, DebugStrPool,
2247 void DWARFLinker::emitAcceleratorEntriesForUnit(CompileUnit &Unit) {
2252 for (const auto &Namespace : Unit.getNamespaces())
2254 Unit.getStartOffset());
2256 for (const auto &Pubname : Unit.getPubnames())
2258 Pubname.Die->getOffset() + Unit.getStartOffset());
2260 for (const auto &Pubtype : Unit.getPubtypes())
2262 Pubtype.Name, Pubtype.Die->getOffset() + Unit.getStartOffset(),
2268 for (const auto &ObjC : Unit.getObjC())
2270 ObjC.Die->getOffset() + Unit.getStartOffset());
2273 TheDwarfEmitter->emitPubNamesForUnit(Unit);
2274 TheDwarfEmitter->emitPubTypesForUnit(Unit);
2277 for (const auto &Namespace : Unit.getNamespaces())
2281 Namespace.Die->getTag(), Unit.getUniqueID(),
2282 Unit.getTag() == dwarf::DW_TAG_type_unit);
2283 for (const auto &Pubname : Unit.getPubnames())
2287 Pubname.Die->getTag(), Unit.getUniqueID(),
2288 Unit.getTag() == dwarf::DW_TAG_type_unit);
2289 for (const auto &Pubtype : Unit.getPubtypes())
2293 Pubtype.Die->getTag(), Unit.getUniqueID(),
2294 Unit.getTag() == dwarf::DW_TAG_type_unit);
2315 for (std::unique_ptr<CompileUnit> &Unit : Context.CompileUnits) {
2316 for (auto CurRange : Unit->getFunctionRanges())
2565 std::unique_ptr<CompileUnit> Unit;
2574 if (Unit) {
2597 Unit = std::make_unique<CompileUnit>(*CU, UniqueUnitID++, !Options.NoODR,
2602 if (Unit)
2603 Context.ModuleUnits.emplace_back(RefModuleUnit{*ErrOrObj, std::move(Unit)});
2624 // Clone the InputDIE into your Unit DIE in our compile unit since it
3031 Error DWARFLinker::cloneModuleUnit(LinkContext &Context, RefModuleUnit &Unit,
3037 assert(Unit.Unit.get() != nullptr);
3039 if (!Unit.Unit->getOrigUnit().getUnitDIE().hasChildren())
3044 outs() << "cloning .debug_info from " << Unit.File.FileName << "\n";
3048 analyzeContextInfo(Unit.Unit->getOrigUnit().getUnitDIE(), 0, *(Unit.Unit),
3055 Unit.Unit->markEverythingAsKept();
3059 CompileUnits.emplace_back(std::move(Unit.Unit));
3061 DIECloner(*this, TheDwarfEmitter, Unit.File, DIEAlloc, CompileUnits,
3063 .cloneAllCompileUnits(*Unit.File.Dwarf, Unit.File,
3064 Unit.File.Dwarf->isLittleEndian());