Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: pydir/build-runtime.py

Issue 2085303002: Subzero, MIPS32: Cross-testing enabled for MIPS32 (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Crosstests running Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 shutil 5 import shutil
6 import tempfile 6 import tempfile
7 7
8 import targets 8 import targets
9 from utils import FindBaseNaCl, GetObjcopyCmd, shellcmd 9 from utils import FindBaseNaCl, GetObjcopyCmd, shellcmd
10 10
11 11
12 def Translate(ll_files, extra_args, obj, verbose): 12 def Translate(ll_files, extra_args, obj, verbose, target):
13 """Translate a set of input bitcode files into a single object file. 13 """Translate a set of input bitcode files into a single object file.
14 14
15 Use pnacl-llc to translate textual bitcode input ll_files into object file 15 Use pnacl-llc to translate textual bitcode input ll_files into object file
16 obj, using extra_args as the architectural flags. 16 obj, using extra_args as the architectural flags.
17 """ 17 """
18 shellcmd(['cat'] + ll_files + ['|', 18 shellcmd(['cat'] + ll_files + ['|',
19 'pnacl-llc', 19 'pnacl-llc',
20 '-externalize',
21 '-function-sections', 20 '-function-sections',
22 '-O2', 21 '-O2',
23 '-filetype=obj', 22 '-filetype=obj',
24 '-bitcode-format=llvm', 23 '-bitcode-format=llvm',
25 '-arm-enable-dwarf-eh=1', 24 '-arm-enable-dwarf-eh=1',
26 '-o', obj 25 '-o', obj
27 ] + extra_args, echo=verbose) 26 ] + extra_args, echo=verbose)
28 shellcmd([GetObjcopyCmd(), 27 shellcmd([GetObjcopyCmd(target),
29 '--strip-symbol=nacl_tp_tdb_offset', 28 '--strip-symbol=nacl_tp_tdb_offset',
30 '--strip-symbol=nacl_tp_tls_offset', 29 '--strip-symbol=nacl_tp_tls_offset',
31 obj 30 obj
32 ], echo=verbose) 31 ], echo=verbose)
33 32
34 33
35 def PartialLink(obj_files, extra_args, lib, verbose): 34 def PartialLink(obj_files, extra_args, lib, verbose):
36 """Partially links a set of obj files into a final obj library.""" 35 """Partially links a set of obj files into a final obj library."""
37 shellcmd(['le32-nacl-ld', 36 shellcmd(['le32-nacl-ld',
38 '-o', lib, 37 '-o', lib,
(...skipping 10 matching lines...) Expand all
49 def OutFile(template): 48 def OutFile(template):
50 return template.format(rtdir=rtdir, target=target_info.target) 49 return template.format(rtdir=rtdir, target=target_info.target)
51 # Helper function for building the native unsandboxed runtime. 50 # Helper function for building the native unsandboxed runtime.
52 def MakeNativeRuntime(): 51 def MakeNativeRuntime():
53 """Builds just the native runtime.""" 52 """Builds just the native runtime."""
54 # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to 53 # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to
55 # szrt_native_{target}.tmp.o. 54 # szrt_native_{target}.tmp.o.
56 Translate(ll_files, 55 Translate(ll_files,
57 ['-mtriple=' + target_info.triple] + target_info.llc_flags, 56 ['-mtriple=' + target_info.triple] + target_info.llc_flags,
58 TmpFile('{dir}/szrt_native_{target}.tmp.o'), 57 TmpFile('{dir}/szrt_native_{target}.tmp.o'),
59 verbose) 58 verbose,target=target_info.target)
60 # Compile srcdir/szrt_profiler.c to 59 # Compile srcdir/szrt_profiler.c to
61 # tempdir/szrt_profiler_native_{target}.o. 60 # tempdir/szrt_profiler_native_{target}.o.
62 shellcmd(['clang', 61 shellcmd(['clang',
63 '-O2', 62 '-O2',
64 '-target=' + target_info.triple, 63 '-target=' + target_info.triple,
65 '-c', 64 '-c',
66 '{srcdir}/szrt_profiler.c'.format(srcdir=srcdir), 65 '{srcdir}/szrt_profiler.c'.format(srcdir=srcdir),
67 '-o', TmpFile('{dir}/szrt_native_profiler_{target}.o') 66 '-o', TmpFile('{dir}/szrt_native_profiler_{target}.o')
68 ], echo=verbose) 67 ], echo=verbose)
Jim Stichnoth 2016/08/23 14:56:48 revert this whitespace change
obucinac 2016/09/05 16:55:59 Done.
69 # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o. 68 # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o.
70 shellcmd(['llvm-mc', 69 shellcmd(['llvm-mc',
71 '-triple=' + target_info.triple, '--defsym NATIVE=1', 70 '-triple=' + target_info.triple, '--defsym NATIVE=1',
72 '-filetype=obj', 71 '-filetype=obj',
73 '-o', TmpFile('{dir}/szrt_native_asm_{target}.o'), 72 '-o', TmpFile('{dir}/szrt_native_asm_{target}.o'),
74 '{srcdir}/szrt_asm_{target}.s'.format( 73 '{srcdir}/szrt_asm_{target}.s'.format(
75 srcdir=srcdir, target=target_info.target) 74 srcdir=srcdir, target=target_info.target)
76 ], echo=verbose) 75 ], echo=verbose)
77 # Write full szrt_native_{target}.o. 76 # Write full szrt_native_{target}.o.
78 PartialLink([TmpFile('{dir}/szrt_native_{target}.tmp.o'), 77 PartialLink([TmpFile('{dir}/szrt_native_{target}.tmp.o'),
79 TmpFile('{dir}/szrt_native_asm_{target}.o'), 78 TmpFile('{dir}/szrt_native_asm_{target}.o'),
80 TmpFile('{dir}/szrt_native_profiler_{target}.o')], 79 TmpFile('{dir}/szrt_native_profiler_{target}.o')],
81 ['-m {ld_emu}'.format(ld_emu=target_info.ld_emu)], 80 ['-m {ld_emu}'.format(ld_emu=target_info.ld_emu)],
82 OutFile('{rtdir}/szrt_native_{target}.o'), 81 OutFile('{rtdir}/szrt_native_{target}.o'),
83 verbose) 82 verbose)
84 shellcmd([GetObjcopyCmd(), 83 shellcmd([GetObjcopyCmd(target=target_info.target),
Jim Stichnoth 2016/08/23 14:56:48 Can you remove "target=" ? here and below
obucinac 2016/09/05 16:55:59 Done.
85 '--strip-symbol=NATIVE', 84 '--strip-symbol=NATIVE',
86 OutFile('{rtdir}/szrt_native_{target}.o')]) 85 OutFile('{rtdir}/szrt_native_{target}.o')])
87 # Compile srcdir/szrt_asan.c to szrt_asan_{target}.o 86 # Compile srcdir/szrt_asan.c to szrt_asan_{target}.o
88 shellcmd(['clang', 87 shellcmd(['clang',
89 '-O2', 88 '-O2',
90 '-target=' + target_info.triple, 89 '-target=' + target_info.triple,
91 '-c', 90 '-c',
92 '{srcdir}/szrt_asan.c'.format(srcdir=srcdir), 91 '{srcdir}/szrt_asan.c'.format(srcdir=srcdir),
93 '-o', OutFile('{rtdir}/szrt_asan_{target}.o') 92 '-o', OutFile('{rtdir}/szrt_asan_{target}.o')
94 ], echo=verbose) 93 ], echo=verbose)
95 94
96 # Helper function for building the sandboxed runtime. 95 # Helper function for building the sandboxed runtime.
97 def MakeSandboxedRuntime(): 96 def MakeSandboxedRuntime():
98 """Builds just the sandboxed runtime.""" 97 """Builds just the sandboxed runtime."""
99 # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to szrt_sb_{target}.o. 98 # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to szrt_sb_{target}.o.
100 # The sandboxed library does not get the profiler helper function as the 99 # The sandboxed library does not get the profiler helper function as the
101 # binaries are linked with -nostdlib. 100 # binaries are linked with -nostdlib.
102 Translate(ll_files, 101 Translate(ll_files,
103 ['-mtriple=' + targets.ConvertTripleToNaCl(target_info.triple)] + 102 ['-mtriple=' + targets.ConvertTripleToNaCl(target_info.triple)] +
104 target_info.llc_flags, 103 target_info.llc_flags,
105 TmpFile('{dir}/szrt_sb_{target}.tmp.o'), 104 TmpFile('{dir}/szrt_sb_{target}.tmp.o'),
106 verbose) 105 verbose,target=target_info.target)
107 # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o. 106 # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o.
108 shellcmd(['llvm-mc', 107 shellcmd(['llvm-mc',
109 '-triple=' + targets.ConvertTripleToNaCl(target_info.triple), 108 '-triple=' + targets.ConvertTripleToNaCl(target_info.triple),
110 '--defsym NACL=1', 109 '--defsym NACL=1',
111 '-filetype=obj', 110 '-filetype=obj',
112 '-o', TmpFile('{dir}/szrt_sb_asm_{target}.o'), 111 '-o', TmpFile('{dir}/szrt_sb_asm_{target}.o'),
113 '{srcdir}/szrt_asm_{target}.s'.format( 112 '{srcdir}/szrt_asm_{target}.s'.format(
114 srcdir=srcdir, target=target_info.target) 113 srcdir=srcdir, target=target_info.target)
115 ], echo=verbose) 114 ], echo=verbose)
116 PartialLink([TmpFile('{dir}/szrt_sb_{target}.tmp.o'), 115 PartialLink([TmpFile('{dir}/szrt_sb_{target}.tmp.o'),
117 TmpFile('{dir}/szrt_sb_asm_{target}.o')], 116 TmpFile('{dir}/szrt_sb_asm_{target}.o')],
118 ['-m {ld_emu}'.format(ld_emu=target_info.sb_emu)], 117 ['-m {ld_emu}'.format(ld_emu=target_info.sb_emu)],
119 OutFile('{rtdir}/szrt_sb_{target}.o'), 118 OutFile('{rtdir}/szrt_sb_{target}.o'),
120 verbose) 119 verbose)
121 shellcmd([GetObjcopyCmd(), 120 shellcmd([GetObjcopyCmd(target=target_info.target),
122 '--strip-symbol=NACL', 121 '--strip-symbol=NACL',
123 OutFile('{rtdir}/szrt_sb_{target}.o')]) 122 OutFile('{rtdir}/szrt_sb_{target}.o')])
124 123
125 # Helper function for building the Non-SFI runtime. 124 # Helper function for building the Non-SFI runtime.
126 def MakeNonsfiRuntime(): 125 def MakeNonsfiRuntime():
127 """Builds just the nonsfi runtime.""" 126 """Builds just the nonsfi runtime."""
128 # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to 127 # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to
129 # szrt_nonsfi_{target}.tmp.o. 128 # szrt_nonsfi_{target}.tmp.o.
130 Translate(ll_files, 129 Translate(ll_files,
131 ['-mtriple=' + target_info.triple] + target_info.llc_flags + 130 ['-mtriple=' + target_info.triple] + target_info.llc_flags +
132 ['-relocation-model=pic', '-force-tls-non-pic', '-malign-double'], 131 ['-relocation-model=pic', '-force-tls-non-pic', '-malign-double'],
133 TmpFile('{dir}/szrt_nonsfi_{target}.tmp.o'), 132 TmpFile('{dir}/szrt_nonsfi_{target}.tmp.o'),
134 verbose) 133 verbose, target=target_info.target)
135 # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o. 134 # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o.
136 shellcmd(['llvm-mc', 135 shellcmd(['llvm-mc',
137 '-triple=' + target_info.triple, '--defsym NONSFI=1', 136 '-triple=' + target_info.triple, '--defsym NONSFI=1',
138 '-filetype=obj', 137 '-filetype=obj',
139 '-o', TmpFile('{dir}/szrt_nonsfi_asm_{target}.o'), 138 '-o', TmpFile('{dir}/szrt_nonsfi_asm_{target}.o'),
140 '{srcdir}/szrt_asm_{target}.s'.format( 139 '{srcdir}/szrt_asm_{target}.s'.format(
141 srcdir=srcdir, target=target_info.target) 140 srcdir=srcdir, target=target_info.target)
142 ], echo=verbose) 141 ], echo=verbose)
143 # Write full szrt_nonsfi_{target}.o. 142 # Write full szrt_nonsfi_{target}.o.
144 PartialLink([TmpFile('{dir}/szrt_nonsfi_{target}.tmp.o'), 143 PartialLink([TmpFile('{dir}/szrt_nonsfi_{target}.tmp.o'),
145 TmpFile('{dir}/szrt_nonsfi_asm_{target}.o')], 144 TmpFile('{dir}/szrt_nonsfi_asm_{target}.o')],
146 ['-m {ld_emu}'.format(ld_emu=target_info.ld_emu)], 145 ['-m {ld_emu}'.format(ld_emu=target_info.ld_emu)],
147 OutFile('{rtdir}/szrt_nonsfi_{target}.o'), 146 OutFile('{rtdir}/szrt_nonsfi_{target}.o'),
148 verbose) 147 verbose)
149 shellcmd([GetObjcopyCmd(), 148 shellcmd([GetObjcopyCmd(target=target_info.target),
150 '--strip-symbol=NONSFI', 149 '--strip-symbol=NONSFI',
151 OutFile('{rtdir}/szrt_nonsfi_{target}.o')]) 150 OutFile('{rtdir}/szrt_nonsfi_{target}.o')])
152 151
153 152
154 # Run the helper functions. 153 # Run the helper functions.
155 MakeNativeRuntime() 154 MakeNativeRuntime()
156 MakeSandboxedRuntime() 155 MakeSandboxedRuntime()
157 MakeNonsfiRuntime() 156 MakeNonsfiRuntime()
158 157
159 158
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 ], echo=args.verbose) 203 ], echo=args.verbose)
205 ll_files = ['{dir}/szrt.ll'.format(dir=tempdir), 204 ll_files = ['{dir}/szrt.ll'.format(dir=tempdir),
206 '{srcdir}/szrt_ll.ll'.format(srcdir=srcdir)] 205 '{srcdir}/szrt_ll.ll'.format(srcdir=srcdir)]
207 206
208 MakeRuntimesForTarget(targets.X8632Target, ll_files, 207 MakeRuntimesForTarget(targets.X8632Target, ll_files,
209 srcdir, tempdir, rtdir, args.verbose) 208 srcdir, tempdir, rtdir, args.verbose)
210 MakeRuntimesForTarget(targets.X8664Target, ll_files, 209 MakeRuntimesForTarget(targets.X8664Target, ll_files,
211 srcdir, tempdir, rtdir, args.verbose) 210 srcdir, tempdir, rtdir, args.verbose)
212 MakeRuntimesForTarget(targets.ARM32Target, ll_files, 211 MakeRuntimesForTarget(targets.ARM32Target, ll_files,
213 srcdir, tempdir, rtdir, args.verbose) 212 srcdir, tempdir, rtdir, args.verbose)
213 MakeRuntimesForTarget(targets.MIPS32Target, ll_files,
Jim Stichnoth 2016/09/02 15:49:31 We need a way to not run this in a non-MIPS build
214 srcdir, tempdir, rtdir, args.verbose)
214 215
215 finally: 216 finally:
216 try: 217 try:
217 shutil.rmtree(tempdir) 218 shutil.rmtree(tempdir)
218 except OSError as exc: 219 except OSError as exc:
219 if exc.errno != errno.ENOENT: # ENOENT - no such file or directory 220 if exc.errno != errno.ENOENT: # ENOENT - no such file or directory
220 raise # re-raise exception 221 raise # re-raise exception
221 222
222 if __name__ == '__main__': 223 if __name__ == '__main__':
223 main() 224 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698