Lines Matching +full:de +full:- +full:assert

1 //===--- XCOFFObjectFile.cpp - XCOFF object file implementation -----------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
53 return NulCharPtr ? StringRef(Name, NulCharPtr - Name) in generateXCOFFFixedNameStringRef()
101 if (LoaderSecHeader->LengthOfStrTbl > Offset) in getLoaderSecSymNameInStrTbl()
103 LoaderSecHeader->OffsetToStrTbl + Offset); in getLoaderSecSymNameInStrTbl()
107 Twine::utohexstr(LoaderSecHeader->LengthOfStrTbl) + in getLoaderSecSymNameInStrTbl()
115 if (NameInStrTbl->IsNameInStrTbl != XCOFFSymbolRef::NAME_IN_STR_TBL_MAGIC) in getSymbolName()
118 return getLoaderSecSymNameInStrTbl(LoaderSecHeader32, NameInStrTbl->Offset); in getSymbolName()
134 assert(is64Bit() && "64-bit interface called on a 32-bit object file."); in getSymbolAuxType()
144 uintptr_t Offset = Addr - TableAddress; in checkSectionAddress()
155 assert(!is64Bit() && "32-bit interface called on 64-bit object file."); in toSection32()
164 assert(is64Bit() && "64-bit interface called on a 32-bit object file."); in toSection64()
172 assert(Ref.p != 0 && "Symbol table pointer can not be nullptr!"); in toSymbolRef()
180 assert(!is64Bit() && "32-bit interface called on 64-bit object file."); in fileHeader32()
185 assert(is64Bit() && "64-bit interface called on a 32-bit object file."); in fileHeader64()
190 assert(!is64Bit() && "32-bit interface called on 64-bit object file."); in auxiliaryHeader32()
195 assert(is64Bit() && "64-bit interface called on a 32-bit object file."); in auxiliaryHeader64()
205 assert(!is64Bit() && "32-bit interface called on 64-bit object file."); in sectionHeaderTable32()
211 assert(is64Bit() && "64-bit interface called on a 32-bit object file."); in sectionHeaderTable64()
220 // point to the end-of-symbol-table address. in moveSymbolNext()
230 // A byte offset value of 0 is a null or zero-length symbol in getStringTableEntry()
232 // field; as a soft-error recovery mechanism, we treat such cases as having an in getStringTableEntry()
254 if (CFileEntPtr->NameInStrTbl.Magic != XCOFFSymbolRef::NAME_IN_STR_TBL_MAGIC) in getCFileName()
255 return generateXCOFFFixedNameStringRef(CFileEntPtr->Name); in getCFileName()
256 return getStringTableEntry(CFileEntPtr->NameInStrTbl.Offset); in getCFileName()
297 assert(CsectAuxRef.getSymbolType() == XCOFF::XTY_CM); in getCommonSymbolSizeImpl()
339 SecName = XCOFFObjectFile::toSection64(SecDRIOrErr.get())->getName(); in getSymbolType()
341 SecName = XCOFFObjectFile::toSection32(SecDRIOrErr.get())->getName(); in getSymbolType()
384 return toSection64(Sec)->VirtualAddress; in getSectionAddress()
386 return toSection32(Sec)->VirtualAddress; in getSectionAddress()
393 return toSection64(Sec) - sectionHeaderTable64() + 1; in getSectionIndex()
395 return toSection32(Sec) - sectionHeaderTable32() + 1; in getSectionIndex()
402 return toSection64(Sec)->SectionSize; in getSectionSize()
404 return toSection32(Sec)->SectionSize; in getSectionSize()
414 OffsetToRaw = toSection64(Sec)->FileOffsetToRawData; in getSectionContents()
416 OffsetToRaw = toSection32(Sec)->FileOffsetToRawData; in getSectionContents()
438 return toSection64(Sec)->FileOffsetToRawData; in getSectionFileOffsetToRawData()
440 return toSection32(Sec)->FileOffsetToRawData; in getSectionFileOffsetToRawData()
514 return is64Bit() ? toSection64(Sec)->FileOffsetToRawData == 0 in isSectionVirtual()
515 : toSection32(Sec)->FileOffsetToRawData == 0; in isSectionVirtual()
581 const uint64_t RelocAddress = Reloc->VirtualAddress; in getRelocationOffset()
586 if (Sec64->VirtualAddress <= RelocAddress && in getRelocationOffset()
587 RelocAddress < Sec64->VirtualAddress + Sec64->SectionSize) { in getRelocationOffset()
588 return RelocAddress - Sec64->VirtualAddress; in getRelocationOffset()
595 const uint32_t RelocAddress = Reloc->VirtualAddress; in getRelocationOffset()
600 if (Sec32->VirtualAddress <= RelocAddress && in getRelocationOffset()
601 RelocAddress < Sec32->VirtualAddress + Sec32->SectionSize) { in getRelocationOffset()
602 return RelocAddress - Sec32->VirtualAddress; in getRelocationOffset()
614 Index = Reloc->SymbolIndex; in getRelocationSymbol()
620 Index = Reloc->SymbolIndex; in getRelocationSymbol()
632 return viewAs<XCOFFRelocation64>(Rel.p)->Type; in getRelocationType()
633 return viewAs<XCOFFRelocation32>(Rel.p)->Type; in getRelocationType()
641 Res = XCOFF::getRelocationTypeString(Reloc->Type); in getRelocationTypeName()
644 Res = XCOFF::getRelocationTypeString(Reloc->Type); in getRelocationTypeName()
677 if (is64Bit() || (auxiliaryHeader32() && (auxiliaryHeader32()->getVersion() == in getSymbolFlags()
722 return is64Bit() ? "aix5coff64-rs6000" : "aixcoff-rs6000"; in getFileFormatName()
735 return !(fileHeader64()->Flags & NoRelMask); in isRelocatableObject()
736 return !(fileHeader32()->Flags & NoRelMask); in isRelocatableObject()
743 return is64Bit() ? auxiliaryHeader64()->getEntryPointAddr() in getStartAddress()
744 : auxiliaryHeader32()->getEntryPointAddr(); in getStartAddress()
790 return is64Bit() ? fileHeader64()->Magic : fileHeader32()->Magic; in getMagic()
801 getSectionHeaderSize() * (Num - 1)); in getSectionByNum()
808 auto GetSectionAddr = [&](const auto &Sections) -> uintptr_t { in getSectionByType()
847 return (SectionNumber <= 0 && SectionNumber >= -2); in isReservedSectionNumber()
851 return is64Bit() ? fileHeader64()->NumberOfSections in getNumberOfSections()
852 : fileHeader32()->NumberOfSections; in getNumberOfSections()
856 return is64Bit() ? fileHeader64()->TimeStamp : fileHeader32()->TimeStamp; in getTimeStamp()
860 return is64Bit() ? fileHeader64()->AuxHeaderSize in getOptionalHeaderSize()
861 : fileHeader32()->AuxHeaderSize; in getOptionalHeaderSize()
865 return fileHeader32()->SymbolTableOffset; in getSymbolTableOffset32()
872 return fileHeader32()->NumberOfSymTableEntries; in getRawNumberOfSymbolTableEntries32()
876 return (fileHeader32()->NumberOfSymTableEntries >= 0 in getLogicalNumberOfSymbolTableEntries32()
877 ? fileHeader32()->NumberOfSymTableEntries in getLogicalNumberOfSymbolTableEntries32()
882 return fileHeader64()->SymbolTableOffset; in getSymbolTableOffset64()
886 return fileHeader64()->NumberOfSymTableEntries; in getNumberOfSymbolTableEntries64()
907 ptrdiff_t Offset = reinterpret_cast<const char *>(SymbolEntPtr) - in checkSymbolEntryPointer()
916 return (reinterpret_cast<const char *>(SymbolEntPtr) - in getSymbolIndex()
960 return is64Bit() ? fileHeader64()->Flags : fileHeader32()->Flags; in getFlags()
964 return is64Bit() ? toSection64(Sec)->Name : toSection32(Sec)->Name; in getSectionNameInternal()
972 return is64Bit() ? toSection64(Sec)->Flags : toSection32(Sec)->Flags; in getSectionFlags()
977 assert(Type == Binary::ID_XCOFF32 || Type == Binary::ID_XCOFF64); in XCOFFObjectFile()
981 assert(is64Bit() && "64-bit interface called for non 64-bit file."); in sections64()
988 assert(!is64Bit() && "32-bit interface called for non 32-bit file."); in sections32()
1005 uint16_t SectionIndex = &Section - sectionHeaderTable<T>() + 1; in getNumberOfRelocationEntries()
1045 assert((is64Bit() && sizeof(ExceptEnt) == sizeof(ExceptionSectionEntry64)) || in getExceptionEntries()
1073 Obj->Data, reinterpret_cast<uintptr_t>(Obj->base() + Offset), 4)) { in parseStringTable()
1079 uint32_t Size = support::endian::read32be(Obj->base() + Offset); in parseStringTable()
1087 getObject<char>(Obj->Data, Obj->base() + Offset, Size); in parseStringTable()
1096 if (StringTablePtr[Size - 1] != '\0') in parseStringTable()
1119 OffsetToImportFileTable = LoaderSec64->OffsetToImpid; in getImportFileTable()
1120 LengthOfImportFileTable = LoaderSec64->LengthOfImpidStrTbl; in getImportFileTable()
1124 OffsetToImportFileTable = LoaderSec32->OffsetToImpid; in getImportFileTable()
1125 LengthOfImportFileTable = LoaderSec32->LengthOfImpidStrTbl; in getImportFileTable()
1141 if (ImportTablePtr[LengthOfImportFileTable - 1] != '\0') in getImportFileTable()
1158 const auto *Base = Obj->base(); in create()
1159 MemoryBufferRef Data = Obj->Data; in create()
1163 getObject<void>(Data, Base + CurOffset, Obj->getFileHeaderSize()); in create()
1166 Obj->FileHeader = FileHeaderOrErr.get(); in create()
1168 CurOffset += Obj->getFileHeaderSize(); in create()
1170 if (Obj->getOptionalHeaderSize()) { in create()
1172 getObject<void>(Data, Base + CurOffset, Obj->getOptionalHeaderSize()); in create()
1175 Obj->AuxiliaryHeader = AuxiliaryHeaderOrErr.get(); in create()
1178 CurOffset += Obj->getOptionalHeaderSize(); in create()
1181 if (Obj->getNumberOfSections()) { in create()
1183 Obj->getNumberOfSections() * Obj->getSectionHeaderSize(); in create()
1193 Obj->SectionHeaderTable = SecHeadersOrErr.get(); in create()
1197 Obj->getNumberOfSymbolTableEntries(); in create()
1204 CurOffset = Obj->is64Bit() ? Obj->getSymbolTableOffset64() in create()
1205 : Obj->getSymbolTableOffset32(); in create()
1217 Obj->SymbolTblPtr = SymTableOrErr.get(); in create()
1225 Obj->StringTable = StringTableOrErr.get(); in create()
1265 // -ffunction-sections. in isFunction()
1269 // symbol for -ffunction-sections: in isFunction()
1279 if (++NextIt == getObject()->symbol_end()) in isFunction()
1282 if (cantFail(getAddress()) != cantFail(NextIt->getAddress())) in isFunction()
1286 Expected<XCOFFCsectAuxRef> NextCsectAuxEnt = NextIt->getXCOFFCsectAuxRef(); in isFunction()
1301 Twine(getObject()->getSymbolIndex(CsectAuxRef.getEntryAddress())) + in isFunction()
1313 assert(isCsectSymbol() && in getXCOFFCsectAuxRef()
1314 "Calling csect symbol interface with a non-csect symbol."); in getXCOFFCsectAuxRef()
1322 uint32_t SymbolIdx = getObject()->getSymbolIndex(getEntryAddress()); in getXCOFFCsectAuxRef()
1328 if (!getObject()->is64Bit()) { in getXCOFFCsectAuxRef()
1338 for (uint8_t Index = NumberOfAuxEntries; Index > 0; --Index) { in getXCOFFCsectAuxRef()
1341 if (*getObject()->getSymbolAuxType(AuxAddr) == in getXCOFFCsectAuxRef()
1344 getObject()->checkSymbolEntryPointer(AuxAddr); in getXCOFFCsectAuxRef()
1356 // A storage class value with the high-order bit on indicates that the name is in getName()
1361 if (!getObject()->is64Bit()) { in getName()
1362 if (getSymbol32()->NameInStrTbl.Magic != in getName()
1364 return generateXCOFFFixedNameStringRef(getSymbol32()->SymbolName); in getName()
1366 return getObject()->getStringTableEntry(getSymbol32()->NameInStrTbl.Offset); in getName()
1369 return getObject()->getStringTableEntry(getSymbol64()->Offset); in getName()
1459 DataExtractor DE(ArrayRef<uint8_t>(Ptr, Size), /*IsLittleEndian=*/false, in XCOFFTracebackTable() local
1464 DE.getU64(Cur); in XCOFFTracebackTable()
1472 ParamsTypeValue = DE.getU32(Cur); in XCOFFTracebackTable()
1475 TraceBackTableOffset = DE.getU32(Cur); in XCOFFTracebackTable()
1478 HandlerMask = DE.getU32(Cur); in XCOFFTracebackTable()
1481 NumOfCtlAnchors = DE.getU32(Cur); in XCOFFTracebackTable()
1486 Disp.push_back(DE.getU32(Cur)); in XCOFFTracebackTable()
1493 uint16_t FunctionNameLen = DE.getU16(Cur); in XCOFFTracebackTable()
1495 FunctionName = DE.getBytes(Cur, FunctionNameLen); in XCOFFTracebackTable()
1499 AllocaRegister = DE.getU8(Cur); in XCOFFTracebackTable()
1503 StringRef VectorExtRef = DE.getBytes(Cur, 6); in XCOFFTracebackTable()
1511 VectorParmsNum = VecExt->getNumberOfVectorParms(); in XCOFFTracebackTable()
1513 DE.skip(Cur, 2); in XCOFFTracebackTable()
1517 // As long as there is no fixed-point or floating-point parameter, this in XCOFFTracebackTable()
1535 ExtensionTable = DE.getU8(Cur); in XCOFFTracebackTable()
1538 // eh_info displacement must be 4-byte aligned. in XCOFFTracebackTable()
1540 EhInfoDisp = Is64BitObj ? DE.getU64(Cur) : DE.getU32(Cur); in XCOFFTracebackTable()