| Index: tests/pnacl_dynamic_loading/nacl.scons
|
| diff --git a/tests/pnacl_dynamic_loading/nacl.scons b/tests/pnacl_dynamic_loading/nacl.scons
|
| index 48d22542794158e34329708246911cabd0372675..74f06bf8169f0c1f47e9c3865917aaa1e4053c62 100644
|
| --- a/tests/pnacl_dynamic_loading/nacl.scons
|
| +++ b/tests/pnacl_dynamic_loading/nacl.scons
|
| @@ -52,13 +52,29 @@ def PsoFromLLVMAssembly(base_name):
|
| llvm_passes='')
|
|
|
|
|
| +LLVM_PASSES = (
|
| + # The following is a subset of "-pnacl-abi-simplify-preopt". We don't
|
| + # want to run the full "-pnacl-abi-simplify-preopt" because it
|
| + # internalizes symbols that we want to export via "-convert-to-pso".
|
| + '-resolve-aliases '
|
| + '-nacl-global-cleanup '
|
| + '-expand-varargs '
|
| + '-rewrite-pnacl-library-calls '
|
| + '-rewrite-llvm-intrinsic-calls '
|
| + # Convert thread-local variables into non-thread-local global variables
|
| + # for now because ConvertToPSO doesn't support TLS yet.
|
| + '-minsfi-strip-tls '
|
| + '-convert-to-pso '
|
| + '-pnacl-abi-simplify-postopt')
|
| +
|
| +
|
| def MakeAndTranslatePll(dest, source_file):
|
| return MakeAndTranslatePso(
|
| dest, [env.ComponentObject(source_file)],
|
| # Skip the pre-opt passes because they add TLS functions. However,
|
| # we still need to run the post-opt passes so that the LLVM IR passes
|
| # the PNaCl ABI checker.
|
| - llvm_passes='-convert-to-pso -pnacl-abi-simplify-postopt')
|
| + llvm_passes=LLVM_PASSES)
|
|
|
|
|
| # Under SFI NaCl, the loader currently depends on the allocate_code_data()
|
| @@ -92,7 +108,7 @@ test_pll = MakeAndTranslatePll('test_pll', 'test_pll.c')
|
|
|
| pll_symbols_test = env.ComponentProgram(
|
| 'pll_symbols_test', ['pll_symbols_test.cc'],
|
| - EXTRA_LIBS=['${NONIRT_LIBS}', 'pnacl_dynloader', 'pll_loader'])
|
| + EXTRA_LIBS=['${NONIRT_LIBS}', 'pnacl_dynloader', 'pll_loader_lib'])
|
|
|
| node = env.CommandSelLdrTestNacl(
|
| 'pll_symbols_test.out', pll_symbols_test, [test_pll],
|
| @@ -108,7 +124,7 @@ test_pll_b = MakeAndTranslatePll('test_pll_b', 'test_pll_b.c')
|
|
|
| pll_loader_test = env.ComponentProgram(
|
| 'pll_loader_test', ['pll_loader_test.cc'],
|
| - EXTRA_LIBS=['${NONIRT_LIBS}', 'pll_loader'])
|
| + EXTRA_LIBS=['${NONIRT_LIBS}', 'pll_loader_lib'])
|
|
|
| node = env.CommandSelLdrTestNacl(
|
| 'pll_loader_test.out', pll_loader_test, [test_pll_a, test_pll_b],
|
| @@ -117,3 +133,38 @@ node = env.CommandSelLdrTestNacl(
|
| env.AddNodeToTestSuite(
|
| node, ['small_tests', 'toolchain_tests'],
|
| 'run_pll_loader_test', is_broken=is_broken)
|
| +
|
| +
|
| +libc_obj = env.Command(
|
| + 'libc${OBJSUFFIX}',
|
| + # libnacl should come first so that it can override definitions in libc.
|
| + [env.File('${LIB_DIR}/libnacl.a'),
|
| + env.File('${NACL_SDK_LIB}/libc.a'),
|
| + env.ComponentObject('libc_entry.c')],
|
| + '${LD} -r --whole-archive ${SOURCES} -o ${TARGET}')
|
| +
|
| +translated_pll_libc = MakeAndTranslatePso(
|
| + 'translated_pll_libc', libc_obj,
|
| + llvm_passes=LLVM_PASSES)
|
| +translated_pll_hello_world = MakeAndTranslatePso(
|
| + 'translated_pll_hello_world',
|
| + [env.ComponentObject('hello_world${OBJSUFFIX}',
|
| + '../hello_world/hello_world.c')],
|
| + llvm_passes=LLVM_PASSES)
|
| +
|
| +# Ideally we would have this ComponentProgram() definition in
|
| +# src/untrusted/pll_loader/nacl.scons instead; see the comment there for
|
| +# why we don't.
|
| +pll_loader = env.ComponentProgram(
|
| + 'pll_loader', [],
|
| + EXTRA_LIBS=['${NONIRT_LIBS}', 'pll_loader_main', 'pll_loader_lib'])
|
| +
|
| +node = env.CommandSelLdrTestNacl(
|
| + 'pll_hello_world_test.out', pll_loader,
|
| + [translated_pll_libc, translated_pll_hello_world],
|
| + # Add '-a' to enable filesystem access for opening DSOs.
|
| + sel_ldr_flags=['-a'],
|
| + stdout_golden=env.File('../hello_world/hello_world.stdout'))
|
| +env.AddNodeToTestSuite(
|
| + node, ['small_tests', 'toolchain_tests'],
|
| + 'run_pll_hello_world_test', is_broken=is_broken)
|
|
|