[Lldb-commits] [lldb] [DRAFT][lldb] Upgrade CompilerType::GetIndexOfFieldWithName to return llvm::Expected (PR #135963)
Charles Zablit via lldb-commits
lldb-commits at lists.llvm.org
Wed Apr 16 11:05:33 PDT 2025
https://github.com/charles-zablit updated https://github.com/llvm/llvm-project/pull/135963
>From 6dd67fe4ad03f0ec0623717715b8cfcc9537ab3f Mon Sep 17 00:00:00 2001
From: Charles Zablit <zablitcharles at gmail.com>
Date: Wed, 16 Apr 2025 11:28:54 +0100
Subject: [PATCH 1/2] [lldb] Remove unused API
CompilerType::GetIndexOfFieldWithName
---
lldb/include/lldb/Symbol/CompilerType.h | 6 ------
lldb/source/Symbol/CompilerType.cpp | 19 -----------------
.../Platform/PlatformSiginfoTest.cpp | 21 -------------------
3 files changed, 46 deletions(-)
diff --git a/lldb/include/lldb/Symbol/CompilerType.h b/lldb/include/lldb/Symbol/CompilerType.h
index 41a1676dabd76..3561bc70887e6 100644
--- a/lldb/include/lldb/Symbol/CompilerType.h
+++ b/lldb/include/lldb/Symbol/CompilerType.h
@@ -433,12 +433,6 @@ class CompilerType {
CompilerDecl GetStaticFieldWithName(llvm::StringRef name) const;
- uint32_t GetIndexOfFieldWithName(const char *name,
- CompilerType *field_compiler_type = nullptr,
- uint64_t *bit_offset_ptr = nullptr,
- uint32_t *bitfield_bit_size_ptr = nullptr,
- bool *is_bitfield_ptr = nullptr) const;
-
llvm::Expected<CompilerType> GetChildCompilerTypeAtIndex(
ExecutionContext *exe_ctx, size_t idx, bool transparent_pointers,
bool omit_empty_base_classes, bool ignore_array_bounds,
diff --git a/lldb/source/Symbol/CompilerType.cpp b/lldb/source/Symbol/CompilerType.cpp
index 22fdd24fc7cd5..8e89d006d08d3 100644
--- a/lldb/source/Symbol/CompilerType.cpp
+++ b/lldb/source/Symbol/CompilerType.cpp
@@ -893,25 +893,6 @@ CompilerDecl CompilerType::GetStaticFieldWithName(llvm::StringRef name) const {
return CompilerDecl();
}
-uint32_t CompilerType::GetIndexOfFieldWithName(
- const char *name, CompilerType *field_compiler_type_ptr,
- uint64_t *bit_offset_ptr, uint32_t *bitfield_bit_size_ptr,
- bool *is_bitfield_ptr) const {
- unsigned count = GetNumFields();
- std::string field_name;
- for (unsigned index = 0; index < count; index++) {
- CompilerType field_compiler_type(
- GetFieldAtIndex(index, field_name, bit_offset_ptr,
- bitfield_bit_size_ptr, is_bitfield_ptr));
- if (strcmp(field_name.c_str(), name) == 0) {
- if (field_compiler_type_ptr)
- *field_compiler_type_ptr = field_compiler_type;
- return index;
- }
- }
- return UINT32_MAX;
-}
-
llvm::Expected<CompilerType> CompilerType::GetChildCompilerTypeAtIndex(
ExecutionContext *exe_ctx, size_t idx, bool transparent_pointers,
bool omit_empty_base_classes, bool ignore_array_bounds,
diff --git a/lldb/unittests/Platform/PlatformSiginfoTest.cpp b/lldb/unittests/Platform/PlatformSiginfoTest.cpp
index 4b2c93a68a94a..a1f55bdd926db 100644
--- a/lldb/unittests/Platform/PlatformSiginfoTest.cpp
+++ b/lldb/unittests/Platform/PlatformSiginfoTest.cpp
@@ -50,27 +50,6 @@ class PlatformSiginfoTest : public ::testing::Test {
typedef std::tuple<const char *, uint64_t, uint64_t> field_tuple;
- void ExpectField(const CompilerType &siginfo_type, field_tuple field) {
- const char *path;
- uint64_t offset, size;
- std::tie(path, offset, size) = field;
-
- SCOPED_TRACE(path);
- CompilerType field_type = siginfo_type;
- uint64_t total_offset = 0;
- for (auto field_name : llvm::split(path, '.')) {
- uint64_t bit_offset;
- ASSERT_NE(field_type.GetIndexOfFieldWithName(field_name.str().c_str(),
- &field_type, &bit_offset),
- UINT32_MAX);
- total_offset += bit_offset;
- }
-
- EXPECT_EQ(total_offset, offset * 8);
- EXPECT_EQ(llvm::expectedToOptional(field_type.GetByteSize(nullptr)),
- std::optional<uint64_t>(size));
- }
-
void ExpectFields(const CompilerType &container,
std::initializer_list<field_tuple> fields) {
for (auto x : fields)
>From 77faa748f436cd28ea95854296c476a1be04e5d3 Mon Sep 17 00:00:00 2001
From: Charles Zablit <zablitcharles at gmail.com>
Date: Wed, 16 Apr 2025 19:04:56 +0100
Subject: [PATCH 2/2] fixup! [lldb] Remove unused API
CompilerType::GetIndexOfFieldWithName
---
lldb/unittests/Platform/CMakeLists.txt | 1 -
.../Platform/PlatformSiginfoTest.cpp | 288 ------------------
2 files changed, 289 deletions(-)
delete mode 100644 lldb/unittests/Platform/PlatformSiginfoTest.cpp
diff --git a/lldb/unittests/Platform/CMakeLists.txt b/lldb/unittests/Platform/CMakeLists.txt
index 5c0ef5ca6ef22..7d57f633d89c3 100644
--- a/lldb/unittests/Platform/CMakeLists.txt
+++ b/lldb/unittests/Platform/CMakeLists.txt
@@ -2,7 +2,6 @@ add_lldb_unittest(LLDBPlatformTests
PlatformAppleSimulatorTest.cpp
PlatformDarwinTest.cpp
PlatformMacOSXTest.cpp
- PlatformSiginfoTest.cpp
PlatformTest.cpp
LINK_LIBS
diff --git a/lldb/unittests/Platform/PlatformSiginfoTest.cpp b/lldb/unittests/Platform/PlatformSiginfoTest.cpp
deleted file mode 100644
index a1f55bdd926db..0000000000000
--- a/lldb/unittests/Platform/PlatformSiginfoTest.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-//===-- PlatformSiginfoTest.cpp -------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "gtest/gtest.h"
-
-#include <initializer_list>
-#include <optional>
-#include <tuple>
-
-#include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h"
-#include "Plugins/Platform/Linux/PlatformLinux.h"
-#include "Plugins/Platform/NetBSD/PlatformNetBSD.h"
-#include "Plugins/TypeSystem/Clang/TypeSystemClang.h"
-
-#include "TestingSupport/SubsystemRAII.h"
-#include "lldb/Core/Debugger.h"
-#include "lldb/Host/FileSystem.h"
-#include "lldb/Host/HostInfo.h"
-#include "lldb/Utility/ArchSpec.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-namespace {
-class PlatformSiginfoTest : public ::testing::Test {
- SubsystemRAII<FileSystem, HostInfo, TypeSystemClang> subsystems;
- PlatformSP platform_sp;
- DebuggerSP debugger_sp;
- TargetSP target_sp;
-
-public:
- CompilerType siginfo_type;
-
- void SetUp() override {
- platform_freebsd::PlatformFreeBSD::Initialize();
- platform_linux::PlatformLinux::Initialize();
- platform_netbsd::PlatformNetBSD::Initialize();
- }
-
- void TearDown() override {
- platform_netbsd::PlatformNetBSD::Terminate();
- platform_linux::PlatformLinux::Terminate();
- platform_freebsd::PlatformFreeBSD::Terminate();
- }
-
- typedef std::tuple<const char *, uint64_t, uint64_t> field_tuple;
-
- void ExpectFields(const CompilerType &container,
- std::initializer_list<field_tuple> fields) {
- for (auto x : fields)
- ExpectField(container, x);
- }
-
- void InitializeSiginfo(const std::string &triple) {
- ArchSpec arch(triple);
-
- switch (arch.GetTriple().getOS()) {
- case llvm::Triple::FreeBSD:
- platform_sp =
- platform_freebsd::PlatformFreeBSD::CreateInstance(true, &arch);
- break;
- case llvm::Triple::Linux:
- platform_sp = platform_linux::PlatformLinux::CreateInstance(true, &arch);
- break;
- case llvm::Triple::NetBSD:
- platform_sp =
- platform_netbsd::PlatformNetBSD::CreateInstance(true, &arch);
- break;
- default:
- llvm_unreachable("unknown ostype in triple");
- }
- Platform::SetHostPlatform(platform_sp);
-
- debugger_sp = Debugger::CreateInstance();
- ASSERT_TRUE(debugger_sp);
-
- debugger_sp->GetTargetList().CreateTarget(
- *debugger_sp, "", arch, eLoadDependentsNo, platform_sp, target_sp);
- ASSERT_TRUE(target_sp);
-
- siginfo_type = platform_sp->GetSiginfoType(arch.GetTriple());
- }
-};
-
-} // namespace
-
-TEST_F(PlatformSiginfoTest, TestLinux_64bit) {
- for (std::string arch : {"x86_64", "aarch64", "powerpc64le"}) {
- SCOPED_TRACE(arch);
- InitializeSiginfo(arch + "-pc-linux-gnu");
- ASSERT_TRUE(siginfo_type);
-
- ExpectFields(siginfo_type,
- {
- {"si_signo", 0, 4},
- {"si_errno", 4, 4},
- {"si_code", 8, 4},
- {"_sifields._kill.si_pid", 16, 4},
- {"_sifields._kill.si_uid", 20, 4},
- {"_sifields._timer.si_tid", 16, 4},
- {"_sifields._timer.si_overrun", 20, 4},
- {"_sifields._timer.si_sigval", 24, 8},
- {"_sifields._rt.si_pid", 16, 4},
- {"_sifields._rt.si_uid", 20, 4},
- {"_sifields._rt.si_sigval", 24, 8},
- {"_sifields._sigchld.si_pid", 16, 4},
- {"_sifields._sigchld.si_uid", 20, 4},
- {"_sifields._sigchld.si_status", 24, 4},
- {"_sifields._sigchld.si_utime", 32, 8},
- {"_sifields._sigchld.si_stime", 40, 8},
- {"_sifields._sigfault.si_addr", 16, 8},
- {"_sifields._sigfault.si_addr_lsb", 24, 2},
- {"_sifields._sigfault._bounds._addr_bnd._lower", 32, 8},
- {"_sifields._sigfault._bounds._addr_bnd._upper", 40, 8},
- {"_sifields._sigfault._bounds._pkey", 32, 4},
- {"_sifields._sigpoll.si_band", 16, 8},
- {"_sifields._sigpoll.si_fd", 24, 4},
- {"_sifields._sigsys._call_addr", 16, 8},
- {"_sifields._sigsys._syscall", 24, 4},
- {"_sifields._sigsys._arch", 28, 4},
- });
- }
-}
-
-TEST_F(PlatformSiginfoTest, TestLinux_32bit) {
- for (std::string arch : {"i386", "armv7"}) {
- SCOPED_TRACE(arch);
- InitializeSiginfo(arch + "-pc-linux");
- ASSERT_TRUE(siginfo_type);
-
- ExpectFields(siginfo_type,
- {
- {"si_signo", 0, 4},
- {"si_errno", 4, 4},
- {"si_code", 8, 4},
- {"_sifields._kill.si_pid", 12, 4},
- {"_sifields._kill.si_uid", 16, 4},
- {"_sifields._timer.si_tid", 12, 4},
- {"_sifields._timer.si_overrun", 16, 4},
- {"_sifields._timer.si_sigval", 20, 4},
- {"_sifields._rt.si_pid", 12, 4},
- {"_sifields._rt.si_uid", 16, 4},
- {"_sifields._rt.si_sigval", 20, 4},
- {"_sifields._sigchld.si_pid", 12, 4},
- {"_sifields._sigchld.si_uid", 16, 4},
- {"_sifields._sigchld.si_status", 20, 4},
- {"_sifields._sigchld.si_utime", 24, 4},
- {"_sifields._sigchld.si_stime", 28, 4},
- {"_sifields._sigfault.si_addr", 12, 4},
- {"_sifields._sigfault.si_addr_lsb", 16, 2},
- {"_sifields._sigfault._bounds._addr_bnd._lower", 20, 4},
- {"_sifields._sigfault._bounds._addr_bnd._upper", 24, 4},
- {"_sifields._sigfault._bounds._pkey", 20, 4},
- {"_sifields._sigpoll.si_band", 12, 4},
- {"_sifields._sigpoll.si_fd", 16, 4},
- {"_sifields._sigsys._call_addr", 12, 4},
- {"_sifields._sigsys._syscall", 16, 4},
- {"_sifields._sigsys._arch", 20, 4},
- });
- }
-}
-
-TEST_F(PlatformSiginfoTest, TestFreeBSD_64bit) {
- for (std::string arch : {"x86_64", "aarch64"}) {
- SCOPED_TRACE(arch);
- InitializeSiginfo("x86_64-unknown-freebsd13.0");
- ASSERT_TRUE(siginfo_type);
-
- ExpectFields(siginfo_type, {
- {"si_signo", 0, 4},
- {"si_errno", 4, 4},
- {"si_code", 8, 4},
- {"si_pid", 12, 4},
- {"si_uid", 16, 4},
- {"si_status", 20, 4},
- {"si_addr", 24, 8},
- {"si_value", 32, 8},
- {"_reason._fault._trapno", 40, 4},
- {"_reason._timer._timerid", 40, 4},
- {"_reason._timer._overrun", 44, 4},
- {"_reason._mesgq._mqd", 40, 4},
- {"_reason._poll._band", 40, 8},
- });
- }
-}
-
-TEST_F(PlatformSiginfoTest, TestFreeBSD_32bit) {
- for (std::string arch : {"i386"}) {
- SCOPED_TRACE(arch);
- InitializeSiginfo(arch + "-unknown-freebsd13.0");
- ASSERT_TRUE(siginfo_type);
-
- ExpectFields(siginfo_type, {
- {"si_signo", 0, 4},
- {"si_errno", 4, 4},
- {"si_code", 8, 4},
- {"si_pid", 12, 4},
- {"si_uid", 16, 4},
- {"si_status", 20, 4},
- {"si_addr", 24, 4},
- {"si_value", 28, 4},
- {"_reason._fault._trapno", 32, 4},
- {"_reason._timer._timerid", 32, 4},
- {"_reason._timer._overrun", 36, 4},
- {"_reason._mesgq._mqd", 32, 4},
- {"_reason._poll._band", 32, 4},
- });
- }
-}
-
-TEST_F(PlatformSiginfoTest, TestNetBSD_64bit) {
- for (std::string arch : {"x86_64"}) {
- SCOPED_TRACE(arch);
- InitializeSiginfo(arch + "-unknown-netbsd9.0");
- ASSERT_TRUE(siginfo_type);
-
- ExpectFields(
- siginfo_type,
- {
- {"_info._signo", 0, 4},
- {"_info._code", 4, 4},
- {"_info._errno", 8, 4},
- {"_info._reason._rt._pid", 16, 4},
- {"_info._reason._rt._uid", 20, 4},
- {"_info._reason._rt._value", 24, 8},
- {"_info._reason._child._pid", 16, 4},
- {"_info._reason._child._uid", 20, 4},
- {"_info._reason._child._status", 24, 4},
- {"_info._reason._child._utime", 28, 4},
- {"_info._reason._child._stime", 32, 4},
- {"_info._reason._fault._addr", 16, 8},
- {"_info._reason._fault._trap", 24, 4},
- {"_info._reason._fault._trap2", 28, 4},
- {"_info._reason._fault._trap3", 32, 4},
- {"_info._reason._poll._band", 16, 8},
- {"_info._reason._poll._fd", 24, 4},
- {"_info._reason._syscall._sysnum", 16, 4},
- {"_info._reason._syscall._retval", 20, 8},
- {"_info._reason._syscall._error", 28, 4},
- {"_info._reason._syscall._args", 32, 64},
- {"_info._reason._ptrace_state._pe_report_event", 16, 4},
- {"_info._reason._ptrace_state._option._pe_other_pid", 20, 4},
- {"_info._reason._ptrace_state._option._pe_lwp", 20, 4},
- });
- }
-}
-
-TEST_F(PlatformSiginfoTest, TestNetBSD_32bit) {
- for (std::string arch : {"i386"}) {
- SCOPED_TRACE(arch);
- InitializeSiginfo(arch + "-unknown-netbsd9.0");
- ASSERT_TRUE(siginfo_type);
-
- ExpectFields(
- siginfo_type,
- {
- {"_info._signo", 0, 4},
- {"_info._code", 4, 4},
- {"_info._errno", 8, 4},
- {"_info._reason._rt._pid", 12, 4},
- {"_info._reason._rt._uid", 16, 4},
- {"_info._reason._rt._value", 20, 4},
- {"_info._reason._child._pid", 12, 4},
- {"_info._reason._child._uid", 16, 4},
- {"_info._reason._child._status", 20, 4},
- {"_info._reason._child._utime", 24, 4},
- {"_info._reason._child._stime", 28, 4},
- {"_info._reason._fault._addr", 12, 4},
- {"_info._reason._fault._trap", 16, 4},
- {"_info._reason._fault._trap2", 20, 4},
- {"_info._reason._fault._trap3", 24, 4},
- {"_info._reason._poll._band", 12, 4},
- {"_info._reason._poll._fd", 16, 4},
- {"_info._reason._syscall._sysnum", 12, 4},
- {"_info._reason._syscall._retval", 16, 8},
- {"_info._reason._syscall._error", 24, 4},
- {"_info._reason._syscall._args", 28, 64},
- {"_info._reason._ptrace_state._pe_report_event", 12, 4},
- {"_info._reason._ptrace_state._option._pe_other_pid", 16, 4},
- {"_info._reason._ptrace_state._option._pe_lwp", 16, 4},
- });
- }
-}
More information about the lldb-commits
mailing list