LLVM
15.0.0git
|
#include "llvm/Object/ArchiveWriter.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/Magic.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/Object/Archive.h"
#include "llvm/Object/Error.h"
#include "llvm/Object/IRObjectFile.h"
#include "llvm/Object/MachO.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Object/SymbolicFile.h"
#include "llvm/Object/XCOFFObjectFile.h"
#include "llvm/Support/Alignment.h"
#include "llvm/Support/EndianStream.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/SmallVectorMemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
#include <map>
#include <unistd.h>
Go to the source code of this file.
Namespaces | |
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 | isBSDLike (object::Archive::Kind Kind) |
template<class T > | |
static void | print (raw_ostream &Out, object::Archive::Kind Kind, 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, unsigned PrevOffset, unsigned 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, StringRef StringTable, uint32_t *Padding=nullptr) |
static void | writeSymbolTableHeader (raw_ostream &Out, object::Archive::Kind Kind, bool Deterministic, uint64_t Size, uint64_t PrevMemberOffset=0) |
static void | writeSymbolTable (raw_ostream &Out, object::Archive::Kind Kind, bool Deterministic, ArrayRef< MemberData > Members, StringRef StringTable, uint64_t PrevMemberOffset=0) |
static Expected< std::vector< unsigned > > | getSymbols (MemoryBufferRef Buf, raw_ostream &SymNames, bool &HasObject) |
static Expected< std::vector< MemberData > > | computeMemberData (raw_ostream &StringTable, raw_ostream &SymNames, object::Archive::Kind Kind, bool Thin, bool Deterministic, bool NeedSymbols, ArrayRef< NewArchiveMember > NewMembers) |
static ErrorOr< SmallString< 128 > > | llvm::canonicalizePath (StringRef P) |
Expected< std::string > | llvm::computeArchiveRelativePath (StringRef From, StringRef To) |
static Error | llvm::writeArchiveToStream (raw_ostream &Out, ArrayRef< NewArchiveMember > NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin) |
Error | llvm::writeArchive (StringRef ArcName, ArrayRef< NewArchiveMember > NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr< MemoryBuffer > OldArchiveBuf=nullptr) |
Expected< std::unique_ptr< MemoryBuffer > > | llvm::writeArchiveToBuffer (ArrayRef< NewArchiveMember > NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin) |
|
static |
Definition at line 484 of file ArchiveWriter.cpp.
References isAIXBigArchive(), isDarwin(), M, and llvm::MipsISD::Ret.
Referenced by llvm::writeArchiveToStream().
|
static |
Definition at line 315 of file ArchiveWriter.cpp.
References Align, llvm::raw_ostream::flush(), move, llvm::offsetToAlignment(), printWithSpacePadding(), and llvm::StringRef::size().
Referenced by llvm::writeArchiveToStream().
|
static |
Definition at line 357 of file ArchiveWriter.cpp.
References Align, assert(), isAIXBigArchive(), isBSDLike(), and llvm::offsetToAlignment().
Referenced by llvm::writeArchiveToStream(), and writeSymbolTable().
|
static |
Definition at line 446 of file ArchiveWriter.cpp.
References llvm::file_magic::bitcode, Context, llvm::object::SymbolicFile::createSymbolicFile(), E, llvm::MemoryBufferRef::getBuffer(), llvm::identify_magic(), isArchiveSymbol(), llvm::object::SymbolicFile::isSymbolicFile(), move, llvm::MipsISD::Ret, S, and llvm::raw_ostream::tell().
|
static |
Definition at line 263 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 printNBits(), writeSymbolTable(), and writeSymbolTableHeader().
|
static |
Definition at line 168 of file ArchiveWriter.cpp.
References llvm::object::Archive::K_AIXBIG.
Referenced by computeMemberData(), computeSymbolTableSize(), llvm::writeArchiveToStream(), writeSymbolTable(), and writeSymbolTableHeader().
|
static |
Definition at line 335 of file ArchiveWriter.cpp.
References llvm::report_fatal_error(), S, llvm::object::BasicSymbolRef::SF_FormatSpecific, llvm::object::BasicSymbolRef::SF_Global, llvm::object::BasicSymbolRef::SF_Undefined, and llvm::Expected< T >::takeError().
Referenced by getSymbols().
|
static |
Definition at line 172 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().
|
static |
Definition at line 163 of file ArchiveWriter.cpp.
References llvm::object::Archive::K_DARWIN, and llvm::object::Archive::K_DARWIN64.
Referenced by computeMemberData(), and writeSymbolTable().
|
static |
Definition at line 327 of file ArchiveWriter.cpp.
Referenced by llvm::TimeTraceProfiler::begin(), llvm::PMDataManager::dumpPassInfo(), llvm::vfs::RedirectingFileSystemParser::lookupOrCreateEntry(), llvm::pruneCache(), llvm::LockFileManager::waitForUnlock(), and writeSymbolTableHeader().
|
static |
Definition at line 189 of file ArchiveWriter.cpp.
References llvm::support::big, isBSDLike(), llvm::support::little, and llvm::support::endian::write().
Referenced by gen-regalloc-eviction-test-model::build_mock_model(), gen-inline-oz-test-model::build_mock_model(), llvm::LiveDebugVariables::dump(), llvm::BaseIndexOffset::dump(), llvm::DominanceFrontierBase< BasicBlock, false >::dump(), llvm::SplitAnalysis::BlockInfo::dump(), llvm::SCEV::dump(), llvm::RegisterBankInfo::ValueMapping::dump(), llvm::RegisterBankInfo::InstructionMapping::dump(), llvm::RegisterBankInfo::OperandsMapper::dump(), llvm::ScaledNumberBase::dump(), llvm::RegionBase< RegionTraits< Function > >::dump(), llvm::RegionInfoBase< RegionTraits< Function > >::dump(), llvm::VPInstruction::dump(), llvm::slpvectorizer::BoUpSLP::VLOperands::dump(), llvm::VPlan::dump(), INITIALIZE_PASS(), gen-inline-oz-test-model::main(), llvm::GenericSSAContext< Function >::print(), llvm::LiveInterval::print(), llvm::LoopInfoBase< BasicBlock, Loop >::print(), llvm::IVUsersPrinterPass::run(), llvm::CycleInfoPrinterPass::run(), llvm::PostDominatorTreePrinterPass::run(), llvm::FunctionPropertiesPrinterPass::run(), llvm::StackSafetyPrinterPass::run(), llvm::BlockFrequencyPrinterPass::run(), llvm::DemandedBitsPrinterPass::run(), llvm::StackSafetyGlobalPrinterPass::run(), llvm::DominanceFrontierPrinterPass::run(), llvm::DominatorTreePrinterPass::run(), llvm::CallGraphPrinterPass::run(), llvm::RegionInfoPrinterPass::run(), and llvm::ScalarEvolutionPrinterPass::run().
|
static |
Definition at line 235 of file ArchiveWriter.cpp.
References llvm::format(), printWithSpacePadding(), llvm::sys::toTimeT(), and llvm::raw_ostream::write().
Referenced by llvm::writeArchiveToStream(), and writeSymbolTableHeader().
|
static |
Definition at line 219 of file ArchiveWriter.cpp.
References Align, llvm::offsetToAlignment(), printRestOfMemberHeader(), printWithSpacePadding(), and llvm::raw_ostream::write().
Referenced by printMemberHeader(), and writeSymbolTableHeader().
|
static |
Definition at line 210 of file ArchiveWriter.cpp.
References printRestOfMemberHeader(), and printWithSpacePadding().
Referenced by printMemberHeader(), and writeSymbolTableHeader().
|
static |
Definition at line 279 of file ArchiveWriter.cpp.
References llvm::StringMap< ValueTy, AllocatorTy >::insert(), isBSDLike(), M, printBSDMemberHeader(), printGNUSmallMemberHeader(), printRestOfMemberHeader(), printWithSpacePadding(), and useStringTable().
|
static |
Definition at line 349 of file ArchiveWriter.cpp.
References is64BitKind().
Referenced by writeSymbolTable().
|
static |
Definition at line 194 of file ArchiveWriter.cpp.
References llvm::format(), printWithSpacePadding(), and llvm::sys::toTimeT().
Referenced by printBSDMemberHeader(), printGNUSmallMemberHeader(), and printMemberHeader().
|
static |
Definition at line 155 of file ArchiveWriter.cpp.
References assert(), llvm::Data, llvm::raw_ostream::indent(), and llvm::raw_ostream::tell().
Referenced by computeStringTable(), printBigArchiveMemberHeader(), printBSDMemberHeader(), printGNUSmallMemberHeader(), printMemberHeader(), printRestOfMemberHeader(), and llvm::writeArchiveToStream().
|
static |
Definition at line 259 of file ArchiveWriter.cpp.
Referenced by printMemberHeader().
|
static |
Definition at line 401 of file ArchiveWriter.cpp.
References computeSymbolTableSize(), is64BitKind(), isAIXBigArchive(), isBSDLike(), isDarwin(), M, printNBits(), llvm::raw_ostream::tell(), llvm::raw_ostream::write(), and writeSymbolTableHeader().
Referenced by llvm::writeArchiveToStream().
|
static |
Definition at line 385 of file ArchiveWriter.cpp.
References is64BitKind(), isAIXBigArchive(), isBSDLike(), now(), printBigArchiveMemberHeader(), printBSDMemberHeader(), printGNUSmallMemberHeader(), and llvm::raw_ostream::tell().
Referenced by llvm::writeArchiveToStream(), and writeSymbolTable().