[llvm-objcopy, tests] Fix several llvm-objcopy tests

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

llvm-svn: 337567
This commit is contained in:
Stella Stamenova 2018-07-20 16:19:36 +00:00
parent a85b86a982
commit ca0547c83c
1 changed files with 9 additions and 1 deletions

View 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()