16bff2d51SMed Ismail Bennanifrom abc import ABCMeta, abstractmethod 26bff2d51SMed Ismail Bennani 36bff2d51SMed Ismail Bennaniimport lldb 46bff2d51SMed Ismail Bennaniimport json, struct, signal 56bff2d51SMed Ismail Bennani 66bff2d51SMed Ismail Bennani 76bff2d51SMed Ismail Bennaniclass ScriptedProcess(metaclass=ABCMeta): 86bff2d51SMed Ismail Bennani """ 96bff2d51SMed Ismail Bennani The base class for a scripted process. 106bff2d51SMed Ismail Bennani 116bff2d51SMed Ismail Bennani Most of the base class methods are `@abstractmethod` that need to be 126bff2d51SMed Ismail Bennani overwritten by the inheriting class. 136bff2d51SMed Ismail Bennani """ 146bff2d51SMed Ismail Bennani 156bff2d51SMed Ismail Bennani capabilities = None 166bff2d51SMed Ismail Bennani memory_regions = None 176bff2d51SMed Ismail Bennani loaded_images = None 186bff2d51SMed Ismail Bennani threads = None 196bff2d51SMed Ismail Bennani metadata = None 206bff2d51SMed Ismail Bennani 216bff2d51SMed Ismail Bennani @abstractmethod 226bff2d51SMed Ismail Bennani def __init__(self, exe_ctx, args): 236bff2d51SMed Ismail Bennani """Construct a scripted process. 246bff2d51SMed Ismail Bennani 256bff2d51SMed Ismail Bennani Args: 266bff2d51SMed Ismail Bennani exe_ctx (lldb.SBExecutionContext): The execution context for the scripted process. 276bff2d51SMed Ismail Bennani args (lldb.SBStructuredData): A Dictionary holding arbitrary 286bff2d51SMed Ismail Bennani key/value pairs used by the scripted process. 296bff2d51SMed Ismail Bennani """ 306bff2d51SMed Ismail Bennani target = None 316bff2d51SMed Ismail Bennani self.target = None 326bff2d51SMed Ismail Bennani self.args = None 336bff2d51SMed Ismail Bennani self.arch = None 346bff2d51SMed Ismail Bennani if isinstance(exe_ctx, lldb.SBExecutionContext): 356bff2d51SMed Ismail Bennani target = exe_ctx.target 366bff2d51SMed Ismail Bennani if isinstance(target, lldb.SBTarget) and target.IsValid(): 376bff2d51SMed Ismail Bennani self.target = target 386bff2d51SMed Ismail Bennani triple = self.target.triple 396bff2d51SMed Ismail Bennani if triple: 406bff2d51SMed Ismail Bennani self.arch = triple.split("-")[0] 416bff2d51SMed Ismail Bennani self.dbg = target.GetDebugger() 426bff2d51SMed Ismail Bennani if isinstance(args, lldb.SBStructuredData) and args.IsValid(): 436bff2d51SMed Ismail Bennani self.args = args 446bff2d51SMed Ismail Bennani self.threads = {} 456bff2d51SMed Ismail Bennani self.loaded_images = [] 466bff2d51SMed Ismail Bennani self.metadata = {} 476bff2d51SMed Ismail Bennani self.capabilities = {} 486bff2d51SMed Ismail Bennani self.pid = 42 496bff2d51SMed Ismail Bennani 506bff2d51SMed Ismail Bennani def get_capabilities(self): 516bff2d51SMed Ismail Bennani """Get a dictionary containing the process capabilities. 526bff2d51SMed Ismail Bennani 536bff2d51SMed Ismail Bennani Returns: 546bff2d51SMed Ismail Bennani Dict[str:bool]: The dictionary of capability, with the capability 556bff2d51SMed Ismail Bennani name as the key and a boolean flag as the value. 566bff2d51SMed Ismail Bennani The dictionary can be empty. 576bff2d51SMed Ismail Bennani """ 586bff2d51SMed Ismail Bennani return self.capabilities 596bff2d51SMed Ismail Bennani 606bff2d51SMed Ismail Bennani def get_memory_region_containing_address(self, addr): 616bff2d51SMed Ismail Bennani """Get the memory region for the scripted process, containing a 626bff2d51SMed Ismail Bennani specific address. 636bff2d51SMed Ismail Bennani 646bff2d51SMed Ismail Bennani Args: 656bff2d51SMed Ismail Bennani addr (int): Address to look for in the scripted process memory 666bff2d51SMed Ismail Bennani regions. 676bff2d51SMed Ismail Bennani 686bff2d51SMed Ismail Bennani Returns: 696bff2d51SMed Ismail Bennani lldb.SBMemoryRegionInfo: The memory region containing the address. 706bff2d51SMed Ismail Bennani None if out of bounds. 716bff2d51SMed Ismail Bennani """ 726bff2d51SMed Ismail Bennani return None 736bff2d51SMed Ismail Bennani 746bff2d51SMed Ismail Bennani def get_threads_info(self): 756bff2d51SMed Ismail Bennani """Get the dictionary describing the process' Scripted Threads. 766bff2d51SMed Ismail Bennani 776bff2d51SMed Ismail Bennani Returns: 786bff2d51SMed Ismail Bennani Dict: The dictionary of threads, with the thread ID as the key and 796bff2d51SMed Ismail Bennani a Scripted Thread instance as the value. 806bff2d51SMed Ismail Bennani The dictionary can be empty. 816bff2d51SMed Ismail Bennani """ 826bff2d51SMed Ismail Bennani return self.threads 836bff2d51SMed Ismail Bennani 846bff2d51SMed Ismail Bennani @abstractmethod 856bff2d51SMed Ismail Bennani def read_memory_at_address(self, addr, size, error): 866bff2d51SMed Ismail Bennani """Get a memory buffer from the scripted process at a certain address, 876bff2d51SMed Ismail Bennani of a certain size. 886bff2d51SMed Ismail Bennani 896bff2d51SMed Ismail Bennani Args: 906bff2d51SMed Ismail Bennani addr (int): Address from which we should start reading. 916bff2d51SMed Ismail Bennani size (int): Size of the memory to read. 926bff2d51SMed Ismail Bennani error (lldb.SBError): Error object. 936bff2d51SMed Ismail Bennani 946bff2d51SMed Ismail Bennani Returns: 956bff2d51SMed Ismail Bennani lldb.SBData: An `lldb.SBData` buffer with the target byte size and 966bff2d51SMed Ismail Bennani byte order storing the memory read. 976bff2d51SMed Ismail Bennani """ 986bff2d51SMed Ismail Bennani pass 996bff2d51SMed Ismail Bennani 1006bff2d51SMed Ismail Bennani def write_memory_at_address(self, addr, data, error): 1016bff2d51SMed Ismail Bennani """Write a buffer to the scripted process memory. 1026bff2d51SMed Ismail Bennani 1036bff2d51SMed Ismail Bennani Args: 1046bff2d51SMed Ismail Bennani addr (int): Address from which we should start reading. 10559f4267cSMed Ismail Bennani data (lldb.SBData): An `lldb.SBData` buffer to write to the process 10659f4267cSMed Ismail Bennani memory. 1076bff2d51SMed Ismail Bennani error (lldb.SBError): Error object. 1086bff2d51SMed Ismail Bennani 1096bff2d51SMed Ismail Bennani Returns: 1106bff2d51SMed Ismail Bennani size (int): Size of the memory to read. 1116bff2d51SMed Ismail Bennani """ 1126bff2d51SMed Ismail Bennani error.SetErrorString( 1136bff2d51SMed Ismail Bennani "%s doesn't support memory writes." % self.__class__.__name__ 1146bff2d51SMed Ismail Bennani ) 1156bff2d51SMed Ismail Bennani return 0 1166bff2d51SMed Ismail Bennani 1176bff2d51SMed Ismail Bennani def get_loaded_images(self): 1186bff2d51SMed Ismail Bennani """Get the list of loaded images for the scripted process. 1196bff2d51SMed Ismail Bennani 12059f4267cSMed Ismail Bennani .. code-block:: python 12159f4267cSMed Ismail Bennani 1226bff2d51SMed Ismail Bennani scripted_image = { 1236bff2d51SMed Ismail Bennani uuid = "c6ea2b64-f77c-3d27-9528-74f507b9078b", 1246bff2d51SMed Ismail Bennani path = "/usr/lib/dyld" 1256bff2d51SMed Ismail Bennani load_addr = 0xbadc0ffee 1266bff2d51SMed Ismail Bennani } 1276bff2d51SMed Ismail Bennani 1286bff2d51SMed Ismail Bennani Returns: 1296bff2d51SMed Ismail Bennani List[scripted_image]: A list of `scripted_image` dictionaries 1306bff2d51SMed Ismail Bennani containing for each entry the library UUID or its file path 1316bff2d51SMed Ismail Bennani and its load address. 1326bff2d51SMed Ismail Bennani None if the list is empty. 1336bff2d51SMed Ismail Bennani """ 1346bff2d51SMed Ismail Bennani return self.loaded_images 1356bff2d51SMed Ismail Bennani 1366bff2d51SMed Ismail Bennani def get_process_id(self): 1376bff2d51SMed Ismail Bennani """Get the scripted process identifier. 1386bff2d51SMed Ismail Bennani 1396bff2d51SMed Ismail Bennani Returns: 1406bff2d51SMed Ismail Bennani int: The scripted process identifier. 1416bff2d51SMed Ismail Bennani """ 1426bff2d51SMed Ismail Bennani return self.pid 1436bff2d51SMed Ismail Bennani 1446bff2d51SMed Ismail Bennani def launch(self): 1456bff2d51SMed Ismail Bennani """Simulate the scripted process launch. 1466bff2d51SMed Ismail Bennani 1476bff2d51SMed Ismail Bennani Returns: 1486bff2d51SMed Ismail Bennani lldb.SBError: An `lldb.SBError` with error code 0. 1496bff2d51SMed Ismail Bennani """ 1506bff2d51SMed Ismail Bennani return lldb.SBError() 1516bff2d51SMed Ismail Bennani 1526bff2d51SMed Ismail Bennani def attach(self, attach_info): 1536bff2d51SMed Ismail Bennani """Simulate the scripted process attach. 1546bff2d51SMed Ismail Bennani 1556bff2d51SMed Ismail Bennani Args: 1566bff2d51SMed Ismail Bennani attach_info (lldb.SBAttachInfo): The information related to the 1576bff2d51SMed Ismail Bennani process we're attaching to. 1586bff2d51SMed Ismail Bennani 1596bff2d51SMed Ismail Bennani Returns: 1606bff2d51SMed Ismail Bennani lldb.SBError: An `lldb.SBError` with error code 0. 1616bff2d51SMed Ismail Bennani """ 1626bff2d51SMed Ismail Bennani return lldb.SBError() 1636bff2d51SMed Ismail Bennani 1646bff2d51SMed Ismail Bennani def resume(self, should_stop=True): 1656bff2d51SMed Ismail Bennani """Simulate the scripted process resume. 1666bff2d51SMed Ismail Bennani 1676bff2d51SMed Ismail Bennani Args: 1686bff2d51SMed Ismail Bennani should_stop (bool): If True, resume will also force the process 1696bff2d51SMed Ismail Bennani state to stopped after running it. 1706bff2d51SMed Ismail Bennani 1716bff2d51SMed Ismail Bennani Returns: 1726bff2d51SMed Ismail Bennani lldb.SBError: An `lldb.SBError` with error code 0. 1736bff2d51SMed Ismail Bennani """ 1746bff2d51SMed Ismail Bennani process = self.target.GetProcess() 1756bff2d51SMed Ismail Bennani if not process: 1766bff2d51SMed Ismail Bennani error = lldb.SBError() 1776bff2d51SMed Ismail Bennani error.SetErrorString("Invalid process.") 1786bff2d51SMed Ismail Bennani return error 1796bff2d51SMed Ismail Bennani 1806bff2d51SMed Ismail Bennani process.ForceScriptedState(lldb.eStateRunning) 1816bff2d51SMed Ismail Bennani if should_stop: 1826bff2d51SMed Ismail Bennani process.ForceScriptedState(lldb.eStateStopped) 1836bff2d51SMed Ismail Bennani return lldb.SBError() 1846bff2d51SMed Ismail Bennani 1856bff2d51SMed Ismail Bennani @abstractmethod 1866bff2d51SMed Ismail Bennani def is_alive(self): 1876bff2d51SMed Ismail Bennani """Check if the scripted process is alive. 1886bff2d51SMed Ismail Bennani 1896bff2d51SMed Ismail Bennani Returns: 1906bff2d51SMed Ismail Bennani bool: True if scripted process is alive. False otherwise. 1916bff2d51SMed Ismail Bennani """ 1926bff2d51SMed Ismail Bennani pass 1936bff2d51SMed Ismail Bennani 1946bff2d51SMed Ismail Bennani @abstractmethod 1956bff2d51SMed Ismail Bennani def get_scripted_thread_plugin(self): 1966bff2d51SMed Ismail Bennani """Get scripted thread plugin name. 1976bff2d51SMed Ismail Bennani 1986bff2d51SMed Ismail Bennani Returns: 1996bff2d51SMed Ismail Bennani str: Name of the scripted thread plugin. 2006bff2d51SMed Ismail Bennani """ 2016bff2d51SMed Ismail Bennani return None 2026bff2d51SMed Ismail Bennani 2036bff2d51SMed Ismail Bennani def get_process_metadata(self): 2046bff2d51SMed Ismail Bennani """Get some metadata for the scripted process. 2056bff2d51SMed Ismail Bennani 2066bff2d51SMed Ismail Bennani Returns: 2076bff2d51SMed Ismail Bennani Dict: A dictionary containing metadata for the scripted process. 2086bff2d51SMed Ismail Bennani None if the process as no metadata. 2096bff2d51SMed Ismail Bennani """ 2106bff2d51SMed Ismail Bennani return self.metadata 2116bff2d51SMed Ismail Bennani 2126bff2d51SMed Ismail Bennani def create_breakpoint(self, addr, error): 2136bff2d51SMed Ismail Bennani """Create a breakpoint in the scripted process from an address. 2146bff2d51SMed Ismail Bennani This is mainly used with interactive scripted process debugging. 2156bff2d51SMed Ismail Bennani 2166bff2d51SMed Ismail Bennani Args: 2176bff2d51SMed Ismail Bennani addr (int): Address at which the breakpoint should be set. 2186bff2d51SMed Ismail Bennani error (lldb.SBError): Error object. 2196bff2d51SMed Ismail Bennani 2206bff2d51SMed Ismail Bennani Returns: 2216bff2d51SMed Ismail Bennani SBBreakpoint: A valid breakpoint object that was created a the specified 2226bff2d51SMed Ismail Bennani address. None if the breakpoint creation failed. 2236bff2d51SMed Ismail Bennani """ 2246bff2d51SMed Ismail Bennani error.SetErrorString( 2256bff2d51SMed Ismail Bennani "%s doesn't support creating breakpoints." % self.__class__.__name__ 2266bff2d51SMed Ismail Bennani ) 2276bff2d51SMed Ismail Bennani return False 2286bff2d51SMed Ismail Bennani 2296bff2d51SMed Ismail Bennani 2306bff2d51SMed Ismail Bennaniclass ScriptedThread(metaclass=ABCMeta): 2316bff2d51SMed Ismail Bennani """ 2326bff2d51SMed Ismail Bennani The base class for a scripted thread. 2336bff2d51SMed Ismail Bennani 2346bff2d51SMed Ismail Bennani Most of the base class methods are `@abstractmethod` that need to be 2356bff2d51SMed Ismail Bennani overwritten by the inheriting class. 2366bff2d51SMed Ismail Bennani """ 2376bff2d51SMed Ismail Bennani 2386bff2d51SMed Ismail Bennani @abstractmethod 239ec456ba9SMed Ismail Bennani def __init__(self, process, args): 2406bff2d51SMed Ismail Bennani """Construct a scripted thread. 2416bff2d51SMed Ismail Bennani 2426bff2d51SMed Ismail Bennani Args: 243ec456ba9SMed Ismail Bennani process (ScriptedProcess/lldb.SBProcess): The process owning this thread. 2446bff2d51SMed Ismail Bennani args (lldb.SBStructuredData): A Dictionary holding arbitrary 2456bff2d51SMed Ismail Bennani key/value pairs used by the scripted thread. 2466bff2d51SMed Ismail Bennani """ 2476bff2d51SMed Ismail Bennani self.target = None 248ec456ba9SMed Ismail Bennani self.originating_process = None 2496bff2d51SMed Ismail Bennani self.process = None 2506bff2d51SMed Ismail Bennani self.args = None 2516bff2d51SMed Ismail Bennani self.idx = 0 2526bff2d51SMed Ismail Bennani self.tid = 0 2536bff2d51SMed Ismail Bennani self.idx = None 2546bff2d51SMed Ismail Bennani self.name = None 2556bff2d51SMed Ismail Bennani self.queue = None 2566bff2d51SMed Ismail Bennani self.state = None 2576bff2d51SMed Ismail Bennani self.stop_reason = None 2586bff2d51SMed Ismail Bennani self.register_info = None 2596bff2d51SMed Ismail Bennani self.register_ctx = {} 2606bff2d51SMed Ismail Bennani self.frames = [] 2616bff2d51SMed Ismail Bennani self.extended_info = [] 2626bff2d51SMed Ismail Bennani 263ec456ba9SMed Ismail Bennani if ( 264ec456ba9SMed Ismail Bennani isinstance(process, ScriptedProcess) 265ec456ba9SMed Ismail Bennani or isinstance(process, lldb.SBProcess) 266ec456ba9SMed Ismail Bennani and process.IsValid() 267ec456ba9SMed Ismail Bennani ): 268ec456ba9SMed Ismail Bennani self.target = process.target 269ec456ba9SMed Ismail Bennani self.originating_process = process 2706bff2d51SMed Ismail Bennani self.process = self.target.GetProcess() 2716bff2d51SMed Ismail Bennani self.get_register_info() 2726bff2d51SMed Ismail Bennani 2736bff2d51SMed Ismail Bennani def get_thread_idx(self): 2746bff2d51SMed Ismail Bennani """Get the scripted thread index. 2756bff2d51SMed Ismail Bennani 2766bff2d51SMed Ismail Bennani Returns: 2776bff2d51SMed Ismail Bennani int: The index of the scripted thread in the scripted process. 2786bff2d51SMed Ismail Bennani """ 2796bff2d51SMed Ismail Bennani return self.idx 2806bff2d51SMed Ismail Bennani 2816bff2d51SMed Ismail Bennani def get_thread_id(self): 2826bff2d51SMed Ismail Bennani """Get the scripted thread identifier. 2836bff2d51SMed Ismail Bennani 2846bff2d51SMed Ismail Bennani Returns: 2856bff2d51SMed Ismail Bennani int: The identifier of the scripted thread. 2866bff2d51SMed Ismail Bennani """ 2876bff2d51SMed Ismail Bennani return self.tid 2886bff2d51SMed Ismail Bennani 2896bff2d51SMed Ismail Bennani def get_name(self): 2906bff2d51SMed Ismail Bennani """Get the scripted thread name. 2916bff2d51SMed Ismail Bennani 2926bff2d51SMed Ismail Bennani Returns: 2936bff2d51SMed Ismail Bennani str: The name of the scripted thread. 2946bff2d51SMed Ismail Bennani """ 2956bff2d51SMed Ismail Bennani return self.name 2966bff2d51SMed Ismail Bennani 2976bff2d51SMed Ismail Bennani def get_state(self): 2986bff2d51SMed Ismail Bennani """Get the scripted thread state type. 2996bff2d51SMed Ismail Bennani 30059f4267cSMed Ismail Bennani .. code-block:: python 30159f4267cSMed Ismail Bennani 3026bff2d51SMed Ismail Bennani eStateStopped, ///< Process or thread is stopped and can be examined. 3036bff2d51SMed Ismail Bennani eStateRunning, ///< Process or thread is running and can't be examined. 30459f4267cSMed Ismail Bennani eStateStepping, ///< Process or thread is in the process of stepping and 30559f4267cSMed Ismail Bennani /// can not be examined. 3066bff2d51SMed Ismail Bennani eStateCrashed, ///< Process or thread has crashed and can be examined. 3076bff2d51SMed Ismail Bennani 3086bff2d51SMed Ismail Bennani Returns: 3096bff2d51SMed Ismail Bennani int: The state type of the scripted thread. 3106bff2d51SMed Ismail Bennani Returns lldb.eStateStopped by default. 3116bff2d51SMed Ismail Bennani """ 3126bff2d51SMed Ismail Bennani return lldb.eStateStopped 3136bff2d51SMed Ismail Bennani 3146bff2d51SMed Ismail Bennani def get_queue(self): 3156bff2d51SMed Ismail Bennani """Get the scripted thread associated queue name. 3166bff2d51SMed Ismail Bennani This method is optional. 3176bff2d51SMed Ismail Bennani 3186bff2d51SMed Ismail Bennani Returns: 3196bff2d51SMed Ismail Bennani str: The queue name associated with the scripted thread. 3206bff2d51SMed Ismail Bennani """ 3216bff2d51SMed Ismail Bennani return self.queue 3226bff2d51SMed Ismail Bennani 3236bff2d51SMed Ismail Bennani @abstractmethod 3246bff2d51SMed Ismail Bennani def get_stop_reason(self): 3256bff2d51SMed Ismail Bennani """Get the dictionary describing the stop reason type with some data. 3266bff2d51SMed Ismail Bennani This method is optional. 3276bff2d51SMed Ismail Bennani 3286bff2d51SMed Ismail Bennani Returns: 3296bff2d51SMed Ismail Bennani Dict: The dictionary holding the stop reason type and the possibly 3306bff2d51SMed Ismail Bennani the stop reason data. 3316bff2d51SMed Ismail Bennani """ 3326bff2d51SMed Ismail Bennani pass 3336bff2d51SMed Ismail Bennani 3346bff2d51SMed Ismail Bennani def get_stackframes(self): 3356bff2d51SMed Ismail Bennani """Get the list of stack frames for the scripted thread. 3366bff2d51SMed Ismail Bennani 33759f4267cSMed Ismail Bennani .. code-block:: python 33859f4267cSMed Ismail Bennani 3396bff2d51SMed Ismail Bennani scripted_frame = { 3406bff2d51SMed Ismail Bennani idx = 0, 3416bff2d51SMed Ismail Bennani pc = 0xbadc0ffee 3426bff2d51SMed Ismail Bennani } 3436bff2d51SMed Ismail Bennani 3446bff2d51SMed Ismail Bennani Returns: 3456bff2d51SMed Ismail Bennani List[scripted_frame]: A list of `scripted_frame` dictionaries 3466bff2d51SMed Ismail Bennani containing at least for each entry, the frame index and 3476bff2d51SMed Ismail Bennani the program counter value for that frame. 3486bff2d51SMed Ismail Bennani The list can be empty. 3496bff2d51SMed Ismail Bennani """ 3506bff2d51SMed Ismail Bennani return self.frames 3516bff2d51SMed Ismail Bennani 3526bff2d51SMed Ismail Bennani def get_register_info(self): 3536bff2d51SMed Ismail Bennani if self.register_info is None: 3546bff2d51SMed Ismail Bennani self.register_info = dict() 355ec456ba9SMed Ismail Bennani if self.originating_process.arch == "x86_64": 3566bff2d51SMed Ismail Bennani self.register_info["sets"] = ["General Purpose Registers"] 3576bff2d51SMed Ismail Bennani self.register_info["registers"] = INTEL64_GPR 358*fda4a324SJason Molenda elif ( 359*fda4a324SJason Molenda "arm64" in self.originating_process.arch 360*fda4a324SJason Molenda or self.originating_process.arch == "aarch64" 361*fda4a324SJason Molenda ): 3626bff2d51SMed Ismail Bennani self.register_info["sets"] = ["General Purpose Registers"] 3636bff2d51SMed Ismail Bennani self.register_info["registers"] = ARM64_GPR 3646bff2d51SMed Ismail Bennani else: 365ec456ba9SMed Ismail Bennani raise ValueError("Unknown architecture", self.originating_process.arch) 3666bff2d51SMed Ismail Bennani return self.register_info 3676bff2d51SMed Ismail Bennani 3686bff2d51SMed Ismail Bennani @abstractmethod 3696bff2d51SMed Ismail Bennani def get_register_context(self): 3706bff2d51SMed Ismail Bennani """Get the scripted thread register context 3716bff2d51SMed Ismail Bennani 3726bff2d51SMed Ismail Bennani Returns: 3736bff2d51SMed Ismail Bennani str: A byte representing all register's value. 3746bff2d51SMed Ismail Bennani """ 3756bff2d51SMed Ismail Bennani pass 3766bff2d51SMed Ismail Bennani 3776bff2d51SMed Ismail Bennani def get_extended_info(self): 3786bff2d51SMed Ismail Bennani """Get scripted thread extended information. 3796bff2d51SMed Ismail Bennani 3806bff2d51SMed Ismail Bennani Returns: 3816bff2d51SMed Ismail Bennani List: A list containing the extended information for the scripted process. 3826bff2d51SMed Ismail Bennani None if the thread as no extended information. 3836bff2d51SMed Ismail Bennani """ 3846bff2d51SMed Ismail Bennani return self.extended_info 3856bff2d51SMed Ismail Bennani 3866bff2d51SMed Ismail Bennani 3876bff2d51SMed Ismail Bennaniclass PassthroughScriptedProcess(ScriptedProcess): 3886bff2d51SMed Ismail Bennani driving_target = None 3896bff2d51SMed Ismail Bennani driving_process = None 3906bff2d51SMed Ismail Bennani 3916bff2d51SMed Ismail Bennani def __init__(self, exe_ctx, args, launched_driving_process=True): 3926bff2d51SMed Ismail Bennani super().__init__(exe_ctx, args) 3936bff2d51SMed Ismail Bennani 3946bff2d51SMed Ismail Bennani self.driving_target = None 3956bff2d51SMed Ismail Bennani self.driving_process = None 3966bff2d51SMed Ismail Bennani 3976bff2d51SMed Ismail Bennani self.driving_target_idx = args.GetValueForKey("driving_target_idx") 3986bff2d51SMed Ismail Bennani if self.driving_target_idx and self.driving_target_idx.IsValid(): 3996bff2d51SMed Ismail Bennani idx = self.driving_target_idx.GetUnsignedIntegerValue(42) 4006bff2d51SMed Ismail Bennani self.driving_target = self.target.GetDebugger().GetTargetAtIndex(idx) 4016bff2d51SMed Ismail Bennani 4026bff2d51SMed Ismail Bennani if launched_driving_process: 4036bff2d51SMed Ismail Bennani self.driving_process = self.driving_target.GetProcess() 4046bff2d51SMed Ismail Bennani for driving_thread in self.driving_process: 4056bff2d51SMed Ismail Bennani structured_data = lldb.SBStructuredData() 4066bff2d51SMed Ismail Bennani structured_data.SetFromJSON( 4076bff2d51SMed Ismail Bennani json.dumps( 4086bff2d51SMed Ismail Bennani { 4096bff2d51SMed Ismail Bennani "driving_target_idx": idx, 4106bff2d51SMed Ismail Bennani "thread_idx": driving_thread.GetIndexID(), 4116bff2d51SMed Ismail Bennani } 4126bff2d51SMed Ismail Bennani ) 4136bff2d51SMed Ismail Bennani ) 4146bff2d51SMed Ismail Bennani 415*fda4a324SJason Molenda self.threads[driving_thread.GetThreadID()] = ( 416*fda4a324SJason Molenda PassthroughScriptedThread(self, structured_data) 417*fda4a324SJason Molenda ) 4186bff2d51SMed Ismail Bennani 4196bff2d51SMed Ismail Bennani for module in self.driving_target.modules: 4206bff2d51SMed Ismail Bennani path = module.file.fullpath 4216bff2d51SMed Ismail Bennani load_addr = module.GetObjectFileHeaderAddress().GetLoadAddress( 4226bff2d51SMed Ismail Bennani self.driving_target 4236bff2d51SMed Ismail Bennani ) 4246bff2d51SMed Ismail Bennani self.loaded_images.append({"path": path, "load_addr": load_addr}) 4256bff2d51SMed Ismail Bennani 4266bff2d51SMed Ismail Bennani def get_memory_region_containing_address(self, addr): 4276bff2d51SMed Ismail Bennani mem_region = lldb.SBMemoryRegionInfo() 4286bff2d51SMed Ismail Bennani error = self.driving_process.GetMemoryRegionInfo(addr, mem_region) 4296bff2d51SMed Ismail Bennani if error.Fail(): 4306bff2d51SMed Ismail Bennani return None 4316bff2d51SMed Ismail Bennani return mem_region 4326bff2d51SMed Ismail Bennani 4336bff2d51SMed Ismail Bennani def read_memory_at_address(self, addr, size, error): 4346bff2d51SMed Ismail Bennani data = lldb.SBData() 4356bff2d51SMed Ismail Bennani bytes_read = self.driving_process.ReadMemory(addr, size, error) 4366bff2d51SMed Ismail Bennani 4376bff2d51SMed Ismail Bennani if error.Fail(): 4386bff2d51SMed Ismail Bennani return data 4396bff2d51SMed Ismail Bennani 4406bff2d51SMed Ismail Bennani data.SetDataWithOwnership( 4416bff2d51SMed Ismail Bennani error, 4426bff2d51SMed Ismail Bennani bytes_read, 4436bff2d51SMed Ismail Bennani self.driving_target.GetByteOrder(), 4446bff2d51SMed Ismail Bennani self.driving_target.GetAddressByteSize(), 4456bff2d51SMed Ismail Bennani ) 4466bff2d51SMed Ismail Bennani 4476bff2d51SMed Ismail Bennani return data 4486bff2d51SMed Ismail Bennani 4496bff2d51SMed Ismail Bennani def write_memory_at_address(self, addr, data, error): 4506bff2d51SMed Ismail Bennani return self.driving_process.WriteMemory( 4516bff2d51SMed Ismail Bennani addr, bytearray(data.uint8.all()), error 4526bff2d51SMed Ismail Bennani ) 4536bff2d51SMed Ismail Bennani 4546bff2d51SMed Ismail Bennani def get_process_id(self): 4556bff2d51SMed Ismail Bennani return self.driving_process.GetProcessID() 4566bff2d51SMed Ismail Bennani 4576bff2d51SMed Ismail Bennani def is_alive(self): 4586bff2d51SMed Ismail Bennani return True 4596bff2d51SMed Ismail Bennani 4606bff2d51SMed Ismail Bennani def get_scripted_thread_plugin(self): 4616bff2d51SMed Ismail Bennani return f"{PassthroughScriptedThread.__module__}.{PassthroughScriptedThread.__name__}" 4626bff2d51SMed Ismail Bennani 4636bff2d51SMed Ismail Bennani 4646bff2d51SMed Ismail Bennaniclass PassthroughScriptedThread(ScriptedThread): 4656bff2d51SMed Ismail Bennani def __init__(self, process, args): 4666bff2d51SMed Ismail Bennani super().__init__(process, args) 4676bff2d51SMed Ismail Bennani driving_target_idx = args.GetValueForKey("driving_target_idx") 4686bff2d51SMed Ismail Bennani thread_idx = args.GetValueForKey("thread_idx") 4696bff2d51SMed Ismail Bennani 4706bff2d51SMed Ismail Bennani # TODO: Change to Walrus operator (:=) with oneline if assignment 4716bff2d51SMed Ismail Bennani # Requires python 3.8 4726bff2d51SMed Ismail Bennani val = thread_idx.GetUnsignedIntegerValue() 4736bff2d51SMed Ismail Bennani if val is not None: 4746bff2d51SMed Ismail Bennani self.idx = val 4756bff2d51SMed Ismail Bennani 4766bff2d51SMed Ismail Bennani self.driving_target = None 4776bff2d51SMed Ismail Bennani self.driving_process = None 4786bff2d51SMed Ismail Bennani self.driving_thread = None 4796bff2d51SMed Ismail Bennani 4806bff2d51SMed Ismail Bennani # TODO: Change to Walrus operator (:=) with oneline if assignment 4816bff2d51SMed Ismail Bennani # Requires python 3.8 4826bff2d51SMed Ismail Bennani val = driving_target_idx.GetUnsignedIntegerValue() 4836bff2d51SMed Ismail Bennani if val is not None: 4846bff2d51SMed Ismail Bennani self.driving_target = self.target.GetDebugger().GetTargetAtIndex(val) 4856bff2d51SMed Ismail Bennani self.driving_process = self.driving_target.GetProcess() 4866bff2d51SMed Ismail Bennani self.driving_thread = self.driving_process.GetThreadByIndexID(self.idx) 4876bff2d51SMed Ismail Bennani 4886bff2d51SMed Ismail Bennani if self.driving_thread: 4896bff2d51SMed Ismail Bennani self.id = self.driving_thread.GetThreadID() 4906bff2d51SMed Ismail Bennani 4916bff2d51SMed Ismail Bennani def get_thread_id(self): 4926bff2d51SMed Ismail Bennani return self.id 4936bff2d51SMed Ismail Bennani 4946bff2d51SMed Ismail Bennani def get_name(self): 4956bff2d51SMed Ismail Bennani return f"{PassthroughScriptedThread.__name__}.thread-{self.idx}" 4966bff2d51SMed Ismail Bennani 4976bff2d51SMed Ismail Bennani def get_stop_reason(self): 4986bff2d51SMed Ismail Bennani stop_reason = {"type": lldb.eStopReasonInvalid, "data": {}} 4996bff2d51SMed Ismail Bennani 5006bff2d51SMed Ismail Bennani if ( 5016bff2d51SMed Ismail Bennani self.driving_thread 5026bff2d51SMed Ismail Bennani and self.driving_thread.IsValid() 5036bff2d51SMed Ismail Bennani and self.get_thread_id() == self.driving_thread.GetThreadID() 5046bff2d51SMed Ismail Bennani ): 5056bff2d51SMed Ismail Bennani stop_reason["type"] = lldb.eStopReasonNone 5066bff2d51SMed Ismail Bennani 5076bff2d51SMed Ismail Bennani # TODO: Passthrough stop reason from driving process 5086bff2d51SMed Ismail Bennani if self.driving_thread.GetStopReason() != lldb.eStopReasonNone: 509ec456ba9SMed Ismail Bennani if "arm64" in self.originating_process.arch: 5106bff2d51SMed Ismail Bennani stop_reason["type"] = lldb.eStopReasonException 511*fda4a324SJason Molenda stop_reason["data"]["desc"] = ( 512*fda4a324SJason Molenda self.driving_thread.GetStopDescription(100) 513*fda4a324SJason Molenda ) 514ec456ba9SMed Ismail Bennani elif self.originating_process.arch == "x86_64": 5156bff2d51SMed Ismail Bennani stop_reason["type"] = lldb.eStopReasonSignal 5166bff2d51SMed Ismail Bennani stop_reason["data"]["signal"] = signal.SIGTRAP 5176bff2d51SMed Ismail Bennani else: 5186bff2d51SMed Ismail Bennani stop_reason["type"] = self.driving_thread.GetStopReason() 5196bff2d51SMed Ismail Bennani 5206bff2d51SMed Ismail Bennani return stop_reason 5216bff2d51SMed Ismail Bennani 5226bff2d51SMed Ismail Bennani def get_register_context(self): 5236bff2d51SMed Ismail Bennani if not self.driving_thread or self.driving_thread.GetNumFrames() == 0: 5246bff2d51SMed Ismail Bennani return None 5256bff2d51SMed Ismail Bennani frame = self.driving_thread.GetFrameAtIndex(0) 5266bff2d51SMed Ismail Bennani 5276bff2d51SMed Ismail Bennani GPRs = None 5286bff2d51SMed Ismail Bennani registerSet = frame.registers # Returns an SBValueList. 5296bff2d51SMed Ismail Bennani for regs in registerSet: 5306bff2d51SMed Ismail Bennani if "general purpose" in regs.name.lower(): 5316bff2d51SMed Ismail Bennani GPRs = regs 5326bff2d51SMed Ismail Bennani break 5336bff2d51SMed Ismail Bennani 5346bff2d51SMed Ismail Bennani if not GPRs: 5356bff2d51SMed Ismail Bennani return None 5366bff2d51SMed Ismail Bennani 5376bff2d51SMed Ismail Bennani for reg in GPRs: 5386bff2d51SMed Ismail Bennani self.register_ctx[reg.name] = int(reg.value, base=16) 5396bff2d51SMed Ismail Bennani 5406bff2d51SMed Ismail Bennani return struct.pack(f"{len(self.register_ctx)}Q", *self.register_ctx.values()) 5416bff2d51SMed Ismail Bennani 5426bff2d51SMed Ismail Bennani 5436bff2d51SMed Ismail BennaniARM64_GPR = [ 5446bff2d51SMed Ismail Bennani { 5456bff2d51SMed Ismail Bennani "name": "x0", 5466bff2d51SMed Ismail Bennani "bitsize": 64, 5476bff2d51SMed Ismail Bennani "offset": 0, 5486bff2d51SMed Ismail Bennani "encoding": "uint", 5496bff2d51SMed Ismail Bennani "format": "hex", 5506bff2d51SMed Ismail Bennani "set": 0, 5516bff2d51SMed Ismail Bennani "gcc": 0, 5526bff2d51SMed Ismail Bennani "dwarf": 0, 5536bff2d51SMed Ismail Bennani "generic": "arg0", 5546bff2d51SMed Ismail Bennani "alt-name": "arg0", 5556bff2d51SMed Ismail Bennani }, 5566bff2d51SMed Ismail Bennani { 5576bff2d51SMed Ismail Bennani "name": "x1", 5586bff2d51SMed Ismail Bennani "bitsize": 64, 5596bff2d51SMed Ismail Bennani "offset": 8, 5606bff2d51SMed Ismail Bennani "encoding": "uint", 5616bff2d51SMed Ismail Bennani "format": "hex", 5626bff2d51SMed Ismail Bennani "set": 0, 5636bff2d51SMed Ismail Bennani "gcc": 1, 5646bff2d51SMed Ismail Bennani "dwarf": 1, 5656bff2d51SMed Ismail Bennani "generic": "arg1", 5666bff2d51SMed Ismail Bennani "alt-name": "arg1", 5676bff2d51SMed Ismail Bennani }, 5686bff2d51SMed Ismail Bennani { 5696bff2d51SMed Ismail Bennani "name": "x2", 5706bff2d51SMed Ismail Bennani "bitsize": 64, 5716bff2d51SMed Ismail Bennani "offset": 16, 5726bff2d51SMed Ismail Bennani "encoding": "uint", 5736bff2d51SMed Ismail Bennani "format": "hex", 5746bff2d51SMed Ismail Bennani "set": 0, 5756bff2d51SMed Ismail Bennani "gcc": 2, 5766bff2d51SMed Ismail Bennani "dwarf": 2, 5776bff2d51SMed Ismail Bennani "generic": "arg2", 5786bff2d51SMed Ismail Bennani "alt-name": "arg2", 5796bff2d51SMed Ismail Bennani }, 5806bff2d51SMed Ismail Bennani { 5816bff2d51SMed Ismail Bennani "name": "x3", 5826bff2d51SMed Ismail Bennani "bitsize": 64, 5836bff2d51SMed Ismail Bennani "offset": 24, 5846bff2d51SMed Ismail Bennani "encoding": "uint", 5856bff2d51SMed Ismail Bennani "format": "hex", 5866bff2d51SMed Ismail Bennani "set": 0, 5876bff2d51SMed Ismail Bennani "gcc": 3, 5886bff2d51SMed Ismail Bennani "dwarf": 3, 5896bff2d51SMed Ismail Bennani "generic": "arg3", 5906bff2d51SMed Ismail Bennani "alt-name": "arg3", 5916bff2d51SMed Ismail Bennani }, 5926bff2d51SMed Ismail Bennani { 5936bff2d51SMed Ismail Bennani "name": "x4", 5946bff2d51SMed Ismail Bennani "bitsize": 64, 5956bff2d51SMed Ismail Bennani "offset": 32, 5966bff2d51SMed Ismail Bennani "encoding": "uint", 5976bff2d51SMed Ismail Bennani "format": "hex", 5986bff2d51SMed Ismail Bennani "set": 0, 5996bff2d51SMed Ismail Bennani "gcc": 4, 6006bff2d51SMed Ismail Bennani "dwarf": 4, 6016bff2d51SMed Ismail Bennani "generic": "arg4", 6026bff2d51SMed Ismail Bennani "alt-name": "arg4", 6036bff2d51SMed Ismail Bennani }, 6046bff2d51SMed Ismail Bennani { 6056bff2d51SMed Ismail Bennani "name": "x5", 6066bff2d51SMed Ismail Bennani "bitsize": 64, 6076bff2d51SMed Ismail Bennani "offset": 40, 6086bff2d51SMed Ismail Bennani "encoding": "uint", 6096bff2d51SMed Ismail Bennani "format": "hex", 6106bff2d51SMed Ismail Bennani "set": 0, 6116bff2d51SMed Ismail Bennani "gcc": 5, 6126bff2d51SMed Ismail Bennani "dwarf": 5, 6136bff2d51SMed Ismail Bennani "generic": "arg5", 6146bff2d51SMed Ismail Bennani "alt-name": "arg5", 6156bff2d51SMed Ismail Bennani }, 6166bff2d51SMed Ismail Bennani { 6176bff2d51SMed Ismail Bennani "name": "x6", 6186bff2d51SMed Ismail Bennani "bitsize": 64, 6196bff2d51SMed Ismail Bennani "offset": 48, 6206bff2d51SMed Ismail Bennani "encoding": "uint", 6216bff2d51SMed Ismail Bennani "format": "hex", 6226bff2d51SMed Ismail Bennani "set": 0, 6236bff2d51SMed Ismail Bennani "gcc": 6, 6246bff2d51SMed Ismail Bennani "dwarf": 6, 6256bff2d51SMed Ismail Bennani "generic": "arg6", 6266bff2d51SMed Ismail Bennani "alt-name": "arg6", 6276bff2d51SMed Ismail Bennani }, 6286bff2d51SMed Ismail Bennani { 6296bff2d51SMed Ismail Bennani "name": "x7", 6306bff2d51SMed Ismail Bennani "bitsize": 64, 6316bff2d51SMed Ismail Bennani "offset": 56, 6326bff2d51SMed Ismail Bennani "encoding": "uint", 6336bff2d51SMed Ismail Bennani "format": "hex", 6346bff2d51SMed Ismail Bennani "set": 0, 6356bff2d51SMed Ismail Bennani "gcc": 7, 6366bff2d51SMed Ismail Bennani "dwarf": 7, 6376bff2d51SMed Ismail Bennani "generic": "arg7", 6386bff2d51SMed Ismail Bennani "alt-name": "arg7", 6396bff2d51SMed Ismail Bennani }, 6406bff2d51SMed Ismail Bennani { 6416bff2d51SMed Ismail Bennani "name": "x8", 6426bff2d51SMed Ismail Bennani "bitsize": 64, 6436bff2d51SMed Ismail Bennani "offset": 64, 6446bff2d51SMed Ismail Bennani "encoding": "uint", 6456bff2d51SMed Ismail Bennani "format": "hex", 6466bff2d51SMed Ismail Bennani "set": 0, 6476bff2d51SMed Ismail Bennani "gcc": 8, 6486bff2d51SMed Ismail Bennani "dwarf": 8, 6496bff2d51SMed Ismail Bennani }, 6506bff2d51SMed Ismail Bennani { 6516bff2d51SMed Ismail Bennani "name": "x9", 6526bff2d51SMed Ismail Bennani "bitsize": 64, 6536bff2d51SMed Ismail Bennani "offset": 72, 6546bff2d51SMed Ismail Bennani "encoding": "uint", 6556bff2d51SMed Ismail Bennani "format": "hex", 6566bff2d51SMed Ismail Bennani "set": 0, 6576bff2d51SMed Ismail Bennani "gcc": 9, 6586bff2d51SMed Ismail Bennani "dwarf": 9, 6596bff2d51SMed Ismail Bennani }, 6606bff2d51SMed Ismail Bennani { 6616bff2d51SMed Ismail Bennani "name": "x10", 6626bff2d51SMed Ismail Bennani "bitsize": 64, 6636bff2d51SMed Ismail Bennani "offset": 80, 6646bff2d51SMed Ismail Bennani "encoding": "uint", 6656bff2d51SMed Ismail Bennani "format": "hex", 6666bff2d51SMed Ismail Bennani "set": 0, 6676bff2d51SMed Ismail Bennani "gcc": 10, 6686bff2d51SMed Ismail Bennani "dwarf": 10, 6696bff2d51SMed Ismail Bennani }, 6706bff2d51SMed Ismail Bennani { 6716bff2d51SMed Ismail Bennani "name": "x11", 6726bff2d51SMed Ismail Bennani "bitsize": 64, 6736bff2d51SMed Ismail Bennani "offset": 88, 6746bff2d51SMed Ismail Bennani "encoding": "uint", 6756bff2d51SMed Ismail Bennani "format": "hex", 6766bff2d51SMed Ismail Bennani "set": 0, 6776bff2d51SMed Ismail Bennani "gcc": 11, 6786bff2d51SMed Ismail Bennani "dwarf": 11, 6796bff2d51SMed Ismail Bennani }, 6806bff2d51SMed Ismail Bennani { 6816bff2d51SMed Ismail Bennani "name": "x12", 6826bff2d51SMed Ismail Bennani "bitsize": 64, 6836bff2d51SMed Ismail Bennani "offset": 96, 6846bff2d51SMed Ismail Bennani "encoding": "uint", 6856bff2d51SMed Ismail Bennani "format": "hex", 6866bff2d51SMed Ismail Bennani "set": 0, 6876bff2d51SMed Ismail Bennani "gcc": 12, 6886bff2d51SMed Ismail Bennani "dwarf": 12, 6896bff2d51SMed Ismail Bennani }, 6906bff2d51SMed Ismail Bennani { 6916bff2d51SMed Ismail Bennani "name": "x13", 6926bff2d51SMed Ismail Bennani "bitsize": 64, 6936bff2d51SMed Ismail Bennani "offset": 104, 6946bff2d51SMed Ismail Bennani "encoding": "uint", 6956bff2d51SMed Ismail Bennani "format": "hex", 6966bff2d51SMed Ismail Bennani "set": 0, 6976bff2d51SMed Ismail Bennani "gcc": 13, 6986bff2d51SMed Ismail Bennani "dwarf": 13, 6996bff2d51SMed Ismail Bennani }, 7006bff2d51SMed Ismail Bennani { 7016bff2d51SMed Ismail Bennani "name": "x14", 7026bff2d51SMed Ismail Bennani "bitsize": 64, 7036bff2d51SMed Ismail Bennani "offset": 112, 7046bff2d51SMed Ismail Bennani "encoding": "uint", 7056bff2d51SMed Ismail Bennani "format": "hex", 7066bff2d51SMed Ismail Bennani "set": 0, 7076bff2d51SMed Ismail Bennani "gcc": 14, 7086bff2d51SMed Ismail Bennani "dwarf": 14, 7096bff2d51SMed Ismail Bennani }, 7106bff2d51SMed Ismail Bennani { 7116bff2d51SMed Ismail Bennani "name": "x15", 7126bff2d51SMed Ismail Bennani "bitsize": 64, 7136bff2d51SMed Ismail Bennani "offset": 120, 7146bff2d51SMed Ismail Bennani "encoding": "uint", 7156bff2d51SMed Ismail Bennani "format": "hex", 7166bff2d51SMed Ismail Bennani "set": 0, 7176bff2d51SMed Ismail Bennani "gcc": 15, 7186bff2d51SMed Ismail Bennani "dwarf": 15, 7196bff2d51SMed Ismail Bennani }, 7206bff2d51SMed Ismail Bennani { 7216bff2d51SMed Ismail Bennani "name": "x16", 7226bff2d51SMed Ismail Bennani "bitsize": 64, 7236bff2d51SMed Ismail Bennani "offset": 128, 7246bff2d51SMed Ismail Bennani "encoding": "uint", 7256bff2d51SMed Ismail Bennani "format": "hex", 7266bff2d51SMed Ismail Bennani "set": 0, 7276bff2d51SMed Ismail Bennani "gcc": 16, 7286bff2d51SMed Ismail Bennani "dwarf": 16, 7296bff2d51SMed Ismail Bennani }, 7306bff2d51SMed Ismail Bennani { 7316bff2d51SMed Ismail Bennani "name": "x17", 7326bff2d51SMed Ismail Bennani "bitsize": 64, 7336bff2d51SMed Ismail Bennani "offset": 136, 7346bff2d51SMed Ismail Bennani "encoding": "uint", 7356bff2d51SMed Ismail Bennani "format": "hex", 7366bff2d51SMed Ismail Bennani "set": 0, 7376bff2d51SMed Ismail Bennani "gcc": 17, 7386bff2d51SMed Ismail Bennani "dwarf": 17, 7396bff2d51SMed Ismail Bennani }, 7406bff2d51SMed Ismail Bennani { 7416bff2d51SMed Ismail Bennani "name": "x18", 7426bff2d51SMed Ismail Bennani "bitsize": 64, 7436bff2d51SMed Ismail Bennani "offset": 144, 7446bff2d51SMed Ismail Bennani "encoding": "uint", 7456bff2d51SMed Ismail Bennani "format": "hex", 7466bff2d51SMed Ismail Bennani "set": 0, 7476bff2d51SMed Ismail Bennani "gcc": 18, 7486bff2d51SMed Ismail Bennani "dwarf": 18, 7496bff2d51SMed Ismail Bennani }, 7506bff2d51SMed Ismail Bennani { 7516bff2d51SMed Ismail Bennani "name": "x19", 7526bff2d51SMed Ismail Bennani "bitsize": 64, 7536bff2d51SMed Ismail Bennani "offset": 152, 7546bff2d51SMed Ismail Bennani "encoding": "uint", 7556bff2d51SMed Ismail Bennani "format": "hex", 7566bff2d51SMed Ismail Bennani "set": 0, 7576bff2d51SMed Ismail Bennani "gcc": 19, 7586bff2d51SMed Ismail Bennani "dwarf": 19, 7596bff2d51SMed Ismail Bennani }, 7606bff2d51SMed Ismail Bennani { 7616bff2d51SMed Ismail Bennani "name": "x20", 7626bff2d51SMed Ismail Bennani "bitsize": 64, 7636bff2d51SMed Ismail Bennani "offset": 160, 7646bff2d51SMed Ismail Bennani "encoding": "uint", 7656bff2d51SMed Ismail Bennani "format": "hex", 7666bff2d51SMed Ismail Bennani "set": 0, 7676bff2d51SMed Ismail Bennani "gcc": 20, 7686bff2d51SMed Ismail Bennani "dwarf": 20, 7696bff2d51SMed Ismail Bennani }, 7706bff2d51SMed Ismail Bennani { 7716bff2d51SMed Ismail Bennani "name": "x21", 7726bff2d51SMed Ismail Bennani "bitsize": 64, 7736bff2d51SMed Ismail Bennani "offset": 168, 7746bff2d51SMed Ismail Bennani "encoding": "uint", 7756bff2d51SMed Ismail Bennani "format": "hex", 7766bff2d51SMed Ismail Bennani "set": 0, 7776bff2d51SMed Ismail Bennani "gcc": 21, 7786bff2d51SMed Ismail Bennani "dwarf": 21, 7796bff2d51SMed Ismail Bennani }, 7806bff2d51SMed Ismail Bennani { 7816bff2d51SMed Ismail Bennani "name": "x22", 7826bff2d51SMed Ismail Bennani "bitsize": 64, 7836bff2d51SMed Ismail Bennani "offset": 176, 7846bff2d51SMed Ismail Bennani "encoding": "uint", 7856bff2d51SMed Ismail Bennani "format": "hex", 7866bff2d51SMed Ismail Bennani "set": 0, 7876bff2d51SMed Ismail Bennani "gcc": 22, 7886bff2d51SMed Ismail Bennani "dwarf": 22, 7896bff2d51SMed Ismail Bennani }, 7906bff2d51SMed Ismail Bennani { 7916bff2d51SMed Ismail Bennani "name": "x23", 7926bff2d51SMed Ismail Bennani "bitsize": 64, 7936bff2d51SMed Ismail Bennani "offset": 184, 7946bff2d51SMed Ismail Bennani "encoding": "uint", 7956bff2d51SMed Ismail Bennani "format": "hex", 7966bff2d51SMed Ismail Bennani "set": 0, 7976bff2d51SMed Ismail Bennani "gcc": 23, 7986bff2d51SMed Ismail Bennani "dwarf": 23, 7996bff2d51SMed Ismail Bennani }, 8006bff2d51SMed Ismail Bennani { 8016bff2d51SMed Ismail Bennani "name": "x24", 8026bff2d51SMed Ismail Bennani "bitsize": 64, 8036bff2d51SMed Ismail Bennani "offset": 192, 8046bff2d51SMed Ismail Bennani "encoding": "uint", 8056bff2d51SMed Ismail Bennani "format": "hex", 8066bff2d51SMed Ismail Bennani "set": 0, 8076bff2d51SMed Ismail Bennani "gcc": 24, 8086bff2d51SMed Ismail Bennani "dwarf": 24, 8096bff2d51SMed Ismail Bennani }, 8106bff2d51SMed Ismail Bennani { 8116bff2d51SMed Ismail Bennani "name": "x25", 8126bff2d51SMed Ismail Bennani "bitsize": 64, 8136bff2d51SMed Ismail Bennani "offset": 200, 8146bff2d51SMed Ismail Bennani "encoding": "uint", 8156bff2d51SMed Ismail Bennani "format": "hex", 8166bff2d51SMed Ismail Bennani "set": 0, 8176bff2d51SMed Ismail Bennani "gcc": 25, 8186bff2d51SMed Ismail Bennani "dwarf": 25, 8196bff2d51SMed Ismail Bennani }, 8206bff2d51SMed Ismail Bennani { 8216bff2d51SMed Ismail Bennani "name": "x26", 8226bff2d51SMed Ismail Bennani "bitsize": 64, 8236bff2d51SMed Ismail Bennani "offset": 208, 8246bff2d51SMed Ismail Bennani "encoding": "uint", 8256bff2d51SMed Ismail Bennani "format": "hex", 8266bff2d51SMed Ismail Bennani "set": 0, 8276bff2d51SMed Ismail Bennani "gcc": 26, 8286bff2d51SMed Ismail Bennani "dwarf": 26, 8296bff2d51SMed Ismail Bennani }, 8306bff2d51SMed Ismail Bennani { 8316bff2d51SMed Ismail Bennani "name": "x27", 8326bff2d51SMed Ismail Bennani "bitsize": 64, 8336bff2d51SMed Ismail Bennani "offset": 216, 8346bff2d51SMed Ismail Bennani "encoding": "uint", 8356bff2d51SMed Ismail Bennani "format": "hex", 8366bff2d51SMed Ismail Bennani "set": 0, 8376bff2d51SMed Ismail Bennani "gcc": 27, 8386bff2d51SMed Ismail Bennani "dwarf": 27, 8396bff2d51SMed Ismail Bennani }, 8406bff2d51SMed Ismail Bennani { 8416bff2d51SMed Ismail Bennani "name": "x28", 8426bff2d51SMed Ismail Bennani "bitsize": 64, 8436bff2d51SMed Ismail Bennani "offset": 224, 8446bff2d51SMed Ismail Bennani "encoding": "uint", 8456bff2d51SMed Ismail Bennani "format": "hex", 8466bff2d51SMed Ismail Bennani "set": 0, 8476bff2d51SMed Ismail Bennani "gcc": 28, 8486bff2d51SMed Ismail Bennani "dwarf": 28, 8496bff2d51SMed Ismail Bennani }, 8506bff2d51SMed Ismail Bennani { 8516bff2d51SMed Ismail Bennani "name": "x29", 8526bff2d51SMed Ismail Bennani "bitsize": 64, 8536bff2d51SMed Ismail Bennani "offset": 232, 8546bff2d51SMed Ismail Bennani "encoding": "uint", 8556bff2d51SMed Ismail Bennani "format": "hex", 8566bff2d51SMed Ismail Bennani "set": 0, 8576bff2d51SMed Ismail Bennani "gcc": 29, 8586bff2d51SMed Ismail Bennani "dwarf": 29, 8596bff2d51SMed Ismail Bennani "generic": "fp", 8606bff2d51SMed Ismail Bennani "alt-name": "fp", 8616bff2d51SMed Ismail Bennani }, 8626bff2d51SMed Ismail Bennani { 8636bff2d51SMed Ismail Bennani "name": "x30", 8646bff2d51SMed Ismail Bennani "bitsize": 64, 8656bff2d51SMed Ismail Bennani "offset": 240, 8666bff2d51SMed Ismail Bennani "encoding": "uint", 8676bff2d51SMed Ismail Bennani "format": "hex", 8686bff2d51SMed Ismail Bennani "set": 0, 8696bff2d51SMed Ismail Bennani "gcc": 30, 8706bff2d51SMed Ismail Bennani "dwarf": 30, 8716bff2d51SMed Ismail Bennani "generic": "lr", 8726bff2d51SMed Ismail Bennani "alt-name": "lr", 8736bff2d51SMed Ismail Bennani }, 8746bff2d51SMed Ismail Bennani { 8756bff2d51SMed Ismail Bennani "name": "sp", 8766bff2d51SMed Ismail Bennani "bitsize": 64, 8776bff2d51SMed Ismail Bennani "offset": 248, 8786bff2d51SMed Ismail Bennani "encoding": "uint", 8796bff2d51SMed Ismail Bennani "format": "hex", 8806bff2d51SMed Ismail Bennani "set": 0, 8816bff2d51SMed Ismail Bennani "gcc": 31, 8826bff2d51SMed Ismail Bennani "dwarf": 31, 8836bff2d51SMed Ismail Bennani "generic": "sp", 8846bff2d51SMed Ismail Bennani "alt-name": "sp", 8856bff2d51SMed Ismail Bennani }, 8866bff2d51SMed Ismail Bennani { 8876bff2d51SMed Ismail Bennani "name": "pc", 8886bff2d51SMed Ismail Bennani "bitsize": 64, 8896bff2d51SMed Ismail Bennani "offset": 256, 8906bff2d51SMed Ismail Bennani "encoding": "uint", 8916bff2d51SMed Ismail Bennani "format": "hex", 8926bff2d51SMed Ismail Bennani "set": 0, 8936bff2d51SMed Ismail Bennani "gcc": 32, 8946bff2d51SMed Ismail Bennani "dwarf": 32, 8956bff2d51SMed Ismail Bennani "generic": "pc", 8966bff2d51SMed Ismail Bennani "alt-name": "pc", 8976bff2d51SMed Ismail Bennani }, 8986bff2d51SMed Ismail Bennani { 8996bff2d51SMed Ismail Bennani "name": "cpsr", 9006bff2d51SMed Ismail Bennani "bitsize": 32, 9016bff2d51SMed Ismail Bennani "offset": 264, 9026bff2d51SMed Ismail Bennani "encoding": "uint", 9036bff2d51SMed Ismail Bennani "format": "hex", 9046bff2d51SMed Ismail Bennani "set": 0, 9056bff2d51SMed Ismail Bennani "gcc": 33, 9066bff2d51SMed Ismail Bennani "dwarf": 33, 9076bff2d51SMed Ismail Bennani }, 9086bff2d51SMed Ismail Bennani] 9096bff2d51SMed Ismail Bennani 9106bff2d51SMed Ismail BennaniINTEL64_GPR = [ 9116bff2d51SMed Ismail Bennani { 9126bff2d51SMed Ismail Bennani "name": "rax", 9136bff2d51SMed Ismail Bennani "bitsize": 64, 9146bff2d51SMed Ismail Bennani "offset": 0, 9156bff2d51SMed Ismail Bennani "encoding": "uint", 9166bff2d51SMed Ismail Bennani "format": "hex", 9176bff2d51SMed Ismail Bennani "set": 0, 9186bff2d51SMed Ismail Bennani "gcc": 0, 9196bff2d51SMed Ismail Bennani "dwarf": 0, 9206bff2d51SMed Ismail Bennani }, 9216bff2d51SMed Ismail Bennani { 9226bff2d51SMed Ismail Bennani "name": "rbx", 9236bff2d51SMed Ismail Bennani "bitsize": 64, 9246bff2d51SMed Ismail Bennani "offset": 8, 9256bff2d51SMed Ismail Bennani "encoding": "uint", 9266bff2d51SMed Ismail Bennani "format": "hex", 9276bff2d51SMed Ismail Bennani "set": 0, 9286bff2d51SMed Ismail Bennani "gcc": 3, 9296bff2d51SMed Ismail Bennani "dwarf": 3, 9306bff2d51SMed Ismail Bennani }, 9316bff2d51SMed Ismail Bennani { 9326bff2d51SMed Ismail Bennani "name": "rcx", 9336bff2d51SMed Ismail Bennani "bitsize": 64, 9346bff2d51SMed Ismail Bennani "offset": 16, 9356bff2d51SMed Ismail Bennani "encoding": "uint", 9366bff2d51SMed Ismail Bennani "format": "hex", 9376bff2d51SMed Ismail Bennani "set": 0, 9386bff2d51SMed Ismail Bennani "gcc": 2, 9396bff2d51SMed Ismail Bennani "dwarf": 2, 9406bff2d51SMed Ismail Bennani "generic": "arg4", 9416bff2d51SMed Ismail Bennani "alt-name": "arg4", 9426bff2d51SMed Ismail Bennani }, 9436bff2d51SMed Ismail Bennani { 9446bff2d51SMed Ismail Bennani "name": "rdx", 9456bff2d51SMed Ismail Bennani "bitsize": 64, 9466bff2d51SMed Ismail Bennani "offset": 24, 9476bff2d51SMed Ismail Bennani "encoding": "uint", 9486bff2d51SMed Ismail Bennani "format": "hex", 9496bff2d51SMed Ismail Bennani "set": 0, 9506bff2d51SMed Ismail Bennani "gcc": 1, 9516bff2d51SMed Ismail Bennani "dwarf": 1, 9526bff2d51SMed Ismail Bennani "generic": "arg3", 9536bff2d51SMed Ismail Bennani "alt-name": "arg3", 9546bff2d51SMed Ismail Bennani }, 9556bff2d51SMed Ismail Bennani { 9566bff2d51SMed Ismail Bennani "name": "rdi", 9576bff2d51SMed Ismail Bennani "bitsize": 64, 9586bff2d51SMed Ismail Bennani "offset": 32, 9596bff2d51SMed Ismail Bennani "encoding": "uint", 9606bff2d51SMed Ismail Bennani "format": "hex", 9616bff2d51SMed Ismail Bennani "set": 0, 9626bff2d51SMed Ismail Bennani "gcc": 5, 9636bff2d51SMed Ismail Bennani "dwarf": 5, 9646bff2d51SMed Ismail Bennani "generic": "arg1", 9656bff2d51SMed Ismail Bennani "alt-name": "arg1", 9666bff2d51SMed Ismail Bennani }, 9676bff2d51SMed Ismail Bennani { 9686bff2d51SMed Ismail Bennani "name": "rsi", 9696bff2d51SMed Ismail Bennani "bitsize": 64, 9706bff2d51SMed Ismail Bennani "offset": 40, 9716bff2d51SMed Ismail Bennani "encoding": "uint", 9726bff2d51SMed Ismail Bennani "format": "hex", 9736bff2d51SMed Ismail Bennani "set": 0, 9746bff2d51SMed Ismail Bennani "gcc": 4, 9756bff2d51SMed Ismail Bennani "dwarf": 4, 9766bff2d51SMed Ismail Bennani "generic": "arg2", 9776bff2d51SMed Ismail Bennani "alt-name": "arg2", 9786bff2d51SMed Ismail Bennani }, 9796bff2d51SMed Ismail Bennani { 9806bff2d51SMed Ismail Bennani "name": "rbp", 9816bff2d51SMed Ismail Bennani "bitsize": 64, 9826bff2d51SMed Ismail Bennani "offset": 48, 9836bff2d51SMed Ismail Bennani "encoding": "uint", 9846bff2d51SMed Ismail Bennani "format": "hex", 9856bff2d51SMed Ismail Bennani "set": 0, 9866bff2d51SMed Ismail Bennani "gcc": 6, 9876bff2d51SMed Ismail Bennani "dwarf": 6, 9886bff2d51SMed Ismail Bennani "generic": "fp", 9896bff2d51SMed Ismail Bennani "alt-name": "fp", 9906bff2d51SMed Ismail Bennani }, 9916bff2d51SMed Ismail Bennani { 9926bff2d51SMed Ismail Bennani "name": "rsp", 9936bff2d51SMed Ismail Bennani "bitsize": 64, 9946bff2d51SMed Ismail Bennani "offset": 56, 9956bff2d51SMed Ismail Bennani "encoding": "uint", 9966bff2d51SMed Ismail Bennani "format": "hex", 9976bff2d51SMed Ismail Bennani "set": 0, 9986bff2d51SMed Ismail Bennani "gcc": 7, 9996bff2d51SMed Ismail Bennani "dwarf": 7, 10006bff2d51SMed Ismail Bennani "generic": "sp", 10016bff2d51SMed Ismail Bennani "alt-name": "sp", 10026bff2d51SMed Ismail Bennani }, 10036bff2d51SMed Ismail Bennani { 10046bff2d51SMed Ismail Bennani "name": "r8", 10056bff2d51SMed Ismail Bennani "bitsize": 64, 10066bff2d51SMed Ismail Bennani "offset": 64, 10076bff2d51SMed Ismail Bennani "encoding": "uint", 10086bff2d51SMed Ismail Bennani "format": "hex", 10096bff2d51SMed Ismail Bennani "set": 0, 10106bff2d51SMed Ismail Bennani "gcc": 8, 10116bff2d51SMed Ismail Bennani "dwarf": 8, 10126bff2d51SMed Ismail Bennani "generic": "arg5", 10136bff2d51SMed Ismail Bennani "alt-name": "arg5", 10146bff2d51SMed Ismail Bennani }, 10156bff2d51SMed Ismail Bennani { 10166bff2d51SMed Ismail Bennani "name": "r9", 10176bff2d51SMed Ismail Bennani "bitsize": 64, 10186bff2d51SMed Ismail Bennani "offset": 72, 10196bff2d51SMed Ismail Bennani "encoding": "uint", 10206bff2d51SMed Ismail Bennani "format": "hex", 10216bff2d51SMed Ismail Bennani "set": 0, 10226bff2d51SMed Ismail Bennani "gcc": 9, 10236bff2d51SMed Ismail Bennani "dwarf": 9, 10246bff2d51SMed Ismail Bennani "generic": "arg6", 10256bff2d51SMed Ismail Bennani "alt-name": "arg6", 10266bff2d51SMed Ismail Bennani }, 10276bff2d51SMed Ismail Bennani { 10286bff2d51SMed Ismail Bennani "name": "r10", 10296bff2d51SMed Ismail Bennani "bitsize": 64, 10306bff2d51SMed Ismail Bennani "offset": 80, 10316bff2d51SMed Ismail Bennani "encoding": "uint", 10326bff2d51SMed Ismail Bennani "format": "hex", 10336bff2d51SMed Ismail Bennani "set": 0, 10346bff2d51SMed Ismail Bennani "gcc": 10, 10356bff2d51SMed Ismail Bennani "dwarf": 10, 10366bff2d51SMed Ismail Bennani }, 10376bff2d51SMed Ismail Bennani { 10386bff2d51SMed Ismail Bennani "name": "r11", 10396bff2d51SMed Ismail Bennani "bitsize": 64, 10406bff2d51SMed Ismail Bennani "offset": 88, 10416bff2d51SMed Ismail Bennani "encoding": "uint", 10426bff2d51SMed Ismail Bennani "format": "hex", 10436bff2d51SMed Ismail Bennani "set": 0, 10446bff2d51SMed Ismail Bennani "gcc": 11, 10456bff2d51SMed Ismail Bennani "dwarf": 11, 10466bff2d51SMed Ismail Bennani }, 10476bff2d51SMed Ismail Bennani { 10486bff2d51SMed Ismail Bennani "name": "r12", 10496bff2d51SMed Ismail Bennani "bitsize": 64, 10506bff2d51SMed Ismail Bennani "offset": 96, 10516bff2d51SMed Ismail Bennani "encoding": "uint", 10526bff2d51SMed Ismail Bennani "format": "hex", 10536bff2d51SMed Ismail Bennani "set": 0, 10546bff2d51SMed Ismail Bennani "gcc": 12, 10556bff2d51SMed Ismail Bennani "dwarf": 12, 10566bff2d51SMed Ismail Bennani }, 10576bff2d51SMed Ismail Bennani { 10586bff2d51SMed Ismail Bennani "name": "r13", 10596bff2d51SMed Ismail Bennani "bitsize": 64, 10606bff2d51SMed Ismail Bennani "offset": 104, 10616bff2d51SMed Ismail Bennani "encoding": "uint", 10626bff2d51SMed Ismail Bennani "format": "hex", 10636bff2d51SMed Ismail Bennani "set": 0, 10646bff2d51SMed Ismail Bennani "gcc": 13, 10656bff2d51SMed Ismail Bennani "dwarf": 13, 10666bff2d51SMed Ismail Bennani }, 10676bff2d51SMed Ismail Bennani { 10686bff2d51SMed Ismail Bennani "name": "r14", 10696bff2d51SMed Ismail Bennani "bitsize": 64, 10706bff2d51SMed Ismail Bennani "offset": 112, 10716bff2d51SMed Ismail Bennani "encoding": "uint", 10726bff2d51SMed Ismail Bennani "format": "hex", 10736bff2d51SMed Ismail Bennani "set": 0, 10746bff2d51SMed Ismail Bennani "gcc": 14, 10756bff2d51SMed Ismail Bennani "dwarf": 14, 10766bff2d51SMed Ismail Bennani }, 10776bff2d51SMed Ismail Bennani { 10786bff2d51SMed Ismail Bennani "name": "r15", 10796bff2d51SMed Ismail Bennani "bitsize": 64, 10806bff2d51SMed Ismail Bennani "offset": 120, 10816bff2d51SMed Ismail Bennani "encoding": "uint", 10826bff2d51SMed Ismail Bennani "format": "hex", 10836bff2d51SMed Ismail Bennani "set": 0, 10846bff2d51SMed Ismail Bennani "gcc": 15, 10856bff2d51SMed Ismail Bennani "dwarf": 15, 10866bff2d51SMed Ismail Bennani }, 10876bff2d51SMed Ismail Bennani { 10886bff2d51SMed Ismail Bennani "name": "rip", 10896bff2d51SMed Ismail Bennani "bitsize": 64, 10906bff2d51SMed Ismail Bennani "offset": 128, 10916bff2d51SMed Ismail Bennani "encoding": "uint", 10926bff2d51SMed Ismail Bennani "format": "hex", 10936bff2d51SMed Ismail Bennani "set": 0, 10946bff2d51SMed Ismail Bennani "gcc": 16, 10956bff2d51SMed Ismail Bennani "dwarf": 16, 10966bff2d51SMed Ismail Bennani "generic": "pc", 10976bff2d51SMed Ismail Bennani "alt-name": "pc", 10986bff2d51SMed Ismail Bennani }, 10996bff2d51SMed Ismail Bennani { 11006bff2d51SMed Ismail Bennani "name": "rflags", 11016bff2d51SMed Ismail Bennani "bitsize": 64, 11026bff2d51SMed Ismail Bennani "offset": 136, 11036bff2d51SMed Ismail Bennani "encoding": "uint", 11046bff2d51SMed Ismail Bennani "format": "hex", 11056bff2d51SMed Ismail Bennani "set": 0, 11066bff2d51SMed Ismail Bennani "generic": "flags", 11076bff2d51SMed Ismail Bennani "alt-name": "flags", 11086bff2d51SMed Ismail Bennani }, 11096bff2d51SMed Ismail Bennani { 11106bff2d51SMed Ismail Bennani "name": "cs", 11116bff2d51SMed Ismail Bennani "bitsize": 64, 11126bff2d51SMed Ismail Bennani "offset": 144, 11136bff2d51SMed Ismail Bennani "encoding": "uint", 11146bff2d51SMed Ismail Bennani "format": "hex", 11156bff2d51SMed Ismail Bennani "set": 0, 11166bff2d51SMed Ismail Bennani }, 11176bff2d51SMed Ismail Bennani { 11186bff2d51SMed Ismail Bennani "name": "fs", 11196bff2d51SMed Ismail Bennani "bitsize": 64, 11206bff2d51SMed Ismail Bennani "offset": 152, 11216bff2d51SMed Ismail Bennani "encoding": "uint", 11226bff2d51SMed Ismail Bennani "format": "hex", 11236bff2d51SMed Ismail Bennani "set": 0, 11246bff2d51SMed Ismail Bennani }, 11256bff2d51SMed Ismail Bennani { 11266bff2d51SMed Ismail Bennani "name": "gs", 11276bff2d51SMed Ismail Bennani "bitsize": 64, 11286bff2d51SMed Ismail Bennani "offset": 160, 11296bff2d51SMed Ismail Bennani "encoding": "uint", 11306bff2d51SMed Ismail Bennani "format": "hex", 11316bff2d51SMed Ismail Bennani "set": 0, 11326bff2d51SMed Ismail Bennani }, 11336bff2d51SMed Ismail Bennani] 11346bff2d51SMed Ismail Bennani 11356bff2d51SMed Ismail BennaniARM64_GPR = [ 11366bff2d51SMed Ismail Bennani { 11376bff2d51SMed Ismail Bennani "name": "x0", 11386bff2d51SMed Ismail Bennani "bitsize": 64, 11396bff2d51SMed Ismail Bennani "offset": 0, 11406bff2d51SMed Ismail Bennani "encoding": "uint", 11416bff2d51SMed Ismail Bennani "format": "hex", 11426bff2d51SMed Ismail Bennani "set": 0, 11436bff2d51SMed Ismail Bennani "gcc": 0, 11446bff2d51SMed Ismail Bennani "dwarf": 0, 11456bff2d51SMed Ismail Bennani "generic": "arg0", 11466bff2d51SMed Ismail Bennani "alt-name": "arg0", 11476bff2d51SMed Ismail Bennani }, 11486bff2d51SMed Ismail Bennani { 11496bff2d51SMed Ismail Bennani "name": "x1", 11506bff2d51SMed Ismail Bennani "bitsize": 64, 11516bff2d51SMed Ismail Bennani "offset": 8, 11526bff2d51SMed Ismail Bennani "encoding": "uint", 11536bff2d51SMed Ismail Bennani "format": "hex", 11546bff2d51SMed Ismail Bennani "set": 0, 11556bff2d51SMed Ismail Bennani "gcc": 1, 11566bff2d51SMed Ismail Bennani "dwarf": 1, 11576bff2d51SMed Ismail Bennani "generic": "arg1", 11586bff2d51SMed Ismail Bennani "alt-name": "arg1", 11596bff2d51SMed Ismail Bennani }, 11606bff2d51SMed Ismail Bennani { 11616bff2d51SMed Ismail Bennani "name": "x2", 11626bff2d51SMed Ismail Bennani "bitsize": 64, 11636bff2d51SMed Ismail Bennani "offset": 16, 11646bff2d51SMed Ismail Bennani "encoding": "uint", 11656bff2d51SMed Ismail Bennani "format": "hex", 11666bff2d51SMed Ismail Bennani "set": 0, 11676bff2d51SMed Ismail Bennani "gcc": 2, 11686bff2d51SMed Ismail Bennani "dwarf": 2, 11696bff2d51SMed Ismail Bennani "generic": "arg2", 11706bff2d51SMed Ismail Bennani "alt-name": "arg2", 11716bff2d51SMed Ismail Bennani }, 11726bff2d51SMed Ismail Bennani { 11736bff2d51SMed Ismail Bennani "name": "x3", 11746bff2d51SMed Ismail Bennani "bitsize": 64, 11756bff2d51SMed Ismail Bennani "offset": 24, 11766bff2d51SMed Ismail Bennani "encoding": "uint", 11776bff2d51SMed Ismail Bennani "format": "hex", 11786bff2d51SMed Ismail Bennani "set": 0, 11796bff2d51SMed Ismail Bennani "gcc": 3, 11806bff2d51SMed Ismail Bennani "dwarf": 3, 11816bff2d51SMed Ismail Bennani "generic": "arg3", 11826bff2d51SMed Ismail Bennani "alt-name": "arg3", 11836bff2d51SMed Ismail Bennani }, 11846bff2d51SMed Ismail Bennani { 11856bff2d51SMed Ismail Bennani "name": "x4", 11866bff2d51SMed Ismail Bennani "bitsize": 64, 11876bff2d51SMed Ismail Bennani "offset": 32, 11886bff2d51SMed Ismail Bennani "encoding": "uint", 11896bff2d51SMed Ismail Bennani "format": "hex", 11906bff2d51SMed Ismail Bennani "set": 0, 11916bff2d51SMed Ismail Bennani "gcc": 4, 11926bff2d51SMed Ismail Bennani "dwarf": 4, 11936bff2d51SMed Ismail Bennani "generic": "arg4", 11946bff2d51SMed Ismail Bennani "alt-name": "arg4", 11956bff2d51SMed Ismail Bennani }, 11966bff2d51SMed Ismail Bennani { 11976bff2d51SMed Ismail Bennani "name": "x5", 11986bff2d51SMed Ismail Bennani "bitsize": 64, 11996bff2d51SMed Ismail Bennani "offset": 40, 12006bff2d51SMed Ismail Bennani "encoding": "uint", 12016bff2d51SMed Ismail Bennani "format": "hex", 12026bff2d51SMed Ismail Bennani "set": 0, 12036bff2d51SMed Ismail Bennani "gcc": 5, 12046bff2d51SMed Ismail Bennani "dwarf": 5, 12056bff2d51SMed Ismail Bennani "generic": "arg5", 12066bff2d51SMed Ismail Bennani "alt-name": "arg5", 12076bff2d51SMed Ismail Bennani }, 12086bff2d51SMed Ismail Bennani { 12096bff2d51SMed Ismail Bennani "name": "x6", 12106bff2d51SMed Ismail Bennani "bitsize": 64, 12116bff2d51SMed Ismail Bennani "offset": 48, 12126bff2d51SMed Ismail Bennani "encoding": "uint", 12136bff2d51SMed Ismail Bennani "format": "hex", 12146bff2d51SMed Ismail Bennani "set": 0, 12156bff2d51SMed Ismail Bennani "gcc": 6, 12166bff2d51SMed Ismail Bennani "dwarf": 6, 12176bff2d51SMed Ismail Bennani "generic": "arg6", 12186bff2d51SMed Ismail Bennani "alt-name": "arg6", 12196bff2d51SMed Ismail Bennani }, 12206bff2d51SMed Ismail Bennani { 12216bff2d51SMed Ismail Bennani "name": "x7", 12226bff2d51SMed Ismail Bennani "bitsize": 64, 12236bff2d51SMed Ismail Bennani "offset": 56, 12246bff2d51SMed Ismail Bennani "encoding": "uint", 12256bff2d51SMed Ismail Bennani "format": "hex", 12266bff2d51SMed Ismail Bennani "set": 0, 12276bff2d51SMed Ismail Bennani "gcc": 7, 12286bff2d51SMed Ismail Bennani "dwarf": 7, 12296bff2d51SMed Ismail Bennani "generic": "arg7", 12306bff2d51SMed Ismail Bennani "alt-name": "arg7", 12316bff2d51SMed Ismail Bennani }, 12326bff2d51SMed Ismail Bennani { 12336bff2d51SMed Ismail Bennani "name": "x8", 12346bff2d51SMed Ismail Bennani "bitsize": 64, 12356bff2d51SMed Ismail Bennani "offset": 64, 12366bff2d51SMed Ismail Bennani "encoding": "uint", 12376bff2d51SMed Ismail Bennani "format": "hex", 12386bff2d51SMed Ismail Bennani "set": 0, 12396bff2d51SMed Ismail Bennani "gcc": 8, 12406bff2d51SMed Ismail Bennani "dwarf": 8, 12416bff2d51SMed Ismail Bennani }, 12426bff2d51SMed Ismail Bennani { 12436bff2d51SMed Ismail Bennani "name": "x9", 12446bff2d51SMed Ismail Bennani "bitsize": 64, 12456bff2d51SMed Ismail Bennani "offset": 72, 12466bff2d51SMed Ismail Bennani "encoding": "uint", 12476bff2d51SMed Ismail Bennani "format": "hex", 12486bff2d51SMed Ismail Bennani "set": 0, 12496bff2d51SMed Ismail Bennani "gcc": 9, 12506bff2d51SMed Ismail Bennani "dwarf": 9, 12516bff2d51SMed Ismail Bennani }, 12526bff2d51SMed Ismail Bennani { 12536bff2d51SMed Ismail Bennani "name": "x10", 12546bff2d51SMed Ismail Bennani "bitsize": 64, 12556bff2d51SMed Ismail Bennani "offset": 80, 12566bff2d51SMed Ismail Bennani "encoding": "uint", 12576bff2d51SMed Ismail Bennani "format": "hex", 12586bff2d51SMed Ismail Bennani "set": 0, 12596bff2d51SMed Ismail Bennani "gcc": 10, 12606bff2d51SMed Ismail Bennani "dwarf": 10, 12616bff2d51SMed Ismail Bennani }, 12626bff2d51SMed Ismail Bennani { 12636bff2d51SMed Ismail Bennani "name": "x11", 12646bff2d51SMed Ismail Bennani "bitsize": 64, 12656bff2d51SMed Ismail Bennani "offset": 88, 12666bff2d51SMed Ismail Bennani "encoding": "uint", 12676bff2d51SMed Ismail Bennani "format": "hex", 12686bff2d51SMed Ismail Bennani "set": 0, 12696bff2d51SMed Ismail Bennani "gcc": 11, 12706bff2d51SMed Ismail Bennani "dwarf": 11, 12716bff2d51SMed Ismail Bennani }, 12726bff2d51SMed Ismail Bennani { 12736bff2d51SMed Ismail Bennani "name": "x12", 12746bff2d51SMed Ismail Bennani "bitsize": 64, 12756bff2d51SMed Ismail Bennani "offset": 96, 12766bff2d51SMed Ismail Bennani "encoding": "uint", 12776bff2d51SMed Ismail Bennani "format": "hex", 12786bff2d51SMed Ismail Bennani "set": 0, 12796bff2d51SMed Ismail Bennani "gcc": 12, 12806bff2d51SMed Ismail Bennani "dwarf": 12, 12816bff2d51SMed Ismail Bennani }, 12826bff2d51SMed Ismail Bennani { 12836bff2d51SMed Ismail Bennani "name": "x13", 12846bff2d51SMed Ismail Bennani "bitsize": 64, 12856bff2d51SMed Ismail Bennani "offset": 104, 12866bff2d51SMed Ismail Bennani "encoding": "uint", 12876bff2d51SMed Ismail Bennani "format": "hex", 12886bff2d51SMed Ismail Bennani "set": 0, 12896bff2d51SMed Ismail Bennani "gcc": 13, 12906bff2d51SMed Ismail Bennani "dwarf": 13, 12916bff2d51SMed Ismail Bennani }, 12926bff2d51SMed Ismail Bennani { 12936bff2d51SMed Ismail Bennani "name": "x14", 12946bff2d51SMed Ismail Bennani "bitsize": 64, 12956bff2d51SMed Ismail Bennani "offset": 112, 12966bff2d51SMed Ismail Bennani "encoding": "uint", 12976bff2d51SMed Ismail Bennani "format": "hex", 12986bff2d51SMed Ismail Bennani "set": 0, 12996bff2d51SMed Ismail Bennani "gcc": 14, 13006bff2d51SMed Ismail Bennani "dwarf": 14, 13016bff2d51SMed Ismail Bennani }, 13026bff2d51SMed Ismail Bennani { 13036bff2d51SMed Ismail Bennani "name": "x15", 13046bff2d51SMed Ismail Bennani "bitsize": 64, 13056bff2d51SMed Ismail Bennani "offset": 120, 13066bff2d51SMed Ismail Bennani "encoding": "uint", 13076bff2d51SMed Ismail Bennani "format": "hex", 13086bff2d51SMed Ismail Bennani "set": 0, 13096bff2d51SMed Ismail Bennani "gcc": 15, 13106bff2d51SMed Ismail Bennani "dwarf": 15, 13116bff2d51SMed Ismail Bennani }, 13126bff2d51SMed Ismail Bennani { 13136bff2d51SMed Ismail Bennani "name": "x16", 13146bff2d51SMed Ismail Bennani "bitsize": 64, 13156bff2d51SMed Ismail Bennani "offset": 128, 13166bff2d51SMed Ismail Bennani "encoding": "uint", 13176bff2d51SMed Ismail Bennani "format": "hex", 13186bff2d51SMed Ismail Bennani "set": 0, 13196bff2d51SMed Ismail Bennani "gcc": 16, 13206bff2d51SMed Ismail Bennani "dwarf": 16, 13216bff2d51SMed Ismail Bennani }, 13226bff2d51SMed Ismail Bennani { 13236bff2d51SMed Ismail Bennani "name": "x17", 13246bff2d51SMed Ismail Bennani "bitsize": 64, 13256bff2d51SMed Ismail Bennani "offset": 136, 13266bff2d51SMed Ismail Bennani "encoding": "uint", 13276bff2d51SMed Ismail Bennani "format": "hex", 13286bff2d51SMed Ismail Bennani "set": 0, 13296bff2d51SMed Ismail Bennani "gcc": 17, 13306bff2d51SMed Ismail Bennani "dwarf": 17, 13316bff2d51SMed Ismail Bennani }, 13326bff2d51SMed Ismail Bennani { 13336bff2d51SMed Ismail Bennani "name": "x18", 13346bff2d51SMed Ismail Bennani "bitsize": 64, 13356bff2d51SMed Ismail Bennani "offset": 144, 13366bff2d51SMed Ismail Bennani "encoding": "uint", 13376bff2d51SMed Ismail Bennani "format": "hex", 13386bff2d51SMed Ismail Bennani "set": 0, 13396bff2d51SMed Ismail Bennani "gcc": 18, 13406bff2d51SMed Ismail Bennani "dwarf": 18, 13416bff2d51SMed Ismail Bennani }, 13426bff2d51SMed Ismail Bennani { 13436bff2d51SMed Ismail Bennani "name": "x19", 13446bff2d51SMed Ismail Bennani "bitsize": 64, 13456bff2d51SMed Ismail Bennani "offset": 152, 13466bff2d51SMed Ismail Bennani "encoding": "uint", 13476bff2d51SMed Ismail Bennani "format": "hex", 13486bff2d51SMed Ismail Bennani "set": 0, 13496bff2d51SMed Ismail Bennani "gcc": 19, 13506bff2d51SMed Ismail Bennani "dwarf": 19, 13516bff2d51SMed Ismail Bennani }, 13526bff2d51SMed Ismail Bennani { 13536bff2d51SMed Ismail Bennani "name": "x20", 13546bff2d51SMed Ismail Bennani "bitsize": 64, 13556bff2d51SMed Ismail Bennani "offset": 160, 13566bff2d51SMed Ismail Bennani "encoding": "uint", 13576bff2d51SMed Ismail Bennani "format": "hex", 13586bff2d51SMed Ismail Bennani "set": 0, 13596bff2d51SMed Ismail Bennani "gcc": 20, 13606bff2d51SMed Ismail Bennani "dwarf": 20, 13616bff2d51SMed Ismail Bennani }, 13626bff2d51SMed Ismail Bennani { 13636bff2d51SMed Ismail Bennani "name": "x21", 13646bff2d51SMed Ismail Bennani "bitsize": 64, 13656bff2d51SMed Ismail Bennani "offset": 168, 13666bff2d51SMed Ismail Bennani "encoding": "uint", 13676bff2d51SMed Ismail Bennani "format": "hex", 13686bff2d51SMed Ismail Bennani "set": 0, 13696bff2d51SMed Ismail Bennani "gcc": 21, 13706bff2d51SMed Ismail Bennani "dwarf": 21, 13716bff2d51SMed Ismail Bennani }, 13726bff2d51SMed Ismail Bennani { 13736bff2d51SMed Ismail Bennani "name": "x22", 13746bff2d51SMed Ismail Bennani "bitsize": 64, 13756bff2d51SMed Ismail Bennani "offset": 176, 13766bff2d51SMed Ismail Bennani "encoding": "uint", 13776bff2d51SMed Ismail Bennani "format": "hex", 13786bff2d51SMed Ismail Bennani "set": 0, 13796bff2d51SMed Ismail Bennani "gcc": 22, 13806bff2d51SMed Ismail Bennani "dwarf": 22, 13816bff2d51SMed Ismail Bennani }, 13826bff2d51SMed Ismail Bennani { 13836bff2d51SMed Ismail Bennani "name": "x23", 13846bff2d51SMed Ismail Bennani "bitsize": 64, 13856bff2d51SMed Ismail Bennani "offset": 184, 13866bff2d51SMed Ismail Bennani "encoding": "uint", 13876bff2d51SMed Ismail Bennani "format": "hex", 13886bff2d51SMed Ismail Bennani "set": 0, 13896bff2d51SMed Ismail Bennani "gcc": 23, 13906bff2d51SMed Ismail Bennani "dwarf": 23, 13916bff2d51SMed Ismail Bennani }, 13926bff2d51SMed Ismail Bennani { 13936bff2d51SMed Ismail Bennani "name": "x24", 13946bff2d51SMed Ismail Bennani "bitsize": 64, 13956bff2d51SMed Ismail Bennani "offset": 192, 13966bff2d51SMed Ismail Bennani "encoding": "uint", 13976bff2d51SMed Ismail Bennani "format": "hex", 13986bff2d51SMed Ismail Bennani "set": 0, 13996bff2d51SMed Ismail Bennani "gcc": 24, 14006bff2d51SMed Ismail Bennani "dwarf": 24, 14016bff2d51SMed Ismail Bennani }, 14026bff2d51SMed Ismail Bennani { 14036bff2d51SMed Ismail Bennani "name": "x25", 14046bff2d51SMed Ismail Bennani "bitsize": 64, 14056bff2d51SMed Ismail Bennani "offset": 200, 14066bff2d51SMed Ismail Bennani "encoding": "uint", 14076bff2d51SMed Ismail Bennani "format": "hex", 14086bff2d51SMed Ismail Bennani "set": 0, 14096bff2d51SMed Ismail Bennani "gcc": 25, 14106bff2d51SMed Ismail Bennani "dwarf": 25, 14116bff2d51SMed Ismail Bennani }, 14126bff2d51SMed Ismail Bennani { 14136bff2d51SMed Ismail Bennani "name": "x26", 14146bff2d51SMed Ismail Bennani "bitsize": 64, 14156bff2d51SMed Ismail Bennani "offset": 208, 14166bff2d51SMed Ismail Bennani "encoding": "uint", 14176bff2d51SMed Ismail Bennani "format": "hex", 14186bff2d51SMed Ismail Bennani "set": 0, 14196bff2d51SMed Ismail Bennani "gcc": 26, 14206bff2d51SMed Ismail Bennani "dwarf": 26, 14216bff2d51SMed Ismail Bennani }, 14226bff2d51SMed Ismail Bennani { 14236bff2d51SMed Ismail Bennani "name": "x27", 14246bff2d51SMed Ismail Bennani "bitsize": 64, 14256bff2d51SMed Ismail Bennani "offset": 216, 14266bff2d51SMed Ismail Bennani "encoding": "uint", 14276bff2d51SMed Ismail Bennani "format": "hex", 14286bff2d51SMed Ismail Bennani "set": 0, 14296bff2d51SMed Ismail Bennani "gcc": 27, 14306bff2d51SMed Ismail Bennani "dwarf": 27, 14316bff2d51SMed Ismail Bennani }, 14326bff2d51SMed Ismail Bennani { 14336bff2d51SMed Ismail Bennani "name": "x28", 14346bff2d51SMed Ismail Bennani "bitsize": 64, 14356bff2d51SMed Ismail Bennani "offset": 224, 14366bff2d51SMed Ismail Bennani "encoding": "uint", 14376bff2d51SMed Ismail Bennani "format": "hex", 14386bff2d51SMed Ismail Bennani "set": 0, 14396bff2d51SMed Ismail Bennani "gcc": 28, 14406bff2d51SMed Ismail Bennani "dwarf": 28, 14416bff2d51SMed Ismail Bennani }, 14426bff2d51SMed Ismail Bennani { 14436bff2d51SMed Ismail Bennani "name": "x29", 14446bff2d51SMed Ismail Bennani "bitsize": 64, 14456bff2d51SMed Ismail Bennani "offset": 232, 14466bff2d51SMed Ismail Bennani "encoding": "uint", 14476bff2d51SMed Ismail Bennani "format": "hex", 14486bff2d51SMed Ismail Bennani "set": 0, 14496bff2d51SMed Ismail Bennani "gcc": 29, 14506bff2d51SMed Ismail Bennani "dwarf": 29, 14516bff2d51SMed Ismail Bennani "generic": "fp", 14526bff2d51SMed Ismail Bennani "alt-name": "fp", 14536bff2d51SMed Ismail Bennani }, 14546bff2d51SMed Ismail Bennani { 14556bff2d51SMed Ismail Bennani "name": "x30", 14566bff2d51SMed Ismail Bennani "bitsize": 64, 14576bff2d51SMed Ismail Bennani "offset": 240, 14586bff2d51SMed Ismail Bennani "encoding": "uint", 14596bff2d51SMed Ismail Bennani "format": "hex", 14606bff2d51SMed Ismail Bennani "set": 0, 14616bff2d51SMed Ismail Bennani "gcc": 30, 14626bff2d51SMed Ismail Bennani "dwarf": 30, 14636bff2d51SMed Ismail Bennani "generic": "lr", 14646bff2d51SMed Ismail Bennani "alt-name": "lr", 14656bff2d51SMed Ismail Bennani }, 14666bff2d51SMed Ismail Bennani { 14676bff2d51SMed Ismail Bennani "name": "sp", 14686bff2d51SMed Ismail Bennani "bitsize": 64, 14696bff2d51SMed Ismail Bennani "offset": 248, 14706bff2d51SMed Ismail Bennani "encoding": "uint", 14716bff2d51SMed Ismail Bennani "format": "hex", 14726bff2d51SMed Ismail Bennani "set": 0, 14736bff2d51SMed Ismail Bennani "gcc": 31, 14746bff2d51SMed Ismail Bennani "dwarf": 31, 14756bff2d51SMed Ismail Bennani "generic": "sp", 14766bff2d51SMed Ismail Bennani "alt-name": "sp", 14776bff2d51SMed Ismail Bennani }, 14786bff2d51SMed Ismail Bennani { 14796bff2d51SMed Ismail Bennani "name": "pc", 14806bff2d51SMed Ismail Bennani "bitsize": 64, 14816bff2d51SMed Ismail Bennani "offset": 256, 14826bff2d51SMed Ismail Bennani "encoding": "uint", 14836bff2d51SMed Ismail Bennani "format": "hex", 14846bff2d51SMed Ismail Bennani "set": 0, 14856bff2d51SMed Ismail Bennani "gcc": 32, 14866bff2d51SMed Ismail Bennani "dwarf": 32, 14876bff2d51SMed Ismail Bennani "generic": "pc", 14886bff2d51SMed Ismail Bennani "alt-name": "pc", 14896bff2d51SMed Ismail Bennani }, 14906bff2d51SMed Ismail Bennani { 14916bff2d51SMed Ismail Bennani "name": "cpsr", 14926bff2d51SMed Ismail Bennani "bitsize": 32, 14936bff2d51SMed Ismail Bennani "offset": 264, 14946bff2d51SMed Ismail Bennani "encoding": "uint", 14956bff2d51SMed Ismail Bennani "format": "hex", 14966bff2d51SMed Ismail Bennani "set": 0, 14976bff2d51SMed Ismail Bennani "gcc": 33, 14986bff2d51SMed Ismail Bennani "dwarf": 33, 14996bff2d51SMed Ismail Bennani }, 15006bff2d51SMed Ismail Bennani] 15016bff2d51SMed Ismail Bennani 15026bff2d51SMed Ismail BennaniINTEL64_GPR = [ 15036bff2d51SMed Ismail Bennani { 15046bff2d51SMed Ismail Bennani "name": "rax", 15056bff2d51SMed Ismail Bennani "bitsize": 64, 15066bff2d51SMed Ismail Bennani "offset": 0, 15076bff2d51SMed Ismail Bennani "encoding": "uint", 15086bff2d51SMed Ismail Bennani "format": "hex", 15096bff2d51SMed Ismail Bennani "set": 0, 15106bff2d51SMed Ismail Bennani "gcc": 0, 15116bff2d51SMed Ismail Bennani "dwarf": 0, 15126bff2d51SMed Ismail Bennani }, 15136bff2d51SMed Ismail Bennani { 15146bff2d51SMed Ismail Bennani "name": "rbx", 15156bff2d51SMed Ismail Bennani "bitsize": 64, 15166bff2d51SMed Ismail Bennani "offset": 8, 15176bff2d51SMed Ismail Bennani "encoding": "uint", 15186bff2d51SMed Ismail Bennani "format": "hex", 15196bff2d51SMed Ismail Bennani "set": 0, 15206bff2d51SMed Ismail Bennani "gcc": 3, 15216bff2d51SMed Ismail Bennani "dwarf": 3, 15226bff2d51SMed Ismail Bennani }, 15236bff2d51SMed Ismail Bennani { 15246bff2d51SMed Ismail Bennani "name": "rcx", 15256bff2d51SMed Ismail Bennani "bitsize": 64, 15266bff2d51SMed Ismail Bennani "offset": 16, 15276bff2d51SMed Ismail Bennani "encoding": "uint", 15286bff2d51SMed Ismail Bennani "format": "hex", 15296bff2d51SMed Ismail Bennani "set": 0, 15306bff2d51SMed Ismail Bennani "gcc": 2, 15316bff2d51SMed Ismail Bennani "dwarf": 2, 15326bff2d51SMed Ismail Bennani "generic": "arg4", 15336bff2d51SMed Ismail Bennani "alt-name": "arg4", 15346bff2d51SMed Ismail Bennani }, 15356bff2d51SMed Ismail Bennani { 15366bff2d51SMed Ismail Bennani "name": "rdx", 15376bff2d51SMed Ismail Bennani "bitsize": 64, 15386bff2d51SMed Ismail Bennani "offset": 24, 15396bff2d51SMed Ismail Bennani "encoding": "uint", 15406bff2d51SMed Ismail Bennani "format": "hex", 15416bff2d51SMed Ismail Bennani "set": 0, 15426bff2d51SMed Ismail Bennani "gcc": 1, 15436bff2d51SMed Ismail Bennani "dwarf": 1, 15446bff2d51SMed Ismail Bennani "generic": "arg3", 15456bff2d51SMed Ismail Bennani "alt-name": "arg3", 15466bff2d51SMed Ismail Bennani }, 15476bff2d51SMed Ismail Bennani { 15486bff2d51SMed Ismail Bennani "name": "rdi", 15496bff2d51SMed Ismail Bennani "bitsize": 64, 15506bff2d51SMed Ismail Bennani "offset": 32, 15516bff2d51SMed Ismail Bennani "encoding": "uint", 15526bff2d51SMed Ismail Bennani "format": "hex", 15536bff2d51SMed Ismail Bennani "set": 0, 15546bff2d51SMed Ismail Bennani "gcc": 5, 15556bff2d51SMed Ismail Bennani "dwarf": 5, 15566bff2d51SMed Ismail Bennani "generic": "arg1", 15576bff2d51SMed Ismail Bennani "alt-name": "arg1", 15586bff2d51SMed Ismail Bennani }, 15596bff2d51SMed Ismail Bennani { 15606bff2d51SMed Ismail Bennani "name": "rsi", 15616bff2d51SMed Ismail Bennani "bitsize": 64, 15626bff2d51SMed Ismail Bennani "offset": 40, 15636bff2d51SMed Ismail Bennani "encoding": "uint", 15646bff2d51SMed Ismail Bennani "format": "hex", 15656bff2d51SMed Ismail Bennani "set": 0, 15666bff2d51SMed Ismail Bennani "gcc": 4, 15676bff2d51SMed Ismail Bennani "dwarf": 4, 15686bff2d51SMed Ismail Bennani "generic": "arg2", 15696bff2d51SMed Ismail Bennani "alt-name": "arg2", 15706bff2d51SMed Ismail Bennani }, 15716bff2d51SMed Ismail Bennani { 15726bff2d51SMed Ismail Bennani "name": "rbp", 15736bff2d51SMed Ismail Bennani "bitsize": 64, 15746bff2d51SMed Ismail Bennani "offset": 48, 15756bff2d51SMed Ismail Bennani "encoding": "uint", 15766bff2d51SMed Ismail Bennani "format": "hex", 15776bff2d51SMed Ismail Bennani "set": 0, 15786bff2d51SMed Ismail Bennani "gcc": 6, 15796bff2d51SMed Ismail Bennani "dwarf": 6, 15806bff2d51SMed Ismail Bennani "generic": "fp", 15816bff2d51SMed Ismail Bennani "alt-name": "fp", 15826bff2d51SMed Ismail Bennani }, 15836bff2d51SMed Ismail Bennani { 15846bff2d51SMed Ismail Bennani "name": "rsp", 15856bff2d51SMed Ismail Bennani "bitsize": 64, 15866bff2d51SMed Ismail Bennani "offset": 56, 15876bff2d51SMed Ismail Bennani "encoding": "uint", 15886bff2d51SMed Ismail Bennani "format": "hex", 15896bff2d51SMed Ismail Bennani "set": 0, 15906bff2d51SMed Ismail Bennani "gcc": 7, 15916bff2d51SMed Ismail Bennani "dwarf": 7, 15926bff2d51SMed Ismail Bennani "generic": "sp", 15936bff2d51SMed Ismail Bennani "alt-name": "sp", 15946bff2d51SMed Ismail Bennani }, 15956bff2d51SMed Ismail Bennani { 15966bff2d51SMed Ismail Bennani "name": "r8", 15976bff2d51SMed Ismail Bennani "bitsize": 64, 15986bff2d51SMed Ismail Bennani "offset": 64, 15996bff2d51SMed Ismail Bennani "encoding": "uint", 16006bff2d51SMed Ismail Bennani "format": "hex", 16016bff2d51SMed Ismail Bennani "set": 0, 16026bff2d51SMed Ismail Bennani "gcc": 8, 16036bff2d51SMed Ismail Bennani "dwarf": 8, 16046bff2d51SMed Ismail Bennani "generic": "arg5", 16056bff2d51SMed Ismail Bennani "alt-name": "arg5", 16066bff2d51SMed Ismail Bennani }, 16076bff2d51SMed Ismail Bennani { 16086bff2d51SMed Ismail Bennani "name": "r9", 16096bff2d51SMed Ismail Bennani "bitsize": 64, 16106bff2d51SMed Ismail Bennani "offset": 72, 16116bff2d51SMed Ismail Bennani "encoding": "uint", 16126bff2d51SMed Ismail Bennani "format": "hex", 16136bff2d51SMed Ismail Bennani "set": 0, 16146bff2d51SMed Ismail Bennani "gcc": 9, 16156bff2d51SMed Ismail Bennani "dwarf": 9, 16166bff2d51SMed Ismail Bennani "generic": "arg6", 16176bff2d51SMed Ismail Bennani "alt-name": "arg6", 16186bff2d51SMed Ismail Bennani }, 16196bff2d51SMed Ismail Bennani { 16206bff2d51SMed Ismail Bennani "name": "r10", 16216bff2d51SMed Ismail Bennani "bitsize": 64, 16226bff2d51SMed Ismail Bennani "offset": 80, 16236bff2d51SMed Ismail Bennani "encoding": "uint", 16246bff2d51SMed Ismail Bennani "format": "hex", 16256bff2d51SMed Ismail Bennani "set": 0, 16266bff2d51SMed Ismail Bennani "gcc": 10, 16276bff2d51SMed Ismail Bennani "dwarf": 10, 16286bff2d51SMed Ismail Bennani }, 16296bff2d51SMed Ismail Bennani { 16306bff2d51SMed Ismail Bennani "name": "r11", 16316bff2d51SMed Ismail Bennani "bitsize": 64, 16326bff2d51SMed Ismail Bennani "offset": 88, 16336bff2d51SMed Ismail Bennani "encoding": "uint", 16346bff2d51SMed Ismail Bennani "format": "hex", 16356bff2d51SMed Ismail Bennani "set": 0, 16366bff2d51SMed Ismail Bennani "gcc": 11, 16376bff2d51SMed Ismail Bennani "dwarf": 11, 16386bff2d51SMed Ismail Bennani }, 16396bff2d51SMed Ismail Bennani { 16406bff2d51SMed Ismail Bennani "name": "r12", 16416bff2d51SMed Ismail Bennani "bitsize": 64, 16426bff2d51SMed Ismail Bennani "offset": 96, 16436bff2d51SMed Ismail Bennani "encoding": "uint", 16446bff2d51SMed Ismail Bennani "format": "hex", 16456bff2d51SMed Ismail Bennani "set": 0, 16466bff2d51SMed Ismail Bennani "gcc": 12, 16476bff2d51SMed Ismail Bennani "dwarf": 12, 16486bff2d51SMed Ismail Bennani }, 16496bff2d51SMed Ismail Bennani { 16506bff2d51SMed Ismail Bennani "name": "r13", 16516bff2d51SMed Ismail Bennani "bitsize": 64, 16526bff2d51SMed Ismail Bennani "offset": 104, 16536bff2d51SMed Ismail Bennani "encoding": "uint", 16546bff2d51SMed Ismail Bennani "format": "hex", 16556bff2d51SMed Ismail Bennani "set": 0, 16566bff2d51SMed Ismail Bennani "gcc": 13, 16576bff2d51SMed Ismail Bennani "dwarf": 13, 16586bff2d51SMed Ismail Bennani }, 16596bff2d51SMed Ismail Bennani { 16606bff2d51SMed Ismail Bennani "name": "r14", 16616bff2d51SMed Ismail Bennani "bitsize": 64, 16626bff2d51SMed Ismail Bennani "offset": 112, 16636bff2d51SMed Ismail Bennani "encoding": "uint", 16646bff2d51SMed Ismail Bennani "format": "hex", 16656bff2d51SMed Ismail Bennani "set": 0, 16666bff2d51SMed Ismail Bennani "gcc": 14, 16676bff2d51SMed Ismail Bennani "dwarf": 14, 16686bff2d51SMed Ismail Bennani }, 16696bff2d51SMed Ismail Bennani { 16706bff2d51SMed Ismail Bennani "name": "r15", 16716bff2d51SMed Ismail Bennani "bitsize": 64, 16726bff2d51SMed Ismail Bennani "offset": 120, 16736bff2d51SMed Ismail Bennani "encoding": "uint", 16746bff2d51SMed Ismail Bennani "format": "hex", 16756bff2d51SMed Ismail Bennani "set": 0, 16766bff2d51SMed Ismail Bennani "gcc": 15, 16776bff2d51SMed Ismail Bennani "dwarf": 15, 16786bff2d51SMed Ismail Bennani }, 16796bff2d51SMed Ismail Bennani { 16806bff2d51SMed Ismail Bennani "name": "rip", 16816bff2d51SMed Ismail Bennani "bitsize": 64, 16826bff2d51SMed Ismail Bennani "offset": 128, 16836bff2d51SMed Ismail Bennani "encoding": "uint", 16846bff2d51SMed Ismail Bennani "format": "hex", 16856bff2d51SMed Ismail Bennani "set": 0, 16866bff2d51SMed Ismail Bennani "gcc": 16, 16876bff2d51SMed Ismail Bennani "dwarf": 16, 16886bff2d51SMed Ismail Bennani "generic": "pc", 16896bff2d51SMed Ismail Bennani "alt-name": "pc", 16906bff2d51SMed Ismail Bennani }, 16916bff2d51SMed Ismail Bennani { 16926bff2d51SMed Ismail Bennani "name": "rflags", 16936bff2d51SMed Ismail Bennani "bitsize": 64, 16946bff2d51SMed Ismail Bennani "offset": 136, 16956bff2d51SMed Ismail Bennani "encoding": "uint", 16966bff2d51SMed Ismail Bennani "format": "hex", 16976bff2d51SMed Ismail Bennani "set": 0, 16986bff2d51SMed Ismail Bennani "generic": "flags", 16996bff2d51SMed Ismail Bennani "alt-name": "flags", 17006bff2d51SMed Ismail Bennani }, 17016bff2d51SMed Ismail Bennani { 17026bff2d51SMed Ismail Bennani "name": "cs", 17036bff2d51SMed Ismail Bennani "bitsize": 64, 17046bff2d51SMed Ismail Bennani "offset": 144, 17056bff2d51SMed Ismail Bennani "encoding": "uint", 17066bff2d51SMed Ismail Bennani "format": "hex", 17076bff2d51SMed Ismail Bennani "set": 0, 17086bff2d51SMed Ismail Bennani }, 17096bff2d51SMed Ismail Bennani { 17106bff2d51SMed Ismail Bennani "name": "fs", 17116bff2d51SMed Ismail Bennani "bitsize": 64, 17126bff2d51SMed Ismail Bennani "offset": 152, 17136bff2d51SMed Ismail Bennani "encoding": "uint", 17146bff2d51SMed Ismail Bennani "format": "hex", 17156bff2d51SMed Ismail Bennani "set": 0, 17166bff2d51SMed Ismail Bennani }, 17176bff2d51SMed Ismail Bennani { 17186bff2d51SMed Ismail Bennani "name": "gs", 17196bff2d51SMed Ismail Bennani "bitsize": 64, 17206bff2d51SMed Ismail Bennani "offset": 160, 17216bff2d51SMed Ismail Bennani "encoding": "uint", 17226bff2d51SMed Ismail Bennani "format": "hex", 17236bff2d51SMed Ismail Bennani "set": 0, 17246bff2d51SMed Ismail Bennani }, 17256bff2d51SMed Ismail Bennani] 1726