LLVM: lib/Object/ArchiveWriter.cpp File Reference (original) (raw)

Go to the source code of this file.

Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
Functions
template<typename T >
static void printWithSpacePadding (raw_ostream &OS, T Data, unsigned Size)
static bool isDarwin (object::Archive::Kind Kind)
static bool isAIXBigArchive (object::Archive::Kind Kind)
static bool isCOFFArchive (object::Archive::Kind Kind)
static bool isBSDLike (object::Archive::Kind Kind)
template<class T >
static void print (raw_ostream &Out, object::Archive::Kind Kind, T Val)
template<class T >
static void printLE (raw_ostream &Out, T Val)
static void printRestOfMemberHeader (raw_ostream &Out, const sys::TimePoint< std::chrono::seconds > &ModTime, unsigned UID, unsigned GID, unsigned Perms, uint64_t Size)
static void printGNUSmallMemberHeader (raw_ostream &Out, StringRef Name, const sys::TimePoint< std::chrono::seconds > &ModTime, unsigned UID, unsigned GID, unsigned Perms, uint64_t Size)
static void printBSDMemberHeader (raw_ostream &Out, uint64_t Pos, StringRef Name, const sys::TimePoint< std::chrono::seconds > &ModTime, unsigned UID, unsigned GID, unsigned Perms, uint64_t Size)
static void printBigArchiveMemberHeader (raw_ostream &Out, StringRef Name, const sys::TimePoint< std::chrono::seconds > &ModTime, unsigned UID, unsigned GID, unsigned Perms, uint64_t Size, uint64_t PrevOffset, uint64_t NextOffset)
static bool useStringTable (bool Thin, StringRef Name)
static bool is64BitKind (object::Archive::Kind Kind)
static void printMemberHeader (raw_ostream &Out, uint64_t Pos, raw_ostream &StringTable, StringMap< uint64_t > &MemberNames, object::Archive::Kind Kind, bool Thin, const NewArchiveMember &M, sys::TimePoint< std::chrono::seconds > ModTime, uint64_t Size)
static MemberData computeStringTable (StringRef Names)
static sys::TimePoint< std::chrono::seconds > now (bool Deterministic)
static bool isArchiveSymbol (const object::BasicSymbolRef &S)
static void printNBits (raw_ostream &Out, object::Archive::Kind Kind, uint64_t Val)
static uint64_t computeSymbolTableSize (object::Archive::Kind Kind, uint64_t NumSyms, uint64_t OffsetSize, uint64_t StringTableSize, uint32_t *Padding=nullptr)
static uint64_t computeSymbolMapSize (uint64_t NumObj, SymMap &SymMap, uint32_t *Padding=nullptr)
static uint64_t computeECSymbolsSize (SymMap &SymMap, uint32_t *Padding=nullptr)
static void writeSymbolTableHeader (raw_ostream &Out, object::Archive::Kind Kind, bool Deterministic, uint64_t Size, uint64_t PrevMemberOffset=0, uint64_t NextMemberOffset=0)
static uint64_t computeHeadersSize (object::Archive::Kind Kind, uint64_t NumMembers, uint64_t StringMemberSize, uint64_t NumSyms, uint64_t SymNamesSize, SymMap *SymMap)
static Expected< std::unique_ptr< SymbolicFile > > getSymbolicFile (MemoryBufferRef Buf, LLVMContext &Context, object::Archive::Kind Kind, function_ref< void(Error)> Warn)
static bool is64BitSymbolicFile (const SymbolicFile *SymObj)
template
uint16_t getAuxMaxAlignment (uint16_t AuxHeaderSize, AuxiliaryHeader *AuxHeader, uint16_t Log2OfMaxAlign)
static uint32_t getMemberAlignment (SymbolicFile *SymObj)
static void writeSymbolTable (raw_ostream &Out, object::Archive::Kind Kind, bool Deterministic, ArrayRef< MemberData > Members, StringRef StringTable, uint64_t MembersOffset, unsigned NumSyms, uint64_t PrevMemberOffset=0, uint64_t NextMemberOffset=0, bool Is64Bit=false)
static void writeSymbolMap (raw_ostream &Out, object::Archive::Kind Kind, bool Deterministic, ArrayRef< MemberData > Members, SymMap &SymMap, uint64_t MembersOffset)
static void writeECSymbols (raw_ostream &Out, object::Archive::Kind Kind, bool Deterministic, ArrayRef< MemberData > Members, SymMap &SymMap)
static bool isECObject (object::SymbolicFile &Obj)
static bool isAnyArm64COFF (object::SymbolicFile &Obj)
bool isImportDescriptor (StringRef Name)
static Expected< std::vector< unsigned > > getSymbols (SymbolicFile *Obj, uint16_t Index, raw_ostream &SymNames, SymMap *SymMap)
static Expected< std::vector< MemberData > > computeMemberData (raw_ostream &StringTable, raw_ostream &SymNames, object::Archive::Kind Kind, bool Thin, bool Deterministic, SymtabWritingMode NeedSymbols, SymMap *SymMap, LLVMContext &Context, ArrayRef< NewArchiveMember > NewMembers, std::optional< bool > IsEC, function_ref< void(Error)> Warn)
static ErrorOr< SmallString< 128 > > llvm::canonicalizePath (StringRef P)
Expected< std::string > llvm::computeArchiveRelativePath (StringRef From, StringRef To)
Error llvm::writeArchiveToStream (raw_ostream &Out, ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::optional< bool > IsEC=std::nullopt, function_ref< void(Error)> Warn=warnToStderr)
void llvm::warnToStderr (Error Err)
Error llvm::writeArchive (StringRef ArcName, ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr< MemoryBuffer > OldArchiveBuf=nullptr, std::optional< bool > IsEC=std::nullopt, function_ref< void(Error)> Warn=warnToStderr)
Expected< std::unique_ptr< MemoryBuffer > > llvm::writeArchiveToBuffer (ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, function_ref< void(Error)> Warn=warnToStderr)

computeECSymbolsSize()

computeHeadersSize()

computeMemberData()

static Expected< std::vector< MemberData > > computeMemberData ( raw_ostream & StringTable, raw_ostream & SymNames, object::Archive::Kind Kind, bool Thin, bool Deterministic, SymtabWritingMode NeedSymbols, SymMap * SymMap, LLVMContext & Context, ArrayRef< NewArchiveMember > NewMembers, std::optional< bool > IsEC, function_ref< void(Error)> Warn ) static

Definition at line 778 of file ArchiveWriter.cpp.

References llvm::alignTo(), llvm::alignToPowerOf2(), llvm::ArrayRef< T >::begin(), llvm::createFileError(), llvm::Data, llvm::raw_ostream::flush(), llvm::get(), llvm::MemoryBufferRef::getBuffer(), llvm::MemoryBufferRef::getBufferSize(), getMemberAlignment(), getSymbolicFile(), getSymbols(), isAIXBigArchive(), isAnyArm64COFF(), isCOFFArchive(), isDarwin(), isECObject(), llvm::object::Archive::MaxMemberSize, llvm::NoSymtab, llvm::offsetToAlignment(), llvm::object::parse_failed, printBigArchiveMemberHeader(), printMemberHeader(), llvm::ArrayRef< T >::size(), Size, llvm::Expected< T >::takeError(), llvm::raw_ostream::tell(), llvm::sys::toTimePoint(), and SymMap::UseECMap.

Referenced by llvm::writeArchiveToStream().

computeStringTable()

static MemberData computeStringTable ( StringRef Names) static

computeSymbolMapSize()

computeSymbolTableSize()

getAuxMaxAlignment()

template

uint16_t getAuxMaxAlignment ( uint16_t AuxHeaderSize,
AuxiliaryHeader * AuxHeader,
uint16_t Log2OfMaxAlign
)

getMemberAlignment()

getSymbolicFile()

Definition at line 485 of file ArchiveWriter.cpp.

References llvm::file_magic::bitcode, llvm::object::SymbolicFile::createSymbolicFile(), llvm::MemoryBufferRef::getBuffer(), llvm::identify_magic(), llvm::object::SymbolicFile::isSymbolicFile(), llvm::object::Archive::K_AIXBIG, llvm::object::Archive::K_BSD, llvm::object::Archive::K_COFF, llvm::object::Archive::K_DARWIN, llvm::object::Archive::K_DARWIN64, llvm::object::Archive::K_GNU, and llvm::object::Archive::K_GNU64.

Referenced by computeMemberData().

getSymbols()

is64BitKind()

Definition at line 284 of file ArchiveWriter.cpp.

References llvm::object::Archive::K_AIXBIG, llvm::object::Archive::K_BSD, llvm::object::Archive::K_COFF, llvm::object::Archive::K_DARWIN, llvm::object::Archive::K_DARWIN64, llvm::object::Archive::K_GNU, llvm::object::Archive::K_GNU64, and llvm_unreachable.

Referenced by computeHeadersSize(), printNBits(), llvm::writeArchiveToStream(), writeSymbolTable(), and writeSymbolTableHeader().

is64BitSymbolicFile()

isAIXBigArchive()

isAnyArm64COFF()

isArchiveSymbol()

isBSDLike()

Definition at line 189 of file ArchiveWriter.cpp.

References llvm::object::Archive::K_AIXBIG, llvm::object::Archive::K_BSD, llvm::object::Archive::K_COFF, llvm::object::Archive::K_DARWIN, llvm::object::Archive::K_DARWIN64, llvm::object::Archive::K_GNU, llvm::object::Archive::K_GNU64, and llvm_unreachable.

Referenced by computeSymbolTableSize(), print(), printMemberHeader(), llvm::writeArchiveToStream(), writeSymbolTable(), and writeSymbolTableHeader().

isCOFFArchive()

isDarwin()

isECObject()

isImportDescriptor()

now()

print()

Definition at line 205 of file ArchiveWriter.cpp.

References llvm::big, isBSDLike(), llvm::little, and llvm::support::endian::write().

Referenced by gen-regalloc-eviction-test-model::build_mock_model(), gen-regalloc-priority-test-model::build_mock_model(), gen-inline-oz-test-model::build_mock_model(), log_reader::main(), gen-inline-oz-test-model::main(), log_reader::pretty_print_tensor_value(), printLivenessInfo(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run(), and interactive_host::run_interactive().

printBigArchiveMemberHeader()

printBSDMemberHeader()

printGNUSmallMemberHeader()

printLE()

printMemberHeader()

printNBits()

printRestOfMemberHeader()

printWithSpacePadding()

Definition at line 168 of file ArchiveWriter.cpp.

References assert(), llvm::Data, llvm::raw_ostream::indent(), OS, Size, and llvm::raw_ostream::tell().

Referenced by computeStringTable(), printBigArchiveMemberHeader(), printBSDMemberHeader(), printGNUSmallMemberHeader(), printMemberHeader(), printRestOfMemberHeader(), and llvm::writeArchiveToStream().

useStringTable()

writeECSymbols()

writeSymbolMap()

writeSymbolTable()

Definition at line 595 of file ArchiveWriter.cpp.

References computeSymbolTableSize(), is64BitKind(), is64BitSymbolicFile(), isAIXBigArchive(), isBSDLike(), isCOFFArchive(), isDarwin(), printNBits(), llvm::StringTable::size(), Size, llvm::raw_ostream::write(), and writeSymbolTableHeader().

Referenced by llvm::writeArchiveToStream().

writeSymbolTableHeader()

Definition at line 442 of file ArchiveWriter.cpp.

References is64BitKind(), isAIXBigArchive(), isBSDLike(), Name, now(), printBigArchiveMemberHeader(), printBSDMemberHeader(), printGNUSmallMemberHeader(), Size, and llvm::raw_ostream::tell().

Referenced by computeHeadersSize(), writeSymbolMap(), and writeSymbolTable().

Log2OfAIXPageSize

MinBigArchiveMemDataAlign