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

Unified Diff: pydir/crosstest.py

Issue 987503004: Subzero: Run cross tests as a much more configurable python script. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Add import to be safe Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « crosstest/runtests.sh ('k') | pydir/crosstest_generator.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pydir/crosstest.py
diff --git a/pydir/crosstest.py b/pydir/crosstest.py
index 55a79df589b5299e0327b833c668c34e70beef6a..ae2c8a2e89c0625915c4bfae4e234e9bfddf6925 100755
--- a/pydir/crosstest.py
+++ b/pydir/crosstest.py
@@ -10,18 +10,17 @@ from utils import shellcmd
from utils import FindBaseNaCl
def main():
- """Builds a cross-test binary that allows functions translated by
- Subzero and llc to be compared.
+ """Builds a cross-test binary for comparing Subzero and llc translation.
- Each --test argument is compiled once by llc and once by Subzero.
- C/C++ tests are first compiled down to PNaCl bitcode by the
- build-pnacl-ir.py script. The --prefix argument ensures that
- symbol names are different between the two object files, to avoid
- linking errors.
+ Each --test argument is compiled once by llc and once by Subzero. C/C++
+ tests are first compiled down to PNaCl bitcode using pnacl-clang and
+ pnacl-opt. The --prefix argument ensures that symbol names are different
+ between the two object files, to avoid linking errors.
+
+ There is also a --driver argument that specifies the C/C++ file that calls
+ the test functions with a variety of interesting inputs and compares their
+ results.
- There is also a --driver argument that specifies the C/C++ file
- that calls the test functions with a variety of interesting inputs
- and compares their results.
"""
# arch_map maps a Subzero target string to an llvm-mc -triple string.
arch_map = { 'x8632':'i686', 'x8664':'x86_64', 'arm':'armv7a' }
@@ -76,24 +75,35 @@ def main():
bindir = ('{root}/toolchain/linux_x86/pnacl_newlib/bin'
.format(root=nacl_root))
triple = arch_map[args.target] + ('-nacl' if args.sandbox else '')
+ mypath = os.path.abspath(os.path.dirname(sys.argv[0]))
objs = []
for arg in args.test:
+ # Construct a "unique key" for each test so that tests can be run in
+ # parallel without race conditions on temporary file creation.
+ key = '{target}.{sb}.O{opt}.{attr}'.format(
+ target=args.target, sb='sb' if args.sandbox else 'nat',
+ opt=args.optlevel, attr=args.attr)
base, ext = os.path.splitext(arg)
if ext == '.ll':
bitcode = arg
else:
- bitcode = os.path.join(args.dir, base + '.pnacl.ll')
- shellcmd(['../pydir/build-pnacl-ir.py', '--disable-verify',
- '--dir', args.dir, arg])
+ # Use pnacl-clang and pnacl-opt to produce PNaCl bitcode.
+ bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc')
+ bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll')
+ shellcmd(['{bin}/pnacl-clang'.format(bin=bindir),
+ '-O2', '-c', arg, '-o', bitcode_nonfinal])
+ shellcmd(['{bin}/pnacl-opt'.format(bin=bindir),
+ '-pnacl-abi-simplify-preopt',
+ '-pnacl-abi-simplify-postopt',
+ '-pnaclabi-allow-debug-metadata',
+ bitcode_nonfinal, '-S', '-o', bitcode])
- base_sz = '{base}.{sb}.O{opt}.{attr}.{target}'.format(
- base=base, sb='sb' if args.sandbox else 'nat', opt=args.optlevel,
- attr=args.attr, target=args.target)
+ base_sz = '{base}.{key}'.format(base=base, key=key)
asm_sz = os.path.join(args.dir, base_sz + '.sz.s')
obj_sz = os.path.join(args.dir, base_sz + '.sz.o')
obj_llc = os.path.join(args.dir, base_sz + '.llc.o')
- shellcmd(['../pnacl-sz',
+ shellcmd(['{path}/pnacl-sz'.format(path=os.path.dirname(mypath)),
'-O' + args.optlevel,
'-mattr=' + args.attr,
'--target=' + args.target,
« no previous file with comments | « crosstest/runtests.sh ('k') | pydir/crosstest_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698