https://github.com/kper updated https://github.com/llvm/llvm-project/pull/124475
>From 0265d7e28d95d2dc2c06832b63ce7bd141429b99 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Sun, 26 Jan 2025 17:34:17 +0000 Subject: [PATCH 01/10] lldb: Extended if conditions to support alias names for registers --- .../Plugins/ABI/RISCV/ABISysV_riscv.cpp | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp b/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp index 8412991933d277..c463bd006b3db4 100644 --- a/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp +++ b/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp @@ -850,8 +850,62 @@ void ABISysV_riscv::AugmentRegisterInfo( it.value().alt_name.SetCString("x3"); else if (it.value().name == "fp") it.value().alt_name.SetCString("s0"); + else if (it.value().name == "tp") + it.value().alt_name.SetCString("x4"); else if (it.value().name == "s0") it.value().alt_name.SetCString("x8"); + else if (it.value().name == "s1") + it.value().alt_name.SetCString("x9"); + else if (it.value().name == "t0") + it.value().alt_name.SetCString("x5"); + else if (it.value().name == "t1") + it.value().alt_name.SetCString("x6"); + else if (it.value().name == "t2") + it.value().alt_name.SetCString("x7"); + else if (it.value().name == "a0") + it.value().alt_name.SetCString("x10"); + else if (it.value().name == "a1") + it.value().alt_name.SetCString("x11"); + else if (it.value().name == "a2") + it.value().alt_name.SetCString("x12"); + else if (it.value().name == "a3") + it.value().alt_name.SetCString("x13"); + else if (it.value().name == "a4") + it.value().alt_name.SetCString("x14"); + else if (it.value().name == "a5") + it.value().alt_name.SetCString("x15"); + else if (it.value().name == "a6") + it.value().alt_name.SetCString("x16"); + else if (it.value().name == "a7") + it.value().alt_name.SetCString("x17"); + else if (it.value().name == "s2") + it.value().alt_name.SetCString("x18"); + else if (it.value().name == "s3") + it.value().alt_name.SetCString("x19"); + else if (it.value().name == "s4") + it.value().alt_name.SetCString("x20"); + else if (it.value().name == "s5") + it.value().alt_name.SetCString("x21"); + else if (it.value().name == "s6") + it.value().alt_name.SetCString("x22"); + else if (it.value().name == "s7") + it.value().alt_name.SetCString("x23"); + else if (it.value().name == "s8") + it.value().alt_name.SetCString("x24"); + else if (it.value().name == "s9") + it.value().alt_name.SetCString("x25"); + else if (it.value().name == "s10") + it.value().alt_name.SetCString("x26"); + else if (it.value().name == "s11") + it.value().alt_name.SetCString("x27"); + else if (it.value().name == "t3") + it.value().alt_name.SetCString("x28"); + else if (it.value().name == "t4") + it.value().alt_name.SetCString("x29"); + else if (it.value().name == "t5") + it.value().alt_name.SetCString("x30"); + else if (it.value().name == "t6") + it.value().alt_name.SetCString("x31"); // Set generic regnum so lldb knows what the PC, etc is it.value().regnum_generic = GetGenericNum(it.value().name.GetStringRef()); >From 098913013c8b93d6c94813f81aa0ed9df707afe4 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Tue, 28 Jan 2025 15:23:54 +0000 Subject: [PATCH 02/10] Added RISCV reg test for the ServerTargetXML --- .../TestGDBServerTargetXML.py | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py index 22f5553e40802d..c74726a88aa6ff 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py @@ -652,6 +652,155 @@ def haltReason(self): ) self.match("register read s31", ["s31 = 128"]) + @skipIfXmlSupportMissing + @skipIfRemote + @skipIfLLVMTargetMissing("RISCV") + def test_riscv64_regs(self): + """Test grabbing various riscv64 registers from gdbserver.""" + + class MyResponder(MockGDBServerResponder): + reg_data = ( + ( + "0102030405060708" # zero + "0102030405060708" # ra + "0102030405060708" # sp + "0102030405060708" # gp + "0102030405060708" # tp + "0102030405060708" # t0 + "0102030405060708" # t1 + "0102030405060708" # t2 + "0102030405060708" # fp + "0102030405060708" # s1 + "0102030405060708" # a0 + "0102030405060708" # a1 + "0102030405060708" # a2 + "0102030405060708" # a3 + "0102030405060708" # a4 + "0102030405060708" # a5 + "0102030405060708" # a6 + "0102030405060708" # a7 + "0102030405060708" # s2 + "0102030405060708" # s3 + "0102030405060708" # s4 + "0102030405060708" # s5 + "0102030405060708" # s6 + "0102030405060708" # s7 + "0102030405060708" # s8 + "0102030405060708" # s9 + "0102030405060708" # s10 + "0102030405060708" # s11 + "0102030405060708" # t3 + "0102030405060708" # t4 + "0102030405060708" # t5 + "0102030405060708" # t6 + ) + ) + + def qXferRead(self, obj, annex, offset, length): + if annex == "target.xml": + return ( + """<?xml version="1.0"?> + <!DOCTYPE feature SYSTEM "gdb-target.dtd"> + <target> + <architecture>riscv</architecture> + <feature name="org.gnu.gdb.riscv.cpu"> + <reg name="zero" bitsize="64" type="int"/> + <reg name="ra" bitsize="64" type="code_ptr"/> + <reg name="sp" bitsize="64" type="data_ptr"/> + <reg name="gp" bitsize="64" type="data_ptr"/> + <reg name="tp" bitsize="64" type="data_ptr"/> + <reg name="t0" bitsize="64" type="int"/> + <reg name="t1" bitsize="64" type="int"/> + <reg name="t2" bitsize="64" type="int"/> + <reg name="fp" bitsize="64" type="data_ptr"/> + <reg name="s1" bitsize="64" type="int"/> + <reg name="a0" bitsize="64" type="int"/> + <reg name="a1" bitsize="64" type="int"/> + <reg name="a2" bitsize="64" type="int"/> + <reg name="a3" bitsize="64" type="int"/> + <reg name="a4" bitsize="64" type="int"/> + <reg name="a5" bitsize="64" type="int"/> + <reg name="a6" bitsize="64" type="int"/> + <reg name="a7" bitsize="64" type="int"/> + <reg name="s2" bitsize="64" type="int"/> + <reg name="s3" bitsize="64" type="int"/> + <reg name="s4" bitsize="64" type="int"/> + <reg name="s5" bitsize="64" type="int"/> + <reg name="s6" bitsize="64" type="int"/> + <reg name="s7" bitsize="64" type="int"/> + <reg name="s8" bitsize="64" type="int"/> + <reg name="s9" bitsize="64" type="int"/> + <reg name="s10" bitsize="64" type="int"/> + <reg name="s11" bitsize="64" type="int"/> + <reg name="t3" bitsize="64" type="int"/> + <reg name="t4" bitsize="64" type="int"/> + <reg name="t5" bitsize="64" type="int"/> + <reg name="t6" bitsize="64" type="int"/> + <reg name="pc" bitsize="64" type="code_ptr"/> + </feature> + </target>""", + False, + ) + else: + return None, False + + def readRegister(self, regnum): + return "" + + def readRegisters(self): + return self.reg_data + + def writeRegisters(self, reg_hex): + self.reg_data = reg_hex + return "OK" + + def haltReason(self): + return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" + + self.server.responder = MyResponder() + + target = self.createTarget("basic_eh_frame-riscv64.yaml") + process = self.connect(target) + lldbutil.expect_state_changes( + self, self.dbg.GetListener(), process, [lldb.eStateStopped] + ) + + # test generic aliases + self.match("register read x0", ["zero = 0x0807060504030201"]) + self.match("register read x1", ["ra = 0x0807060504030201"]) + self.match("register read x2", ["sp = 0x0807060504030201"]) + self.match("register read x3", ["gp = 0x0807060504030201"]) + self.match("register read x4", ["tp = 0x0807060504030201"]) + self.match("register read x5", ["t0 = 0x0807060504030201"]) + self.match("register read x6", ["t1 = 0x0807060504030201"]) + self.match("register read x7", ["t2 = 0x0807060504030201"]) + # Register x8 is probably not working because it has two aliases fp, s0 + # self.match("register read x8", ["fp = 0x0807060504030201"]) + self.match("register read x9", ["s1 = 0x0807060504030201"]) + self.match("register read x10", ["a0 = 0x0807060504030201"]) + self.match("register read x11", ["a1 = 0x0807060504030201"]) + self.match("register read x12", ["a2 = 0x0807060504030201"]) + self.match("register read x13", ["a3 = 0x0807060504030201"]) + self.match("register read x14", ["a4 = 0x0807060504030201"]) + self.match("register read x15", ["a5 = 0x0807060504030201"]) + self.match("register read x16", ["a6 = 0x0807060504030201"]) + self.match("register read x17", ["a7 = 0x0807060504030201"]) + self.match("register read x18", ["s2 = 0x0807060504030201"]) + self.match("register read x19", ["s3 = 0x0807060504030201"]) + self.match("register read x20", ["s4 = 0x0807060504030201"]) + self.match("register read x21", ["s5 = 0x0807060504030201"]) + self.match("register read x22", ["s6 = 0x0807060504030201"]) + self.match("register read x23", ["s7 = 0x0807060504030201"]) + self.match("register read x24", ["s8 = 0x0807060504030201"]) + self.match("register read x25", ["s9 = 0x0807060504030201"]) + self.match("register read x26", ["s10 = 0x0807060504030201"]) + self.match("register read x27", ["s11 = 0x0807060504030201"]) + self.match("register read x28", ["t3 = 0x0807060504030201"]) + self.match("register read x29", ["t4 = 0x0807060504030201"]) + self.match("register read x30", ["t5 = 0x0807060504030201"]) + self.match("register read x31", ["t6 = 0x0807060504030201"]) + + @skipIfXmlSupportMissing @skipIfRemote @skipIfLLVMTargetMissing("X86") >From 9c7be03d00040a650907c6227abc022383128798 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Tue, 28 Jan 2025 16:28:52 +0000 Subject: [PATCH 03/10] Extended tests to check the aliases --- .../postmortem/elf-core/TestLinuxCore.py | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) diff --git a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py index 376d6492d83b60..4c3391565277a3 100644 --- a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py +++ b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py @@ -704,39 +704,105 @@ def test_riscv64_regs_gpr_fpr(self): process = target.LoadCore("linux-riscv64.gpr_fpr.core") values = {} + alias = {} values["pc"] = "0x000000000001016e" + values["ra"] = "0x00000000000101a4" + alias["x1"] = "ra" + values["sp"] = "0x0000003fffc1d2d0" + alias["x2"] = "sp" + values["gp"] = "0x0000002ae6eccf50" + alias["x3"] = "gp" + values["tp"] = "0x0000003ff3cb5400" + alias["x4"] = "tp" + values["t0"] = "0x7f7f7f7fffffffff" + alias["x5"] = "t0" + values["t1"] = "0x0000002ae6eb9b1c" + alias["x6"] = "t1" + values["t2"] = "0xffffffffffffffff" + alias["x7"] = "t2" + values["fp"] = "0x0000003fffc1d300" + alias["x8"] = "fp" + values["s1"] = "0x0000002ae6eced98" + alias["x9"] = "s1" + values["a0"] = "0x0" + alias["x10"] = "a0" + values["a1"] = "0x0000000000010144" + alias["x11"] = "a1" + values["a2"] = "0x0000002ae6ecedb0" + alias["x12"] = "a2" + values["a3"] = "0xafdbdbff81cf7f81" + alias["x13"] = "a3" + values["a4"] = "0x00000000000101e4" + alias["x14"] = "a4" + values["a5"] = "0x0" + alias["x15"] = "a5" + values["a6"] = "0x2f5b5a40014e0001" + alias["x16"] = "a6" + values["a7"] = "0x00000000000000dd" + alias["x17"] = "a7" + values["s2"] = "0x0000002ae6ec8860" + alias["x18"] = "s2" + values["s3"] = "0x0000002ae6ecedb0" + alias["x19"] = "s3" + values["s4"] = "0x0000003fff886c18" + alias["x20"] = "s4" + values["s5"] = "0x0000002ae6eceb78" + alias["x21"] = "s5" + values["s6"] = "0x0000002ae6ec8860" + alias["x22"] = "s6" + values["s7"] = "0x0000002ae6ec8860" + alias["x23"] = "s7" + values["s8"] = "0x0" + alias["x24"] = "s8" + values["s9"] = "0x000000000000000f" + alias["x25"] = "s9" + values["s10"] = "0x0000002ae6ecc8d0" + alias["x26"] = "s10" + values["s11"] = "0x0000000000000008" + alias["x27"] = "s11" + values["t3"] = "0x0000003ff3be3728" + alias["x28"] = "t3" + values["t4"] = "0x0" + alias["x29"] = "t4" + values["t5"] = "0x0000000000000002" + alias["x30"] = "t5" + values["t6"] = "0x0000002ae6ed08b9" + alias["x31"] = "t6" + values["zero"] = "0x0" + alias["x0"] = "zero" + values["fa5"] = "0xffffffff423c0000" values["fcsr"] = "0x00000000" @@ -788,6 +854,13 @@ def test_riscv64_regs_gpr_fpr(self): substrs=["{} = {}".format(regname, fpr_value)], ) + for aliasname, regname in alias.items(): + value = values[regname] + self.expect( + "register read {}".format(aliasname), + substrs=["{} = {}".format(regname, value)], + ) + self.expect("register read --all") @skipIfLLVMTargetMissing("RISCV") @@ -798,39 +871,104 @@ def test_riscv64_regs_gpr_only(self): process = target.LoadCore("linux-riscv64.gpr_only.core") values = {} + alias = {} values["pc"] = "0x0000000000010164" + values["ra"] = "0x0000000000010194" + alias["x1"] = "ra" + values["sp"] = "0x00fffffff4d5fcc0" + alias["x2"] = "sp" + values["gp"] = "0x0000000000157678" + alias["x3"] = "gp" + values["tp"] = "0x00ffffff99c43400" + alias["x4"] = "tp" + values["t0"] = "0x00ffffff99c6b260" + alias["x5"] = "t0" + values["t1"] = "0x00ffffff99b7bd54" + alias["x6"] = "t1" + values["t2"] = "0x0000000003f0b27f" + alias["x7"] = "t2" + values["fp"] = "0x00fffffff4d5fcf0" + alias["x8"] = "fp" + values["s1"] = "0x0000000000000003" + alias["x9"] = "s1" + values["a0"] = "0x0" + alias["x10"] = "a0" + values["a1"] = "0x0000000000010144" + alias["x11"] = "a1" + values["a2"] = "0x0000000000176460" + alias["x12"] = "a2" + values["a3"] = "0x000000000015ee38" + alias["x13"] = "a3" + values["a4"] = "0x00000000423c0000" + alias["x14"] = "a4" + values["a5"] = "0x0" + alias["x15"] = "a5" + values["a6"] = "0x0" + alias["x16"] = "a6" + values["a7"] = "0x00000000000000dd" + alias["x17"] = "a7" + values["s2"] = "0x0" + alias["x18"] = "s2" + values["s3"] = "0x000000000014ddf8" + alias["x19"] = "s3" + values["s4"] = "0x000000000003651c" + alias["x20"] = "s4" + values["s5"] = "0x00fffffffccd8d28" + alias["x21"] = "s5" + values["s6"] = "0x000000000014ddf8" + alias["x22"] = "s6" + values["s7"] = "0x00ffffff99c69d48" + alias["x23"] = "s7" + values["s8"] = "0x00ffffff99c6a008" + alias["x24"] = "s8" + values["s9"] = "0x0" + alias["x25"] = "s9" + values["s10"] = "0x0" + alias["x26"] = "s10" + values["s11"] = "0x0" + alias["x27"] = "s11" + values["t3"] = "0x00ffffff99c42000" + alias["x28"] = "t3" + values["t4"] = "0x00ffffff99af8e20" + alias["x29"] = "t4" + values["t5"] = "0x0000000000000005" + alias["x30"] = "t5" + values["t6"] = "0x44760bdd8d5f6381" + alias["x31"] = "t6" + values["zero"] = "0x0" + alias["x0"] = "zero" for regname, value in values.items(): self.expect( @@ -838,6 +976,13 @@ def test_riscv64_regs_gpr_only(self): substrs=["{} = {}".format(regname, value)], ) + for aliasname, regname in alias.items(): + value = values[regname] + self.expect( + "register read {}".format(aliasname), + substrs=["{} = {}".format(regname, value)], + ) + # Check that LLDB does not try to read other registers from core file self.expect( "register read --all", >From ec934cc57e17b2d281204a7116cd1213e61aa3af Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Wed, 29 Jan 2025 07:36:47 +0000 Subject: [PATCH 04/10] Fixed formatting --- .../TestGDBServerTargetXML.py | 66 +++++++++---------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py index c74726a88aa6ff..a27db7584e6c5f 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py @@ -660,40 +660,38 @@ def test_riscv64_regs(self): class MyResponder(MockGDBServerResponder): reg_data = ( - ( - "0102030405060708" # zero - "0102030405060708" # ra - "0102030405060708" # sp - "0102030405060708" # gp - "0102030405060708" # tp - "0102030405060708" # t0 - "0102030405060708" # t1 - "0102030405060708" # t2 - "0102030405060708" # fp - "0102030405060708" # s1 - "0102030405060708" # a0 - "0102030405060708" # a1 - "0102030405060708" # a2 - "0102030405060708" # a3 - "0102030405060708" # a4 - "0102030405060708" # a5 - "0102030405060708" # a6 - "0102030405060708" # a7 - "0102030405060708" # s2 - "0102030405060708" # s3 - "0102030405060708" # s4 - "0102030405060708" # s5 - "0102030405060708" # s6 - "0102030405060708" # s7 - "0102030405060708" # s8 - "0102030405060708" # s9 - "0102030405060708" # s10 - "0102030405060708" # s11 - "0102030405060708" # t3 - "0102030405060708" # t4 - "0102030405060708" # t5 - "0102030405060708" # t6 - ) + "0102030405060708" # zero + "0102030405060708" # ra + "0102030405060708" # sp + "0102030405060708" # gp + "0102030405060708" # tp + "0102030405060708" # t0 + "0102030405060708" # t1 + "0102030405060708" # t2 + "0102030405060708" # fp + "0102030405060708" # s1 + "0102030405060708" # a0 + "0102030405060708" # a1 + "0102030405060708" # a2 + "0102030405060708" # a3 + "0102030405060708" # a4 + "0102030405060708" # a5 + "0102030405060708" # a6 + "0102030405060708" # a7 + "0102030405060708" # s2 + "0102030405060708" # s3 + "0102030405060708" # s4 + "0102030405060708" # s5 + "0102030405060708" # s6 + "0102030405060708" # s7 + "0102030405060708" # s8 + "0102030405060708" # s9 + "0102030405060708" # s10 + "0102030405060708" # s11 + "0102030405060708" # t3 + "0102030405060708" # t4 + "0102030405060708" # t5 + "0102030405060708" # t6 ) def qXferRead(self, obj, annex, offset, length): >From 1f3b952fbd86a6d164a2f8b3e0719cf3cd3503c4 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Wed, 29 Jan 2025 07:55:26 +0000 Subject: [PATCH 05/10] Removed empty spaces --- .../gdb_remote_client/TestGDBServerTargetXML.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py index a27db7584e6c5f..4a1a13096be652 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py @@ -665,10 +665,10 @@ class MyResponder(MockGDBServerResponder): "0102030405060708" # sp "0102030405060708" # gp "0102030405060708" # tp - "0102030405060708" # t0 + "0102030405060708" # t0 "0102030405060708" # t1 "0102030405060708" # t2 - "0102030405060708" # fp + "0102030405060708" # fp "0102030405060708" # s1 "0102030405060708" # a0 "0102030405060708" # a1 >From 374fae9b7e09c882a07f802e75791241532b80d7 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Wed, 29 Jan 2025 08:01:33 +0000 Subject: [PATCH 06/10] Removed empty line --- .../functionalities/gdb_remote_client/TestGDBServerTargetXML.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py index 4a1a13096be652..983a310ff3934f 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py @@ -798,7 +798,6 @@ def haltReason(self): self.match("register read x30", ["t5 = 0x0807060504030201"]) self.match("register read x31", ["t6 = 0x0807060504030201"]) - @skipIfXmlSupportMissing @skipIfRemote @skipIfLLVMTargetMissing("X86") >From 5c23fe3b849c4ce9bcc8fa9f826661ccdef304a1 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Wed, 29 Jan 2025 08:43:49 +0000 Subject: [PATCH 07/10] Added riscv64 eh_frame --- .../basic_eh_frame-riscv64.yaml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lldb/test/API/functionalities/gdb_remote_client/basic_eh_frame-riscv64.yaml diff --git a/lldb/test/API/functionalities/gdb_remote_client/basic_eh_frame-riscv64.yaml b/lldb/test/API/functionalities/gdb_remote_client/basic_eh_frame-riscv64.yaml new file mode 100644 index 00000000000000..50cdd23f42667c --- /dev/null +++ b/lldb/test/API/functionalities/gdb_remote_client/basic_eh_frame-riscv64.yaml @@ -0,0 +1,20 @@ +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_RISCV +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x0000000000000570 + AddressAlign: 0x0000000000000004 + Content: DEADBEEF + - Name: .eh_frame + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x0000000000000688 + AddressAlign: 0x0000000000000008 + Content: 000006881000000000000000037a5200017c0101000006981b0d02001000000018000000ccfeffff000006a82200000000070100200000002c000000000006b89cffffff1000000000420e1042880242000006c80c080046c80c0210420e000000000000 +... >From 0230a3b4c7d4e211329aeb209cf17f7686d49bf2 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Thu, 30 Jan 2025 08:14:35 +0000 Subject: [PATCH 08/10] Addressed feedback --- .../TestGDBServerTargetXML.py | 1 + .../postmortem/elf-core/TestLinuxCore.py | 303 +++++------------- 2 files changed, 87 insertions(+), 217 deletions(-) diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py index 983a310ff3934f..cf82f7f168c206 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py @@ -696,6 +696,7 @@ class MyResponder(MockGDBServerResponder): def qXferRead(self, obj, annex, offset, length): if annex == "target.xml": + # Note that this XML does not include any aliases, LLDB must generate them itself. return ( """<?xml version="1.0"?> <!DOCTYPE feature SYSTEM "gdb-target.dtd"> diff --git a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py index 4c3391565277a3..eacbabc55e9dfe 100644 --- a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py +++ b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py @@ -703,108 +703,43 @@ def test_riscv64_regs_gpr_fpr(self): self.assertTrue(target, VALID_TARGET) process = target.LoadCore("linux-riscv64.gpr_fpr.core") - values = {} - alias = {} - values["pc"] = "0x000000000001016e" - - values["ra"] = "0x00000000000101a4" - alias["x1"] = "ra" - - values["sp"] = "0x0000003fffc1d2d0" - alias["x2"] = "sp" - - values["gp"] = "0x0000002ae6eccf50" - alias["x3"] = "gp" - - values["tp"] = "0x0000003ff3cb5400" - alias["x4"] = "tp" - - values["t0"] = "0x7f7f7f7fffffffff" - alias["x5"] = "t0" - - values["t1"] = "0x0000002ae6eb9b1c" - alias["x6"] = "t1" - - values["t2"] = "0xffffffffffffffff" - alias["x7"] = "t2" - - values["fp"] = "0x0000003fffc1d300" - alias["x8"] = "fp" - - values["s1"] = "0x0000002ae6eced98" - alias["x9"] = "s1" - - values["a0"] = "0x0" - alias["x10"] = "a0" - - values["a1"] = "0x0000000000010144" - alias["x11"] = "a1" - - values["a2"] = "0x0000002ae6ecedb0" - alias["x12"] = "a2" - - values["a3"] = "0xafdbdbff81cf7f81" - alias["x13"] = "a3" - - values["a4"] = "0x00000000000101e4" - alias["x14"] = "a4" - - values["a5"] = "0x0" - alias["x15"] = "a5" - - values["a6"] = "0x2f5b5a40014e0001" - alias["x16"] = "a6" - - values["a7"] = "0x00000000000000dd" - alias["x17"] = "a7" - - values["s2"] = "0x0000002ae6ec8860" - alias["x18"] = "s2" - - values["s3"] = "0x0000002ae6ecedb0" - alias["x19"] = "s3" - - values["s4"] = "0x0000003fff886c18" - alias["x20"] = "s4" - - values["s5"] = "0x0000002ae6eceb78" - alias["x21"] = "s5" - - values["s6"] = "0x0000002ae6ec8860" - alias["x22"] = "s6" - - values["s7"] = "0x0000002ae6ec8860" - alias["x23"] = "s7" - - values["s8"] = "0x0" - alias["x24"] = "s8" - - values["s9"] = "0x000000000000000f" - alias["x25"] = "s9" - - values["s10"] = "0x0000002ae6ecc8d0" - alias["x26"] = "s10" - - values["s11"] = "0x0000000000000008" - alias["x27"] = "s11" - - values["t3"] = "0x0000003ff3be3728" - alias["x28"] = "t3" - - values["t4"] = "0x0" - alias["x29"] = "t4" - - values["t5"] = "0x0000000000000002" - alias["x30"] = "t5" - - values["t6"] = "0x0000002ae6ed08b9" - alias["x31"] = "t6" - - values["zero"] = "0x0" - alias["x0"] = "zero" - - values["fa5"] = "0xffffffff423c0000" - values["fcsr"] = "0x00000000" + values = { + "pc": ( "0x000000000001016e", None ), + "zero": ( "0x0", "x0" ), + "ra": ( "0x00000000000101a4", "x1" ), + "sp": ( "0x0000003fffc1d2d0", "x2" ), + "gp": ( "0x0000002ae6eccf50", "x3" ), + "tp": ( "0x0000003ff3cb5400", "x4" ), + "t0": ( "0x7f7f7f7fffffffff", "x5" ), + "t1": ( "0x0000002ae6eb9b1c", "x6" ), + "t2": ( "0xffffffffffffffff", "x7" ), + "fp": ( "0x0000003fffc1d300", "x8" ), + "s1": ( "0x0000002ae6eced98", "x9" ), + "a0": ( "0x0000000000000000", "x10" ), + "a1": ( "0x0000000000010144", "x11" ), + "a2": ( "0x0000002ae6ecedb0", "x12" ), + "a3": ( "0xafdbdbff81cf7f81", "x13" ), + "a4": ( "0x00000000000101e4", "x14" ), + "a5": ( "0x0000000000000000", "x15" ), + "a6": ( "0x2f5b5a40014e0001", "x16" ), + "a7": ( "0x00000000000000dd", "x17" ), + "s2": ( "0x0000002ae6ec8860", "x18" ), + "s3": ( "0x0000002ae6ecedb0", "x19" ), + "s4": ( "0x0000003fff886c18", "x20" ), + "s5": ( "0x0000002ae6eceb78", "x21" ), + "s6": ( "0x0000002ae6ec8860", "x22" ), + "s7": ( "0x0000002ae6ec8860", "x23" ), + "s8": ( "0x0000000000000000", "x24" ), + "s9": ( "0x000000000000000f", "x25" ), + "s10": ( "0x0000002ae6ecc8d0", "x26" ), + "s11": ( "0x0000000000000008", "x27" ), + "t3": ( "0x0000003ff3be3728", "x28" ), + "t4": ( "0x0000000000000000", "x29" ), + "t5": ( "0x0000000000000002", "x30" ), + "t6": ( "0x0000002ae6ed08b9", "x31" ), + "fa5": ( "0xffffffff423c0000", None), + "fcsr": ( "0x00000000", None) + } fpr_names = { "ft0", @@ -842,11 +777,17 @@ def test_riscv64_regs_gpr_fpr(self): } fpr_value = "0x0000000000000000" - for regname, value in values.items(): + for regname in values: + value, alias = values[regname] self.expect( "register read {}".format(regname), substrs=["{} = {}".format(regname, value)], ) + if alias: + self.expect( + "register read {}".format(alias), + substrs=["{} = {}".format(regname, value)], + ) for regname in fpr_names: self.expect( @@ -854,13 +795,6 @@ def test_riscv64_regs_gpr_fpr(self): substrs=["{} = {}".format(regname, fpr_value)], ) - for aliasname, regname in alias.items(): - value = values[regname] - self.expect( - "register read {}".format(aliasname), - substrs=["{} = {}".format(regname, value)], - ) - self.expect("register read --all") @skipIfLLVMTargetMissing("RISCV") @@ -870,118 +804,53 @@ def test_riscv64_regs_gpr_only(self): self.assertTrue(target, VALID_TARGET) process = target.LoadCore("linux-riscv64.gpr_only.core") - values = {} - alias = {} - values["pc"] = "0x0000000000010164" - - values["ra"] = "0x0000000000010194" - alias["x1"] = "ra" - - values["sp"] = "0x00fffffff4d5fcc0" - alias["x2"] = "sp" - - values["gp"] = "0x0000000000157678" - alias["x3"] = "gp" - - values["tp"] = "0x00ffffff99c43400" - alias["x4"] = "tp" - - values["t0"] = "0x00ffffff99c6b260" - alias["x5"] = "t0" - - values["t1"] = "0x00ffffff99b7bd54" - alias["x6"] = "t1" - - values["t2"] = "0x0000000003f0b27f" - alias["x7"] = "t2" - - values["fp"] = "0x00fffffff4d5fcf0" - alias["x8"] = "fp" - - values["s1"] = "0x0000000000000003" - alias["x9"] = "s1" - - values["a0"] = "0x0" - alias["x10"] = "a0" - - values["a1"] = "0x0000000000010144" - alias["x11"] = "a1" - - values["a2"] = "0x0000000000176460" - alias["x12"] = "a2" - - values["a3"] = "0x000000000015ee38" - alias["x13"] = "a3" - - values["a4"] = "0x00000000423c0000" - alias["x14"] = "a4" - - values["a5"] = "0x0" - alias["x15"] = "a5" - - values["a6"] = "0x0" - alias["x16"] = "a6" - - values["a7"] = "0x00000000000000dd" - alias["x17"] = "a7" - - values["s2"] = "0x0" - alias["x18"] = "s2" - - values["s3"] = "0x000000000014ddf8" - alias["x19"] = "s3" - - values["s4"] = "0x000000000003651c" - alias["x20"] = "s4" - - values["s5"] = "0x00fffffffccd8d28" - alias["x21"] = "s5" - - values["s6"] = "0x000000000014ddf8" - alias["x22"] = "s6" - - values["s7"] = "0x00ffffff99c69d48" - alias["x23"] = "s7" - - values["s8"] = "0x00ffffff99c6a008" - alias["x24"] = "s8" - - values["s9"] = "0x0" - alias["x25"] = "s9" - - values["s10"] = "0x0" - alias["x26"] = "s10" - - values["s11"] = "0x0" - alias["x27"] = "s11" - - values["t3"] = "0x00ffffff99c42000" - alias["x28"] = "t3" - - values["t4"] = "0x00ffffff99af8e20" - alias["x29"] = "t4" - - values["t5"] = "0x0000000000000005" - alias["x30"] = "t5" - - values["t6"] = "0x44760bdd8d5f6381" - alias["x31"] = "t6" - - values["zero"] = "0x0" - alias["x0"] = "zero" + values = { + "pc": ( "0x0000000000010164", None ), + "zero": ( "0x0", "x0" ), + "ra": ( "0x0000000000010194", "x1" ), + "sp": ( "0x00fffffff4d5fcc0", "x2" ), + "gp": ( "0x0000000000157678", "x3" ), + "tp": ( "0x00ffffff99c43400", "x4" ), + "t0": ( "0x00ffffff99c6b260", "x5" ), + "t1": ( "0x00ffffff99b7bd54", "x6" ), + "t2": ( "0x0000000003f0b27f", "x7" ), + "fp": ( "0x00fffffff4d5fcf0", "x8" ), + "s1": ( "0x0000000000000003", "x9" ), + "a0": ( "0x0", "x10" ), + "a1": ( "0x0000000000010144", "x11" ), + "a2": ( "0x0000000000176460", "x12" ), + "a3": ( "0x000000000015ee38", "x13" ), + "a4": ( "0x00000000423c0000", "x14" ), + "a5": ( "0x0", "x15" ), + "a6": ( "0x0", "x16" ), + "a7": ( "0x00000000000000dd", "x17" ), + "s2": ( "0x0", "x18" ), + "s3": ( "0x000000000014ddf8", "x19" ), + "s4": ( "0x000000000003651c", "x20" ), + "s5": ( "0x00fffffffccd8d28", "x21" ), + "s6": ( "0x000000000014ddf8", "x22" ), + "s7": ( "0x00ffffff99c69d48", "x23" ), + "s8": ( "0x00ffffff99c6a008", "x24" ), + "s9": ( "0x0", "x25" ), + "s10": ( "0x0", "x26" ), + "s11": ( "0x0", "x27" ), + "t3": ( "0x00ffffff99c42000", "x28" ), + "t4": ( "0x00ffffff99af8e20", "x29" ), + "t5": ( "0x0000000000000005", "x30" ), + "t6": ( "0x44760bdd8d5f6381", "x31" ), + } - for regname, value in values.items(): + for regname in values: + value, alias = values[regname] self.expect( "register read {}".format(regname), substrs=["{} = {}".format(regname, value)], ) - - for aliasname, regname in alias.items(): - value = values[regname] - self.expect( - "register read {}".format(aliasname), - substrs=["{} = {}".format(regname, value)], - ) + if alias: + self.expect( + "register read {}".format(alias), + substrs=["{} = {}".format(regname, value)], + ) # Check that LLDB does not try to read other registers from core file self.expect( >From 6b8fd3e07ea4accfe942f89684c150bcc2d9baa3 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Mon, 3 Feb 2025 07:02:22 +0000 Subject: [PATCH 09/10] Created live process test --- .../Shell/Register/Inputs/riscv64-gp-read.cpp | 38 +++++++++++++++++++ lldb/test/Shell/Register/riscv64-gp-read.test | 38 +++++++++++++++++++ llvm/utils/lit/lit/llvm/config.py | 7 +++- 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp create mode 100644 lldb/test/Shell/Register/riscv64-gp-read.test diff --git a/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp b/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp new file mode 100644 index 00000000000000..ecc441a1231ca6 --- /dev/null +++ b/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp @@ -0,0 +1,38 @@ +int main() { + asm volatile( + "li x0, 0\n\t" + "li x1, 1\n\t" + "li x2, 2\n\t" + "li x3, 3\n\t" + "li x4, 4\n\t" + "li x5, 5\n\t" + "li x6, 6\n\t" + "li x7, 7\n\t" + "li x8, 8\n\t" + "li x9, 9\n\t" + "li x10, 10\n\t" + "li x11, 11\n\t" + "li x12, 12\n\t" + "li x13, 13\n\t" + "li x14, 14\n\t" + "li x15, 15\n\t" + "li x16, 16\n\t" + "li x17, 17\n\t" + "li x18, 18\n\t" + "li x19, 19\n\t" + "li x20, 20\n\t" + "li x21, 21\n\t" + "li x22, 22\n\t" + "li x23, 23\n\t" + "li x24, 24\n\t" + "li x25, 25\n\t" + "li x26, 26\n\t" + "li x27, 27\n\t" + "li x28, 28\n\t" + "li x29, 29\n\t" + "li x30, 30\n\t" + "li x31, 31\n\t" + ); + + return 0; +} diff --git a/lldb/test/Shell/Register/riscv64-gp-read.test b/lldb/test/Shell/Register/riscv64-gp-read.test new file mode 100644 index 00000000000000..b013aab6355594 --- /dev/null +++ b/lldb/test/Shell/Register/riscv64-gp-read.test @@ -0,0 +1,38 @@ +# REQUIRES: native && target-riscv64 +# RUN: %clangxx_host -fomit-frame-pointer %p/Inputs/riscv64-gp-read.cpp -o %t +# RUN: %lldb -b -s %s %t | FileCheck %s +process launch + +register read --all +# CHECK-DAG: x0 = 0x0 +# CHECK-DAG: x1 = 0x1 +# CHECK-DAG: x2 = 0x2 +# CHECK-DAG: x3 = 0x3 +# CHECK-DAG: x4 = 0x4 +# CHECK-DAG: x5 = 0x5 +# CHECK-DAG: x6 = 0x6 +# CHECK-DAG: x7 = 0x7 +# CHECK-DAG: x8 = 0x8 +# CHECK-DAG: x9 = 0x9 +# CHECK-DAG: x10 = 0xa +# CHECK-DAG: x11 = 0xb +# CHECK-DAG: x12 = 0xc +# CHECK-DAG: x13 = 0xd +# CHECK-DAG: x14 = 0x8 +# CHECK-DAG: x15 = 0x8 +# CHECK-DAG: x16 = 0x8 +# CHECK-DAG: x17 = 0x8 +# CHECK-DAG: x18 = 0x8 +# CHECK-DAG: x19 = 0x8 +# CHECK-DAG: x20 = 0x8 +# CHECK-DAG: x21 = 0x8 +# CHECK-DAG: x22 = 0x8 +# CHECK-DAG: x23 = 0x8 +# CHECK-DAG: x24 = 0x8 +# CHECK-DAG: x25 = 0x8 +# CHECK-DAG: x26 = 0x8 +# CHECK-DAG: x27 = 0x8 +# CHECK-DAG: x28 = 0x8 +# CHECK-DAG: x29 = 0x8 +# CHECK-DAG: x30 = 0x8 +# CHECK-DAG: x31 = 0x8 \ No newline at end of file diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py index 5f762ec7f3514a..87e8879f5610bc 100644 --- a/llvm/utils/lit/lit/llvm/config.py +++ b/llvm/utils/lit/lit/llvm/config.py @@ -148,6 +148,7 @@ def __init__(self, lit_config, config): features.add("long_tests") if target_triple: + print(target_triple) if re.match(r"^x86_64.*-apple", target_triple): features.add("x86_64-apple") host_cxx = getattr(config, "host_cxx", None) @@ -169,8 +170,12 @@ def __init__(self, lit_config, config): features.add("target-aarch64") elif re.match(r"^arm.*", target_triple): features.add("target-arm") - if re.match(r'^ppc64le.*-linux', target_triple): + elif re.match(r'^ppc64le.*-linux', target_triple): features.add('target=powerpc64le-linux') + elif re.match(r'^riscv64-.*-elf', target_triple): + features.add('target-riscv64') + elif re.match(r'^riscv32-.*-elf.', target_triple): + features.add('target-riscv32') if not user_is_root(): features.add("non-root-user") >From 53177594842fd38e66ca5516e33d80e609252f34 Mon Sep 17 00:00:00 2001 From: Kevin Per <kevin....@protonmail.com> Date: Mon, 3 Feb 2025 07:21:10 +0000 Subject: [PATCH 10/10] Fixed format --- .../postmortem/elf-core/TestLinuxCore.py | 136 +++++++++--------- .../Shell/Register/Inputs/riscv64-gp-read.cpp | 66 +++++---- llvm/utils/lit/lit/llvm/config.py | 12 +- 3 files changed, 106 insertions(+), 108 deletions(-) diff --git a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py index eacbabc55e9dfe..9ff6f444ca95e9 100644 --- a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py +++ b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py @@ -704,41 +704,41 @@ def test_riscv64_regs_gpr_fpr(self): process = target.LoadCore("linux-riscv64.gpr_fpr.core") values = { - "pc": ( "0x000000000001016e", None ), - "zero": ( "0x0", "x0" ), - "ra": ( "0x00000000000101a4", "x1" ), - "sp": ( "0x0000003fffc1d2d0", "x2" ), - "gp": ( "0x0000002ae6eccf50", "x3" ), - "tp": ( "0x0000003ff3cb5400", "x4" ), - "t0": ( "0x7f7f7f7fffffffff", "x5" ), - "t1": ( "0x0000002ae6eb9b1c", "x6" ), - "t2": ( "0xffffffffffffffff", "x7" ), - "fp": ( "0x0000003fffc1d300", "x8" ), - "s1": ( "0x0000002ae6eced98", "x9" ), - "a0": ( "0x0000000000000000", "x10" ), - "a1": ( "0x0000000000010144", "x11" ), - "a2": ( "0x0000002ae6ecedb0", "x12" ), - "a3": ( "0xafdbdbff81cf7f81", "x13" ), - "a4": ( "0x00000000000101e4", "x14" ), - "a5": ( "0x0000000000000000", "x15" ), - "a6": ( "0x2f5b5a40014e0001", "x16" ), - "a7": ( "0x00000000000000dd", "x17" ), - "s2": ( "0x0000002ae6ec8860", "x18" ), - "s3": ( "0x0000002ae6ecedb0", "x19" ), - "s4": ( "0x0000003fff886c18", "x20" ), - "s5": ( "0x0000002ae6eceb78", "x21" ), - "s6": ( "0x0000002ae6ec8860", "x22" ), - "s7": ( "0x0000002ae6ec8860", "x23" ), - "s8": ( "0x0000000000000000", "x24" ), - "s9": ( "0x000000000000000f", "x25" ), - "s10": ( "0x0000002ae6ecc8d0", "x26" ), - "s11": ( "0x0000000000000008", "x27" ), - "t3": ( "0x0000003ff3be3728", "x28" ), - "t4": ( "0x0000000000000000", "x29" ), - "t5": ( "0x0000000000000002", "x30" ), - "t6": ( "0x0000002ae6ed08b9", "x31" ), - "fa5": ( "0xffffffff423c0000", None), - "fcsr": ( "0x00000000", None) + "pc": ("0x000000000001016e", None), + "zero": ("0x0", "x0"), + "ra": ("0x00000000000101a4", "x1"), + "sp": ("0x0000003fffc1d2d0", "x2"), + "gp": ("0x0000002ae6eccf50", "x3"), + "tp": ("0x0000003ff3cb5400", "x4"), + "t0": ("0x7f7f7f7fffffffff", "x5"), + "t1": ("0x0000002ae6eb9b1c", "x6"), + "t2": ("0xffffffffffffffff", "x7"), + "fp": ("0x0000003fffc1d300", "x8"), + "s1": ("0x0000002ae6eced98", "x9"), + "a0": ("0x0000000000000000", "x10"), + "a1": ("0x0000000000010144", "x11"), + "a2": ("0x0000002ae6ecedb0", "x12"), + "a3": ("0xafdbdbff81cf7f81", "x13"), + "a4": ("0x00000000000101e4", "x14"), + "a5": ("0x0000000000000000", "x15"), + "a6": ("0x2f5b5a40014e0001", "x16"), + "a7": ("0x00000000000000dd", "x17"), + "s2": ("0x0000002ae6ec8860", "x18"), + "s3": ("0x0000002ae6ecedb0", "x19"), + "s4": ("0x0000003fff886c18", "x20"), + "s5": ("0x0000002ae6eceb78", "x21"), + "s6": ("0x0000002ae6ec8860", "x22"), + "s7": ("0x0000002ae6ec8860", "x23"), + "s8": ("0x0000000000000000", "x24"), + "s9": ("0x000000000000000f", "x25"), + "s10": ("0x0000002ae6ecc8d0", "x26"), + "s11": ("0x0000000000000008", "x27"), + "t3": ("0x0000003ff3be3728", "x28"), + "t4": ("0x0000000000000000", "x29"), + "t5": ("0x0000000000000002", "x30"), + "t6": ("0x0000002ae6ed08b9", "x31"), + "fa5": ("0xffffffff423c0000", None), + "fcsr": ("0x00000000", None) } fpr_names = { @@ -805,39 +805,39 @@ def test_riscv64_regs_gpr_only(self): process = target.LoadCore("linux-riscv64.gpr_only.core") values = { - "pc": ( "0x0000000000010164", None ), - "zero": ( "0x0", "x0" ), - "ra": ( "0x0000000000010194", "x1" ), - "sp": ( "0x00fffffff4d5fcc0", "x2" ), - "gp": ( "0x0000000000157678", "x3" ), - "tp": ( "0x00ffffff99c43400", "x4" ), - "t0": ( "0x00ffffff99c6b260", "x5" ), - "t1": ( "0x00ffffff99b7bd54", "x6" ), - "t2": ( "0x0000000003f0b27f", "x7" ), - "fp": ( "0x00fffffff4d5fcf0", "x8" ), - "s1": ( "0x0000000000000003", "x9" ), - "a0": ( "0x0", "x10" ), - "a1": ( "0x0000000000010144", "x11" ), - "a2": ( "0x0000000000176460", "x12" ), - "a3": ( "0x000000000015ee38", "x13" ), - "a4": ( "0x00000000423c0000", "x14" ), - "a5": ( "0x0", "x15" ), - "a6": ( "0x0", "x16" ), - "a7": ( "0x00000000000000dd", "x17" ), - "s2": ( "0x0", "x18" ), - "s3": ( "0x000000000014ddf8", "x19" ), - "s4": ( "0x000000000003651c", "x20" ), - "s5": ( "0x00fffffffccd8d28", "x21" ), - "s6": ( "0x000000000014ddf8", "x22" ), - "s7": ( "0x00ffffff99c69d48", "x23" ), - "s8": ( "0x00ffffff99c6a008", "x24" ), - "s9": ( "0x0", "x25" ), - "s10": ( "0x0", "x26" ), - "s11": ( "0x0", "x27" ), - "t3": ( "0x00ffffff99c42000", "x28" ), - "t4": ( "0x00ffffff99af8e20", "x29" ), - "t5": ( "0x0000000000000005", "x30" ), - "t6": ( "0x44760bdd8d5f6381", "x31" ), + "pc": ("0x0000000000010164", None), + "zero": ("0x0", "x0"), + "ra": ("0x0000000000010194", "x1"), + "sp": ("0x00fffffff4d5fcc0", "x2"), + "gp": ("0x0000000000157678", "x3"), + "tp": ("0x00ffffff99c43400", "x4"), + "t0": ("0x00ffffff99c6b260", "x5"), + "t1": ("0x00ffffff99b7bd54", "x6"), + "t2": ("0x0000000003f0b27f", "x7"), + "fp": ("0x00fffffff4d5fcf0", "x8"), + "s1": ("0x0000000000000003", "x9"), + "a0": ("0x0", "x10"), + "a1": ("0x0000000000010144", "x11"), + "a2": ("0x0000000000176460", "x12"), + "a3": ("0x000000000015ee38", "x13"), + "a4": ("0x00000000423c0000", "x14"), + "a5": ("0x0", "x15"), + "a6": ("0x0", "x16"), + "a7": ("0x00000000000000dd", "x17"), + "s2": ("0x0", "x18"), + "s3": ("0x000000000014ddf8", "x19"), + "s4": ("0x000000000003651c", "x20"), + "s5": ("0x00fffffffccd8d28", "x21"), + "s6": ("0x000000000014ddf8", "x22"), + "s7": ("0x00ffffff99c69d48", "x23"), + "s8": ("0x00ffffff99c6a008", "x24"), + "s9": ("0x0", "x25"), + "s10": ("0x0", "x26"), + "s11": ("0x0", "x27"), + "t3": ("0x00ffffff99c42000", "x28"), + "t4": ("0x00ffffff99af8e20", "x29"), + "t5": ("0x0000000000000005", "x30"), + "t6": ("0x44760bdd8d5f6381", "x31"), } for regname in values: diff --git a/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp b/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp index ecc441a1231ca6..44ea4a0b15e642 100644 --- a/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp +++ b/lldb/test/Shell/Register/Inputs/riscv64-gp-read.cpp @@ -1,38 +1,36 @@ int main() { - asm volatile( - "li x0, 0\n\t" - "li x1, 1\n\t" - "li x2, 2\n\t" - "li x3, 3\n\t" - "li x4, 4\n\t" - "li x5, 5\n\t" - "li x6, 6\n\t" - "li x7, 7\n\t" - "li x8, 8\n\t" - "li x9, 9\n\t" - "li x10, 10\n\t" - "li x11, 11\n\t" - "li x12, 12\n\t" - "li x13, 13\n\t" - "li x14, 14\n\t" - "li x15, 15\n\t" - "li x16, 16\n\t" - "li x17, 17\n\t" - "li x18, 18\n\t" - "li x19, 19\n\t" - "li x20, 20\n\t" - "li x21, 21\n\t" - "li x22, 22\n\t" - "li x23, 23\n\t" - "li x24, 24\n\t" - "li x25, 25\n\t" - "li x26, 26\n\t" - "li x27, 27\n\t" - "li x28, 28\n\t" - "li x29, 29\n\t" - "li x30, 30\n\t" - "li x31, 31\n\t" - ); + asm volatile("li x0, 0\n\t" + "li x1, 1\n\t" + "li x2, 2\n\t" + "li x3, 3\n\t" + "li x4, 4\n\t" + "li x5, 5\n\t" + "li x6, 6\n\t" + "li x7, 7\n\t" + "li x8, 8\n\t" + "li x9, 9\n\t" + "li x10, 10\n\t" + "li x11, 11\n\t" + "li x12, 12\n\t" + "li x13, 13\n\t" + "li x14, 14\n\t" + "li x15, 15\n\t" + "li x16, 16\n\t" + "li x17, 17\n\t" + "li x18, 18\n\t" + "li x19, 19\n\t" + "li x20, 20\n\t" + "li x21, 21\n\t" + "li x22, 22\n\t" + "li x23, 23\n\t" + "li x24, 24\n\t" + "li x25, 25\n\t" + "li x26, 26\n\t" + "li x27, 27\n\t" + "li x28, 28\n\t" + "li x29, 29\n\t" + "li x30, 30\n\t" + "li x31, 31\n\t"); return 0; } diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py index 87e8879f5610bc..763dbec0e28ede 100644 --- a/llvm/utils/lit/lit/llvm/config.py +++ b/llvm/utils/lit/lit/llvm/config.py @@ -170,12 +170,12 @@ def __init__(self, lit_config, config): features.add("target-aarch64") elif re.match(r"^arm.*", target_triple): features.add("target-arm") - elif re.match(r'^ppc64le.*-linux', target_triple): - features.add('target=powerpc64le-linux') - elif re.match(r'^riscv64-.*-elf', target_triple): - features.add('target-riscv64') - elif re.match(r'^riscv32-.*-elf.', target_triple): - features.add('target-riscv32') + elif re.match(r"^ppc64le.*-linux", target_triple): + features.add("target=powerpc64le-linux") + elif re.match(r"^riscv64-.*-elf", target_triple): + features.add("target-riscv64") + elif re.match(r"^riscv32-.*-elf.", target_triple): + features.add("target-riscv32") if not user_is_root(): features.add("non-root-user") _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits