diff --git a/compiler-rt/lib/dfsan/CMakeLists.txt b/compiler-rt/lib/dfsan/CMakeLists.txt --- a/compiler-rt/lib/dfsan/CMakeLists.txt +++ b/compiler-rt/lib/dfsan/CMakeLists.txt @@ -50,9 +50,10 @@ COMMAND ${CMAKE_COMMAND} -E make_directory ${dfsan_abilist_dir} COMMAND - cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt - ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt - > ${dfsan_abilist_filename} + ${PYTHON_EXECUTABLE} ${COMPILER_RT_SOURCE_DIR}/utils/cat_files.py + ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt + ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt + -o ${dfsan_abilist_filename} DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt) add_dependencies(dfsan dfsan_abilist) install(FILES ${dfsan_abilist_filename} diff --git a/compiler-rt/utils/cat_files.py b/compiler-rt/utils/cat_files.py new file mode 100755 --- /dev/null +++ b/compiler-rt/utils/cat_files.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +#===----------------------------------------------------------------------===## +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +#===----------------------------------------------------------------------===## + +from argparse import ArgumentParser +import sys + +def print_and_exit(msg): + sys.stderr.write(msg + '\n') + sys.exit(1) + +def main(): + parser = ArgumentParser( + description="Concatenate two files into a single file") + parser.add_argument( + '-o', '--output', dest='output', required=True, + help='The output file. stdout is used if not given', + type=str, action='store') + parser.add_argument( + 'files', metavar='files', nargs='+', + help='The files to concatenate') + + args = parser.parse_args() + + if len(args.files) < 2: + print_and_exit('fewer than 2 inputs provided') + data = '' + for filename in args.files: + with open(filename, 'r') as f: + data += f.read() + if len(data) != 0 and data[-1] != '\n': + data += '\n' + assert len(data) > 0 and "cannot cat empty files" + with open(args.output, 'w') as f: + f.write(data) + + +if __name__ == '__main__': + main() + sys.exit(0)