[Lldb-commits] [lldb] [lldb][AIX] Some base #if _AIX changes of a minimal lldb build (PR #120979)
Dhruv Srivastava via lldb-commits
lldb-commits at lists.llvm.org
Tue Jan 7 23:14:12 PST 2025
https://github.com/DhruvSrivastavaX updated https://github.com/llvm/llvm-project/pull/120979
>From c8887adb58fc0042c99a66fbc436bc95361e9086 Mon Sep 17 00:00:00 2001
From: Dhruv-Srivastava <dhruv.srivastava at ibm.com>
Date: Mon, 23 Dec 2024 10:22:40 -0600
Subject: [PATCH 1/3] Some base #if _AIX changes
---
.../Host/posix/ConnectionFileDescriptorPosix.cpp | 7 +++----
lldb/source/Host/posix/DomainSocket.cpp | 6 +++++-
lldb/source/Host/posix/FileSystemPosix.cpp | 2 ++
lldb/source/Plugins/Language/ObjC/Cocoa.cpp | 15 +++++++--------
4 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp b/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
index 6bdc33f8923281..e3d1300cf76eda 100644
--- a/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
+++ b/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
@@ -119,8 +119,7 @@ bool ConnectionFileDescriptor::IsConnected() const {
ConnectionStatus ConnectionFileDescriptor::Connect(llvm::StringRef path,
Status *error_ptr) {
- return Connect(
- path, [](llvm::StringRef) {}, error_ptr);
+ return Connect(path, [](llvm::StringRef) {}, error_ptr);
}
ConnectionStatus
@@ -716,7 +715,7 @@ ConnectionFileDescriptor::ConnectFD(llvm::StringRef s,
ConnectionStatus ConnectionFileDescriptor::ConnectFile(
llvm::StringRef s, socket_id_callback_type socket_id_callback,
Status *error_ptr) {
-#if LLDB_ENABLE_POSIX
+#if LLDB_ENABLE_POSIX && !defined(_AIX)
std::string addr_str = s.str();
// file:///PATH
int fd = FileSystem::Instance().Open(addr_str.c_str(), O_RDWR);
@@ -747,7 +746,7 @@ ConnectionStatus ConnectionFileDescriptor::ConnectFile(
m_io_sp = std::make_shared<NativeFile>(fd, File::eOpenOptionReadWrite, true);
return eConnectionStatusSuccess;
-#endif // LLDB_ENABLE_POSIX
+#endif // LLDB_ENABLE_POSIX && !defined(_AIX)
llvm_unreachable("this function should be only called w/ LLDB_ENABLE_POSIX");
}
diff --git a/lldb/source/Host/posix/DomainSocket.cpp b/lldb/source/Host/posix/DomainSocket.cpp
index 9a0b385d998bfc..9f4f12bb481bd0 100644
--- a/lldb/source/Host/posix/DomainSocket.cpp
+++ b/lldb/source/Host/posix/DomainSocket.cpp
@@ -16,6 +16,9 @@
#include <memory>
#include <sys/socket.h>
#include <sys/un.h>
+#ifdef _AIX
+#include <strings.h>
+#endif
using namespace lldb;
using namespace lldb_private;
@@ -86,7 +89,8 @@ Status DomainSocket::Connect(llvm::StringRef name) {
if (error.Fail())
return error;
if (llvm::sys::RetryAfterSignal(-1, ::connect, GetNativeSocket(),
- (struct sockaddr *)&saddr_un, saddr_un_len) < 0)
+ (struct sockaddr *)&saddr_un,
+ saddr_un_len) < 0)
SetLastError(error);
return error;
diff --git a/lldb/source/Host/posix/FileSystemPosix.cpp b/lldb/source/Host/posix/FileSystemPosix.cpp
index 945e2affc83715..1a84f550662d75 100644
--- a/lldb/source/Host/posix/FileSystemPosix.cpp
+++ b/lldb/source/Host/posix/FileSystemPosix.cpp
@@ -11,7 +11,9 @@
// C includes
#include <dirent.h>
#include <fcntl.h>
+#ifndef _AIX
#include <sys/mount.h>
+#endif
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/lldb/source/Plugins/Language/ObjC/Cocoa.cpp b/lldb/source/Plugins/Language/ObjC/Cocoa.cpp
index bbe5d4c611f870..1d79edbede5d67 100644
--- a/lldb/source/Plugins/Language/ObjC/Cocoa.cpp
+++ b/lldb/source/Plugins/Language/ObjC/Cocoa.cpp
@@ -31,7 +31,6 @@
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/bit.h"
-
using namespace lldb;
using namespace lldb_private;
using namespace lldb_private::formatters;
@@ -267,21 +266,21 @@ bool lldb_private::formatters::NSIndexSetSummaryProvider(
if (class_name == "NSIndexSet" || class_name == "NSMutableIndexSet") {
// Foundation version 2000 added a bitmask if the index set fit in 64 bits
// and a Tagged Pointer version if the bitmask is small enough to fit in
- // the tagged pointer payload.
+ // the tagged pointer payload.
// It also changed the layout (but not the size) of the set descriptor.
// First check whether this is a tagged pointer. The bitmask will be in
// the payload of the tagged pointer.
uint64_t payload;
- if (runtime->GetFoundationVersion() >= 2000
- && descriptor->GetTaggedPointerInfo(nullptr, nullptr, &payload)) {
+ if (runtime->GetFoundationVersion() >= 2000 &&
+ descriptor->GetTaggedPointerInfo(nullptr, nullptr, &payload)) {
count = llvm::popcount(payload);
break;
}
// The first 32 bits describe the index set in all cases:
Status error;
uint32_t mode = process_sp->ReadUnsignedIntegerFromMemory(
- valobj_addr + ptr_size, 4, 0, error);
+ valobj_addr + ptr_size, 4, 0, error);
if (error.Fail())
return false;
// Now check if the index is held in a bitmask in the object:
@@ -292,7 +291,7 @@ bool lldb_private::formatters::NSIndexSetSummaryProvider(
if ((mode & 2) == 2) {
// The bitfield is a 64 bit uint at the beginning of the data var.
uint64_t bitfield = process_sp->ReadUnsignedIntegerFromMemory(
- valobj_addr + 2 * ptr_size, 8, 0, error);
+ valobj_addr + 2 * ptr_size, 8, 0, error);
if (error.Fail())
return false;
count = llvm::popcount(bitfield);
@@ -309,7 +308,7 @@ bool lldb_private::formatters::NSIndexSetSummaryProvider(
count = 0;
break;
}
-
+
if ((mode & 2) == 2)
mode = 1; // this means the set only has one range
else
@@ -1227,7 +1226,7 @@ bool lldb_private::formatters::ObjCSELSummaryProvider(
time_t lldb_private::formatters::GetOSXEpoch() {
static time_t epoch = 0;
if (!epoch) {
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(_AIX)
tzset();
tm tm_epoch;
tm_epoch.tm_sec = 0;
>From 1ebb1db17b2652596434d43b41d440c959dd7bae Mon Sep 17 00:00:00 2001
From: Dhruv-Srivastava <dhruv.srivastava at ibm.com>
Date: Tue, 24 Dec 2024 01:01:44 -0600
Subject: [PATCH 2/3] ObjectContainerBSDArchive.cpp
---
.../BSD-Archive/ObjectContainerBSDArchive.cpp | 31 ++++++++++---------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp b/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
index 7aa5b8d81890ae..b202898ff438a6 100644
--- a/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
+++ b/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
@@ -8,7 +8,7 @@
#include "ObjectContainerBSDArchive.h"
-#if defined(_WIN32) || defined(__ANDROID__)
+#if defined(_WIN32) || defined(__ANDROID__) || defined(_AIX)
// Defines from ar, missing on Windows
#define SARMAG 8
#define ARFMAG "`\n"
@@ -81,10 +81,10 @@ size_t ObjectContainerBSDArchive::Archive::ParseObjects() {
std::unique_ptr<llvm::MemoryBuffer> mem_buffer =
llvm::MemoryBuffer::getMemBuffer(
- llvm::StringRef((const char *)data.GetDataStart(),
- data.GetByteSize()),
- llvm::StringRef(),
- /*RequiresNullTerminator=*/false);
+ llvm::StringRef((const char *)data.GetDataStart(),
+ data.GetByteSize()),
+ llvm::StringRef(),
+ /*RequiresNullTerminator=*/false);
auto exp_ar = llvm::object::Archive::create(mem_buffer->getMemBufferRef());
if (!exp_ar) {
@@ -95,7 +95,7 @@ size_t ObjectContainerBSDArchive::Archive::ParseObjects() {
llvm::Error iter_err = llvm::Error::success();
Object obj;
- for (const auto &child: llvm_archive->children(iter_err)) {
+ for (const auto &child : llvm_archive->children(iter_err)) {
obj.Clear();
auto exp_name = child.getName();
if (exp_name) {
@@ -111,7 +111,9 @@ size_t ObjectContainerBSDArchive::Archive::ParseObjects() {
obj.modification_time =
std::chrono::duration_cast<std::chrono::seconds>(
std::chrono::time_point_cast<std::chrono::seconds>(
- exp_mtime.get()).time_since_epoch()).count();
+ exp_mtime.get())
+ .time_since_epoch())
+ .count();
} else {
LLDB_LOG_ERROR(l, exp_mtime.takeError(),
"failed to get archive object time: {0}");
@@ -331,21 +333,21 @@ ObjectContainer *ObjectContainerBSDArchive::CreateInstance(
ArchiveType
ObjectContainerBSDArchive::MagicBytesMatch(const DataExtractor &data) {
uint32_t offset = 0;
- const char *armag = (const char *)data.PeekData(offset,
- sizeof(ar_hdr) + SARMAG);
+ const char *armag =
+ (const char *)data.PeekData(offset, sizeof(ar_hdr) + SARMAG);
if (armag == nullptr)
return ArchiveType::Invalid;
ArchiveType result = ArchiveType::Invalid;
if (strncmp(armag, ArchiveMagic, SARMAG) == 0)
- result = ArchiveType::Archive;
+ result = ArchiveType::Archive;
else if (strncmp(armag, ThinArchiveMagic, SARMAG) == 0)
- result = ArchiveType::ThinArchive;
+ result = ArchiveType::ThinArchive;
else
- return ArchiveType::Invalid;
+ return ArchiveType::Invalid;
armag += offsetof(struct ar_hdr, ar_fmag) + SARMAG;
if (strncmp(armag, ARFMAG, 2) == 0)
- return result;
+ return result;
return ArchiveType::Invalid;
}
@@ -443,7 +445,8 @@ size_t ObjectContainerBSDArchive::GetModuleSpecifications(
return 0;
const size_t initial_count = specs.GetSize();
- llvm::sys::TimePoint<> file_mod_time = FileSystem::Instance().GetModificationTime(file);
+ llvm::sys::TimePoint<> file_mod_time =
+ FileSystem::Instance().GetModificationTime(file);
Archive::shared_ptr archive_sp(
Archive::FindCachedArchive(file, ArchSpec(), file_mod_time, file_offset));
bool set_archive_arch = false;
>From 080d20cff647db2e0becff107f52536eee0c7bb8 Mon Sep 17 00:00:00 2001
From: Dhruv-Srivastava <dhruv.srivastava at ibm.com>
Date: Wed, 8 Jan 2025 01:11:27 -0600
Subject: [PATCH 3/3] Added port speed options
---
.../posix/ConnectionFileDescriptorPosix.cpp | 22 ++++++++++++++-----
lldb/source/Host/posix/DomainSocket.cpp | 2 --
lldb/source/Host/posix/FileSystemPosix.cpp | 2 --
3 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp b/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
index e3d1300cf76eda..cb24fc460e562f 100644
--- a/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
+++ b/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
@@ -715,7 +715,7 @@ ConnectionFileDescriptor::ConnectFD(llvm::StringRef s,
ConnectionStatus ConnectionFileDescriptor::ConnectFile(
llvm::StringRef s, socket_id_callback_type socket_id_callback,
Status *error_ptr) {
-#if LLDB_ENABLE_POSIX && !defined(_AIX)
+#if LLDB_ENABLE_POSIX
std::string addr_str = s.str();
// file:///PATH
int fd = FileSystem::Instance().Open(addr_str.c_str(), O_RDWR);
@@ -730,9 +730,21 @@ ConnectionStatus ConnectionFileDescriptor::ConnectFile(
struct termios options;
::tcgetattr(fd, &options);
- // Set port speed to maximum
- ::cfsetospeed(&options, B115200);
- ::cfsetispeed(&options, B115200);
+ // Set port speed to the available maximum
+#ifdef B115200
+ ::cfsetospeed(&options, B115200);
+ ::cfsetispeed(&options, B115200);
+#elif B57600
+ ::cfsetospeed(&options, B57600);
+ ::cfsetispeed(&options, B57600);
+#elif B38400
+ ::cfsetospeed(&options, B38400);
+ ::cfsetispeed(&options, B38400);
+#else
+ if (error_ptr)
+ *error_ptr = Status::FromErrorString("Maximum Baud rate is Unknown");
+ return eConnectionStatusError;
+#endif
// Raw input, disable echo and signals
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
@@ -746,7 +758,7 @@ ConnectionStatus ConnectionFileDescriptor::ConnectFile(
m_io_sp = std::make_shared<NativeFile>(fd, File::eOpenOptionReadWrite, true);
return eConnectionStatusSuccess;
-#endif // LLDB_ENABLE_POSIX && !defined(_AIX)
+#endif // LLDB_ENABLE_POSIX
llvm_unreachable("this function should be only called w/ LLDB_ENABLE_POSIX");
}
diff --git a/lldb/source/Host/posix/DomainSocket.cpp b/lldb/source/Host/posix/DomainSocket.cpp
index 9f4f12bb481bd0..99f7f35926e56b 100644
--- a/lldb/source/Host/posix/DomainSocket.cpp
+++ b/lldb/source/Host/posix/DomainSocket.cpp
@@ -16,9 +16,7 @@
#include <memory>
#include <sys/socket.h>
#include <sys/un.h>
-#ifdef _AIX
#include <strings.h>
-#endif
using namespace lldb;
using namespace lldb_private;
diff --git a/lldb/source/Host/posix/FileSystemPosix.cpp b/lldb/source/Host/posix/FileSystemPosix.cpp
index 1a84f550662d75..945e2affc83715 100644
--- a/lldb/source/Host/posix/FileSystemPosix.cpp
+++ b/lldb/source/Host/posix/FileSystemPosix.cpp
@@ -11,9 +11,7 @@
// C includes
#include <dirent.h>
#include <fcntl.h>
-#ifndef _AIX
#include <sys/mount.h>
-#endif
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/types.h>
More information about the lldb-commits
mailing list