retdec
Public Member Functions | Protected Member Functions | List of all members
retdec::loader::IntelHexImage Class Reference

#include <intel_hex_image.h>

Inheritance diagram for retdec::loader::IntelHexImage:
Inheritance graph
[legend]
Collaboration diagram for retdec::loader::IntelHexImage:
Collaboration graph
[legend]

Public Member Functions

 IntelHexImage (const std::shared_ptr< retdec::fileformat::FileFormat > &fileFormat)
 
virtual bool load () override
 
- Public Member Functions inherited from retdec::loader::Image
 Image (const std::shared_ptr< retdec::fileformat::FileFormat > &fileFormat)
 
virtual retdec::utils::Endianness getEndianness () const override
 
virtual std::size_t getNibbleLength () const override
 
virtual std::size_t getByteLength () const override
 
virtual std::size_t getWordLength () const override
 
virtual std::size_t getBytesPerWord () const override
 
virtual std::size_t getNumberOfNibblesInByte () const override
 
virtual bool hasMixedEndianForDouble () const override
 
virtual bool getXByte (std::uint64_t address, std::uint64_t x, std::uint64_t &res, retdec::utils::Endianness e=retdec::utils::Endianness::UNKNOWN) const override
 
virtual bool getXBytes (std::uint64_t address, std::uint64_t x, std::vector< std::uint8_t > &res) const override
 
virtual bool setXByte (std::uint64_t address, std::uint64_t x, std::uint64_t val, retdec::utils::Endianness e=retdec::utils::Endianness::UNKNOWN) override
 
virtual bool setXBytes (std::uint64_t address, const std::vector< std::uint8_t > &res) override
 
retdec::fileformat::FileFormatgetFileFormat ()
 
const retdec::fileformat::FileFormatgetFileFormat () const
 
std::weak_ptr< retdec::fileformat::FileFormatgetFileFormatWptr () const
 
std::size_t getNumberOfSegments () const
 
const std::vector< std::unique_ptr< Segment > > & getSegments () const
 
std::uint64_t getBaseAddress () const
 
void setBaseAddress (std::uint64_t baseAddress)
 
bool hasDataOnAddress (std::uint64_t address) const
 
bool hasDataInitializedOnAddress (std::uint64_t address) const
 
bool hasReadOnlyDataOnAddress (std::uint64_t address) const
 Test if there are some read-only data on provided address – address belongs to some read-only section or segment. More...
 
bool hasSegmentOnAddress (std::uint64_t address) const
 
bool isPointer (std::uint64_t address, std::uint64_t *pointer=nullptr) const
 
SegmentgetSegment (std::size_t index)
 
SegmentgetSegment (const std::string &name)
 
SegmentgetSegmentWithIndex (std::size_t index)
 
SegmentgetSegmentFromAddress (std::uint64_t address)
 
const SegmentgetSegment (std::size_t index) const
 
const SegmentgetSegment (const std::string &name) const
 
const SegmentgetSegmentWithIndex (std::size_t index) const
 
const SegmentgetSegmentFromAddress (std::uint64_t address) const
 
const SegmentgetEpSegment ()
 
std::pair< const std::uint8_t *, std::uint64_t > getRawSegmentData (std::uint64_t address) const
 
const std::string & getStatusMessage () const
 
const retdec::fileformat::LoaderErrorInfogetLoaderErrorInfo () const
 
- Public Member Functions inherited from retdec::utils::ByteValueStorage
 ByteValueStorage ()=default
 
virtual ~ByteValueStorage ()=default
 
Endianness getInverseEndianness () const
 
bool isLittleEndian () const
 
bool isBigEndian () const
 
bool isUnknownEndian () const
 
bool hexToBig (std::string &str) const
 
bool hexToLittle (std::string &str) const
 
bool bitsToBig (std::string &str) const
 
bool bitsToLittle (std::string &str) const
 
bool bitsToBig (std::vector< unsigned char > &values) const
 
bool bitsToLittle (std::vector< unsigned char > &values) const
 
bool get1Byte (std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
 
bool get2Byte (std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
 
bool get4Byte (std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
 
bool get8Byte (std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
 
bool get10Byte (std::uint64_t address, long double &res) const
 
bool getWord (std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
 
bool getFloat (std::uint64_t address, float &res) const
 
bool getDouble (std::uint64_t address, double &res) const
 
bool set1Byte (std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
 
bool set2Byte (std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
 
bool set4Byte (std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
 
bool set8Byte (std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
 
bool set10Byte (std::uint64_t address, long double val)
 
bool setWord (std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
 
bool setFloat (std::uint64_t address, float val)
 
bool setDouble (std::uint64_t address, double val)
 
bool getXByteArray (std::uint64_t address, std::uint64_t x, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
 
bool get1ByteArray (std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
 
bool get2ByteArray (std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
 
bool get4ByteArray (std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
 
bool get8ByteArray (std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
 
bool get10ByteArray (std::uint64_t address, std::vector< long double > &res, std::size_t size) const
 
bool getWordArray (std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t, Endianness e=Endianness::UNKNOWN) const
 
bool getFloatArray (std::uint64_t address, std::vector< float > &res, std::size_t size) const
 
bool getDoubleArray (std::uint64_t address, std::vector< double > &res, std::size_t size) const
 
bool getNTBS (std::uint64_t address, std::string &res, std::size_t size=0) const
 
bool getNTWS (std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
 
bool getNTWSNice (std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
 

Protected Member Functions

SegmentaddSegment (const retdec::fileformat::Section *section, std::uint64_t address, std::uint64_t memSize)
 
- Protected Member Functions inherited from retdec::loader::Image
SegmentinsertSegment (std::unique_ptr< Segment > segment)
 
void removeSegment (Segment *segment)
 
void nameSegment (Segment *segment)
 
void sortSegments ()
 
void setStatusMessage (const std::string &message)
 
- Protected Member Functions inherited from retdec::utils::ByteValueStorage
bool createValueFromBytes (const std::vector< std::uint8_t > &data, std::uint64_t &value, Endianness endian, std::uint64_t offset=0, std::uint64_t size=0) const
 
bool createBytesFromValue (std::uint64_t data, std::uint64_t x, std::vector< std::uint8_t > &value, Endianness endian) const
 
bool get10ByteImpl (const std::vector< std::uint8_t > &data, long double &res) const
 
bool getFloatImpl (const std::vector< std::uint8_t > &data, float &res) const
 
bool getDoubleImpl (const std::vector< std::uint8_t > &data, double &res) const
 
bool getNTBSImpl (const GetNByteFn &get1ByteFn, std::uint64_t address, std::string &res, std::size_t size) const
 
bool getNTWSImpl (const GetXByteFn &getXByteFn, std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
 
bool getNTWSNiceImpl (const GetXByteFn &getXByteFn, std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
 

Additional Inherited Members

- Protected Types inherited from retdec::utils::ByteValueStorage
using GetNByteFn = std::function< bool(std::uint64_t, std::uint64_t &, Endianness)>
 
using GetXByteFn = std::function< bool(std::uint64_t, std::uint64_t, std::uint64_t &, Endianness)>
 

Constructor & Destructor Documentation

◆ IntelHexImage()

retdec::loader::IntelHexImage::IntelHexImage ( const std::shared_ptr< retdec::fileformat::FileFormat > &  fileFormat)

Member Function Documentation

◆ addSegment()

Segment * retdec::loader::IntelHexImage::addSegment ( const retdec::fileformat::Section section,
std::uint64_t  address,
std::uint64_t  memSize 
)
protected

◆ load()

bool retdec::loader::IntelHexImage::load ( )
overridevirtual

Virtual method overridden from retdec::loader::Image, which is used in image factory. Loads the image using fileformat.

Returns
True if loading was successful, otherwise false.

Implements retdec::loader::Image.


The documentation for this class was generated from the following files: