Author: Jonas Devlieghere Date: 2022-01-31T10:50:16-08:00 New Revision: e1cad1303bf9d2a77546469dc0987502692f80d9
URL: https://github.com/llvm/llvm-project/commit/e1cad1303bf9d2a77546469dc0987502692f80d9 DIFF: https://github.com/llvm/llvm-project/commit/e1cad1303bf9d2a77546469dc0987502692f80d9.diff LOG: [lldb] Support Rosetta registers in crashlog.py Rosetta crashlogs can have their own thread register state. Unlike the other registers which ware directly listed under "threadState", the Rosetta registers are nested under their own key in the JSON, as illustrated below: { "threadState": { "rosetta": { "tmp2": { "value": 4935057216 }, "tmp1": { "value": 4365863188 }, "tmp0": { "value": 18446744073709551615 } } } } Added: Modified: lldb/examples/python/crashlog.py lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test Removed: ################################################################################ diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index bdb9ae12b33ce..370b46a90bd99 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -523,10 +523,13 @@ def parse_threads(self, json_threads): def parse_thread_registers(self, json_thread_state): registers = dict() for key, state in json_thread_state.items(): + if key == "rosetta": + registers.update(self.parse_thread_registers(state)) + continue try: value = int(state['value']) registers[key] = value - except (TypeError, ValueError): + except (KeyError, ValueError, TypeError): pass return registers diff --git a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips index 109ac2ba24858..af72bba8c6d7c 100644 --- a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips +++ b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips @@ -106,6 +106,17 @@ "rcx": { "value": 140732860114656 }, + "rosetta": { + "tmp2": { + "value": 8 + }, + "tmp1": { + "value": 20 + }, + "tmp0": { + "value": 92 + } + }, "flavor": "x86_THREAD_STATE", "rdi": { "value": 1 diff --git a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test index b70cd44c0c8e8..1669b40f3aea0 100644 --- a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test +++ b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test @@ -13,5 +13,6 @@ # CHECK: [ 1] {{.*}}out`bar + 8 at test.c # CHECK: [ 2] {{.*}}out`main + 19 at test.c # CHECK: rbp = 0x00007ffeec22a530 +# CHECK: tmp2 = 0x0000000000000008 # CHECK: invalid foo # CHECK: invalid bar _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits