LLVM API Documentation
#include <Archive.h>
Collaboration diagram for llvm::Archive:
Implementation | |
typedef std::map< unsigned, std::pair< ModuleProvider *, ArchiveMember * > > | ModuleMap |
Module mapping type. | |
Archive (const sys::Path &filename, bool map=false) | |
Construct an Archive for filename and optionally map it into memory. | |
bool | parseSymbolTable (const void *data, unsigned len, std::string *error) |
Parse the symbol table at data . | |
ArchiveMember * | parseMemberHeader (const char *&At, const char *End, std::string *error) |
Parse the header of a member starting at At . | |
bool | checkSignature (std::string *ErrMessage) |
Check that the archive signature is correct. | |
bool | loadArchive (std::string *ErrMessage) |
Load the entire archive. | |
bool | loadSymbolTable (std::string *ErrMessage) |
Load just the symbol table. | |
void | writeSymbolTable (std::ofstream &ARFile) |
Write the symbol table to an ofstream. | |
bool | writeMember (const ArchiveMember &member, std::ofstream &ARFile, bool CreateSymbolTable, bool TruncateNames, bool ShouldCompress, std::string *ErrMessage) |
bool | fillHeader (const ArchiveMember &mbr, ArchiveMemberHeader &hdr, int sz, bool TruncateNames) const |
Fill in an ArchiveMemberHeader from ArchiveMember. | |
void | cleanUpMemory () |
Frees all the members and unmaps the archive file. | |
Constructors | |
~Archive () | |
Destruct in-memory archive. | |
static Archive * | CreateEmpty (const sys::Path &Filename) |
Create an empty Archive. | |
static Archive * | OpenAndLoad (const sys::Path &filePath, std::string *ErrorMessage) |
Open and load an archive file. | |
static Archive * | OpenAndLoadSymbols (const sys::Path &Filename, std::string *ErrorMessage=0) |
Open an existing archive and load its symbols. | |
Public Types | |
Types | |
typedef iplist< ArchiveMember > | MembersList |
The ilist type of ArchiveMembers that Archive contains. | |
typedef MembersList::iterator | iterator |
Forward mutable iterator over ArchiveMember. | |
typedef MembersList::const_iterator | const_iterator |
Forward immutable iterator over ArchiveMember. | |
typedef std::reverse_iterator< iterator > | reverse_iterator |
Reverse mutable iterator over ArchiveMember. | |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Reverse immutable iterator over ArchiveMember. | |
typedef std::map< std::string, unsigned > | SymTabType |
The in-memory version of the symbol table. | |
Public Member Functions | |
ilist accessor methods | |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
unsigned | size () const |
bool | empty () const |
const ArchiveMember & | front () const |
ArchiveMember & | front () |
const ArchiveMember & | back () const |
ArchiveMember & | back () |
ilist mutator methods | |
void | splice (iterator dest, Archive &arch, iterator src) |
Move a member to a new location. | |
iterator | erase (iterator target) |
Erase a member. | |
Accessors | |
const sys::Path & | getPath () |
Get the archive path. | |
MembersList & | getMembers () |
Get the iplist of the members. | |
const SymTabType & | getSymbolTable () |
Get the archive's symbol table. | |
unsigned | getFirstFileOffset () |
Get the offset to the first "real" file member in the archive. | |
bool | getAllModules (std::vector< Module * > &Modules, std::string *ErrMessage) |
Instantiate all the bytecode modules located in the archive. | |
ModuleProvider * | findModuleDefiningSymbol (const std::string &symbol, std::string *ErrMessage) |
Look up a module by symbol name. | |
bool | findModulesDefiningSymbols (std::set< std::string > &symbols, std::set< ModuleProvider * > &modules, std::string *ErrMessage) |
Look up multiple symbols in the archive. | |
bool | isBytecodeArchive () |
Determine whether the archive is a proper llvm bytecode archive. | |
Mutators | |
bool | writeToDisk (bool CreateSymbolTable=false, bool TruncateNames=false, bool Compress=false, std::string *ErrMessage=0) |
Write (possibly modified) archive contents to disk. | |
void | addFileBefore (const sys::Path &filename, iterator where) |
Add a file to the archive. | |
Protected Attributes | |
Data | |
sys::Path | archPath |
Path to the archive file we read/write. | |
MembersList | members |
The ilist of ArchiveMember. | |
sys::MappedFile * | mapfile |
Raw Archive contents mapped into memory. | |
const char * | base |
Base of the memory mapped file data. | |
SymTabType | symTab |
The symbol table. | |
std::string | strtab |
The string table for long file names. | |
unsigned | symTabSize |
Size in bytes of symbol table. | |
unsigned | firstFileOffset |
Offset to first normal file. | |
ModuleMap | modules |
The modules loaded via symbol lookup. | |
ArchiveMember * | foreignST |
This holds the foreign symbol table. |
Definition at line 225 of file Archive.h.
typedef iplist<ArchiveMember> llvm::Archive::MembersList |
typedef MembersList::iterator llvm::Archive::iterator |
typedef MembersList::const_iterator llvm::Archive::const_iterator |
typedef std::reverse_iterator<iterator> llvm::Archive::reverse_iterator |
typedef std::reverse_iterator<const_iterator> llvm::Archive::const_reverse_iterator |
typedef std::map<std::string,unsigned> llvm::Archive::SymTabType |
typedef std::map<unsigned,std::pair<ModuleProvider*,ArchiveMember*> > llvm::Archive::ModuleMap [protected] |
Module mapping type.
This type is used to keep track of bytecode modules loaded from the symbol table. It maps the file offset to a pair that consists of the associated ArchiveMember and the ModuleProvider.
Archive::~Archive | ( | ) |
Destruct in-memory archive.
This destructor cleans up the Archive object, releases all memory, and closes files. It does nothing with the archive file on disk. If you haven't used the writeToDisk method by the time the destructor is called, all changes to the archive will be lost.
std::string | if an error occurs |
Definition at line 174 of file Archive.cpp.
References cleanUpMemory().
Archive::Archive | ( | const sys::Path & | filename, | |
bool | map = false | |||
) | [protected] |
Construct an Archive for filename
and optionally map it into memory.
Definition at line 133 of file Archive.cpp.
References base, llvm::sys::MappedFile::map(), and mapfile.
iterator llvm::Archive::begin | ( | ) | [inline] |
Definition at line 254 of file Archive.h.
References members.
Referenced by getAllModules(), isBytecodeArchive(), and writeToDisk().
const_iterator llvm::Archive::begin | ( | ) | const [inline] |
iterator llvm::Archive::end | ( | ) | [inline] |
Definition at line 256 of file Archive.h.
References members.
Referenced by getAllModules(), isBytecodeArchive(), and writeToDisk().
const_iterator llvm::Archive::end | ( | ) | const [inline] |
reverse_iterator llvm::Archive::rbegin | ( | ) | [inline] |
const_reverse_iterator llvm::Archive::rbegin | ( | ) | const [inline] |
reverse_iterator llvm::Archive::rend | ( | ) | [inline] |
const_reverse_iterator llvm::Archive::rend | ( | ) | const [inline] |
unsigned llvm::Archive::size | ( | ) | const [inline] |
bool llvm::Archive::empty | ( | ) | const [inline] |
const ArchiveMember& llvm::Archive::front | ( | ) | const [inline] |
ArchiveMember& llvm::Archive::front | ( | ) | [inline] |
const ArchiveMember& llvm::Archive::back | ( | ) | const [inline] |
ArchiveMember& llvm::Archive::back | ( | ) | [inline] |
Erase a member.
This method erases a target
member from the archive. When the archive is written, it will no longer contain target
. The associated ArchiveMember is deleted.
Definition at line 286 of file Archive.h.
References members.
Create an empty Archive.
Create an empty archive file and associate it with the Filename
. This method does not actually create the archive disk file. It creates an empty Archive object. If the writeToDisk method is called, the archive file Filename
will be created at that point, with whatever content the returned Archive object has at that time.
Filename | Name of the archive to (eventually) create. |
Definition at line 66 of file ArchiveWriter.cpp.
Open and load an archive file.
Open an existing archive and load its contents in preparation for editing. After this call, the member ilist is completely populated based on the contents of the archive file. You should use this form of open if you intend to modify the archive or traverse its contents (e.g. for printing).
filePath | The file path to open and load |
ErrorMessage | An optional error string |
Definition at line 331 of file ArchiveReader.cpp.
Archive * Archive::OpenAndLoadSymbols | ( | const sys::Path & | Filename, | |
std::string * | ErrorMessage = 0 | |||
) | [static] |
Open an existing archive and load its symbols.
This method opens an existing archive file from Filename
and reads in its symbol table without reading in any of the archive's members. This reduces both I/O and cpu time in opening the archive if it is to be used solely for symbol lookup (e.g. during linking). The Filename
must exist and be an archive file or an exception will be thrown. This form of opening the archive is intended for read-only operations that need to locate members via the symbol table for link editing. Since the archve members are not read by this method, the archive will appear empty upon return. If editing operations are performed on the archive, they will completely replace the contents of the archive! It is recommended that if this form of opening the archive is used that only the symbol table lookup methods (getSymbolTable, findModuleDefiningSymbol, and findModulesDefiningSymbols) be used.
std::string | if an error occurs opening the file |
Filename | Name of the archive file to open |
ErrorMessage | An optional error string |
Definition at line 439 of file ArchiveReader.cpp.
Referenced by llvm::Linker::LinkInArchive().
const sys::Path& llvm::Archive::getPath | ( | ) | [inline] |
MembersList& llvm::Archive::getMembers | ( | ) | [inline] |
Get the iplist of the members.
This method is provided so that editing methods can be invoked directly on the Archive's iplist of ArchiveMember. However, it is recommended that the usual STL style iterator interface be used instead.
Definition at line 356 of file Archive.h.
References members.
const SymTabType& llvm::Archive::getSymbolTable | ( | ) | [inline] |
Get the archive's symbol table.
This method allows direct query of the Archive's symbol table. The symbol table is a std::map of std::string (the symbol) to unsigned (the file offset). Note that for efficiency reasons, the offset stored in the symbol table is not the actual offset. It is the offset from the beginning of the first "real" file member (after the symbol table). Use the getFirstFileOffset() to obtain that offset and add this value to the offset in the symbol table to obtain the real file offset. Note that there is purposefully no interface provided by Archive to look up members by their offset. Use the findModulesDefiningSymbols and findModuleDefiningSymbol methods instead.
Definition at line 370 of file Archive.h.
References symTab.
unsigned llvm::Archive::getFirstFileOffset | ( | ) | [inline] |
Get the offset to the first "real" file member in the archive.
This method returns the offset in the archive file to the first "real" file member. Archive files, on disk, have a signature and might have a symbol table that precedes the first actual file member. This method allows you to determine what the size of those fields are.
Definition at line 378 of file Archive.h.
References firstFileOffset.
bool Archive::getAllModules | ( | std::vector< Module * > & | Modules, | |
std::string * | ErrMessage | |||
) |
Instantiate all the bytecode modules located in the archive.
This method will scan the archive for bytecode modules, interpret them and return a vector of the instantiated modules in Modules
. If an error occurs, this method will return true. If ErrMessage
is not null and an error occurs, *ErrMessage
will be set to a string explaining the error that occurred.
Definition at line 341 of file ArchiveReader.cpp.
References archPath, begin(), E, end(), M, llvm::ParseBytecodeBuffer(), and llvm::sys::Path::toString().
ModuleProvider * Archive::findModuleDefiningSymbol | ( | const std::string & | symbol, | |
std::string * | ErrMessage | |||
) |
Look up a module by symbol name.
This accessor looks up the symbol
in the archive's symbol table and returns the associated module that defines that symbol. This method can be called as many times as necessary. This is handy for linking the archive into another module based on unresolved symbols. Note that the ModuleProvider returned by this accessor should not be deleted by the caller. It is managed internally by the Archive class. It is possible that multiple calls to this accessor will return the same ModuleProvider instance because the associated module defines multiple symbols.
symbol
. symbol | Symbol to be sought |
ErrMessage | Error message storage, if non-zero |
Definition at line 449 of file ArchiveReader.cpp.
References archPath, base, firstFileOffset, llvm::getBytecodeBufferModuleProvider(), mapfile, MI, modules, parseMemberHeader(), llvm::sys::MappedFile::size(), symTab, and llvm::sys::Path::toString().
Referenced by findModulesDefiningSymbols().
bool Archive::findModulesDefiningSymbols | ( | std::set< std::string > & | symbols, | |
std::set< ModuleProvider * > & | modules, | |||
std::string * | ErrMessage | |||
) |
Look up multiple symbols in the archive.
This method is similar to findModuleDefiningSymbol but allows lookup of more than one symbol at a time. If symbols
contains a list of undefined symbols in some module, then calling this method is like making one complete pass through the archive to resolve symbols but is more efficient than looking at the individual members. Note that on exit, the symbols resolved by this method will be removed from symbols
to ensure they are not re-searched on a subsequent call. If you need to retain the list of symbols, make a copy.
symbols | Symbols to be sought |
modules |
The modules matching symbols |
ErrMessage | Error msg storage, if non-zero |
Definition at line 491 of file ArchiveReader.cpp.
References archPath, base, E, findModuleDefiningSymbol(), firstFileOffset, llvm::GetBytecodeSymbols(), llvm::ArchiveMember::getPath(), llvm::ArchiveMember::getSize(), llvm::ArchiveMember::isBytecode(), llvm::ArchiveMember::isCompressedBytecode(), mapfile, modules, parseMemberHeader(), llvm::sys::MappedFile::size(), symTab, and llvm::sys::Path::toString().
Referenced by llvm::Linker::LinkInArchive().
bool Archive::isBytecodeArchive | ( | ) |
Determine whether the archive is a proper llvm bytecode archive.
This method determines whether the archive is a properly formed llvm bytecode archive. It first makes sure the symbol table has been loaded and has a non-zero size. If it does, then it is an archive. If not, then it tries to load all the bytecode modules of the archive. Finally, it returns whether it was successfull.
Definition at line 571 of file ArchiveReader.cpp.
References archPath, begin(), E, end(), loadArchive(), loadSymbolTable(), M, llvm::ParseBytecodeBuffer(), symTab, and llvm::sys::Path::toString().
bool Archive::writeToDisk | ( | bool | CreateSymbolTable = false , |
|
bool | TruncateNames = false , |
|||
bool | Compress = false , |
|||
std::string * | ErrMessage = 0 | |||
) |
Write (possibly modified) archive contents to disk.
This method is the only way to get the archive written to disk. It creates or overwrites the file specified when this
was created or opened. The arguments provide options for writing the archive. If CreateSymbolTable
is true, the archive is scanned for bytecode files and a symbol table of the externally visible function and global variable names is created. If TruncateNames
is true, the names of the archive members will have their path component stripped and the file name will be truncated at 15 characters. If Compress
is specified, all archive members will be compressed before being written. If PrintSymTab
is true, the symbol table will be printed to std::cout.
error
set to error message true if the writing succeeded.
CreateSymbolTable | Create Symbol table |
TruncateNames | Truncate the filename to 15 chars |
Compress | Compress files |
ErrMessage | If non-null, where error msg is set |
Definition at line 376 of file ArchiveWriter.cpp.
References archPath, ARFILE_MAGIC, base, begin(), llvm::sys::Path::c_str(), cleanUpMemory(), llvm::sys::MappedFile::close(), llvm::sys::Path::createTemporaryFileOnDisk(), E, end(), llvm::sys::Path::eraseFromDisk(), llvm::sys::Path::exists(), foreignST, llvm::sys::MappedFile::map(), mapfile, members, llvm::sys::RemoveFileOnSignal(), llvm::sys::Path::renamePathOnDisk(), llvm::sys::MappedFile::size(), symTab, symTabSize, llvm::sys::Path::toString(), writeMember(), and writeSymbolTable().
Add a file to the archive.
This method adds a new file to the archive. The filename
is examined to determine just enough information to create an ArchiveMember object which is then inserted into the Archive object's ilist at the location given by where
.
std::string | if an error occurs reading the filename . |
Definition at line 155 of file ArchiveWriter.cpp.
References llvm::sys::BytecodeFileType, llvm::ArchiveMember::BytecodeFlag, llvm::sys::CompressedBytecodeFileType, llvm::ArchiveMember::CompressedBytecodeFlag, llvm::sys::Path::exists(), llvm::ArchiveMember::HasLongFilenameFlag, llvm::ArchiveMember::HasPathFlag, llvm::sys::IdentifyFileType(), members, llvm::sys::Path::path, and llvm::sys::Path::toString().
bool Archive::parseSymbolTable | ( | const void * | data, | |
unsigned | len, | |||
std::string * | error | |||
) | [protected] |
Parse the symbol table at data
.
error | Set to address of a std::string to get error messages |
Definition at line 36 of file ArchiveReader.cpp.
References readInteger(), symTab, and symTabSize.
Referenced by loadArchive(), and loadSymbolTable().
ArchiveMember * Archive::parseMemberHeader | ( | const char *& | At, | |
const char * | End, | |||
std::string * | error | |||
) | [protected] |
Parse the header of a member starting at At
.
At | The pointer to the location we're parsing |
End | The pointer to the end of the archive |
error | Optional error message catcher |
Definition at line 69 of file ArchiveReader.cpp.
References ARFILE_BSD4_SYMTAB_NAME, ARFILE_LLVM_SYMTAB_NAME, ARFILE_STRTAB_NAME, ARFILE_SVR4_SYMTAB_NAME, llvm::ArchiveMember::BSD4SymbolTableFlag, llvm::sys::BytecodeFileType, llvm::ArchiveMember::BytecodeFlag, llvm::ArchiveMemberHeader::checkSignature(), llvm::sys::CompressedBytecodeFileType, llvm::ArchiveMember::CompressedBytecodeFlag, llvm::ArchiveMember::CompressedFlag, llvm::ArchiveMember::data, llvm::ArchiveMemberHeader::date, llvm::sys::Path::StatusInfo::fileSize, llvm::ArchiveMember::flags, llvm::sys::TimeValue::fromEpochTime(), llvm::ArchiveMemberHeader::gid, llvm::sys::Path::StatusInfo::group, llvm::ArchiveMember::HasLongFilenameFlag, llvm::sys::IdentifyFileType(), llvm::ArchiveMember::info, llvm::ArchiveMember::LLVMSymbolTableFlag, llvm::sys::Path::StatusInfo::mode, llvm::ArchiveMemberHeader::mode, llvm::sys::Path::StatusInfo::modTime, llvm::ArchiveMemberHeader::name, llvm::ArchiveMember::next, llvm::ArchiveMember::parent, llvm::ArchiveMember::path, llvm::ArchiveMember::prev, llvm::sys::Path::set(), llvm::ArchiveMemberHeader::size, llvm::ArchiveMember::StringTableFlag, strtab, llvm::ArchiveMember::SVR4SymbolTableFlag, llvm::ArchiveMemberHeader::uid, and llvm::sys::Path::StatusInfo::user.
Referenced by findModuleDefiningSymbol(), findModulesDefiningSymbols(), loadArchive(), and loadSymbolTable().
bool Archive::checkSignature | ( | std::string * | ErrMessage | ) | [protected] |
Check that the archive signature is correct.
error | Set to address of a std::string to get error messages |
Definition at line 239 of file ArchiveReader.cpp.
References ARFILE_MAGIC, base, mapfile, and llvm::sys::MappedFile::size().
Referenced by loadArchive(), and loadSymbolTable().
bool Archive::loadArchive | ( | std::string * | ErrMessage | ) | [protected] |
Load the entire archive.
error | Set to address of a std::string to get error messages |
Definition at line 253 of file ArchiveReader.cpp.
References base, checkSignature(), firstFileOffset, foreignST, llvm::ArchiveMember::getData(), llvm::ArchiveMember::getSize(), llvm::ArchiveMember::isBSD4SymbolTable(), llvm::ArchiveMember::isLLVMSymbolTable(), llvm::ArchiveMember::isStringTable(), llvm::ArchiveMember::isSVR4SymbolTable(), mapfile, members, parseMemberHeader(), parseSymbolTable(), llvm::sys::MappedFile::size(), strtab, and symTab.
Referenced by isBytecodeArchive().
bool Archive::loadSymbolTable | ( | std::string * | ErrMessage | ) | [protected] |
Load just the symbol table.
error | Set to address of a std::string to get error messages |
Definition at line 360 of file ArchiveReader.cpp.
References base, checkSignature(), firstFileOffset, llvm::ArchiveMember::getData(), llvm::ArchiveMember::getSize(), llvm::ArchiveMember::isBSD4SymbolTable(), llvm::ArchiveMember::isLLVMSymbolTable(), llvm::ArchiveMember::isStringTable(), llvm::ArchiveMember::isSVR4SymbolTable(), mapfile, members, parseMemberHeader(), parseSymbolTable(), llvm::sys::MappedFile::size(), strtab, and symTab.
Referenced by isBytecodeArchive().
void Archive::writeSymbolTable | ( | std::ofstream & | ARFile | ) | [protected] |
Write the symbol table to an ofstream.
Definition at line 322 of file ArchiveWriter.cpp.
References ARFILE_LLVM_SYMTAB_NAME, ARFILE_PAD, llvm::ArchiveMemberHeader::date, E, llvm::sys::Process::GetCurrentGroupId(), llvm::sys::Process::GetCurrentUserId(), llvm::ArchiveMemberHeader::gid, llvm::ArchiveMemberHeader::init(), llvm::ArchiveMemberHeader::mode, llvm::ArchiveMemberHeader::name, llvm::sys::TimeValue::now(), llvm::ArchiveMemberHeader::size, symTab, symTabSize, llvm::sys::TimeValue::toEpochTime(), llvm::ArchiveMemberHeader::uid, and writeInteger().
Referenced by writeToDisk().
bool Archive::writeMember | ( | const ArchiveMember & | member, | |
std::ofstream & | ARFile, | |||
bool | CreateSymbolTable, | |||
bool | TruncateNames, | |||
bool | ShouldCompress, | |||
std::string * | ErrMessage | |||
) | [protected] |
Writes one ArchiveMember to an ofstream. If an error occurs, returns false, otherwise true. If an error occurs and error is non-null then it will be set to an error message.
false Writing member failed, error
set to error message
member | The member to be written |
ARFile | The file to write member onto |
CreateSymbolTable | Should symbol table be created? |
TruncateNames | Should names be truncated to 11 chars? |
ShouldCompress | Should the member be compressed? |
ErrMessage | If non-null, place were error msg is set |
Definition at line 188 of file ArchiveWriter.cpp.
References archPath, ARFILE_PAD, llvm::sys::MappedFile::close(), llvm::Compressor::compressToNewBuffer(), fillHeader(), llvm::GetBytecodeSymbols(), llvm::ArchiveMember::getData(), llvm::ArchiveMember::getPath(), llvm::ArchiveMember::getSize(), llvm::ArchiveMember::isBSD4SymbolTable(), llvm::ArchiveMember::isBytecode(), llvm::ArchiveMember::isCompressed(), llvm::ArchiveMember::isCompressedBytecode(), llvm::ArchiveMember::isLLVMSymbolTable(), llvm::ArchiveMember::isSVR4SymbolTable(), llvm::sys::MappedFile::map(), numVbrBytes(), SE, llvm::sys::MappedFile::size(), symTab, symTabSize, and llvm::sys::Path::toString().
Referenced by writeToDisk().
bool Archive::fillHeader | ( | const ArchiveMember & | mbr, | |
ArchiveMemberHeader & | hdr, | |||
int | sz, | |||
bool | TruncateNames | |||
) | const [protected] |
Fill in an ArchiveMemberHeader from ArchiveMember.
Definition at line 78 of file ArchiveWriter.cpp.
References ARFILE_BSD4_SYMTAB_NAME, ARFILE_LLVM_SYMTAB_NAME, ARFILE_STRTAB_NAME, ARFILE_SVR4_SYMTAB_NAME, llvm::ArchiveMemberHeader::date, llvm::ArchiveMember::getGroup(), llvm::ArchiveMember::getMode(), llvm::ArchiveMember::getModTime(), llvm::ArchiveMember::getPath(), llvm::ArchiveMember::getUser(), llvm::ArchiveMemberHeader::gid, llvm::ArchiveMemberHeader::init(), llvm::ArchiveMember::isBSD4SymbolTable(), llvm::ArchiveMember::isLLVMSymbolTable(), llvm::ArchiveMember::isStringTable(), llvm::ArchiveMember::isSVR4SymbolTable(), llvm::ArchiveMemberHeader::mode, llvm::ArchiveMemberHeader::name, llvm::ArchiveMemberHeader::size, llvm::sys::TimeValue::toEpochTime(), llvm::sys::Path::toString(), llvm::ArchiveMemberHeader::uid, and llvm::utostr().
Referenced by writeMember().
void Archive::cleanUpMemory | ( | ) | [protected] |
Frees all the members and unmaps the archive file.
Definition at line 143 of file Archive.cpp.
References base, llvm::sys::MappedFile::close(), E, firstFileOffset, foreignST, mapfile, modules, symTab, and symTabSize.
Referenced by writeToDisk(), and ~Archive().
sys::Path llvm::Archive::archPath [protected] |
Path to the archive file we read/write.
Definition at line 533 of file Archive.h.
Referenced by findModuleDefiningSymbol(), findModulesDefiningSymbols(), getAllModules(), getPath(), isBytecodeArchive(), writeMember(), and writeToDisk().
MembersList llvm::Archive::members [protected] |
The ilist of ArchiveMember.
Definition at line 534 of file Archive.h.
Referenced by addFileBefore(), back(), begin(), empty(), end(), erase(), front(), getMembers(), loadArchive(), loadSymbolTable(), rbegin(), rend(), size(), splice(), and writeToDisk().
sys::MappedFile* llvm::Archive::mapfile [protected] |
Raw Archive contents mapped into memory.
Definition at line 535 of file Archive.h.
Referenced by Archive(), checkSignature(), cleanUpMemory(), findModuleDefiningSymbol(), findModulesDefiningSymbols(), loadArchive(), loadSymbolTable(), and writeToDisk().
const char* llvm::Archive::base [protected] |
Base of the memory mapped file data.
Definition at line 536 of file Archive.h.
Referenced by Archive(), checkSignature(), cleanUpMemory(), findModuleDefiningSymbol(), findModulesDefiningSymbols(), loadArchive(), loadSymbolTable(), and writeToDisk().
SymTabType llvm::Archive::symTab [protected] |
The symbol table.
Definition at line 537 of file Archive.h.
Referenced by cleanUpMemory(), findModuleDefiningSymbol(), findModulesDefiningSymbols(), getSymbolTable(), isBytecodeArchive(), loadArchive(), loadSymbolTable(), parseSymbolTable(), writeMember(), writeSymbolTable(), and writeToDisk().
std::string llvm::Archive::strtab [protected] |
The string table for long file names.
Definition at line 538 of file Archive.h.
Referenced by loadArchive(), loadSymbolTable(), and parseMemberHeader().
unsigned llvm::Archive::symTabSize [protected] |
Size in bytes of symbol table.
Definition at line 539 of file Archive.h.
Referenced by cleanUpMemory(), parseSymbolTable(), writeMember(), writeSymbolTable(), and writeToDisk().
unsigned llvm::Archive::firstFileOffset [protected] |
Offset to first normal file.
Definition at line 540 of file Archive.h.
Referenced by cleanUpMemory(), findModuleDefiningSymbol(), findModulesDefiningSymbols(), getFirstFileOffset(), loadArchive(), and loadSymbolTable().
ModuleMap llvm::Archive::modules [protected] |
The modules loaded via symbol lookup.
Definition at line 541 of file Archive.h.
Referenced by cleanUpMemory(), findModuleDefiningSymbol(), and findModulesDefiningSymbols().
ArchiveMember* llvm::Archive::foreignST [protected] |
This holds the foreign symbol table.
Definition at line 542 of file Archive.h.
Referenced by cleanUpMemory(), loadArchive(), and writeToDisk().