mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40: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="std_thread.h" /> | ||||||
|     <ClInclude Include="string_util.h" /> |     <ClInclude Include="string_util.h" /> | ||||||
|     <ClInclude Include="swap.h" /> |     <ClInclude Include="swap.h" /> | ||||||
|  |     <ClInclude Include="symbols.h" /> | ||||||
|     <ClInclude Include="thread.h" /> |     <ClInclude Include="thread.h" /> | ||||||
|     <ClInclude Include="thunk.h" /> |     <ClInclude Include="thunk.h" /> | ||||||
|     <ClInclude Include="timer.h" /> |     <ClInclude Include="timer.h" /> | ||||||
|  | @ -205,6 +206,7 @@ | ||||||
|     <ClCompile Include="misc.cpp" /> |     <ClCompile Include="misc.cpp" /> | ||||||
|     <ClCompile Include="msg_handler.cpp" /> |     <ClCompile Include="msg_handler.cpp" /> | ||||||
|     <ClCompile Include="string_util.cpp" /> |     <ClCompile Include="string_util.cpp" /> | ||||||
|  |     <ClCompile Include="symbols.cpp" /> | ||||||
|     <ClCompile Include="thread.cpp" /> |     <ClCompile Include="thread.cpp" /> | ||||||
|     <ClCompile Include="timer.cpp" /> |     <ClCompile Include="timer.cpp" /> | ||||||
|     <ClCompile Include="utf8.cpp" /> |     <ClCompile Include="utf8.cpp" /> | ||||||
|  |  | ||||||
|  | @ -37,6 +37,7 @@ | ||||||
|     <ClInclude Include="thunk.h" /> |     <ClInclude Include="thunk.h" /> | ||||||
|     <ClInclude Include="timer.h" /> |     <ClInclude Include="timer.h" /> | ||||||
|     <ClInclude Include="utf8.h" /> |     <ClInclude Include="utf8.h" /> | ||||||
|  |     <ClInclude Include="symbols.h" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClCompile Include="break_points.cpp" /> |     <ClCompile Include="break_points.cpp" /> | ||||||
|  | @ -56,6 +57,7 @@ | ||||||
|     <ClCompile Include="timer.cpp" /> |     <ClCompile Include="timer.cpp" /> | ||||||
|     <ClCompile Include="utf8.cpp" /> |     <ClCompile Include="utf8.cpp" /> | ||||||
|     <ClCompile Include="version.cpp" /> |     <ClCompile Include="version.cpp" /> | ||||||
|  |     <ClCompile Include="symbols.cpp" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <Text Include="CMakeLists.txt" /> |     <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