added a module to load symbol map files for debugging
This commit is contained in:
		| @@ -5,6 +5,7 @@ set(SRCS    core.cpp | |||||||
|             mem_map_funcs.cpp |             mem_map_funcs.cpp | ||||||
|             system.cpp |             system.cpp | ||||||
|             arm/disassembler/arm_disasm.cpp |             arm/disassembler/arm_disasm.cpp | ||||||
|  |             arm/disassembler/load_symbol_map.cpp | ||||||
|             arm/interpreter/arm_interpreter.cpp |             arm/interpreter/arm_interpreter.cpp | ||||||
|             arm/interpreter/armemu.cpp |             arm/interpreter/armemu.cpp | ||||||
|             arm/interpreter/arminit.cpp |             arm/interpreter/arminit.cpp | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								src/core/arm/disassembler/load_symbol_map.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/core/arm/disassembler/load_symbol_map.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | // Copyright 2014 Citra Emulator Project | ||||||
|  | // Licensed under GPLv2 | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #include <string> | ||||||
|  | #include <vector> | ||||||
|  |  | ||||||
|  | #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); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										13
									
								
								src/core/arm/disassembler/load_symbol_map.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/core/arm/disassembler/load_symbol_map.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | // Copyright 2014 Citra Emulator Project | ||||||
|  | // Licensed under GPLv2 | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include <string> | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Loads a symbol map file for use with the disassembler | ||||||
|  |  * @param filename String filename path of symbol map file | ||||||
|  |  */ | ||||||
|  | void LoadSymbolMap(std::string filename); | ||||||
| @@ -138,6 +138,7 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClCompile Include="arm\disassembler\arm_disasm.cpp" /> |     <ClCompile Include="arm\disassembler\arm_disasm.cpp" /> | ||||||
|  |     <ClCompile Include="arm\disassembler\load_symbol_map.cpp" /> | ||||||
|     <ClCompile Include="arm\interpreter\armemu.cpp" /> |     <ClCompile Include="arm\interpreter\armemu.cpp" /> | ||||||
|     <ClCompile Include="arm\interpreter\arminit.cpp" /> |     <ClCompile Include="arm\interpreter\arminit.cpp" /> | ||||||
|     <ClCompile Include="arm\interpreter\armmmu.cpp" /> |     <ClCompile Include="arm\interpreter\armmmu.cpp" /> | ||||||
| @@ -171,6 +172,7 @@ | |||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="arm\arm_interface.h" /> |     <ClInclude Include="arm\arm_interface.h" /> | ||||||
|     <ClInclude Include="arm\disassembler\arm_disasm.h" /> |     <ClInclude Include="arm\disassembler\arm_disasm.h" /> | ||||||
|  |     <ClInclude Include="arm\disassembler\load_symbol_map.h" /> | ||||||
|     <ClInclude Include="arm\interpreter\armcpu.h" /> |     <ClInclude Include="arm\interpreter\armcpu.h" /> | ||||||
|     <ClInclude Include="arm\interpreter\armdefs.h" /> |     <ClInclude Include="arm\interpreter\armdefs.h" /> | ||||||
|     <ClInclude Include="arm\interpreter\armemu.h" /> |     <ClInclude Include="arm\interpreter\armemu.h" /> | ||||||
|   | |||||||
| @@ -108,6 +108,9 @@ | |||||||
|     <ClCompile Include="hle\mrc.cpp"> |     <ClCompile Include="hle\mrc.cpp"> | ||||||
|       <Filter>hle</Filter> |       <Filter>hle</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="arm\disassembler\load_symbol_map.cpp"> | ||||||
|  |       <Filter>arm\disassembler</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="arm\disassembler\arm_disasm.h"> |     <ClInclude Include="arm\disassembler\arm_disasm.h"> | ||||||
| @@ -211,6 +214,9 @@ | |||||||
|     <ClInclude Include="hle\mrc.h"> |     <ClInclude Include="hle\mrc.h"> | ||||||
|       <Filter>hle</Filter> |       <Filter>hle</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="arm\disassembler\load_symbol_map.h"> | ||||||
|  |       <Filter>arm\disassembler</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <Text Include="CMakeLists.txt" /> |     <Text Include="CMakeLists.txt" /> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user