gem5
v20.1.0.0
unittest
symtest.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2002-2005 The Regents of The University of Michigan
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are
7
* met: redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer;
9
* redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution;
12
* neither the name of the copyright holders nor the names of its
13
* contributors may be used to endorse or promote products derived from
14
* this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
*/
28
29
#include <iostream>
30
31
#include "
base/loader/symtab.hh
"
32
#include "
base/str.hh
"
33
34
using namespace
std
;
35
36
void
usage
(
const
char
*progname);
37
38
void
39
usage
(
const
char
*progname)
40
{
41
cout <<
"Usage: "
<< progname <<
" <symbol file> <symbol>"
<< endl;
42
43
exit
(1);
44
}
45
46
int
47
main
(
int
argc,
char
*argv[])
48
{
49
Loader::SymbolTable
symtab;
50
51
if
(argc != 3)
52
usage
(argv[0]);
53
54
if
(!symtab.
load
(argv[1])) {
55
cout <<
"could not load symbol file: "
<< argv[1] << endl;
56
exit
(1);
57
}
58
59
string
symbol = argv[2];
60
Addr
address;
61
62
if
(!
to_number
(symbol, address)) {
63
auto
it = symtab.
find
(symbol);
64
if
(it == symtab.
end
()) {
65
cout <<
"could not find symbol: "
<< symbol << endl;
66
exit
(1);
67
}
68
69
cout << symbol <<
" -> "
<<
"0x"
<< hex << it->address << endl;
70
}
else
{
71
auto
it = symtab.
find
(address);
72
if
(it == symtab.
end
()) {
73
cout <<
"could not find address: "
<< address << endl;
74
exit
(1);
75
}
76
77
cout <<
"0x"
<< hex << address <<
" -> "
<< it->name << endl;
78
}
79
80
return
0;
81
}
X86ISA::exit
Bitfield< 3 > exit
Definition:
misc.hh:848
Loader::SymbolTable
Definition:
symtab.hh:59
Loader::SymbolTable::load
bool load(const std::string &file)
Definition:
symtab.cc:96
Loader::SymbolTable::find
const_iterator find(Addr address) const
Definition:
symtab.hh:181
str.hh
to_number
bool to_number(const std::string &value, VecPredRegContainer< NumBits, Packed > &p)
Helper functions used for serialization/de-serialization.
Definition:
vec_pred_reg.hh:379
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:142
main
int main(int argc, char *argv[])
Definition:
symtest.cc:47
Loader::SymbolTable::end
const_iterator end() const
Definition:
symtab.hh:126
usage
void usage(const char *progname)
Definition:
symtest.cc:39
std
Overload hash function for BasicBlockRange type.
Definition:
vec_reg.hh:587
symtab.hh
Generated on Wed Sep 30 2020 14:02:18 for gem5 by
doxygen
1.8.17