| OLD | NEW |
| 1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
| 2 | 2 |
| 3 import argparse | 3 import argparse |
| 4 import os | 4 import os |
| 5 import subprocess | 5 import subprocess |
| 6 import sys | 6 import sys |
| 7 import tempfile | 7 import tempfile |
| 8 | 8 |
| 9 import targets | 9 import targets |
| 10 from szbuild import LinkNonsfi | 10 from szbuild import LinkNonsfi |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 for arg in args.test: | 119 for arg in args.test: |
| 120 base, ext = os.path.splitext(arg) | 120 base, ext = os.path.splitext(arg) |
| 121 if ext == '.ll': | 121 if ext == '.ll': |
| 122 bitcode = arg | 122 bitcode = arg |
| 123 else: | 123 else: |
| 124 # Use pnacl-clang and pnacl-opt to produce PNaCl bitcode. | 124 # Use pnacl-clang and pnacl-opt to produce PNaCl bitcode. |
| 125 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') | 125 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') |
| 126 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') | 126 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') |
| 127 shellcmd(['{bin}/pnacl-clang'.format(bin=bindir), | 127 shellcmd(['{bin}/pnacl-clang'.format(bin=bindir), |
| 128 ('-O2' if args.clang_opt else '-O0'), | 128 ('-O2' if args.clang_opt else '-O0'), |
| 129 get_sfi_string(args, '', '-DNONSFI', ''), | |
| 130 ('-DARM32' if args.target == 'arm32' else ''), '-c', arg, | 129 ('-DARM32' if args.target == 'arm32' else ''), '-c', arg, |
| 131 '-o', bitcode_nonfinal]) | 130 '-o', bitcode_nonfinal]) |
| 132 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), | 131 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), |
| 133 '-pnacl-abi-simplify-preopt', | 132 '-pnacl-abi-simplify-preopt', |
| 134 '-pnacl-abi-simplify-postopt', | 133 '-pnacl-abi-simplify-postopt', |
| 135 '-pnaclabi-allow-debug-metadata', | 134 '-pnaclabi-allow-debug-metadata', |
| 136 '-strip-metadata', | 135 '-strip-metadata', |
| 137 '-strip-module-flags', | 136 '-strip-module-flags', |
| 138 '-strip-debug', | 137 '-strip-debug', |
| 139 bitcode_nonfinal, '-S', '-o', bitcode]) | 138 bitcode_nonfinal, '-S', '-o', bitcode]) |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 target_params = [] | 203 target_params = [] |
| 205 if needs_stack_hack: | 204 if needs_stack_hack: |
| 206 shellcmd('{bin}/clang -g -o stack_hack.x8664.{key}.o -c ' | 205 shellcmd('{bin}/clang -g -o stack_hack.x8664.{key}.o -c ' |
| 207 'stack_hack.x8664.c'.format(bin=bindir, key=key)) | 206 'stack_hack.x8664.c'.format(bin=bindir, key=key)) |
| 208 target_params.append('-DX8664_STACK_HACK') | 207 target_params.append('-DX8664_STACK_HACK') |
| 209 target_params.append('stack_hack.x8664.{key}.o'.format(key=key)) | 208 target_params.append('stack_hack.x8664.{key}.o'.format(key=key)) |
| 210 | 209 |
| 211 if args.target == 'arm32': | 210 if args.target == 'arm32': |
| 212 target_params.append('-DARM32') | 211 target_params.append('-DARM32') |
| 213 target_params.append('-static') | 212 target_params.append('-static') |
| 214 if args.nonsfi: | |
| 215 target_params.append('-DNONSFI') | |
| 216 | 213 |
| 217 pure_c = os.path.splitext(args.driver)[1] == '.c' | 214 pure_c = os.path.splitext(args.driver)[1] == '.c' |
| 218 if not args.nonsfi: | 215 if not args.nonsfi: |
| 219 # Set compiler to clang, clang++, pnacl-clang, or pnacl-clang++. | 216 # Set compiler to clang, clang++, pnacl-clang, or pnacl-clang++. |
| 220 compiler = '{bin}/{prefix}{cc}'.format( | 217 compiler = '{bin}/{prefix}{cc}'.format( |
| 221 bin=bindir, prefix=get_sfi_string(args, 'pnacl-', '', ''), | 218 bin=bindir, prefix=get_sfi_string(args, 'pnacl-', '', ''), |
| 222 cc='clang' if pure_c else 'clang++') | 219 cc='clang' if pure_c else 'clang++') |
| 223 sb_native_args = (['-O0', '--pnacl-allow-native', | 220 sb_native_args = (['-O0', '--pnacl-allow-native', |
| 224 '-arch', target_info.compiler_arch, | 221 '-arch', target_info.compiler_arch, |
| 225 '-Wn,-defsym=__Sz_AbsoluteZero=0'] | 222 '-Wn,-defsym=__Sz_AbsoluteZero=0'] |
| 226 if args.sandbox else | 223 if args.sandbox else |
| 227 ['-g', '-target=' + triple, | 224 ['-g', '-target=' + triple, |
| 228 '-lm', '-lpthread', | 225 '-lm', '-lpthread', |
| 229 '-Wl,--defsym=__Sz_AbsoluteZero=0'] + | 226 '-Wl,--defsym=__Sz_AbsoluteZero=0'] + |
| 230 target_info.cross_headers) | 227 target_info.cross_headers) |
| 231 shellcmd([compiler] + target_params + [args.driver] + objs + | 228 shellcmd([compiler] + target_params + [args.driver] + objs + |
| 232 ['-o', os.path.join(args.dir, args.output)] + sb_native_args) | 229 ['-o', os.path.join(args.dir, args.output)] + sb_native_args) |
| 233 return 0 | 230 return 0 |
| 234 | 231 |
| 235 base, ext = os.path.splitext(args.driver) | 232 base, ext = os.path.splitext(args.driver) |
| 236 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') | 233 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') |
| 237 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') | 234 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') |
| 238 asm_sz = os.path.join(args.dir, base + '.' + key + '.s') | 235 asm_sz = os.path.join(args.dir, base + '.' + key + '.s') |
| 239 obj_llc = os.path.join(args.dir, base + '.' + key + '.o') | 236 obj_llc = os.path.join(args.dir, base + '.' + key + '.o') |
| 240 compiler = '{bin}/{prefix}{cc}'.format( | 237 compiler = '{bin}/{prefix}{cc}'.format( |
| 241 bin=bindir, prefix='pnacl-', | 238 bin=bindir, prefix='pnacl-', |
| 242 cc='clang' if pure_c else 'clang++') | 239 cc='clang' if pure_c else 'clang++') |
| 243 shellcmd([compiler, | 240 shellcmd([compiler, |
| 244 args.driver, | 241 args.driver, |
| 245 '-DNONSFI' if args.nonsfi else '', | |
| 246 '-O2', | 242 '-O2', |
| 247 '-o', bitcode_nonfinal, | 243 '-o', bitcode_nonfinal, |
| 248 '-Wl,-r' | 244 '-Wl,-r' |
| 249 ]) | 245 ]) |
| 250 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), | 246 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), |
| 251 '-pnacl-abi-simplify-preopt', | 247 '-pnacl-abi-simplify-preopt', |
| 252 '-pnacl-abi-simplify-postopt', | 248 '-pnacl-abi-simplify-postopt', |
| 253 '-pnaclabi-allow-debug-metadata', | 249 '-pnaclabi-allow-debug-metadata', |
| 254 '-strip-metadata', | 250 '-strip-metadata', |
| 255 '-strip-module-flags', | 251 '-strip-module-flags', |
| (...skipping 16 matching lines...) Expand all Loading... |
| 272 objs.append(obj_llc) | 268 objs.append(obj_llc) |
| 273 if args.nonsfi: | 269 if args.nonsfi: |
| 274 LinkNonsfi(objs, os.path.join(args.dir, args.output), args.target) | 270 LinkNonsfi(objs, os.path.join(args.dir, args.output), args.target) |
| 275 elif args.sandbox: | 271 elif args.sandbox: |
| 276 LinkSandbox(objs, os.path.join(args.dir, args.output), args.target) | 272 LinkSandbox(objs, os.path.join(args.dir, args.output), args.target) |
| 277 else: | 273 else: |
| 278 LinkNative(objs, os.path.join(args.dir, args.output), args.target) | 274 LinkNative(objs, os.path.join(args.dir, args.output), args.target) |
| 279 | 275 |
| 280 if __name__ == '__main__': | 276 if __name__ == '__main__': |
| 281 main() | 277 main() |
| OLD | NEW |