From 29da6e9ab57a37abafc9c91e00bb01daf451b3ad Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 30 Apr 2014 23:46:06 -0400 Subject: added a module to load symbol map files for debugging --- src/core/CMakeLists.txt | 1 + src/core/arm/disassembler/load_symbol_map.cpp | 33 +++++++++++++++++++++++++++ src/core/arm/disassembler/load_symbol_map.h | 13 +++++++++++ src/core/core.vcxproj | 2 ++ src/core/core.vcxproj.filters | 6 +++++ 5 files changed, 55 insertions(+) create mode 100644 src/core/arm/disassembler/load_symbol_map.cpp create mode 100644 src/core/arm/disassembler/load_symbol_map.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 314f6e64..3308f3c2 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -5,6 +5,7 @@ set(SRCS core.cpp mem_map_funcs.cpp system.cpp arm/disassembler/arm_disasm.cpp + arm/disassembler/load_symbol_map.cpp arm/interpreter/arm_interpreter.cpp arm/interpreter/armemu.cpp arm/interpreter/arminit.cpp diff --git a/src/core/arm/disassembler/load_symbol_map.cpp b/src/core/arm/disassembler/load_symbol_map.cpp new file mode 100644 index 00000000..d7fc0a04 --- /dev/null +++ b/src/core/arm/disassembler/load_symbol_map.cpp @@ -0,0 +1,33 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include +#include + +#include "common/symbols.h" +#include "common/common_types.h" +#include "common/file_util.h" + +#include "core/arm/disassembler/load_symbol_map.h" + +/* + * Loads a symbol map file for use with the disassembler + * @param filename String filename path of symbol map file + */ +void LoadSymbolMap(std::string filename) { + std::ifstream infile(filename); + + std::string address_str, function_name, line; + u32 size, address; + + while (std::getline(infile, line)) { + std::istringstream iss(line); + if (!(iss >> address_str >> size >> function_name)) { + break; // Error parsing + } + u32 address = std::stoul(address_str, nullptr, 16); + + Symbols::Add(address, function_name, size, 2); + } +} diff --git a/src/core/arm/disassembler/load_symbol_map.h b/src/core/arm/disassembler/load_symbol_map.h new file mode 100644 index 00000000..837cca99 --- /dev/null +++ b/src/core/arm/disassembler/load_symbol_map.h @@ -0,0 +1,13 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#pragma once + +#include + +/* + * Loads a symbol map file for use with the disassembler + * @param filename String filename path of symbol map file + */ +void LoadSymbolMap(std::string filename); diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj index be844896..a5043ea4 100644 --- a/src/core/core.vcxproj +++ b/src/core/core.vcxproj @@ -138,6 +138,7 @@ + @@ -171,6 +172,7 @@ + diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters index b5473bc4..9c53f9ef 100644 --- a/src/core/core.vcxproj.filters +++ b/src/core/core.vcxproj.filters @@ -108,6 +108,9 @@ hle + + arm\disassembler + @@ -211,6 +214,9 @@ hle + + arm\disassembler + -- cgit v1.2.3