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 159 matching lines...) Loading... |
170 # currently the only situation where multiple translated files are | 170 # currently the only situation where multiple translated files are |
171 # linked into the executable, but when PNaCl supports shared nexe | 171 # linked into the executable, but when PNaCl supports shared nexe |
172 # libraries, this would need to change. | 172 # libraries, this would need to change. |
173 shellcmd(['{bin}/le32-nacl-objcopy'.format(bin=bindir), | 173 shellcmd(['{bin}/le32-nacl-objcopy'.format(bin=bindir), |
174 '--weaken-symbol=__Sz_block_profile_info', | 174 '--weaken-symbol=__Sz_block_profile_info', |
175 '--strip-symbol=nacl_tp_tdb_offset', | 175 '--strip-symbol=nacl_tp_tdb_offset', |
176 '--strip-symbol=nacl_tp_tls_offset', | 176 '--strip-symbol=nacl_tp_tls_offset', |
177 obj_sz]) | 177 obj_sz]) |
178 objs.append(obj_sz) | 178 objs.append(obj_sz) |
179 shellcmd(['{bin}/pnacl-llc'.format(bin=bindir), | 179 shellcmd(['{bin}/pnacl-llc'.format(bin=bindir), |
| 180 '-arm-enable-dwarf-eh=1', |
180 '-mtriple=' + triple, | 181 '-mtriple=' + triple, |
181 '-externalize', | 182 '-externalize', |
182 '-filetype=obj', | 183 '-filetype=obj', |
183 '-bitcode-format=llvm', | 184 '-bitcode-format=llvm', |
184 '-o=' + obj_llc, | 185 '-o=' + obj_llc, |
185 bitcode] + llc_flags) | 186 bitcode] + llc_flags) |
186 shellcmd(['{bin}/le32-nacl-objcopy'.format(bin=bindir), | 187 shellcmd(['{bin}/le32-nacl-objcopy'.format(bin=bindir), |
187 '--weaken-symbol=__Sz_block_profile_info', | 188 '--weaken-symbol=__Sz_block_profile_info', |
188 '--strip-symbol=nacl_tp_tdb_offset', | 189 '--strip-symbol=nacl_tp_tdb_offset', |
189 '--strip-symbol=nacl_tp_tls_offset', | 190 '--strip-symbol=nacl_tp_tls_offset', |
(...skipping 40 matching lines...) Loading... |
230 return 0 | 231 return 0 |
231 | 232 |
232 base, ext = os.path.splitext(args.driver) | 233 base, ext = os.path.splitext(args.driver) |
233 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') | 234 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') |
234 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') | 235 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') |
235 asm_sz = os.path.join(args.dir, base + '.' + key + '.s') | 236 asm_sz = os.path.join(args.dir, base + '.' + key + '.s') |
236 obj_llc = os.path.join(args.dir, base + '.' + key + '.o') | 237 obj_llc = os.path.join(args.dir, base + '.' + key + '.o') |
237 compiler = '{bin}/{prefix}{cc}'.format( | 238 compiler = '{bin}/{prefix}{cc}'.format( |
238 bin=bindir, prefix='pnacl-', | 239 bin=bindir, prefix='pnacl-', |
239 cc='clang' if pure_c else 'clang++') | 240 cc='clang' if pure_c else 'clang++') |
240 shellcmd([compiler, | 241 shellcmd([compiler] + target_params + [ |
241 args.driver, | 242 args.driver, |
242 '-O2', | 243 '-O2', |
243 '-o', bitcode_nonfinal, | 244 '-o', bitcode_nonfinal, |
244 '-Wl,-r' | 245 '-Wl,-r' |
245 ]) | 246 ]) |
246 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), | 247 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), |
247 '-pnacl-abi-simplify-preopt', | 248 '-pnacl-abi-simplify-preopt', |
248 '-pnacl-abi-simplify-postopt', | 249 '-pnacl-abi-simplify-postopt', |
249 '-pnaclabi-allow-debug-metadata', | 250 '-pnaclabi-allow-debug-metadata', |
250 '-strip-metadata', | 251 '-strip-metadata', |
251 '-strip-module-flags', | 252 '-strip-module-flags', |
252 '-strip-debug', | 253 '-strip-debug', |
253 '-disable-opt', | 254 '-disable-opt', |
254 bitcode_nonfinal, '-S', '-o', bitcode]) | 255 bitcode_nonfinal, '-S', '-o', bitcode]) |
255 shellcmd(['{bin}/pnacl-llc'.format(bin=bindir), | 256 shellcmd(['{bin}/pnacl-llc'.format(bin=bindir), |
| 257 '-arm-enable-dwarf-eh=1', |
256 '-mtriple=' + triple, | 258 '-mtriple=' + triple, |
257 '-externalize', | 259 '-externalize', |
258 '-filetype=obj', | 260 '-filetype=obj', |
259 '-O2', | 261 '-O2', |
260 '-bitcode-format=llvm', | 262 '-bitcode-format=llvm', |
261 '-o', obj_llc, | 263 '-o', obj_llc, |
262 bitcode] + llc_flags) | 264 bitcode] + llc_flags) |
263 if not args.sandbox and not args.nonsfi: | 265 if not args.sandbox and not args.nonsfi: |
264 shellcmd(['{bin}/le32-nacl-objcopy'.format(bin=bindir), | 266 shellcmd(['{bin}/le32-nacl-objcopy'.format(bin=bindir), |
265 '--redefine-sym', '_start=_user_start', | 267 '--redefine-sym', '_start=_user_start', |
266 obj_llc | 268 obj_llc |
267 ]) | 269 ]) |
268 objs.append(obj_llc) | 270 objs.append(obj_llc) |
269 if args.nonsfi: | 271 if args.nonsfi: |
270 LinkNonsfi(objs, os.path.join(args.dir, args.output), args.target) | 272 LinkNonsfi(objs, os.path.join(args.dir, args.output), args.target) |
271 elif args.sandbox: | 273 elif args.sandbox: |
272 LinkSandbox(objs, os.path.join(args.dir, args.output), args.target) | 274 LinkSandbox(objs, os.path.join(args.dir, args.output), args.target) |
273 else: | 275 else: |
274 LinkNative(objs, os.path.join(args.dir, args.output), args.target) | 276 LinkNative(objs, os.path.join(args.dir, args.output), args.target) |
275 | 277 |
276 if __name__ == '__main__': | 278 if __name__ == '__main__': |
277 main() | 279 main() |
OLD | NEW |