Skip to content

Commit 93189ec

Browse files
Revert "[lldb][windows] use Windows APIs to print to the console (llvm#149493)" (llvm#154423)
This reverts commit f55dc08 in order to fix the issue reported [here](llvm#149493 (comment)).
1 parent 088555c commit 93189ec

File tree

2 files changed

+9
-47
lines changed

2 files changed

+9
-47
lines changed

lldb/include/lldb/Host/File.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -382,11 +382,15 @@ class NativeFile : public File {
382382
Unowned = false,
383383
};
384384

385-
NativeFile();
385+
NativeFile() : m_descriptor(kInvalidDescriptor), m_stream(kInvalidStream) {}
386386

387-
NativeFile(FILE *fh, bool transfer_ownership);
387+
NativeFile(FILE *fh, bool transfer_ownership)
388+
: m_descriptor(kInvalidDescriptor), m_own_descriptor(false), m_stream(fh),
389+
m_options(), m_own_stream(transfer_ownership) {}
388390

389-
NativeFile(int fd, OpenOptions options, bool transfer_ownership);
391+
NativeFile(int fd, OpenOptions options, bool transfer_ownership)
392+
: m_descriptor(fd), m_own_descriptor(transfer_ownership),
393+
m_stream(kInvalidStream), m_options(options), m_own_stream(false) {}
390394

391395
~NativeFile() override { Close(); }
392396

@@ -440,19 +444,17 @@ class NativeFile : public File {
440444
return ValueGuard(m_stream_mutex, StreamIsValidUnlocked());
441445
}
442446

443-
int m_descriptor = kInvalidDescriptor;
447+
int m_descriptor;
444448
bool m_own_descriptor = false;
445449
mutable std::mutex m_descriptor_mutex;
446450

447-
FILE *m_stream = kInvalidStream;
451+
FILE *m_stream;
448452
mutable std::mutex m_stream_mutex;
449453

450454
OpenOptions m_options{};
451455
bool m_own_stream = false;
452456
std::mutex offset_access_mutex;
453457

454-
bool is_windows_console = false;
455-
456458
private:
457459
NativeFile(const NativeFile &) = delete;
458460
const NativeFile &operator=(const NativeFile &) = delete;

lldb/source/Host/common/File.cpp

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
#include "llvm/Support/Errno.h"
3737
#include "llvm/Support/FileSystem.h"
3838
#include "llvm/Support/Process.h"
39-
#include "llvm/Support/raw_ostream.h"
4039

4140
using namespace lldb;
4241
using namespace lldb_private;
@@ -248,32 +247,6 @@ uint32_t File::GetPermissions(Status &error) const {
248247
return file_stats.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
249248
}
250249

251-
NativeFile::NativeFile() = default;
252-
253-
NativeFile::NativeFile(FILE *fh, bool transfer_ownership)
254-
: m_stream(fh), m_own_stream(transfer_ownership) {
255-
#ifdef _WIN32
256-
// In order to properly display non ASCII characters in Windows, we need to
257-
// use Windows APIs to print to the console. This is only required if the
258-
// stream outputs to a console.
259-
int fd = _fileno(fh);
260-
is_windows_console =
261-
::GetFileType((HANDLE)::_get_osfhandle(fd)) == FILE_TYPE_CHAR;
262-
#endif
263-
}
264-
265-
NativeFile::NativeFile(int fd, OpenOptions options, bool transfer_ownership)
266-
: m_descriptor(fd), m_own_descriptor(transfer_ownership),
267-
m_options(options) {
268-
#ifdef _WIN32
269-
// In order to properly display non ASCII characters in Windows, we need to
270-
// use Windows APIs to print to the console. This is only required if the
271-
// file outputs to a console.
272-
is_windows_console =
273-
::GetFileType((HANDLE)::_get_osfhandle(fd)) == FILE_TYPE_CHAR;
274-
#endif
275-
}
276-
277250
bool NativeFile::IsValid() const {
278251
std::scoped_lock<std::mutex, std::mutex> lock(m_descriptor_mutex, m_stream_mutex);
279252
return DescriptorIsValidUnlocked() || StreamIsValidUnlocked();
@@ -645,12 +618,6 @@ Status NativeFile::Write(const void *buf, size_t &num_bytes) {
645618

646619
ssize_t bytes_written = -1;
647620
if (ValueGuard descriptor_guard = DescriptorIsValid()) {
648-
#ifdef _WIN32
649-
if (is_windows_console) {
650-
llvm::raw_fd_ostream(m_descriptor, false).write((char *)buf, num_bytes);
651-
return error;
652-
}
653-
#endif
654621
bytes_written =
655622
llvm::sys::RetryAfterSignal(-1, ::write, m_descriptor, buf, num_bytes);
656623
if (bytes_written == -1) {
@@ -662,13 +629,6 @@ Status NativeFile::Write(const void *buf, size_t &num_bytes) {
662629
}
663630

664631
if (ValueGuard stream_guard = StreamIsValid()) {
665-
#ifdef _WIN32
666-
if (is_windows_console) {
667-
llvm::raw_fd_ostream(_fileno(m_stream), false)
668-
.write((char *)buf, num_bytes);
669-
return error;
670-
}
671-
#endif
672632
bytes_written = ::fwrite(buf, 1, num_bytes, m_stream);
673633

674634
if (bytes_written == 0) {

0 commit comments

Comments
 (0)