8000 Option to disassemble AOT code · randomstuff/unjit@bef860d · GitHub
[go: up one dir, main page]

Skip to content

Commit bef860d

Browse files
author
Gabriel Corona
committed
Option to disassemble AOT code
1 parent 1cef38b commit bef860d

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/unjit.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ THE SOFTWARE.
4141
struct Config {
4242
pid_t pid = -1;
4343
std::uint64_t start = 0, stop = 0;
44+
bool all = false;
4445
};
4546

4647
static unsigned long long int parse_integer(char const* value)
@@ -70,6 +71,7 @@ static int parse_config(Config& config, int argc, const char** argv)
7071
("pid,p", value<pid_t>(), "PID of the target process")
7172
("start-address", value<std::string>(), "Address")
7273
("stop-address", value<std::string>(), "Address")
74+
("all", "Disassemble all symbols")
7375
;
7476
variables_map vm;
7577
store(command_line_parser(argc, argv).options(desc).run(), vm);
@@ -86,6 +88,8 @@ static int parse_config(Config& config, int argc, const char** argv)
8688
config.start = parse_integer(vm["start-address"].as<std::string>().c_str());
8789
if (vm.count("stop-address"))
8890
config.stop = parse_integer(vm["stop-address"].as<std::string>().c_str());
91+
if (vm.count("all"))
92+
config.all = true;
8993

9094
return 0;
9195
}
@@ -118,11 +122,17 @@ int main(int argc, const char** argv)
118122
process.load_map_file();
119123

120124
unjit::Disassembler disassembler(process);
121-
if (config.start == 0 && config.stop == 0)
122-
for (auto const& k : process.jit_symbols())
123-
disassembler.disassemble(std::cout, k.second.value, k.second.size);
124-
else
125+
126+
if (config.all)
127+
for (auto const& module : process.modules())
128+
for (auto const& p : module.symbols)
129+
if (p.second.flags & SYMBOL_FLAG_CODE)
130+
disassembler.disassemble(std::cout, p.second.value, p.second.size);
131+
132+
if (config.start != 0)
125133
disassembler.disassemble(std::cout, config.start, config.stop - config.start);
134+
else for (auto const& k : process.jit_symbols())
135+
disassembler.disassemble(std::cout, k.second.value, k.second.size);
126136

127137
return 0;
128138
}

0 commit comments

Comments
 (0)
0