30 #if !defined(_ELFSourceFile_h_) 31 #define _ELFSourceFile_h_ 33 #include "SourceFile.h" 34 #include "StELFFile.h" 35 #include "smart_ptr.h" 36 #include "DataSource.h" 37 #include "DataTarget.h" 82 static bool isELFFile(std::istream &stream);
95 virtual bool supportsNamedSections()
const {
return true; }
96 virtual bool supportsNamedSymbols()
const {
return true; }
130 virtual bool hasSymbol(
const std::string &name);
187 virtual unsigned getData(
unsigned offset,
unsigned maxBytes, uint8_t *buffer);
250 #endif // _ELFSourceFile_h_ virtual ~ELFDataSource()
Destructor.
Definition: src/blfwk/src/ELFSourceFile.cpp:493
Represents one named #SHT_NOBITS section within the ELF file.
Definition: src/blfwk/ELFSourceFile.h:204
StELFFile * getELFFile()
Returns the underlying StELFFile object.
Definition: src/blfwk/ELFSourceFile.h:143
StELFFile * m_elf
The ELF file parser.
Definition: src/blfwk/ELFSourceFile.h:240
A data source with ELF file sections as the contents.
Definition: src/blfwk/ELFSourceFile.h:176
virtual bool hasNaturalLocation()
Returns whether the segment has an associated address.
Definition: src/blfwk/ELFSourceFile.h:190
Definition: BlfwkErrors.h:16
elf_toolset_t m_toolset
Toolset that produced the ELF file.
Definition: src/blfwk/ELFSourceFile.h:150
virtual unsigned getSegmentCount()
Returns the number of segments in the source.
Definition: src/blfwk/ELFSourceFile.h:236
elf_toolset_t readToolsetOption()
Parses the toolset option value.
Definition: src/blfwk/src/ELFSourceFile.cpp:122
void addSection(unsigned sectionIndex)
Adds the ELF section at position sectionIndex to the data source.
Definition: src/blfwk/src/ELFSourceFile.cpp:512
unsigned m_sectionIndex
The index of the section this segment represents.
Definition: src/blfwk/ELFSourceFile.h:216
secinfo_clear_t m_secinfoOption
How to deal with the .secinfo section. Ignored if the toolset is not GHS.
Definition: src/blfwk/ELFSourceFile.h:151
void setSecinfoOption(secinfo_clear_t option)
Set the option to control .secinfo usage.
Definition: src/blfwk/ELFSourceFile.h:231
StELFFile * m_elf
The format parser instance for this ELF file.
Definition: src/blfwk/ELFSourceFile.h:215
ELFDataSource(StELFFile *elf)
Default constructor.
Definition: src/blfwk/ELFSourceFile.h:221
Abstract base class for the target address or range of data.
Definition: src/blfwk/DataTarget.h:57
ELF symbol table entry.
Definition: apps/elftosb/common/ELF.h:277
virtual unsigned getData(unsigned offset, unsigned maxBytes, uint8_t *buffer)
Gets all or a portion of the segment's data.
Definition: src/blfwk/src/ELFSourceFile.cpp:587
virtual void close()
Closes the file.
Definition: src/blfwk/src/ELFSourceFile.cpp:115
smart_ptr< StELFFile > m_file
Parser for the ELF file.
Definition: src/blfwk/ELFSourceFile.h:149
std::vector< DataSource::Segment * > segment_vector_t
A list of segment instances.
Definition: src/blfwk/ELFSourceFile.h:243
virtual ~ELFSourceFile()
Destructor.
Definition: src/blfwk/src/ELFSourceFile.cpp:63
Abstract base class for a source file containing executable code.
Definition: src/blfwk/SourceFile.h:56
virtual uint32_t getBaseAddress()
Returns the address associated with the segment.
Definition: src/blfwk/src/ELFSourceFile.cpp:609
virtual bool hasSymbol(const std::string &name)
Returns whether a symbol exists in the source file.
Definition: src/blfwk/src/ELFSourceFile.cpp:419
virtual DataSource::Segment * getSegmentAt(unsigned index)
Returns the segment at position index.
Definition: src/blfwk/ELFSourceFile.h:238
bool lookupSymbol(const std::string &name, Elf32_Sym &info)
Gets information about a symbol in the ELF file.
Definition: src/blfwk/src/ELFSourceFile.cpp:470
virtual unsigned getLength()
Gets the length of the segment's data.
Definition: src/blfwk/src/ELFSourceFile.cpp:603
segment_vector_t m_segments
The segments of this data source.
Definition: src/blfwk/ELFSourceFile.h:244
ELFSourceFile(const std::string &path)
Default constructor.
Definition: src/blfwk/src/ELFSourceFile.cpp:56
Abstract interface class used to select strings by name.
Definition: src/blfwk/StringMatcher.h:40
Discrete, contiguous part of the source's data.
Definition: src/blfwk/DataSource.h:65
Represents one named #SHT_PROGBITS section within the ELF file.
Definition: src/blfwk/ELFSourceFile.h:182
secinfo_clear_t readSecinfoClearOption()
Reads the secinfoClear option.
Definition: src/blfwk/src/ELFSourceFile.cpp:169
virtual unsigned getSymbolSize(const std::string &name)
Returns the size of a symbol.
Definition: src/blfwk/src/ELFSourceFile.cpp:454
virtual uint32_t getEntryPointAddress()
Returns the entry point address.
Definition: src/blfwk/src/ELFSourceFile.cpp:342
StELFFile * m_elf
The format parser instance for this ELF file.
Definition: src/blfwk/ELFSourceFile.h:194
Parser for Executable and Linking Format (ELF) files.
Definition: apps/elftosb/common/StELFFile.h:42
Executable and Loading Format (ELF) source file.
Definition: src/blfwk/ELFSourceFile.h:72
static bool isELFFile(std::istream &stream)
Identifies whether the stream contains an ELF file.
Definition: src/blfwk/src/ELFSourceFile.cpp:67
Abstract base class for data sources.
Definition: src/blfwk/DataSource.h:56
secinfo_clear_t m_secinfoOption
How to deal with the .secinfo section. Ignored if the toolset is not GHS.
Definition: src/blfwk/ELFSourceFile.h:241
virtual DataTarget * createDataTargetForSection(const std::string §ion)
Definition: src/blfwk/src/ELFSourceFile.cpp:375
unsigned m_sectionIndex
The index of the section this segment represents.
Definition: src/blfwk/ELFSourceFile.h:195
virtual bool hasNaturalLocation()
Pattern segments have no natural address.
Definition: src/blfwk/ELFSourceFile.h:211
virtual bool hasEntryPoint()
Returns true if an entry point was set in the file.
Definition: src/blfwk/src/ELFSourceFile.cpp:335
virtual DataTarget * createDataTargetForSymbol(const std::string &symbol)
Definition: src/blfwk/src/ELFSourceFile.cpp:393
virtual void open()
Opens the file.
Definition: src/blfwk/src/ELFSourceFile.cpp:80
virtual uint32_t getSymbolValue(const std::string &name)
Returns the value of a symbol.
Definition: src/blfwk/src/ELFSourceFile.cpp:425
virtual DataSource * createDataSource()
Creates a data source from the entire file.
Definition: src/blfwk/src/ELFSourceFile.cpp:220
This is a special type of segment containing a repeating pattern.
Definition: src/blfwk/DataSource.h:110