summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2014-04-30 23:46:06 -0400
committerGravatar bunnei2014-04-30 23:46:06 -0400
commit29da6e9ab57a37abafc9c91e00bb01daf451b3ad (patch)
tree842d84bacad354bd9c447dfe99c97785f1b618a8 /src
parentfixed a bug where ExeFs code was being incorrectly masked (diff)
downloadyuzu-29da6e9ab57a37abafc9c91e00bb01daf451b3ad.tar.gz
yuzu-29da6e9ab57a37abafc9c91e00bb01daf451b3ad.tar.xz
yuzu-29da6e9ab57a37abafc9c91e00bb01daf451b3ad.zip
added a module to load symbol map files for debugging
Diffstat (limited to 'src')
-rw-r--r--src/core/CMakeLists.txt1
-rw-r--r--src/core/arm/disassembler/load_symbol_map.cpp33
-rw-r--r--src/core/arm/disassembler/load_symbol_map.h13
-rw-r--r--src/core/core.vcxproj2
-rw-r--r--src/core/core.vcxproj.filters6
5 files changed, 55 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 314f6e64c..3308f3c25 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -5,6 +5,7 @@ set(SRCS core.cpp
5 mem_map_funcs.cpp 5 mem_map_funcs.cpp
6 system.cpp 6 system.cpp
7 arm/disassembler/arm_disasm.cpp 7 arm/disassembler/arm_disasm.cpp
8 arm/disassembler/load_symbol_map.cpp
8 arm/interpreter/arm_interpreter.cpp 9 arm/interpreter/arm_interpreter.cpp
9 arm/interpreter/armemu.cpp 10 arm/interpreter/armemu.cpp
10 arm/interpreter/arminit.cpp 11 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 000000000..d7fc0a042
--- /dev/null
+++ b/src/core/arm/disassembler/load_symbol_map.cpp
@@ -0,0 +1,33 @@
1// Copyright 2014 Citra Emulator Project
2// Licensed under GPLv2
3// Refer to the license.txt file included.
4
5#include <string>
6#include <vector>
7
8#include "common/symbols.h"
9#include "common/common_types.h"
10#include "common/file_util.h"
11
12#include "core/arm/disassembler/load_symbol_map.h"
13
14/*
15 * Loads a symbol map file for use with the disassembler
16 * @param filename String filename path of symbol map file
17 */
18void LoadSymbolMap(std::string filename) {
19 std::ifstream infile(filename);
20
21 std::string address_str, function_name, line;
22 u32 size, address;
23
24 while (std::getline(infile, line)) {
25 std::istringstream iss(line);
26 if (!(iss >> address_str >> size >> function_name)) {
27 break; // Error parsing
28 }
29 u32 address = std::stoul(address_str, nullptr, 16);
30
31 Symbols::Add(address, function_name, size, 2);
32 }
33}
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 000000000..837cca99b
--- /dev/null
+++ b/src/core/arm/disassembler/load_symbol_map.h
@@ -0,0 +1,13 @@
1// Copyright 2014 Citra Emulator Project
2// Licensed under GPLv2
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <string>
8
9/*
10 * Loads a symbol map file for use with the disassembler
11 * @param filename String filename path of symbol map file
12 */
13void LoadSymbolMap(std::string filename);
diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj
index be8448969..a5043ea4b 100644
--- a/src/core/core.vcxproj
+++ b/src/core/core.vcxproj
@@ -138,6 +138,7 @@
138 </ItemGroup> 138 </ItemGroup>
139 <ItemGroup> 139 <ItemGroup>
140 <ClCompile Include="arm\disassembler\arm_disasm.cpp" /> 140 <ClCompile Include="arm\disassembler\arm_disasm.cpp" />
141 <ClCompile Include="arm\disassembler\load_symbol_map.cpp" />
141 <ClCompile Include="arm\interpreter\armemu.cpp" /> 142 <ClCompile Include="arm\interpreter\armemu.cpp" />
142 <ClCompile Include="arm\interpreter\arminit.cpp" /> 143 <ClCompile Include="arm\interpreter\arminit.cpp" />
143 <ClCompile Include="arm\interpreter\armmmu.cpp" /> 144 <ClCompile Include="arm\interpreter\armmmu.cpp" />
@@ -171,6 +172,7 @@
171 <ItemGroup> 172 <ItemGroup>
172 <ClInclude Include="arm\arm_interface.h" /> 173 <ClInclude Include="arm\arm_interface.h" />
173 <ClInclude Include="arm\disassembler\arm_disasm.h" /> 174 <ClInclude Include="arm\disassembler\arm_disasm.h" />
175 <ClInclude Include="arm\disassembler\load_symbol_map.h" />
174 <ClInclude Include="arm\interpreter\armcpu.h" /> 176 <ClInclude Include="arm\interpreter\armcpu.h" />
175 <ClInclude Include="arm\interpreter\armdefs.h" /> 177 <ClInclude Include="arm\interpreter\armdefs.h" />
176 <ClInclude Include="arm\interpreter\armemu.h" /> 178 <ClInclude Include="arm\interpreter\armemu.h" />
diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters
index b5473bc41..9c53f9eff 100644
--- a/src/core/core.vcxproj.filters
+++ b/src/core/core.vcxproj.filters
@@ -108,6 +108,9 @@
108 <ClCompile Include="hle\mrc.cpp"> 108 <ClCompile Include="hle\mrc.cpp">
109 <Filter>hle</Filter> 109 <Filter>hle</Filter>
110 </ClCompile> 110 </ClCompile>
111 <ClCompile Include="arm\disassembler\load_symbol_map.cpp">
112 <Filter>arm\disassembler</Filter>
113 </ClCompile>
111 </ItemGroup> 114 </ItemGroup>
112 <ItemGroup> 115 <ItemGroup>
113 <ClInclude Include="arm\disassembler\arm_disasm.h"> 116 <ClInclude Include="arm\disassembler\arm_disasm.h">
@@ -211,6 +214,9 @@
211 <ClInclude Include="hle\mrc.h"> 214 <ClInclude Include="hle\mrc.h">
212 <Filter>hle</Filter> 215 <Filter>hle</Filter>
213 </ClInclude> 216 </ClInclude>
217 <ClInclude Include="arm\disassembler\load_symbol_map.h">
218 <Filter>arm\disassembler</Filter>
219 </ClInclude>
214 </ItemGroup> 220 </ItemGroup>
215 <ItemGroup> 221 <ItemGroup>
216 <Text Include="CMakeLists.txt" /> 222 <Text Include="CMakeLists.txt" />