]> granicus.if.org Git - llvm/commitdiff
[llvm-objcopy, tests] Fix several llvm-objcopy tests
authorStella Stamenova <stilis@microsoft.com>
Fri, 20 Jul 2018 16:19:36 +0000 (16:19 +0000)
committerStella Stamenova <stilis@microsoft.com>
Fri, 20 Jul 2018 16:19:36 +0000 (16:19 +0000)
Summary: In Python 3, sys.stdout.write expects a string rather than bytes. In order to be able to write the bytes to stdout, we need to use the buffer directly instead. This change is borrowing the implementation for writing to stdout that cat.py uses. Note that we cannot use cat.py directly because the file we are trying to open is a gzip file.

Reviewers: asmith, bkramer, alexshap, jakehehrlich

Reviewed By: alexshap, jakehehrlich

Subscribers: jakehehrlich, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337567 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-objcopy/Inputs/ungzip.py

index 41f858edae221de373375241e53419a47a1646b3..c7b1de96b25c439707ef2d56423885c0286fd90b 100644 (file)
@@ -2,4 +2,12 @@ import gzip
 import sys
 
 with gzip.open(sys.argv[1], 'rb') as f:
-  sys.stdout.write(f.read())
+  writer = getattr(sys.stdout, 'buffer', None)
+  if writer is None:
+    writer = sys.stdout
+    if sys.platform == "win32":
+      import os, msvcrt
+      msvcrt.setmode(sys.stdout.fileno(),os.O_BINARY)
+
+  writer.write(f.read())
+  sys.stdout.flush()