From e41c749032180c254329b6c2c0d62955389d3f07 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Fri, 3 Jan 2025 14:09:10 -0500 Subject: [PATCH] GP-5230: Fix gdb register endian. Delete removed keys. --- .../src/main/py/src/ghidragdb/commands.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Ghidra/Debug/Debugger-agent-gdb/src/main/py/src/ghidragdb/commands.py b/Ghidra/Debug/Debugger-agent-gdb/src/main/py/src/ghidragdb/commands.py index 531073c90e..5bc251cf57 100644 --- a/Ghidra/Debug/Debugger-agent-gdb/src/main/py/src/ghidragdb/commands.py +++ b/Ghidra/Debug/Debugger-agent-gdb/src/main/py/src/ghidragdb/commands.py @@ -594,15 +594,18 @@ def putreg(frame, reg_descs): cobj = STATE.trace.create_object(space) cobj.insert() mapper = STATE.trace.register_mapper + keys = [] values = [] # NB: This command will fail if the process is running - endian = arch.get_endian() for desc in reg_descs: v = frame.read_register(desc.name) rv = mapper.map_value(inf, desc.name, v) values.append(rv) - value = hex(int.from_bytes(rv.value, endian)) + # Mapper has converted to big endian. Display value should interpret it as such. + value = hex(int.from_bytes(rv.value, byteorder='big')) cobj.set_value(desc.name, str(value)) + keys.append(desc.name) + cobj.retain_values(keys) # TODO: Memorize registers that failed for this arch, and omit later. missing = STATE.trace.put_registers(space, values) return {'missing': missing}