[LLDB] [Driver] Use llvm::InitLLVM to do unicode argument conversion on Windows

This avoids the currently MSVC specific codepath of using the
wchar entry point and converting that to utf8.

Differential Revision: https://reviews.llvm.org/D68770

llvm-svn: 374526
This commit is contained in:
Martin Storsjo 2019-10-11 08:44:51 +00:00
parent 423c2e98e4
commit 4778f40f78
1 changed files with 3 additions and 17 deletions

View File

@ -19,8 +19,8 @@
#include "lldb/API/SBStringList.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ConvertUTF.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/InitLLVM.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Process.h"
@ -807,23 +807,9 @@ llvm::Optional<int> InitializeReproducer(opt::InputArgList &input_args) {
return llvm::None;
}
int
#ifdef _MSC_VER
wmain(int argc, wchar_t const *wargv[])
#else
main(int argc, char const *argv[])
#endif
int main(int argc, char const *argv[])
{
#ifdef _MSC_VER
// Convert wide arguments to UTF-8
std::vector<std::string> argvStrings(argc);
std::vector<const char *> argvPointers(argc);
for (int i = 0; i != argc; ++i) {
llvm::convertWideToUTF8(wargv[i], argvStrings[i]);
argvPointers[i] = argvStrings[i].c_str();
}
const char **argv = argvPointers.data();
#endif
llvm::InitLLVM IL(argc, argv);
// Print stack trace on crash.
llvm::StringRef ToolName = llvm::sys::path::filename(argv[0]);