summaryrefslogtreecommitdiffstatshomepage
path: root/utils/name2addr.cpp
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2026-06-12 23:49:48 +0200
committerEgor Tensin <egor@tensin.name>2026-06-12 23:49:48 +0200
commitb00525a10746de26040d201fa2ca7fb075d1f83b (patch)
tree5ef06ab9fe9f1e49040a7bb76f74a62acdf4bed5 /utils/name2addr.cpp
parentcmake: move main library code to src/ (diff)
downloadwinapi-debug-b00525a10746de26040d201fa2ca7fb075d1f83b.tar.gz
winapi-debug-b00525a10746de26040d201fa2ca7fb075d1f83b.zip
utils/ -> src/utils/
Diffstat (limited to 'utils/name2addr.cpp')
-rw-r--r--utils/name2addr.cpp86
1 files changed, 0 insertions, 86 deletions
diff --git a/utils/name2addr.cpp b/utils/name2addr.cpp
deleted file mode 100644
index d253aa9..0000000
--- a/utils/name2addr.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2017 Egor Tensin <Egor.Tensin@gmail.com>
-// This file is part of the "winapi-debug" project.
-// For details, see https://github.com/egor-tensin/winapi-debug.
-// Distributed under the MIT License.
-
-#include "command_line.hpp"
-#include "pdb_descr.hpp"
-
-#include <winapi/debug.hpp>
-
-#include <boost/program_options.hpp>
-
-#include <exception>
-#include <iostream>
-#include <string>
-#include <string_view>
-#include <vector>
-
-namespace {
-
-class Name2Addr : public SettingsParser {
-public:
- explicit Name2Addr(int argc, char** argv) : SettingsParser{argc, argv} {
- namespace po = boost::program_options;
-
- visible.add_options()(
- "pdb", po::value<std::vector<PDB>>(&pdbs)->value_name("ADDR,PATH"), "load a PDB file");
- hidden.add_options()("name",
- po::value<std::vector<std::string>>(&names)->value_name("NAME"),
- "add a name to resolve");
- positional.add("name", -1);
- }
-
- const char* get_short_description() const override {
- return "[-h|--help] [--pdb ADDR,PATH]... [--] [NAME]...";
- }
-
- std::vector<PDB> pdbs;
- std::vector<std::string> names;
-};
-
-void dump_error(const std::exception& e) {
- std::cerr << std::format("error: {}\n", e.what());
-}
-
-void resolve_symbol(const winapi::PostMortem& analysis, std::string_view name) {
- try {
- const auto address = analysis.resolve_symbol(name).get_online_address();
- std::cout << winapi::address::format(address) << '\n';
- } catch (const std::exception& e) {
- dump_error(e);
- std::cout << name << '\n';
- }
-}
-
-} // namespace
-
-int main(int argc, char* argv[]) {
- try {
- Name2Addr settings{argc, argv};
-
- try {
- settings.parse(argc, argv);
- } catch (const boost::program_options::error& e) {
- settings.usage_error(e);
- return 1;
- }
-
- if (settings.exit_with_usage) {
- settings.usage();
- return 0;
- }
-
- winapi::PostMortem analysis;
-
- for (const auto& pdb : settings.pdbs)
- analysis.add_pdb(pdb.online_base, pdb.path);
-
- for (const auto& name : settings.names)
- resolve_symbol(analysis, name);
- } catch (const std::exception& e) {
- dump_error(e);
- return 1;
- }
- return 0;
-}