diff --git a/Makefile.standalone b/Makefile.standalone
index 664338b..0d0bad2 100644
--- a/Makefile.standalone
+++ b/Makefile.standalone
@@ -329,7 +329,9 @@
 	  -i x8632,native,sse2 -i x8632,native,sse4.1,test_vector_ops \
 	  -i x8632,sandbox,sse4.1,Om1 \
 	  -i arm32,native,neon,Om1,simple_loop \
-	  -i arm32,native,neon,Om1,test_stacksave
+	  -i arm32,native,neon,Om1,mem_intrin \
+	  -i arm32,native,neon,Om1,test_stacksave \
+	  -i arm32,native,neon,Om1,test_strengthreduce
 	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
 	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv crosstest/Output
 endif
diff --git a/pydir/crosstest.py b/pydir/crosstest.py
index ebc33f8..7a479c3 100755
--- a/pydir/crosstest.py
+++ b/pydir/crosstest.py
@@ -166,7 +166,7 @@
         else:
             objs.append(arg)
 
-    # Add szrt_sb_x8632.o or szrt_native_x8632.o.
+    # Add szrt_sb_${target}.o or szrt_native_${target}.o.
     objs.append((
             '{root}/toolchain_build/src/subzero/build/runtime/' +
             'szrt_{sb}_' + args.target + '.o'
@@ -176,12 +176,14 @@
     compiler = '{bin}/{prefix}{cc}'.format(
         bin=bindir, prefix='pnacl-' if args.sandbox else '',
         cc='clang' if pure_c else 'clang++')
-    sb_native_args = (['-O0', '--pnacl-allow-native', '-arch', 'x8632',
+    sb_native_args = (['-O0', '--pnacl-allow-native',
+                       '-arch', target_info.target,
                        '-Wn,-defsym=__Sz_AbsoluteZero=0']
                       if args.sandbox else
                       ['-g', '-target=' + triple,
                        '-lm', '-lpthread',
-                       '-Wl,--defsym=__Sz_AbsoluteZero=0'])
+                       '-Wl,--defsym=__Sz_AbsoluteZero=0'] +
+                      target_info.cross_headers)
     shellcmd([compiler, args.driver] + objs +
              ['-o', os.path.join(args.dir, args.output)] + sb_native_args)
 
diff --git a/pydir/targets.py b/pydir/targets.py
index 0f6433c..c2188e5 100644
--- a/pydir/targets.py
+++ b/pydir/targets.py
@@ -1,26 +1,44 @@
 #!/usr/bin/env python2
 
 from collections import namedtuple
+import glob
+
+
+# Why have 'cross_headers':
+# For some reason, clang doesn't know how to find some of the libstdc++
+# headers (c++config.h). Manually add in one of the paths:
+# https://llvm.org/bugs/show_bug.cgi?id=22937
+# Otherwise, we could assume the system has arm-linux-gnueabihf-g++ and
+# use that instead of clang, but so far we've just been using clang for
+# the unsandboxed build.
+def FindARMCrossInclude():
+  return glob.glob(
+      '/usr/arm-linux-gnueabihf/include/c++/*/arm-linux-gnueabihf')[-1]
+
 
 TargetInfo = namedtuple('TargetInfo',
-                        ['target', 'triple', 'llc_flags', 'ld_emu'])
+                        ['target', 'triple', 'llc_flags', 'ld_emu',
+                         'cross_headers'])
 
 X8632Target = TargetInfo(target='x8632',
                          triple='i686-none-linux',
                          llc_flags=['-mcpu=pentium4m'],
-                         ld_emu='elf_i386_nacl')
+                         ld_emu='elf_i386_nacl',
+                         cross_headers=[])
 
 X8664Target = TargetInfo(target='x8664',
                          triple='x86_64-none-linux',
                          llc_flags=['-mcpu=x86-64'],
-                         ld_emu='elf_x86_64_nacl')
+                         ld_emu='elf_x86_64_nacl',
+                         cross_headers=[])
 
 ARM32Target = TargetInfo(target='arm32',
                          triple='armv7a-none-linux-gnueabihf',
                          llc_flags=['-mcpu=cortex-a9',
                                     '-float-abi=hard',
                                     '-mattr=+neon'],
-                         ld_emu='armelf_nacl')
+                         ld_emu='armelf_nacl',
+                         cross_headers=['-isystem', FindARMCrossInclude()])
 
 
 def ConvertTripleToNaCl(nonsfi_triple):
