LLVM: llvm::MemoryBuffer Class Reference (original) (raw)
This interface provides simple read-only access to a block of memory, and provides simple methods for reading files and standard input into a memory buffer. More...
#include "[llvm/Support/MemoryBuffer.h](MemoryBuffer%5F8h%5Fsource.html)"
| Public Types | |
|---|---|
| enum | BufferKind { MemoryBuffer_Malloc, MemoryBuffer_MMap } |
| The kind of memory backing used to support the MemoryBuffer. More... |
| Public Member Functions | |
|---|---|
| MemoryBuffer (const MemoryBuffer &)=delete | |
| MemoryBuffer & | operator= (const MemoryBuffer &)=delete |
| virtual | ~MemoryBuffer () |
| const char * | getBufferStart () const |
| const char * | getBufferEnd () const |
| size_t | getBufferSize () const |
| StringRef | getBuffer () const |
| virtual StringRef | getBufferIdentifier () const |
| Return an identifier for this buffer, typically the filename it was read from. | |
| virtual void | dontNeedIfMmap () |
| For read-only MemoryBuffer_MMap, mark the buffer as unused in the near future and the kernel can free resources associated with it. | |
| virtual BufferKind | getBufferKind () const =0 |
| Return information on the memory mechanism used to support the MemoryBuffer. | |
| MemoryBufferRef | getMemBufferRef () const |
| Static Public Member Functions | |
|---|---|
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getFile (const Twine &Filename, bool IsText=false, bool RequiresNullTerminator=true, bool IsVolatile=false, std::optional< Align > Alignment=std::nullopt) |
| Open the specified file as a MemoryBuffer, returning a new MemoryBuffer if successful, otherwise returning null. | |
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getFileAsStream (const Twine &Filename) |
| Read all of the specified file into a MemoryBuffer as a stream (i.e. | |
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getOpenFileSlice (sys::fs::file_t FD, const Twine &Filename, uint64_t MapSize, int64_t Offset, bool IsVolatile=false, std::optional< Align > Alignment=std::nullopt) |
| Given an already-open file descriptor, map some slice of it into a MemoryBuffer. | |
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getOpenFile (sys::fs::file_t FD, const Twine &Filename, uint64_t FileSize, bool RequiresNullTerminator=true, bool IsVolatile=false, std::optional< Align > Alignment=std::nullopt) |
| Given an already-open file descriptor, read the file and return a MemoryBuffer. | |
| static std::unique_ptr< MemoryBuffer > | getMemBuffer (StringRef InputData, StringRef BufferName="", bool RequiresNullTerminator=true) |
| Open the specified memory range as a MemoryBuffer. | |
| static std::unique_ptr< MemoryBuffer > | getMemBuffer (MemoryBufferRef Ref, bool RequiresNullTerminator=true) |
| static std::unique_ptr< MemoryBuffer > | getMemBufferCopy (StringRef InputData, const Twine &BufferName="") |
| Open the specified memory range as a MemoryBuffer, copying the contents and taking ownership of it. | |
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getSTDIN () |
| Read all of stdin into a file buffer, and return it. | |
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getFileOrSTDIN (const Twine &Filename, bool IsText=false, bool RequiresNullTerminator=true, std::optional< Align > Alignment=std::nullopt) |
| Open the specified file as a MemoryBuffer, or open stdin if the Filename is "-". | |
| static ErrorOr< std::unique_ptr< MemoryBuffer > > | getFileSlice (const Twine &Filename, uint64_t MapSize, uint64_t Offset, bool IsVolatile=false, std::optional< Align > Alignment=std::nullopt) |
| Map a subrange of the specified file as a MemoryBuffer. |
| Protected Member Functions | |
|---|---|
| MemoryBuffer ()=default | |
| void | init (const char *BufStart, const char *BufEnd, bool RequiresNullTerminator) |
| init - Initialize this MemoryBuffer as a reference to externally allocated memory, memory that we know is already null terminated. |
This interface provides simple read-only access to a block of memory, and provides simple methods for reading files and standard input into a memory buffer.
In addition to basic access to the characters in the file, this interface guarantees you can read one character past the end of the file, and that this character will read as '\0'.
The '\0' guarantee is needed to support an optimization – it's intended to be more efficient for clients which are reading all the data to stop reading when they encounter a '\0' than to continually check the file position to see if it has reached the end of the file.
Definition at line 52 of file MemoryBuffer.h.
◆ BufferKind
The kind of memory backing used to support the MemoryBuffer.
| Enumerator |
|---|
| MemoryBuffer_Malloc |
| MemoryBuffer_MMap |
Definition at line 166 of file MemoryBuffer.h.
| llvm::MemoryBuffer::MemoryBuffer ( ) | protecteddefault |
|---|
◆ MemoryBuffer() [2/2]
References MemoryBuffer().
◆ ~MemoryBuffer()
| MemoryBuffer::~MemoryBuffer ( ) | virtualdefault |
|---|
◆ dontNeedIfMmap()
| virtual void llvm::MemoryBuffer::dontNeedIfMmap ( ) | inlinevirtual |
|---|
For read-only MemoryBuffer_MMap, mark the buffer as unused in the near future and the kernel can free resources associated with it.
Further access is supported but may be expensive. This calls madvise(MADV_DONTNEED) on read-only file mappings on *NIX systems. This function should not be called on a writable buffer.
Definition at line 84 of file MemoryBuffer.h.
◆ getBuffer()
| StringRef llvm::MemoryBuffer::getBuffer ( ) const | inline |
|---|
◆ getBufferEnd()
| const char * llvm::MemoryBuffer::getBufferEnd ( ) const | inline |
|---|
◆ getBufferIdentifier()
| virtual StringRef llvm::MemoryBuffer::getBufferIdentifier ( ) const | inlinevirtual |
|---|
◆ getBufferKind()
| virtual BufferKind llvm::MemoryBuffer::getBufferKind ( ) const | pure virtual |
|---|
◆ getBufferSize()
| size_t llvm::MemoryBuffer::getBufferSize ( ) const | inline |
|---|
◆ getBufferStart()
| const char * llvm::MemoryBuffer::getBufferStart ( ) const | inline |
|---|
Definition at line 67 of file MemoryBuffer.h.
Referenced by llvm::FileCheck::CanonicalizeFile(), llvm::RuntimeDyldCheckerImpl::checkAllRulesInBuffer(), llvm::DiffFilesWithTolerance(), llvm::WritableMemoryBuffer::getBufferStart(), llvm::WriteThroughMemoryBuffer::getBufferStart(), llvm::SourceMgr::GetMessage(), llvm::memprof::RawMemProfReader::hasFormat(), llvm::TextInstrProfReader::hasFormat(), llvm::CodeGenCoverage::parse(), llvm::GCNTargetMachine::parseMachineFunctionInfo(), llvm::memprof::RawMemProfReader::peekBuildIds(), llvm::WritableMemoryBuffer::WritableMemoryBuffer(), and llvm::WriteThroughMemoryBuffer::WriteThroughMemoryBuffer().
◆ getFile()
Open the specified file as a MemoryBuffer, returning a new MemoryBuffer if successful, otherwise returning null.
Parameters
| IsText | Set to true to indicate that the file should be read in text mode. |
|---|---|
| IsVolatile | Set to true to indicate that the contents of the file can change outside the user's control, e.g. when libclang tries to parse while the user is editing/updating the file or if the file is on an NFS. |
| Alignment | Set to indicate that the buffer should be aligned to at least the specified alignment. |
Definition at line 258 of file MemoryBuffer.cpp.
References getFileAux().
Referenced by llvm::MachO::DylibReader::accumulateSourceLocFromDSYM(), collectAddressSymbols(), llvm::LTOCodeGenerator::compileOptimized(), llvm::computeLTOCacheKey(), llvm::orc::COFFPlatform::Create(), llvm::LTOModule::createFromFile(), llvm::objcopy::coff::createGnuDebugLinkSectionContents(), llvm::object::ObjectFile::createObjectFile(), llvm::remarks::createYAMLParserFromMeta(), llvm::DiffFilesWithTolerance(), doList(), llvm::doSystemDiff(), llvm::findVCToolChainViaSetupConfig(), llvm::InstrProfCorrelator::get(), llvm::codegen::getBBSectionsMode(), llvm::object::Archive::Child::getBuffer(), llvm::orc::getDylibInterfaceFromDylib(), llvm::orc::getDylibInterfaceFromTapiFile(), getFileOrSTDIN(), llvm::getHeaders(), llvm::unittest::getInputFileDirectory(), llvm::identify_magic(), llvm::LTOModule::isBitcodeFile(), llvm::libDriverMain(), LLVMCreateMemoryBufferWithContentsOfFile(), loadPdbFile(), llvm::gsym::CallSiteInfoLoader::loadYAML(), llvm::MemProfContextDisambiguation::MemProfContextDisambiguation(), llvm::pdb::InputFile::open(), openFile(), llvm::SourceMgr::OpenIncludeFile(), llvm::orc::ExecutorNativePlatform::operator()(), llvm::SymbolRewriter::RewriteMapParser::parse(), parseCHRFilterFiles(), llvm::CtxProfAnalysis::run(), llvm::runFuzzerOnInputs(), llvm::lto::thinBackend(), llvm::cas::ondisk::OnDiskGraphDB::validate(), validateOutOfProcess(), llvm::ifs::writeELFBinaryToFile(), and WriteOutput().
◆ getFileAsStream()
◆ getFileOrSTDIN()
| ErrorOr< std::unique_ptr< MemoryBuffer > > MemoryBuffer::getFileOrSTDIN ( const Twine & Filename, bool IsText = false, bool RequiresNullTerminator = true, std::optional< Align > Alignment = std::nullopt ) | static |
|---|
Open the specified file as a MemoryBuffer, or open stdin if the Filename is "-".
Definition at line 161 of file MemoryBuffer.cpp.
References getFile(), and getSTDIN().
Referenced by llvm::memprof::RawMemProfReader::create(), llvm::memprof::YAMLMemProfReader::create(), llvm::object::createBinary(), llvm::createMIRParserFromFile(), llvm::getLazyIRFileModule(), llvm::getModuleSummaryIndexForFile(), llvm::memprof::RawMemProfReader::hasFormat(), llvm::memprof::YAMLMemProfReader::hasFormat(), llvm::gsym::GsymReader::openFile(), llvm::parseAssemblyFile(), parseAssemblyFileWithIndex(), llvm::parseIRFile(), llvm::parseSummaryIndexAssemblyFile(), llvm::ReplayInlineAdvisor::ReplayInlineAdvisor(), llvm::ForceFunctionAttrsPass::run(), searchForObj(), and llvm::TableGenMain().
◆ getFileSlice()
◆ getMemBuffer() [1/2]
◆ getMemBuffer() [2/2]
Open the specified memory range as a MemoryBuffer.
Note that InputData must be null terminated if RequiresNullTerminator is true.
Definition at line 127 of file MemoryBuffer.cpp.
Referenced by llvm::vfs::InMemoryFileSystem::addFileNoOwn(), llvm::lsp::TextDocumentContentChangeEvent::applyTo(), llvm::yaml::Output::blockScalarString(), llvm::orc::StaticLibraryDefinitionGenerator::createMemberBuffer(), llvm::GlobalMergeFunc::emitFunctionMap(), extractOffloadBundle(), getMemBuffer(), llvm::cas::ObjectStore::getMemoryBuffer(), llvm::NewArchiveMember::getOldMember(), llvm::MIRParserImpl::initializeMachineFunction(), initializeRecordStreamer(), LLVMBinaryCopyMemoryBuffer(), LLVMCreateMemoryBufferWithMemoryRange(), loadBinaryFormat(), llvm::cgdata::loadModuleForTwoRounds(), loadTestingFormat(), llvm::LTOModule::makeBuffer(), llvm::cgdata::mergeCodeGenData(), parseAssemblyInto(), llvm::parseConstantValue(), llvm::parseDIExpressionBodyAtBeginning(), llvm::parseModule(), parseSummaryIndexAssemblyInto(), llvm::parseType(), llvm::parseTypeAtBeginning(), llvm::ForceFunctionAttrsPass::run(), and llvm::orc::COFFPlatform::setupJITDylib().
◆ getMemBufferCopy()
Open the specified memory range as a MemoryBuffer, copying the contents and taking ownership of it.
InputData does not have to be null terminated.
Definition at line 153 of file MemoryBuffer.cpp.
References getMemBufferCopyImpl().
Referenced by llvm::object::CompressedOffloadBundle::compress(), llvm::offloading::intel::containerizeOpenMPSPIRVImage(), llvm::object::OffloadFile::copy(), llvm::gsym::GsymReader::copyBuffer(), llvm::object::CompressedOffloadBundle::decompress(), llvm::FileCheckPatternContext::defineCmdlineVariables(), emitDebugSectionImpl(), llvm::objcopy::wasm::handleArgs(), LLVMCreateMemoryBufferWithMemoryRangeCopy(), LLVMWriteBitcodeToMemoryBuffer(), loadBinaryFormat(), llvm::localCache(), llvm::object::OffloadBundleFatBin::OffloadBundleFatBin(), llvm::FileCheck::readCheckFile(), llvm::InstrProfWriter::writeBuffer(), and llvm::yaml::yaml2offload().
◆ getMemBufferRef()
◆ getOpenFile()
◆ getOpenFileSlice()
◆ getSTDIN()
◆ init()
◆ operator=()
References MemoryBuffer().
The documentation for this class was generated from the following files:
- include/llvm/Support/MemoryBuffer.h
- lib/Support/MemoryBuffer.cpp