[Lldb-commits] [PATCH] D58985: Fix core files for 32 bit architectures that are supported in ProcessELFCore.cpp
Phabricator via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 6 10:04:33 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rLLDB355526: Fix core files for 32 bit architectures that are supported in ProcessELFCore.cpp (authored by gclayton, committed by ).
Herald added a project: LLDB.
Repository:
rLLDB LLDB
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58985/new/
https://reviews.llvm.org/D58985
Files:
packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/TestLinuxCore.py
packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/linux-arm.core
source/Plugins/Process/elf-core/ThreadElfCore.cpp
Index: packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/TestLinuxCore.py
===================================================================
--- packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/TestLinuxCore.py
+++ packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/TestLinuxCore.py
@@ -217,6 +217,35 @@
self.dbg.DeleteTarget(target)
+ @skipIf(triple='^mips')
+ @skipIfLLVMTargetMissing("ARM")
+ def test_arm_core(self):
+ # check 32 bit ARM core file
+ target = self.dbg.CreateTarget(None)
+ self.assertTrue(target, VALID_TARGET)
+ process = target.LoadCore("linux-arm.core")
+
+ values = {}
+ values["r0"] = "0x00000000"
+ values["r1"] = "0x00000001"
+ values["r2"] = "0x00000002"
+ values["r3"] = "0x00000003"
+ values["r4"] = "0x00000004"
+ values["r5"] = "0x00000005"
+ values["r6"] = "0x00000006"
+ values["r7"] = "0x00000007"
+ values["r8"] = "0x00000008"
+ values["r9"] = "0x00000009"
+ values["r10"] = "0x0000000a"
+ values["r11"] = "0x0000000b"
+ values["r12"] = "0x0000000c"
+ values["sp"] = "0x0000000d"
+ values["lr"] = "0x0000000e"
+ values["pc"] = "0x0000000f"
+ values["cpsr"] = "0x00000010"
+ for regname, value in values.items():
+ self.expect("register read {}".format(regname), substrs=["{} = {}".format(regname, value)])
+
def check_memory_regions(self, process, region_count):
region_list = process.GetMemoryRegions()
self.assertEqual(region_list.GetSize(), region_count)
Index: source/Plugins/Process/elf-core/ThreadElfCore.cpp
===================================================================
--- source/Plugins/Process/elf-core/ThreadElfCore.cpp
+++ source/Plugins/Process/elf-core/ThreadElfCore.cpp
@@ -255,6 +255,7 @@
size_t ELFLinuxPrStatus::GetSize(const lldb_private::ArchSpec &arch) {
constexpr size_t mips_linux_pr_status_size_o32 = 96;
constexpr size_t mips_linux_pr_status_size_n32 = 72;
+ constexpr size_t num_ptr_size_members = 10;
if (arch.IsMIPS()) {
std::string abi = arch.GetTargetABI();
assert(!abi.empty() && "ABI is not set");
@@ -266,15 +267,14 @@
return mips_linux_pr_status_size_n32;
}
switch (arch.GetCore()) {
- case lldb_private::ArchSpec::eCore_s390x_generic:
- case lldb_private::ArchSpec::eCore_x86_64_x86_64:
- case lldb_private::ArchSpec::eCore_ppc64le_generic:
- return sizeof(ELFLinuxPrStatus);
case lldb_private::ArchSpec::eCore_x86_32_i386:
case lldb_private::ArchSpec::eCore_x86_32_i486:
return 72;
default:
- return 0;
+ if (arch.GetAddressByteSize() == 8)
+ return sizeof(ELFLinuxPrStatus);
+ else
+ return sizeof(ELFLinuxPrStatus) - num_ptr_size_members * 4;
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58985.189531.patch
Type: text/x-patch
Size: 2873 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20190306/28862707/attachment-0001.bin>
More information about the lldb-commits
mailing list