Author: Pavel Labath Date: 2022-03-30T09:32:35+02:00 New Revision: 1410a4860eb2355f0c6e3274a937f7e382a59e5c
URL: https://github.com/llvm/llvm-project/commit/1410a4860eb2355f0c6e3274a937f7e382a59e5c DIFF: https://github.com/llvm/llvm-project/commit/1410a4860eb2355f0c6e3274a937f7e382a59e5c.diff LOG: [lldb] Remove vasprintf windows-compat implementation We already have a VASprintf function for this purpose, so I'm switching the remaining few users to that. Added: Modified: lldb/include/lldb/Host/windows/PosixApi.h lldb/source/Host/CMakeLists.txt lldb/source/Host/common/File.cpp lldb/source/Target/RegisterContextUnwind.cpp Removed: lldb/source/Host/windows/Windows.cpp ################################################################################ diff --git a/lldb/include/lldb/Host/windows/PosixApi.h b/lldb/include/lldb/Host/windows/PosixApi.h index 85e828c80eef1..981261a3ea358 100644 --- a/lldb/include/lldb/Host/windows/PosixApi.h +++ b/lldb/include/lldb/Host/windows/PosixApi.h @@ -86,10 +86,6 @@ typedef uint32_t pid_t; #endif // _MSC_VER -// Various useful posix functions that are not present in Windows. We provide -// custom implementations. -int vasprintf(char **ret, const char *fmt, va_list ap); - // empty functions inline int posix_openpt(int flag) { LLVM_BUILTIN_UNREACHABLE; } diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt index 4374abca05066..70942e0772aa6 100644 --- a/lldb/source/Host/CMakeLists.txt +++ b/lldb/source/Host/CMakeLists.txt @@ -66,7 +66,6 @@ if (CMAKE_SYSTEM_NAME MATCHES "Windows") windows/PipeWindows.cpp windows/ProcessLauncherWindows.cpp windows/ProcessRunLock.cpp - windows/Windows.cpp ) else() add_host_subdirectory(posix diff --git a/lldb/source/Host/common/File.cpp b/lldb/source/Host/common/File.cpp index daac1fef2f36d..760fb98fb496e 100644 --- a/lldb/source/Host/common/File.cpp +++ b/lldb/source/Host/common/File.cpp @@ -23,17 +23,17 @@ #include <unistd.h> #endif -#include "llvm/Support/ConvertUTF.h" -#include "llvm/Support/Errno.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Process.h" - #include "lldb/Host/Config.h" #include "lldb/Host/FileSystem.h" #include "lldb/Host/Host.h" #include "lldb/Utility/DataBufferHeap.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/VASPrintf.h" +#include "llvm/Support/ConvertUTF.h" +#include "llvm/Support/Errno.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Support/Process.h" using namespace lldb; using namespace lldb_private; @@ -215,18 +215,13 @@ size_t File::Printf(const char *format, ...) { } size_t File::PrintfVarArg(const char *format, va_list args) { - size_t result = 0; - char *s = nullptr; - result = vasprintf(&s, format, args); - if (s != nullptr) { - if (result > 0) { - size_t s_len = result; - Write(s, s_len); - result = s_len; - } - free(s); + llvm::SmallString<0> s; + if (VASprintf(s, format, args)) { + size_t written = s.size();; + Write(s.data(), written); + return written; } - return result; + return 0; } Expected<File::OpenOptions> File::GetOptions() const { diff --git a/lldb/source/Host/windows/Windows.cpp b/lldb/source/Host/windows/Windows.cpp deleted file mode 100644 index a74858301ee5a..0000000000000 --- a/lldb/source/Host/windows/Windows.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//===-- Windows.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 -// -//===----------------------------------------------------------------------===// - -// This file provides Windows support functions - -#include "lldb/Host/PosixApi.h" -#include "lldb/Host/windows/windows.h" - -#include "llvm/Support/ConvertUTF.h" - -#include <cassert> -#include <cctype> -#include <cerrno> -#include <cstdarg> -#include <cstdio> -#include <cstdlib> -#include <cstring> -#include <io.h> - -int vasprintf(char **ret, const char *fmt, va_list ap) { - char *buf; - int len; - size_t buflen; - va_list ap2; - - va_copy(ap2, ap); - len = vsnprintf(NULL, 0, fmt, ap2); - - if (len >= 0 && - (buf = (char *)malloc((buflen = (size_t)(len + 1)))) != NULL) { - len = vsnprintf(buf, buflen, fmt, ap); - *ret = buf; - } else { - *ret = NULL; - len = -1; - } - - va_end(ap2); - return len; -} - -#ifdef _MSC_VER - -#if _MSC_VER < 1900 -namespace lldb_private { -int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr) { - int old_errno = errno; - int r = ::vsnprintf(buffer, count, format, argptr); - int new_errno = errno; - buffer[count - 1] = '\0'; - if (r == -1 || r == count) { - FILE *nul = fopen("nul", "w"); - int bytes_written = ::vfprintf(nul, format, argptr); - fclose(nul); - if (bytes_written < count) - errno = new_errno; - else { - errno = old_errno; - r = bytes_written; - } - } - return r; -} -} // namespace lldb_private -#endif - -#endif // _MSC_VER diff --git a/lldb/source/Target/RegisterContextUnwind.cpp b/lldb/source/Target/RegisterContextUnwind.cpp index b90c7225b98ec..98bfdf07f6cea 100644 --- a/lldb/source/Target/RegisterContextUnwind.cpp +++ b/lldb/source/Target/RegisterContextUnwind.cpp @@ -35,8 +35,8 @@ #include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/RegisterValue.h" +#include "lldb/Utility/VASPrintf.h" #include "lldb/lldb-private.h" - #include <memory> using namespace lldb; @@ -2326,44 +2326,34 @@ bool RegisterContextUnwind::ReadPC(addr_t &pc) { void RegisterContextUnwind::UnwindLogMsg(const char *fmt, ...) { Log *log = GetLog(LLDBLog::Unwind); - if (log) { - va_list args; - va_start(args, fmt); - - char *logmsg; - if (vasprintf(&logmsg, fmt, args) == -1 || logmsg == nullptr) { - if (logmsg) - free(logmsg); - va_end(args); - return; - } - va_end(args); + if (!log) + return; + va_list args; + va_start(args, fmt); + + llvm::SmallString<0> logmsg; + if (VASprintf(logmsg, fmt, args)) { LLDB_LOGF(log, "%*sth%d/fr%u %s", m_frame_number < 100 ? m_frame_number : 100, "", - m_thread.GetIndexID(), m_frame_number, logmsg); - free(logmsg); + m_thread.GetIndexID(), m_frame_number, logmsg.c_str()); } + va_end(args); } void RegisterContextUnwind::UnwindLogMsgVerbose(const char *fmt, ...) { Log *log = GetLog(LLDBLog::Unwind); - if (log && log->GetVerbose()) { - va_list args; - va_start(args, fmt); - - char *logmsg; - if (vasprintf(&logmsg, fmt, args) == -1 || logmsg == nullptr) { - if (logmsg) - free(logmsg); - va_end(args); - return; - } - va_end(args); + if (!log || !log->GetVerbose()) + return; + + va_list args; + va_start(args, fmt); + llvm::SmallString<0> logmsg; + if (VASprintf(logmsg, fmt, args)) { LLDB_LOGF(log, "%*sth%d/fr%u %s", m_frame_number < 100 ? m_frame_number : 100, "", - m_thread.GetIndexID(), m_frame_number, logmsg); - free(logmsg); + m_thread.GetIndexID(), m_frame_number, logmsg.c_str()); } + va_end(args); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits