You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pwndbg/pwndbg/commands/cpsr.py

33 lines
819 B
Python

import pwndbg.commands
import pwndbg.gdblib.arch
import pwndbg.gdblib.regs
from pwndbg.color import context
from pwndbg.color import message
@pwndbg.commands.ArgparsedCommand("Print out ARM CPSR or xPSR register")
@pwndbg.commands.OnlyWhenRunning
def cpsr():
arm_print_psr()
@pwndbg.commands.ArgparsedCommand("Print out ARM xPSR or CPSR register")
@pwndbg.commands.OnlyWhenRunning
def xpsr():
arm_print_psr()
def arm_print_psr():
if pwndbg.gdblib.arch.current not in ("arm", "armcm"):
print(message.warn("This is only available on ARM"))
return
reg = "cpsr" if pwndbg.gdblib.arch.current == "arm" else "xpsr"
print(
"%s %s"
% (
reg,
context.format_flags(getattr(pwndbg.gdblib.regs, reg), pwndbg.gdblib.regs.flags[reg]),
)
)