[llvm] r299098 - Following r297661, disable dup workaround to disable duplicate STDOUT fd closing and instead directly prevent closing of STD* file descriptors.
Yaron Keren via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 30 12:30:52 PDT 2017
Author: yrnkrn
Date: Thu Mar 30 14:30:51 2017
New Revision: 299098
URL: http://llvm.org/viewvc/llvm-project?rev=299098&view=rev
Log:
Following r297661, disable dup workaround to disable duplicate STDOUT fd closing and instead directly prevent closing of STD* file descriptors.
We do not want to close STDOUT as there may have been several uses of it
such as the case: llc %s -o=- -pass-remarks-output=- -filetype=asm
which cause multiple closes of STDOUT_FILENO and/or use-after-close of it.
Using dup() in getFD doesn't work as we end up with original STDOUT_FILENO
open anyhow.
reviewed by Rafael Espindola
Differential Revision: https://reviews.llvm.org/D31505
Modified:
llvm/trunk/lib/Support/raw_ostream.cpp
Modified: llvm/trunk/lib/Support/raw_ostream.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/raw_ostream.cpp?rev=299098&r1=299097&r2=299098&view=diff
==============================================================================
--- llvm/trunk/lib/Support/raw_ostream.cpp (original)
+++ llvm/trunk/lib/Support/raw_ostream.cpp Thu Mar 30 14:30:51 2017
@@ -473,7 +473,7 @@ static int getFD(StringRef Filename, std
// possible.
if (!(Flags & sys::fs::F_Text))
sys::ChangeStdoutToBinary();
- return dup(STDOUT_FILENO);
+ return STDOUT_FILENO;
}
int FD;
@@ -497,6 +497,13 @@ raw_fd_ostream::raw_fd_ostream(int fd, b
ShouldClose = false;
return;
}
+ // We do not want to close STDOUT as there may have been several uses of it
+ // such as the case: llc %s -o=- -pass-remarks-output=- -filetype=asm
+ // which cause multiple closes of STDOUT_FILENO and/or use-after-close of it.
+ // Using dup() in getFD doesn't work as we end up with original STDOUT_FILENO
+ // open anyhow.
+ if (FD <= STDERR_FILENO)
+ ShouldClose = false;
// Get the starting position.
off_t loc = ::lseek(FD, 0, SEEK_CUR);
More information about the llvm-commits
mailing list