Backport use of `pwndbg.aglib.arch.update()` to current upstream (#2373)

pull/2379/head
Matt. 1 year ago committed by GitHub
parent 9361759620
commit 76eba80747
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,4 @@
from __future__ import annotations
from pwndbg.aglib import arch as arch_mod
from pwndbg.aglib.arch import arch as arch

@ -1,15 +1,42 @@
from __future__ import annotations from __future__ import annotations
import pwndbg import pwndbg
from pwndbg.lib.arch import Arch
# We will optimize this module in the future, by having it work in the same ARCHS = (
# way the `gdblib` version of it works, and that will come at the same "x86-64",
# time this module gets expanded to have the full feature set of its `gdlib` "i386",
# coutnerpart. For now, though, this should be good enough. "aarch64",
"mips",
"powerpc",
"sparc",
"arm",
"armcm",
"riscv:rv32",
"riscv:rv64",
"riscv",
)
def __getattr__(name): # mapping between gdb and pwntools arch names
if name == "endian": pwnlib_archs_mapping = {
return pwndbg.dbg.selected_inferior().arch().endian "x86-64": "amd64",
elif name == "ptrsize": "i386": "i386",
return pwndbg.dbg.selected_inferior().arch().ptrsize "aarch64": "aarch64",
"mips": "mips",
"powerpc": "powerpc",
"sparc": "sparc",
"arm": "arm",
"iwmmxt": "arm",
"armcm": "thumb",
"rv32": "riscv32",
"rv64": "riscv64",
}
arch: Arch = Arch("i386", 4, "little")
def update() -> None:
a = pwndbg.dbg.selected_inferior().arch()
arch.update(a.name, a.ptrsize, a.endian)

@ -8,8 +8,9 @@ import pwndbg.gdblib.memory
import pwndbg.gdblib.next import pwndbg.gdblib.next
import pwndbg.gdblib.tls import pwndbg.gdblib.tls
import pwndbg.gdblib.typeinfo import pwndbg.gdblib.typeinfo
from pwndbg.aglib import arch_mod as arch_mod_aglib
from pwndbg.dbg import EventType from pwndbg.dbg import EventType
from pwndbg.gdblib import arch_mod from pwndbg.gdblib import arch_mod as arch_mod_gdblib
# TODO: Combine these `update_*` hook callbacks into one method # TODO: Combine these `update_*` hook callbacks into one method
@ -25,7 +26,8 @@ def update_typeinfo() -> None:
@pwndbg.dbg.event_handler(EventType.STOP) @pwndbg.dbg.event_handler(EventType.STOP)
@pwndbg.dbg.event_handler(EventType.NEW_MODULE) @pwndbg.dbg.event_handler(EventType.NEW_MODULE)
def update_arch() -> None: def update_arch() -> None:
arch_mod.update() arch_mod_gdblib.update()
arch_mod_aglib.update()
@pwndbg.dbg.event_handler(EventType.NEW_MODULE) @pwndbg.dbg.event_handler(EventType.NEW_MODULE)

Loading…
Cancel
Save