From e77f16031b0efc2c2cbead2d473e743f466aafb4 Mon Sep 17 00:00:00 2001 From: Jeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com> Date: Mon, 17 Feb 2025 23:14:36 -0600 Subject: [PATCH] Add --disable-aranges option to the resolver tool --- tools/resolver/main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/resolver/main.cpp b/tools/resolver/main.cpp index 94570f0..2dd59f7 100644 --- a/tools/resolver/main.cpp +++ b/tools/resolver/main.cpp @@ -31,6 +31,7 @@ struct options { bool from_stdin = false; bool keepalive = false; bool timing = false; + bool disable_aranges = false; }; void resolve(const options& opts, cpptrace::frame_ptr address) { @@ -57,6 +58,7 @@ int main(int argc, char** argv) CPPTRACE_TRY { | lyra::opt(opts.from_stdin)["--stdin"]("read addresses from stdin") | lyra::opt(opts.keepalive)["--keepalive"]("keep the program alive after resolution finishes (useful for debugging)") | lyra::opt(opts.timing)["--timing"]("provide timing stats") + | lyra::opt(opts.disable_aranges)["--disable-aranges"]("don't use the .debug_aranges accelerated address lookup table") | lyra::arg(opts.path, "binary path")("binary to look in").required() | lyra::arg(opts.address_strings, "addresses")("addresses"); if(auto result = cli.parse({ argc, argv }); !result) { @@ -76,6 +78,9 @@ int main(int argc, char** argv) CPPTRACE_TRY { fmt::println(stderr, "Error: Path isn't a regular file {}", opts.path); return 1; } + if(opts.disable_aranges) { + cpptrace::experimental::set_dwarf_resolver_disable_aranges(true); + } for(const auto& address : opts.address_strings) { resolve(opts, std::stoi(address, nullptr, 16)); }