blob: 23d45a2436e3e40529caed21d30663def6e0ed56 [file] [log] [blame]
# -*- python -*-
# Copyright 2012 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
Import('env')
# valgrind has problems with minimal_test_guest
if env.IsRunningUnderValgrind():
Return()
# This test case tests an experimental profile of NaCl. If you make a
# change which breaks this test which is difficult to fix, you can
# disable the test, but please CC mseaborn,krasin.
if 'TRUSTED_ENV' not in env:
Return()
trusted_env = env['TRUSTED_ENV']
runner = trusted_env.ComponentProgram(
'minimal_test_host', ['minimal_test_host.c'],
EXTRA_LIBS=['sel'])
# This can generate references to runtime code we won't link with.
env.FilterOut(CCFLAGS=['-fasynchronous-unwind-tables'])
test_prog = env.ComponentProgram(
'minimal_test_guest',
['minimal_test_guest.c'],
EXTRA_LINKFLAGS=['-nostdlib'])
# The minimal_test_guest expects fairly minimal code. Without -nostdlib
# in the TRANSLATEFLAGS, a dummy pnacl shim will be the real entry
# point instead of _start, and that will end up doing a bit more work
# (e.g., an IRT query for nacl_read_tp). This extra work seems to be okay
# with --use_separate_thread, but crashes otherwise.
env.Replace(TRANSLATEFLAGS=['-nostdlib'])
# Avoid supporting non-standard linker-related TRANSLATEFLAGS (-nostdlib) with
# the sandboxed translator.
if env.Bit('use_sandboxed_translator'):
Return()
# TODO(stichnot,jvoung): For this special minimal-code test (see comment above),
# linking the Subzero generated ELF file results in a nexe that fails
# validation. https://code.google.com/p/nativeclient/issues/detail?id=4134
if env.Bit('use_sz'):
Return()
test_prog = env.GetTranslatedNexe(test_prog)
is_broken = not env.Bit('nacl_static_link')
node = env.CommandTest('minimal_test.out',
env.AddBootstrap(runner, [test_prog]),
stdout_golden=env.File('minimal_test.stdout'))
env.AddNodeToTestSuite(node, ['small_tests'], 'run_minnacl_test',
is_broken=is_broken)
node = env.CommandTest('minimal_test_separate_thread.out',
env.AddBootstrap(runner,
['--use_separate_thread', test_prog]),
stdout_golden=env.File('minimal_test.stdout'))
env.AddNodeToTestSuite(node, ['small_tests'],
'run_minnacl_separate_thread_test',
is_broken=is_broken)