forked from OSchip/llvm-project
				
			
				
					
						
							Problem:
On SystemZ we need to open text files in text mode. On Windows, files opened in text mode adds a CRLF '\r\n' which may not be desirable.
Solution:
This patch adds two new flags
  - OF_CRLF which indicates that CRLF translation is used.
  - OF_TextWithCRLF = OF_Text | OF_CRLF indicates that the file is text and uses CRLF translation.
Developers should now use either the OF_Text or OF_TextWithCRLF for text files and OF_None for binary files. If the developer doesn't want carriage returns on Windows, they should use OF_Text, if they do want carriage returns on Windows, they should use OF_TextWithCRLF.
So this is the behaviour per platform with my patch:
z/OS:
OF_None: open in binary mode
OF_Text : open in text mode
OF_TextWithCRLF: open in text mode
Windows:
OF_None: open file with no carriage return
OF_Text: open file with no carriage return
OF_TextWithCRLF: open file with carriage return
The Major change is in llvm/lib/Support/Windows/Path.inc to only set text mode if the OF_CRLF is set.
```
  if (Flags & OF_CRLF)
    CrtOpenFlags |= _O_TEXT;
```
These following files are the ones that still use OF_Text which I left unchanged. I modified all these except raw_ostream.cpp in recent patches so I know these were previously in Binary mode on Windows.
./llvm/lib/Support/raw_ostream.cpp
./llvm/lib/TableGen/Main.cpp
./llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
./llvm/unittests/Support/Path.cpp
./clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
./clang/lib/Frontend/CompilerInstance.cpp
./clang/lib/Driver/Driver.cpp
./clang/lib/Driver/ToolChains/Clang.cpp
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D99426
						
					
				
			 | 
			||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| func-id-helper.cpp | ||
| func-id-helper.h | ||
| llvm-xray.cpp | ||
| trie-node.h | ||
| xray-account.cpp | ||
| xray-account.h | ||
| xray-color-helper.cpp | ||
| xray-color-helper.h | ||
| xray-converter.cpp | ||
| xray-converter.h | ||
| xray-extract.cpp | ||
| xray-fdr-dump.cpp | ||
| xray-graph-diff.cpp | ||
| xray-graph-diff.h | ||
| xray-graph.cpp | ||
| xray-graph.h | ||
| xray-registry.cpp | ||
| xray-registry.h | ||
| xray-stacks.cpp | ||