mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Add symbols map
This commit is contained in:
		
							parent
							
								
									ec19c679d7
								
							
						
					
					
						commit
						d046cfbba1
					
				
					 4 changed files with 100 additions and 0 deletions
				
			
		|  | @ -186,6 +186,7 @@ | |||
|     <ClInclude Include="std_thread.h" /> | ||||
|     <ClInclude Include="string_util.h" /> | ||||
|     <ClInclude Include="swap.h" /> | ||||
|     <ClInclude Include="symbols.h" /> | ||||
|     <ClInclude Include="thread.h" /> | ||||
|     <ClInclude Include="thunk.h" /> | ||||
|     <ClInclude Include="timer.h" /> | ||||
|  | @ -205,6 +206,7 @@ | |||
|     <ClCompile Include="misc.cpp" /> | ||||
|     <ClCompile Include="msg_handler.cpp" /> | ||||
|     <ClCompile Include="string_util.cpp" /> | ||||
|     <ClCompile Include="symbols.cpp" /> | ||||
|     <ClCompile Include="thread.cpp" /> | ||||
|     <ClCompile Include="timer.cpp" /> | ||||
|     <ClCompile Include="utf8.cpp" /> | ||||
|  |  | |||
|  | @ -37,6 +37,7 @@ | |||
|     <ClInclude Include="thunk.h" /> | ||||
|     <ClInclude Include="timer.h" /> | ||||
|     <ClInclude Include="utf8.h" /> | ||||
|     <ClInclude Include="symbols.h" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="break_points.cpp" /> | ||||
|  | @ -56,6 +57,7 @@ | |||
|     <ClCompile Include="timer.cpp" /> | ||||
|     <ClCompile Include="utf8.cpp" /> | ||||
|     <ClCompile Include="version.cpp" /> | ||||
|     <ClCompile Include="symbols.cpp" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Text Include="CMakeLists.txt" /> | ||||
|  |  | |||
							
								
								
									
										57
									
								
								src/common/symbols.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/common/symbols.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | |||
| // Copyright 2014 Citra Emulator Project
 | ||||
| // Licensed under GPLv2
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/symbols.h" | ||||
| 
 | ||||
| TSymbolsMap g_symbols; | ||||
| 
 | ||||
| namespace Symbols | ||||
| { | ||||
|     bool HasSymbol(u32 _address) | ||||
|     { | ||||
|         return g_symbols.find(_address) != g_symbols.end(); | ||||
|     } | ||||
| 
 | ||||
|     void Add(u32 _address, const std::string& _name, u32 _size, u32 _type) | ||||
|     { | ||||
|         if (!HasSymbol(_address)) | ||||
|         { | ||||
|             TSymbol symbol; | ||||
|             symbol.address = _address; | ||||
|             symbol.name = _name; | ||||
|             symbol.size = _size; | ||||
|             symbol.type = _type; | ||||
| 
 | ||||
|             g_symbols.insert(TSymbolsPair(_address, symbol)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     TSymbol GetSymbol(u32 _address) | ||||
|     { | ||||
|         TSymbolsMap::iterator foundSymbolItr; | ||||
|         TSymbol symbol; | ||||
|          | ||||
|         foundSymbolItr = g_symbols.find(_address); | ||||
|         if (foundSymbolItr != g_symbols.end()) | ||||
|         { | ||||
|             symbol = (*foundSymbolItr).second; | ||||
|         } | ||||
| 
 | ||||
|         return symbol; | ||||
|     } | ||||
|     const std::string& GetName(u32 _address) | ||||
|     { | ||||
|         return GetSymbol(_address).name; | ||||
|     } | ||||
|      | ||||
|     void Remove(u32 _address) | ||||
|     { | ||||
|         g_symbols.erase(_address); | ||||
|     } | ||||
| 
 | ||||
|     void Clear() | ||||
|     { | ||||
|         g_symbols.clear(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										39
									
								
								src/common/symbols.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/common/symbols.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | |||
| // Copyright 2014 Citra Emulator Project
 | ||||
| // Licensed under GPLv2
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <map> | ||||
| 
 | ||||
| #include "common/common.h" | ||||
| 
 | ||||
| class DebugInterface; | ||||
| 
 | ||||
| struct TSymbol | ||||
| { | ||||
|     TSymbol() : | ||||
|         address(0), | ||||
|         size(0), | ||||
|         type(0) | ||||
|     {} | ||||
|     u32     address; | ||||
|     std::string name; | ||||
|     u32     size; | ||||
|     u32     type; | ||||
| }; | ||||
| 
 | ||||
| typedef std::map<u32, TSymbol> TSymbolsMap; | ||||
| typedef std::pair<u32, TSymbol> TSymbolsPair; | ||||
| 
 | ||||
| namespace Symbols | ||||
| { | ||||
|     bool HasSymbol(u32 _address); | ||||
| 
 | ||||
|     void Add(u32 _address, const std::string& _name, u32 _size, u32 _type); | ||||
|     TSymbol GetSymbol(u32 _address); | ||||
|     const std::string& GetName(u32 _address); | ||||
|     void Remove(u32 _address); | ||||
|     void Clear(); | ||||
| }; | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue