https://github.com/felipepiovezan updated https://github.com/llvm/llvm-project/pull/105883
>From e91140e2c059df5f65ad907e9c93329c75e36dc4 Mon Sep 17 00:00:00 2001 From: Felipe de Azevedo Piovezan <fpiove...@apple.com> Date: Fri, 23 Aug 2024 13:10:00 -0700 Subject: [PATCH 1/2] [GDBRemote] Handle 'heap' memory region info type This should cause the memory region info "is stack" field to be set to "no". --- .../Process/gdb-remote/GDBRemoteCommunicationClient.cpp | 2 ++ .../gdb-remote/GDBRemoteCommunicationClientTest.cpp | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp index 0297fe363f69e1..ac04049548e437 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -1638,6 +1638,8 @@ Status GDBRemoteCommunicationClient::GetMemoryRegionInfo( for (llvm::StringRef entry : llvm::split(value, ',')) { if (entry == "stack") region_info.SetIsStackMemory(MemoryRegionInfo::eYes); + if (entry == "heap") + region_info.SetIsStackMemory(MemoryRegionInfo::eNo); } } else if (name == "error") { StringExtractorGDBRemote error_extractor(value); diff --git a/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp b/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp index 18020c8e43fe06..ce5ab2cf508293 100644 --- a/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp +++ b/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp @@ -364,6 +364,15 @@ TEST_F(GDBRemoteCommunicationClientTest, GetMemoryRegionInfo) { EXPECT_TRUE(result.get().Success()); EXPECT_EQ(MemoryRegionInfo::eYes, region_info.GetMemoryTagged()); EXPECT_EQ(MemoryRegionInfo::eYes, region_info.IsStackMemory()); + + result = std::async(std::launch::async, [&] { + return client.GetMemoryRegionInfo(addr, region_info); + }); + + HandlePacket(server, "qMemoryRegionInfo:a000", + "start:a000;size:2000;type:heap;"); + EXPECT_TRUE(result.get().Success()); + EXPECT_EQ(MemoryRegionInfo::eNo, region_info.IsStackMemory()); } TEST_F(GDBRemoteCommunicationClientTest, GetMemoryRegionInfoInvalidResponse) { >From 4f874c829643c12283afd87c52b762a897c93d11 Mon Sep 17 00:00:00 2001 From: Felipe de Azevedo Piovezan <fpiove...@apple.com> Date: Wed, 4 Sep 2024 07:02:16 -0700 Subject: [PATCH 2/2] Fixup! address review comments --- .../Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp index ac04049548e437..55d76ca8532d39 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -1638,7 +1638,7 @@ Status GDBRemoteCommunicationClient::GetMemoryRegionInfo( for (llvm::StringRef entry : llvm::split(value, ',')) { if (entry == "stack") region_info.SetIsStackMemory(MemoryRegionInfo::eYes); - if (entry == "heap") + else if (entry == "heap") region_info.SetIsStackMemory(MemoryRegionInfo::eNo); } } else if (name == "error") { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits