blfwk::IntelHexSourceFile Class Reference

Executable file in the Intel Hex format. More...

`#include <IntelHexSourceFile.h>`

Inheritance diagram for blfwk::IntelHexSourceFile:
[legend]
Collaboration diagram for blfwk::IntelHexSourceFile:
[legend]

## Public Member Functions

| IntelHexSourceFile (const std::string &path)
| Default constructor.
virtual | ~IntelHexSourceFile ()
| Destructor.
Opening and closing
virtual void | open ()
| Opens the file.
virtual void | close ()
| Closes the file.
Format capabilities
virtual bool | supportsNamedSections () const
virtual bool | supportsNamedSymbols () const
Data sources
virtual DataSource * | createDataSource ()
| Returns data source for the entire file. More...
Entry point
virtual bool | hasEntryPoint ()
| Returns true if an entry point was set in the file. More...
virtual uint32_t | getEntryPointAddress ()
| Returns the entry point address. More...
Public Member Functions inherited from blfwk::SourceFile
| SourceFile (const std::string &path, source_file_t filetype)
| Default constructor.
virtual | ~SourceFile ()
| Destructor. More...
void | setOptions (OptionContext *context)
| Set the option context. More...
const OptionContext * | getOptions () const
| Return the option context.
source_file_t | getFileType () const
| Return the file type.
const std::string & | getPath () const
| Returns the path to the file.
unsigned | getSize () const
| Get the size in bytes of the file.
virtual bool | isOpen () const
| Returns whether the file is already open.
virtual DataSource * | createDataSource (StringMatcher &matcher)
| Creates a data source out of one or more sections of the file. More...
virtual DataSource * | createDataSource (const std::string &section)
| Creates a data source out of one section of the file. More...
virtual DataTarget * | createDataTargetForSection (const std::string &section)
virtual DataTarget * | createDataTargetForSymbol (const std::string &symbol)
virtual DataTarget * | createDataTargetForEntryPoint ()
virtual bool | hasSymbol (const std::string &name)
| Returns whether a symbol exists in the source file.
virtual uint32_t | getSymbolValue (const std::string &name)
| Returns the value of a symbol.
virtual unsigned | getSymbolSize (const std::string &name)
| Returns the size of a symbol.

## Static Public Member Functions

static bool | isIntelHexFile (std::istream &stream)
| Test whether the stream contains a valid Intel Hex file.
Static Public Member Functions inherited from blfwk::SourceFile
static SourceFile * | openFile (const std::string &path)

## Protected Member Functions

void | buildMemoryImage ()
| Build memory image of the Intel Hex file. More...
Protected Member Functions inherited from blfwk::SourceFile
std::ifstream * | getStream ()
| Internal access to the input stream object.

## Protected Attributes

StIntelHexFile * | m_file
| Intel Hex parser instance.
StExecutableImage * | m_image
| Memory image of the Intel Hex file..
bool | m_hasEntryRecord
| Whether a type 03 or 05 record was found.
StIntelHexFile::IntelHex | m_entryRecord
| Record for the entry point.
Protected Attributes inherited from blfwk::SourceFile
std::string | m_path
| Path to the file.
smart_ptr< std::ifstream > | m_stream
| File stream, or NULL if file is closed.
smart_ptr< OptionContext > | m_options
| Table of option values.
source_file_t | m_filetype
| Image file type.
unsigned | m_size
| The size in bytes of the file.

## Additional Inherited Members

Public Types inherited from blfwk::SourceFile
enum | source_file_t { kBinarySourceFile, kELFSourceFile, kIntelHexSourceFile, kSBSourceFile, kSRecordSourceFile }
| Set of supported executable image file formats. More...

## Detailed Description

Executable file in the Intel Hex format.

Instead of presenting each Intel Hex in the file separately, this class builds up a memory image of all of the records. Records next to each other in memory are coalesced into a single memory region. The data source that is returned from createDataSource() exposes these regions as its segments.

## Member Function Documentation

void IntelHexSourceFile::buildMemoryImage | ( |  | ) |

protected

Build memory image of the Intel Hex file.

Scans the Intel Hex of the file looking for data records(00 records). The contents of these records are added to an StExecutableImage object, which coalesces the individual records into contiguous regions of memory.

Also looks for 03 and 05 records that contain the entry point. The first match of one of these records is saved off into the m_entryRecord member.

Also looks for 02 and 04 records that contain the extended address. The address in the StExecutableImage object is the combination of extended address and offset in data record.

If 01 record, the file end record is detected, the left records would not be handled.

Precondition
  The m_file member must be valid.
  The m_image member variable must have been instantiated.

DataSource * IntelHexSourceFile::createDataSource | ( |  | ) |

virtual

Returns data source for the entire file.

Precondition
  The file must be open before this method can be called.

Implements blfwk::SourceFile.

uint32_t IntelHexSourceFile::getEntryPointAddress | ( |  | ) |

virtual

Returns the entry point address.

If no entry point is available then 0 is returned instead.

Returns
  Entry point address.

Return values

  0 | No entry point is available.

Reimplemented from blfwk::SourceFile.

bool IntelHexSourceFile::hasEntryPoint | ( |  | ) |

virtual

Returns true if an entry point was set in the file.

Return values

  true | The file has an 03 or 05 record.
  false | No entry point is available.

Implements blfwk::SourceFile.

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

- IntelHexSourceFile.h
- IntelHexSourceFile.cpp