Lines Matching refs:unit

64 	ExpressionEvaluationContext(DwarfFile* file, CompilationUnit* unit,
74 fUnit(unit),
663 error = _FinishUnit(entry->unit);
668 for (int32 i = 0; CompilationUnit* unit = fCompilationUnits.ItemAt(i);
670 error = _FinishUnit(unit);
703 // that should be the compilation unit entry
709 // find the compilation unit
710 for (int32 i = 0; CompilationUnit* unit = fCompilationUnits.ItemAt(i);
712 if (unit->UnitEntry() == unitEntry)
713 return unit;
721 DwarfFile::ResolveRangeList(CompilationUnit* unit, uint64 offset) const
723 if (unit == NULL || fDebugRangesSection == NULL)
736 target_addr_t baseAddress = unit->AddressRangeBase();
737 target_addr_t maxAddress = unit->MaxAddress();
740 fDebugRangesSection->Size() - offset, unit->AddressSize(), unit->IsBigEndian());
767 DwarfFile::UnwindCallFrame(CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
776 return _UnwindCallFrame(unit, addressSize, isBigEndian,
783 DwarfFile::EvaluateExpression(CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
789 ExpressionEvaluationContext context(this, unit, addressSize, isBigEndian,
802 DwarfFile::ResolveLocation(CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
812 status_t error = _GetLocationExpression(unit, location, instructionPointer,
818 ExpressionEvaluationContext context(this, unit, addressSize, isBigEndian,
828 DwarfFile::EvaluateConstantValue(CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
847 status_t error = EvaluateExpression(unit, addressSize, isBigEndian,
864 DwarfFile::EvaluateDynamicValue(CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
947 status_t error = EvaluateConstantValue(unit, addressSize, isBigEndian,
960 status_t error = EvaluateExpression(unit, addressSize, isBigEndian,
995 WARNING("\"%s\": Invalid compilation unit length.\n", fName);
1003 WARNING("\"%s\": Unsupported unit type %d\n",
1025 WARNING("\"%s\": Unexpected end of data in compilation unit "
1030 TRACE_DIE("DWARF%d compilation unit: version %d, length: %" B_PRIu64
1035 WARNING("\"%s\": Unsupported compilation unit version: %d\n",
1049 // create a compilation unit object
1050 CompilationUnit* unit = new(std::nothrow) CompilationUnit(
1054 if (unit == NULL || !fCompilationUnits.AddItem(unit)) {
1055 delete unit;
1059 // parse the debug info for the unit
1060 status_t error = _ParseCompilationUnit(unit);
1086 WARNING("Invalid type unit length, offset %#" B_PRIx64 ".\n",
1098 WARNING("Unexpected end of data in type unit header at %#"
1113 TRACE_DIE("DWARF%d type unit: version %d, length: %" B_PRIu64
1120 WARNING("\"%s\": Unsupported type unit version: %d\n",
1131 // create a type unit object
1132 TypeUnit* unit = new(std::nothrow) TypeUnit(
1137 if (unit == NULL)
1140 // parse the debug info for the unit
1141 status_t error = _ParseTypeUnit(unit);
1150 TypeUnitTableEntry(signature, unit);
1280 DwarfFile::_ParseCompilationUnit(CompilationUnit* unit)
1283 status_t error = _GetAbbreviationTable(unit->AbbreviationOffset(),
1288 unit->SetAbbreviationTable(abbreviationTable);
1291 (const uint8*)fDebugInfoSection->Data() + unit->ContentOffset(),
1292 unit->ContentSize(), unit->AddressSize(), unit->IsBigEndian());
1296 error = _ParseDebugInfoEntry(dataReader, unit, abbreviationTable, entry,
1303 WARNING("No compilation unit entry in .debug_info section.\n");
1307 unit->SetUnitEntry(unitEntry);
1310 TRACE_DIE("remaining bytes in unit: %" B_PRIdOFF "\n",
1324 DwarfFile::_ParseTypeUnit(TypeUnit* unit)
1327 status_t error = _GetAbbreviationTable(unit->AbbreviationOffset(),
1332 unit->SetAbbreviationTable(abbreviationTable);
1335 (const uint8*)fDebugTypesSection->Data() + unit->ContentOffset(),
1336 unit->ContentSize(), unit->AddressSize(), unit->IsBigEndian());
1340 error = _ParseDebugInfoEntry(dataReader, unit, abbreviationTable, entry,
1347 WARNING("No type unit entry in .debug_types section.\n");
1351 unit->SetUnitEntry(unitEntry);
1352 DebugInfoEntry* typeEntry = unit->EntryForOffset(unit->TypeOffset());
1354 WARNING("No type found for type unit %p at specified offset %"
1355 B_PRId64 ".\n", unit, unit->TypeOffset());
1358 unit->SetTypeEntry(typeEntry);
1361 TRACE_DIE("remaining bytes in unit: %" B_PRIdOFF "\n",
1376 BaseUnit* unit, AbbreviationTable* abbreviationTable,
1380 + unit->RelativeContentOffset();
1416 error = unit->AddDebugInfoEntry(entry, entryOffset);
1422 error = _ParseEntryAttributes(dataReader, unit, NULL, abbreviationEntry);
1432 unit, abbreviationTable, childEntry, endOfEntryList, level + 1);
1468 DwarfFile::_FinishUnit(BaseUnit* unit)
1470 CompilationUnit* compilationUnit = dynamic_cast<CompilationUnit*>(unit);
1472 TRACE_DIE("\nfinishing %s unit %p\n",
1473 isTypeUnit ? "type" : "compilation", unit);
1476 AbbreviationTable* abbreviationTable = unit->GetAbbreviationTable();
1481 (const uint8*)section->Data() + unit->HeaderOffset(),
1482 unit->TotalSize(), unit->AddressSize(), unit->IsBigEndian());
1486 int entryCount = unit->CountEntries();
1491 unit->GetEntryAt(i, entry, offset);
1514 error = _ParseEntryAttributes(dataReader, unit, entry,
1527 // set the compilation unit's source language
1528 unit->SetSourceLanguage(entryInitInfo.languageInfo);
1533 // resolve the compilation unit's address range list
1557 DwarfFile::_ReadStringIndirect(BaseUnit* unit, uint64 index, const char*& value) const
1564 uint64 strOffsetsBase = unit->IsDwarf64() ? 16 : 8;
1565 uint64 offsetSize = unit->IsDwarf64() ? 8 : 4;
1573 uint64 offset = unit->IsDwarf64()
1588 DwarfFile::_ReadAddressIndirect(BaseUnit* unit, uint64 index, uint64& value) const
1595 uint64 addrBase = unit->IsDwarf64() ? 16 : 8;
1597 if (addrBase + index * unit->AddressSize() >= fDebugAddressSection->Size()) {
1603 + addrBase + index * unit->AddressSize();
1605 if (unit->AddressSize() == 8)
1616 BaseUnit* unit, DebugInfoEntry* entry, AbbreviationEntry& abbreviationEntry)
1638 off_t valueOffset = dataReader.Offset() + unit->ContentOffset();
1683 uint64 offset = unit->IsDwarf64()
1703 value = unit->IsDwarf64()
1730 status_t res = _ReadStringIndirect(unit, index, strValue);
1739 status_t res = _ReadAddressIndirect(unit, index, value);
1747 uint64 offset = unit->IsDwarf64()
1772 value = unit->IsDwarf64()
1784 status_t res = _ReadStringIndirect(unit, index, strValue);
1797 status_t res = _ReadAddressIndirect(unit, index, value);
1858 unit, value, refType));
1931 DwarfFile::_ParseLineInfoFormatString(CompilationUnit* unit, DataReader &dataReader,
1945 target_addr_t offset = unit->IsDwarf64()
1964 target_addr_t offset = unit->IsDwarf64()
1990 DwarfFile::_ParseLineInfoFormatUint(CompilationUnit* unit, DataReader &dataReader,
2021 DwarfFile::_ParseLineInfo(CompilationUnit* unit)
2023 off_t offset = unit->UnitEntry()->StatementListOffset();
2025 TRACE_LINES("DwarfFile::_ParseLineInfo(%p), offset: %" B_PRIdOFF "\n", unit,
2029 fDebugLineSection->Size() - offset, unit->AddressSize(), unit->IsBigEndian());
2031 // unit length
2047 uint8 addressSize = unit->AddressSize();
2156 status_t res = _ParseLineInfoFormatString(unit, dataReader, format, directory);
2161 if (!unit->AddDirectory(directory))
2201 res = _ParseLineInfoFormatString(unit, dataReader,
2207 res = _ParseLineInfoFormatUint(unit, dataReader,
2213 res = _ParseLineInfoFormatUint(unit, dataReader,
2219 res = _ParseLineInfoFormatUint(unit, dataReader,
2242 if (!unit->AddFile(fileName, dirIndex))
2254 if (!unit->AddDirectory(directory))
2276 if (!unit->AddFile(file, dirIndex))
2289 return unit->GetLineNumberProgram().Init(program, programSize,
2296 DwarfFile::_UnwindCallFrame(CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
2308 unit != NULL ? unit->AddressSize() : addressSize,
2309 unit != NULL ? unit->IsBigEndian() : isBigEndian);
2324 info->ehFrame, unit, addressSize, isBigEndian, context, info->cieOffset,
2358 error = _ParseFrameInfoInstructions(unit, context,
2382 error = _ParseFrameInfoInstructions(unit, context,
2407 error = EvaluateExpression(unit, addressSize, isBigEndian,
2482 error = EvaluateExpression(unit, addressSize, isBigEndian,
2501 error = EvaluateExpression(unit, addressSize, isBigEndian,
2526 bool usingEHFrameSection, CompilationUnit* unit, uint8 addressSize, bool isBigEndian,
2535 unit != NULL ? unit->AddressSize() : addressSize,
2536 unit != NULL ? unit->IsBigEndian() : isBigEndian);
2604 DwarfFile::_ParseFrameInfoInstructions(CompilationUnit* unit,
3020 WARNING("Invalid public types set unit length.\n");
3053 TRACE_PUBTYPES("DwarfFile::_ParsePublicTypesInfo(): compilation unit debug "
3105 DwarfFile::_ResolveReference(BaseUnit* unit, uint64 offset,
3110 return unit->EntryForOffset(offset);
3114 CompilationUnit* unit = _GetContainingCompilationUnit(offset);
3115 if (unit == NULL)
3118 offset -= unit->HeaderOffset();
3119 DebugInfoEntry* entry = unit->EntryForOffset(offset);
3128 if (entry != NULL && entry->unit != NULL)
3129 return entry->unit->TypeEntry();
3139 DwarfFile::_GetLocationExpression(CompilationUnit* unit,
3153 return _FindLocationExpression(unit, location->listOffset,
3162 DwarfFile::_FindLocationExpression(CompilationUnit* unit, uint64 offset,
3165 if (unit == NULL)
3174 target_addr_t baseAddress = unit->AddressRangeBase();
3175 target_addr_t maxAddress = unit->MaxAddress();
3178 fDebugLocationSection->Size() - offset, unit->AddressSize(), unit->IsBigEndian());
3355 CompilationUnit* unit = fCompilationUnits.ItemAt(lower);
3356 return unit->ContainsAbsoluteOffset(refAddr) ? unit : NULL;