summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2005-10-18 19:18:27 -0400
committerNathan Binkert <binkertn@umich.edu>2005-10-18 19:18:27 -0400
commit49c8675f013bfa6a6d329acc28a2a1525ec76ea7 (patch)
treeaa4c9fdab2e8c4a2da6d719bb40b09250d103f20
parentce5f326f11a3032a710074e65bba06246e069c6b (diff)
downloadgem5-49c8675f013bfa6a6d329acc28a2a1525ec76ea7.tar.xz
fix nmtest
test/Makefile: get nmtest to compile test/nmtest.cc: make nmtest actually do something --HG-- extra : convert_revision : 471c02c51355a5145f0d0ce965c2a341076120c0
-rw-r--r--test/Makefile4
-rw-r--r--test/nmtest.cc60
2 files changed, 36 insertions, 28 deletions
diff --git a/test/Makefile b/test/Makefile
index 20abe8466..6fe0e5f48 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -33,8 +33,8 @@ initest: test/initest.cc base/str.cc base/inifile.cc base/cprintf.cc
lrutest: test/lru_test.cc
$(CXX) $(CCFLAGS) -o $@ $^
-nmtest: test/nmtest.cc base/object_file.cc base/symtab.cc base/misc.cc base/str.cc
- $(CXX) $(CCFLAGS) -o $@ $^
+nmtest: test/nmtest.cc base/output.cc base/hostinfo.cc base/cprintf.cc base/misc.cc base/loader/object_file.cc base/loader/symtab.cc base/misc.cc base/str.cc base/loader/aout_object.cc base/loader/ecoff_object.cc base/loader/elf_object.cc
+ $(CXX) $(CCFLAGS) -I/n/ziff/z/binkertn/build/work/ALPHA_FS -lelf -o $@ $^
offtest: test/offtest.cc
$(CXX) $(CCFLAGS) -o $@ $^
diff --git a/test/nmtest.cc b/test/nmtest.cc
index 90166adf3..e9c20d19d 100644
--- a/test/nmtest.cc
+++ b/test/nmtest.cc
@@ -30,45 +30,53 @@
#include <string>
#include <vector>
-#include "ecoff.hh"
#include "base/loader/object_file.hh"
-#include "base/str.hh"
#include "base/loader/symtab.hh"
+#include "base/misc.hh"
+#include "base/str.hh"
+using namespace std;
Tick curTick;
+ostream *outputStream = &cout;
+
int
main(int argc, char *argv[])
{
- EcoffObject obj;
- if (argc != 3) {
- cout << "usage: " << argv[0] << " <filename> <symbol>\n";
- return 1;
- }
+ if (argc != 2 && argc != 3)
+ panic("usage: %s <filename> <symbol>\n", argv[0]);
- if (!obj.open(argv[1])) {
- cout << "file not found\n";
- return 1;
- }
+ ObjectFile *obj = createObjectFile(argv[1]);
+ if (!obj)
+ panic("file not found\n");
SymbolTable symtab;
- obj.loadGlobals(&symtab);
-
- string symbol = argv[2];
- Addr address;
+ obj->loadGlobalSymbols(&symtab);
+ obj->loadLocalSymbols(&symtab);
- if (symbol[0] == '0' && symbol[1] == 'x') {
- if (to_number(symbol, address) && symtab.findSymbol(address, symbol))
- cout << "address = 0x" << hex << address
- << ", symbol = " << symbol << "\n";
- else
- cout << "address = 0x" << hex << address << " was not found\n";
+ if (argc == 2) {
+ SymbolTable::ATable::const_iterator i = symtab.getAddrTable().begin();
+ SymbolTable::ATable::const_iterator end = symtab.getAddrTable().end();
+ while (i != end) {
+ cprintf("%#x %s\n", i->first, i->second);
+ ++i;
+ }
} else {
- if (symtab.findAddress(symbol, address))
- cout << "symbol = " << symbol << ", address = 0x" << hex
- << address << "\n";
- else
- cout << "symbol = " << symbol << " was not found\n";
+ string symbol = argv[2];
+ Addr address;
+
+ if (symbol[0] == '0' && symbol[1] == 'x') {
+ if (to_number(symbol, address) &&
+ symtab.findSymbol(address, symbol))
+ cprintf("address = %#x, symbol = %s\n", address, symbol);
+ else
+ cprintf("address = %#x was not found\n", address);
+ } else {
+ if (symtab.findAddress(symbol, address))
+ cprintf("symbol = %s address = %#x\n", symbol, address);
+ else
+ cprintf("symbol = %s was not found\n", symbol);
+ }
}
return 0;