SceDeci4pDbgp

From Vita Development Wiki
Revision as of 19:19, 13 January 2022 by CreepNT (talk | contribs) (Add signature for DTrace breakpoint handlers, add some info about module history, add missing headers for DbgpForDriver functions)
Jump to navigation Jump to search

Some functionality provided by this module seems to have been merged into SceUlobjMgr between 0.945 and 0.990.

Module

Version World Privilege
3.60-3.65 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.940-0.990 SceDeci4pDbgpForDriver Non-secure User 0xFBD04C34
1.69-3.65 SceDeci4pDbgpForDriver Non-secure Kernel 0xFBD04C34
3.65 SceDeci4pDbgp Non-secure User 0x40286FC4

Types

/**
    @brief Breakpoint handler (0.990 signature)
    
    @param[in] pid - UID of the process that hit the breakpoint
    @param[in] thid - UID of the thread that hit the breakpoint
    @param[in] bkpt_addr - Address of the breakpoint opcode
    @param[in] excp_ctx - Pointer to exception context (breakpoints trigger a PABT)
    @param[in] cpsr - Value of the CPSR when breakpoint was hit
    @param[in] arm_opcode - Opcode of the ARM instruction that triggered breakpoint (reversed endianness)
    @param[in] thumb_opcode - Opcode of the Thumb instruction that triggered breakpoint (reversed endianness)
    @param[in] is_thumb - 1 if CPU ran in Thumb mode when breakpoint was hit, 0 otherwise
*/
typedef SceInt32 (SceDbgpBreakpointHandler)(ScePID pid, SceUID thid, ScePVoid bkpt_addr, SceExcpmgrExceptionContext* excp_ctx, SceUInt32 spsr, SceUInt32 arm_opcode, SceUInt16 thumb_opcode, SceBool is_thumb);

/**
    @brief Breakpoint handler (3.60+ signature)
    
    @param[in] pid - UID of the process that hit the breakpoint
    @param[in] thid - UID of the thread that hit the breakpoint
    @param[in] bkpt_addr - Address of the breakpoint opcode
    @param[in] sp - Value of the stack pointer when breakpoint was hit
    @param[in] cpsr - Value of the CPSR when breakpoint was hit
    @param[in] arm_opcode - Opcode of the ARM instruction that triggered breakpoint (reversed endianness)
    @param[in] thumb_opcode - Opcode of the Thumb instruction that triggered breakpoint (reversed endianness)
    @param[in] is_thumb - 1 if CPU ran in Thumb mode when breakpoint was hit, 0 otherwise
*/
typedef SceInt32 (SceDbgpBreakpointHandler)(ScePID pid, SceUID thid, ScePVoid bkpt_addr, SceUIntPtr sp, SceUInt32 cpsr, SceUInt32 arm_opcode, SceUInt16 thumb_opcode, SceBool is_thumb);

SceDeci4pDbgpForDriver

_sceDbgpStartSupportingAppObject

Version NID
0.940-0.945 0x72AE00B7
0.990-3.60 Not present

Seemingly replaced by _sceUlobjMgrStartSupportingUserlevelObject.

//On success, *ppDebugInfo receives a pointer to a 0x81000 bytes memblock
SceInt32 _sceDbgpStartSupportingAppObject(ScePVoid** ppDebugInfo);

_sceDbgpStopSupportingAppObject

Version NID
0.940-0.945 0x11908EDB
0.990-3.60 Not present

Seemingly replaced by _sceUlobjMgrStopSupportingUserlevelObject.

SceInt32 _sceDbgpStopSupportingAppObject(void);

sceDbgpGetDTraceBreakpointHandlerForDriver

Version NID
0.940-0.945 Not present
0.990-3.60 0x1D7C7BF
SceDbgpBreakpointHandler* sceDbgpGetDTraceBreakpointHandlerForDriver(void);

sceDbgpSetDTraceBreakpointHandlerForDriver

Version NID
0.940-0.945 Not present
0.990-3.60 0x0509AC51

In 0.990-0.995, this handles bkpt #0x90. Seems to handle breakpoints with code < 0x7F in 3.60.

void sceDbgpSetDTraceBreakpointHandlerForDriver(SceDbgpBreakpointHandler* handler);

SceDeci4pDbgpForDriver_7251789E

Version NID
0.940-0.995 Not present
3.60 0x7251789E

Sets handler for bkpt #0x90.

void SceDeci4pDbgpForDriver_7251789E(SceDbgpBreakpointHandler* handler);

SceDeci4pDbgpForDriver_9CD5EE8C

Version NID
0.940-0.995 Not present
3.60 0x9CD5EE8C

Get handler set by SceDeci4pDbgpForDriver_7251789E.

SceDbgpBreakpointHandler* SceDeci4pDbgpForDriver_9CD5EE8C(void);

SceDeci4pDbgp

         SceDeci4pDbgp_073A6B4B: 0x073A6B4B
         SceDeci4pDbgp_0C30DE67: 0x0C30DE67
         SceDeci4pDbgp_6180DC1A: 0x6180DC1A
         SceDeci4pDbgp_E0EED45E: 0xE0EED45E