splhack updated this revision to Diff 531483.
splhack added a comment.
Replace `llvm::sys::RetryAfterSignal(-1, ::open)` with
`FileSystem::Instance().Open`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152712/new/
https://reviews.llvm.org/D152712
Files:
lldb/include/lldb/Host/FileSystem.h
lldb/source/Host/common/PseudoTerminal.cpp
lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
lldb/source/Host/posix/FileSystemPosix.cpp
lldb/source/Host/posix/PipePosix.cpp
lldb/source/Host/posix/ProcessLauncherPosixFork.cpp
Index: lldb/source/Host/posix/ProcessLauncherPosixFork.cpp
===================================================================
--- lldb/source/Host/posix/ProcessLauncherPosixFork.cpp
+++ lldb/source/Host/posix/ProcessLauncherPosixFork.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "lldb/Host/posix/ProcessLauncherPosixFork.h"
+#include "lldb/Host/FileSystem.h"
#include "lldb/Host/Host.h"
#include "lldb/Host/HostProcess.h"
#include "lldb/Host/Pipe.h"
@@ -14,7 +15,6 @@
#include "lldb/Utility/FileSpec.h"
#include "lldb/Utility/Log.h"
#include "llvm/Support/Errno.h"
-#include "llvm/Support/FileSystem.h"
#include <climits>
#include <sys/ptrace.h>
@@ -71,7 +71,7 @@
}
static void DupDescriptor(int error_fd, const char *file, int fd, int flags) {
- int target_fd = llvm::sys::RetryAfterSignal(-1, ::open, file, flags, 0666);
+ int target_fd = FileSystem::Instance().Open(file, flags, 0666);
if (target_fd == -1)
ExitWithError(error_fd, "DupDescriptor-open");
Index: lldb/source/Host/posix/PipePosix.cpp
===================================================================
--- lldb/source/Host/posix/PipePosix.cpp
+++ lldb/source/Host/posix/PipePosix.cpp
@@ -7,11 +7,11 @@
//===----------------------------------------------------------------------===//
#include "lldb/Host/posix/PipePosix.h"
+#include "lldb/Host/FileSystem.h"
#include "lldb/Host/HostInfo.h"
#include "lldb/Utility/SelectHelper.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Support/Errno.h"
-#include "llvm/Support/FileSystem.h"
#include <functional>
#include <thread>
@@ -148,7 +148,7 @@
flags |= O_CLOEXEC;
Status error;
- int fd = llvm::sys::RetryAfterSignal(-1, ::open, name.str().c_str(), flags);
+ int fd = FileSystem::Instance().Open(name.str().c_str(), flags);
if (fd != -1)
m_fds[READ] = fd;
else
Index: lldb/source/Host/posix/FileSystemPosix.cpp
===================================================================
--- lldb/source/Host/posix/FileSystemPosix.cpp
+++ lldb/source/Host/posix/FileSystemPosix.cpp
@@ -77,5 +77,8 @@
}
int FileSystem::Open(const char *path, int flags, int mode) {
- return llvm::sys::RetryAfterSignal(-1, ::open, path, flags, mode);
+ // Call ::open in a lambda to avoid overload resolution in RetryAfterSignal
+ // when open is overloaded, such as in Bionic.
+ auto lambda = [&]() { return ::open(path, flags, mode); };
+ return llvm::sys::RetryAfterSignal(-1, lambda);
}
Index: lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
===================================================================
--- lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
+++ lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
@@ -15,6 +15,7 @@
#include "lldb/Host/posix/ConnectionFileDescriptorPosix.h"
#include "lldb/Host/Config.h"
+#include "lldb/Host/FileSystem.h"
#include "lldb/Host/Socket.h"
#include "lldb/Host/SocketAddress.h"
#include "lldb/Utility/LLDBLog.h"
@@ -726,7 +727,7 @@
#if LLDB_ENABLE_POSIX
std::string addr_str = s.str();
// file:///PATH
- int fd = llvm::sys::RetryAfterSignal(-1, ::open, addr_str.c_str(), O_RDWR);
+ int fd = FileSystem::Instance().Open(addr_str.c_str(), O_RDWR);
if (fd == -1) {
if (error_ptr)
error_ptr->SetErrorToErrno();
@@ -776,7 +777,7 @@
return eConnectionStatusError;
}
- int fd = llvm::sys::RetryAfterSignal(-1, ::open, path.str().c_str(), O_RDWR);
+ int fd = FileSystem::Instance().Open(path.str().c_str(), O_RDWR);
if (fd == -1) {
if (error_ptr)
error_ptr->SetErrorToErrno();
Index: lldb/source/Host/common/PseudoTerminal.cpp
===================================================================
--- lldb/source/Host/common/PseudoTerminal.cpp
+++ lldb/source/Host/common/PseudoTerminal.cpp
@@ -8,6 +8,7 @@
#include "lldb/Host/PseudoTerminal.h"
#include "lldb/Host/Config.h"
+#include "lldb/Host/FileSystem.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/Errno.h"
#include <cassert>
@@ -95,7 +96,7 @@
CloseSecondaryFileDescriptor();
std::string name = GetSecondaryName();
- m_secondary_fd = llvm::sys::RetryAfterSignal(-1, ::open, name.c_str(), oflag);
+ m_secondary_fd = FileSystem::Instance().Open(name.c_str(), oflag);
if (m_secondary_fd >= 0)
return llvm::Error::success();
Index: lldb/include/lldb/Host/FileSystem.h
===================================================================
--- lldb/include/lldb/Host/FileSystem.h
+++ lldb/include/lldb/Host/FileSystem.h
@@ -52,7 +52,7 @@
FILE *Fopen(const char *path, const char *mode);
/// Wraps ::open in a platform-independent way.
- int Open(const char *path, int flags, int mode);
+ int Open(const char *path, int flags, int mode = 0600);
llvm::Expected<std::unique_ptr<File>>
Open(const FileSpec &file_spec, File::OpenOptions options,
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits