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 pipes | 5 import pipes |
6 import re | 6 import re |
7 import sys | 7 import sys |
8 | 8 |
9 from utils import shellcmd, FindBaseNaCl, get_sfi_string | 9 from utils import shellcmd, FindBaseNaCl, get_sfi_string |
10 | 10 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 action='store_true', | 96 action='store_true', |
97 help='Display some extra debugging output') | 97 help='Display some extra debugging output') |
98 argparser.add_argument('--sz', dest='sz_args', action='append', default=[], | 98 argparser.add_argument('--sz', dest='sz_args', action='append', default=[], |
99 help='Extra arguments for Subzero') | 99 help='Extra arguments for Subzero') |
100 argparser.add_argument('--llc', dest='llc_args', action='append', | 100 argparser.add_argument('--llc', dest='llc_args', action='append', |
101 default=[], help='Extra arguments for llc') | 101 default=[], help='Extra arguments for llc') |
102 argparser.add_argument('--no-sz', dest='nosz', action='store_true', | 102 argparser.add_argument('--no-sz', dest='nosz', action='store_true', |
103 help='Run only post-Subzero build steps') | 103 help='Run only post-Subzero build steps') |
104 | 104 |
105 def LinkSandbox(objs, exe, target, verbose=True): | 105 def LinkSandbox(objs, exe, target, verbose=True): |
106 assert target in ('x8632', 'arm32'), \ | 106 assert target in ('x8632', 'x8664', 'arm32'), \ |
107 '-sandbox is not available for %s' % target | 107 '-sandbox is not available for %s' % target |
108 nacl_root = FindBaseNaCl() | 108 nacl_root = FindBaseNaCl() |
109 gold = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/bin/' + | 109 gold = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/bin/' + |
110 'le32-nacl-ld.gold').format(root=nacl_root) | 110 'le32-nacl-ld.gold').format(root=nacl_root) |
111 target_lib_dir = { | 111 target_lib_dir = { |
112 'arm32': 'arm', | 112 'arm32': 'arm', |
113 'x8632': 'x86-32', | 113 'x8632': 'x86-32', |
| 114 'x8664': 'x86-64', |
114 }[target] | 115 }[target] |
115 linklib = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/translator/' + | 116 linklib = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/translator/' + |
116 '{target_dir}/lib').format(root=nacl_root, | 117 '{target_dir}/lib').format(root=nacl_root, |
117 target_dir=target_lib_dir) | 118 target_dir=target_lib_dir) |
118 shellcmd([gold, | 119 shellcmd([gold, |
119 '-nostdlib', | 120 '-nostdlib', |
120 '--no-fix-cortex-a8', | 121 '--no-fix-cortex-a8', |
121 '--eh-frame-hdr', | 122 '--eh-frame-hdr', |
122 '-z', 'text', | 123 '-z', 'text', |
123 #'-z', 'noexecstack', | 124 #'-z', 'noexecstack', |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 echo=args.verbose) | 411 echo=args.verbose) |
411 obj_partial = pexe_base + '.o' | 412 obj_partial = pexe_base + '.o' |
412 ld = { | 413 ld = { |
413 'arm32': 'arm-linux-gnueabihf-ld', | 414 'arm32': 'arm-linux-gnueabihf-ld', |
414 'x8632': 'ld', | 415 'x8632': 'ld', |
415 'x8664': 'ld', | 416 'x8664': 'ld', |
416 }[args.target] | 417 }[args.target] |
417 emulation = { | 418 emulation = { |
418 'arm32': 'armelf_linux_eabi', | 419 'arm32': 'armelf_linux_eabi', |
419 'x8632': 'elf_i386', | 420 'x8632': 'elf_i386', |
420 'x8664': 'elf32_x86_64', | 421 'x8664': 'elf32_x86_64' if not args.sandbox else 'elf_x86_64', |
421 }[args.target] | 422 }[args.target] |
422 shellcmd(( | 423 shellcmd(( |
423 '{ld} -r -m {emulation} -o {partial} {sz} {llc}' | 424 '{ld} -r -m {emulation} -o {partial} {sz} {llc}' |
424 ).format(ld=ld, emulation=emulation, partial=obj_partial, | 425 ).format(ld=ld, emulation=emulation, partial=obj_partial, |
425 sz=obj_sz_weak, llc=obj_llc_weak), | 426 sz=obj_sz_weak, llc=obj_llc_weak), |
426 echo=args.verbose) | 427 echo=args.verbose) |
427 shellcmd(( | 428 shellcmd(( |
428 '{objcopy} -w --localize-symbol="*" {partial}' | 429 '{objcopy} -w --localize-symbol="*" {partial}' |
429 ).format(objcopy=objcopy, partial=obj_partial), | 430 ).format(objcopy=objcopy, partial=obj_partial), |
430 echo=args.verbose) | 431 echo=args.verbose) |
(...skipping 15 matching lines...) Expand all Loading... |
446 | 447 |
447 # Put the extra verbose printing at the end. | 448 # Put the extra verbose printing at the end. |
448 if args.verbose and hybrid: | 449 if args.verbose and hybrid: |
449 print 'include={regex}'.format(regex=re_include_str) | 450 print 'include={regex}'.format(regex=re_include_str) |
450 print 'exclude={regex}'.format(regex=re_exclude_str) | 451 print 'exclude={regex}'.format(regex=re_exclude_str) |
451 print 'default_match={dm}'.format(dm=default_match) | 452 print 'default_match={dm}'.format(dm=default_match) |
452 print 'Number of Subzero syms = {num}'.format(num=len(sz_syms)) | 453 print 'Number of Subzero syms = {num}'.format(num=len(sz_syms)) |
453 | 454 |
454 if __name__ == '__main__': | 455 if __name__ == '__main__': |
455 main() | 456 main() |
OLD | NEW |