You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.0 KiB
95 lines
2.0 KiB
4 years ago
|
#ifndef _DEV_MAPFILE_H
|
||
|
#define _DEV_MAPFILE_H
|
||
|
|
||
|
|
||
|
namespace dev
|
||
|
{
|
||
|
|
||
|
|
||
|
class MapFileEntry;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Linker generated module map file parser.
|
||
|
*/
|
||
|
class MapFile
|
||
|
{
|
||
|
public:
|
||
|
/** Error code. */
|
||
|
enum ErrorType
|
||
|
{
|
||
|
/** No error. */
|
||
|
ERROR_NONE,
|
||
|
/** File open failed. */
|
||
|
ERROR_OPEN,
|
||
|
/** File reading failed. */
|
||
|
ERROR_READ,
|
||
|
/** Syntax error. */
|
||
|
ERROR_PARSE
|
||
|
};
|
||
|
|
||
|
/** Reads a map file. */
|
||
|
explicit MapFile( const char* filename );
|
||
|
|
||
|
///
|
||
|
~MapFile();
|
||
|
|
||
|
/** Returns preferred load address. */
|
||
|
long loadAddress() const;
|
||
|
|
||
|
/** Returns ith entry from the map file. */
|
||
|
const MapFileEntry& getEntry( int i ) const;
|
||
|
|
||
|
/** Returns ith segment from the map file. */
|
||
|
const MapFileEntry& getSegment( int i ) const;
|
||
|
|
||
|
/** Returns number of segments in the map file. */
|
||
|
int segments() const;
|
||
|
|
||
|
/** Returns number of entries in the map file. */
|
||
|
int entries() const;
|
||
|
|
||
|
/** Returns error code or 0 (ERROR_NONE) if no error. */
|
||
|
ErrorType error() const;
|
||
|
|
||
|
/** Returns line number of last successful read character. */
|
||
|
int line() const;
|
||
|
|
||
|
/**
|
||
|
* Finds entry which contains specified address.
|
||
|
* @return Entry index or -1 if not found.
|
||
|
*/
|
||
|
int findEntry( long addr ) const;
|
||
|
|
||
|
/**
|
||
|
* Returns current module name, with map extension.
|
||
|
* The output buffer is always 0-terminated.
|
||
|
*/
|
||
|
static void getModuleMapFilename( char* buffer, int bufferSize );
|
||
|
|
||
|
private:
|
||
|
class MapFileImpl;
|
||
|
MapFileImpl* m_this;
|
||
|
|
||
|
MapFile( const MapFile& );
|
||
|
MapFile& operator=( const MapFile& );
|
||
|
};
|
||
|
|
||
|
|
||
|
} // dev
|
||
|
|
||
|
|
||
|
#endif // _DEV_MAPFILE_H
|
||
|
/*
|
||
|
* Copyright (c) 2001 Jani Kajala
|
||
|
*
|
||
|
* Permission to use, copy, modify, distribute and sell this
|
||
|
* software and its documentation for any purpose is hereby
|
||
|
* granted without fee, provided that the above copyright notice
|
||
|
* appear in all copies and that both that copyright notice and
|
||
|
* this permission notice appear in supporting documentation.
|
||
|
* Jani Kajala makes no representations about the suitability
|
||
|
* of this software for any purpose. It is provided "as is"
|
||
|
* without express or implied warranty.
|
||
|
*/
|