00001
00002
00003
00004
00005
00006 #ifndef __SYMBOL_TABLE_C
00007 #define __SYMBOL_TABLE_C
00008
00009 #include <SymbolFingp.hpp>
00010 #include <SystemMap.hpp>
00011 #include <DevMemPatt.hpp>
00012 #include <rwKernel.hpp>
00013 #include <list>
00014 #include <string>
00015 #include <iostream>
00016 #include <fstream>
00017 #include <algorithm>
00018 #include <iterator>
00019
00020 #define DEFAULTDUMP "SymbolTableDump"
00021 #define DEFAULTSYSTEMMAP "System.map"
00022
00023 typedef struct
00024 {
00025 string Name;
00026 unsigned int Address;
00027 } zzSym;
00028 typedef list<zzSym *> zzSymList;
00029
00030
00034 class SymbolTable
00035 {
00036 private:
00037 SymbolFingp *fing;
00038 DevMemPatt *patt;
00039 SystemMap exported;
00040 SystemMap mapp;
00041 SystemMap rest;
00042 string dump_file;
00043
00044 bool createObjects (rwKernel *);
00045 bool loadFiles (string, string);
00046
00047 public:
00051 zzSymList symList;
00052
00056 SymbolTable ();
00057
00063 SymbolTable (string res, string sys);
00064
00069 SymbolTable (rwKernel *);
00070
00074 ~SymbolTable ();
00075
00080 void setSaveFile (string);
00081
00088 unsigned int getSymbol (string);
00089
00096 bool findSymbol (string);
00097
00101 void addSymbolToCache (string, unsigned int);
00102
00106 void clearCache ();
00107
00111 bool saveCache ();
00112 };
00113 #endif