summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorhans <hans@chromium.org>2015-05-15 11:47:25 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-15 18:47:43 +0000
commitaad01297ee28c48a3021339568cacaf16f37fdc0 (patch)
tree7e70644537aba64700957e5151849dc6528f9ce4 /components
parent5811284139852648ddc5e6332822de237e59ba8f (diff)
downloadchromium_src-aad01297ee28c48a3021339568cacaf16f37fdc0.zip
chromium_src-aad01297ee28c48a3021339568cacaf16f37fdc0.tar.gz
chromium_src-aad01297ee28c48a3021339568cacaf16f37fdc0.tar.bz2
Revert of Non-SFI mode: Build nacl_helper_nonsfi_unittests (patchset #4 id:80001 of https://codereview.chromium.org/1137553003/)
Reason for revert: This breaks the asan build. See comments on the original CL. Original issue's description: > Non-SFI mode: Build nacl_helper_nonsfi_unittests > > This CL starts to build nacl_helper_nonsfi_unittests. > The binary is not yet enabled to run on bots. It will be done in a following CL. > > TEST=Ran locally. Ran build bots. Ran build bots with editing configuration to include nacl_helper_nonsfi_unittests. > BUG=358465 > > Committed: https://crrev.com/72c418b09bbf90505f54df2b76285650acd97960 > Cr-Commit-Position: refs/heads/master@{#330069} TBR=mseaborn@chromium.org,mdempsky@chromium.org,thakis@chromium.org,jln@chromium.org,hidehiko@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=358465 Review URL: https://codereview.chromium.org/1145593002 Cr-Commit-Position: refs/heads/master@{#330147}
Diffstat (limited to 'components')
-rw-r--r--components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc118
-rw-r--r--components/nacl_helper_nonsfi_unittests.isolate18
-rw-r--r--components/nacl_nonsfi.gyp130
3 files changed, 16 insertions, 250 deletions
diff --git a/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc b/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
index bd4ab95..98e95c2 100644
--- a/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
+++ b/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
@@ -25,7 +25,6 @@
#include <time.h>
#include <unistd.h>
-#include "base/at_exit.h"
#include "base/bind.h"
#include "base/callback.h"
#include "base/compiler_specific.h"
@@ -43,67 +42,6 @@
#include "sandbox/linux/system_headers/linux_signal.h"
#include "sandbox/linux/system_headers/linux_syscalls.h"
-// These defines are for PNaCl toolchain build.
-#if !defined(F_DUPFD_CLOEXEC)
-#define F_DUPFD_CLOEXEC 1030
-#endif
-
-#if !defined(MAP_POPULATE)
-#define MAP_POPULATE 0x8000
-#endif
-
-#if !defined(PROT_GROWSDOWN)
-#define PROT_GROWSDOWN 0x01000000
-#endif
-
-#if !defined(CLOCK_MONOTONIC_RAW)
-#define CLOCK_MONOTONIC_RAW 4
-#endif
-
-#if !defined(AF_INET)
-#define AF_INET 2
-#endif
-
-#if defined(__i386__)
-
-#if !defined(SYS_SOCKET)
-#define SYS_SOCKET 1
-#endif
-
-#if !defined(SYS_BIND)
-#define SYS_BIND 2
-#endif
-
-#if !defined(SYS_CONNECT)
-#define SYS_CONNECT 3
-#endif
-
-#if !defined(SYS_LISTEN)
-#define SYS_LISTEN 4
-#endif
-
-#if !defined(SYS_ACCEPT)
-#define SYS_ACCEPT 5
-#endif
-
-#if !defined(SYS_GETSOCKNAME)
-#define SYS_GETSOCKNAME 6
-#endif
-
-#if !defined(SYS_GETPEERNAME)
-#define SYS_GETPEERNAME 7
-#endif
-
-#if !defined(SYS_SETSOCKOPT)
-#define SYS_SETSOCKOPT 14
-#endif
-
-#if !defined(SYS_GETSOCKOPT)
-#define SYS_GETSOCKOPT 15
-#endif
-
-#endif // defined(__i386__)
-
namespace {
void DoPipe(base::ScopedFD* fds) {
@@ -430,28 +368,18 @@ BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
fcntl(fds[0].get(), F_SETFL, O_APPEND);
}
-void DoFcntl(int fd, int cmd) {
- // fcntl in PNaCl toolchain returns an error without calling actual system
- // call for unknown |cmd|. So, instead, here we use syscall().
-#if defined(OS_NACL_NONSFI)
- syscall(__NR_fcntl64, fd, cmd);
-#else
- fcntl(fd, cmd);
-#endif
-}
-
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
fcntl_DUPFD,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoFcntl(0, F_DUPFD);
+ fcntl(0, F_DUPFD);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
fcntl_DUPFD_CLOEXEC,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoFcntl(0, F_DUPFD_CLOEXEC);
+ fcntl(0, F_DUPFD_CLOEXEC);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
@@ -475,14 +403,6 @@ BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
BPF_TEST_C(NaClNonSfiSandboxTest,
StartingAndJoiningThreadWorks,
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
-#if defined(OS_NACL_NONSFI)
- // base::Thread internally uses LazyInstance, which registers a callback to
- // AtExitManager. However, in PNaCl toolchain build, it is not instantiated
- // by the test runner, unlike host toolchain build (nacl_loader_unittests).
- // Hence, declare it here so that the LazyInstance will work properly.
- base::AtExitManager at_exit;
-#endif
-
base::Thread thread("sandbox_tests");
BPF_ASSERT(thread.Start());
// |thread|'s destructor will join the thread.
@@ -497,20 +417,9 @@ BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
_exit(1);
}
-void* DoMmap(int prot, int flags) {
-#if defined(OS_NACL_NONSFI)
- // When PROT_EXEC is set, PNaCl toolchain's mmap() system call wrapper uses
- // two system calls mmap2(2) and mprotect(2), so that we cannot test
- // sandbox with the wrapper. Instead, here we use syscall().
- return reinterpret_cast<void*>(
- syscall(__NR_mmap2, NULL, getpagesize(), prot, flags, -1, 0));
-#else
- return mmap(NULL, getpagesize(), prot, flags, -1, 0);
-#endif
-}
-
void* DoAllowedAnonymousMmap() {
- return DoMmap(PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED);
+ return mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,
+ MAP_ANONYMOUS | MAP_SHARED, -1, 0);
}
BPF_TEST_C(NaClNonSfiSandboxTest,
@@ -525,42 +434,45 @@ BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
mmap_unallowed_flag,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoMmap(PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_POPULATE);
+ mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,
+ MAP_ANONYMOUS | MAP_POPULATE, -1, 0);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
mmap_unallowed_prot,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoMmap(PROT_READ | PROT_GROWSDOWN, MAP_ANONYMOUS);
+ mmap(NULL, getpagesize(), PROT_READ | PROT_GROWSDOWN,
+ MAP_ANONYMOUS, -1, 0);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
mmap_exec,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoMmap(PROT_EXEC, MAP_ANONYMOUS);
+ mmap(NULL, getpagesize(), PROT_EXEC, MAP_ANONYMOUS, -1, 0);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
mmap_read_exec,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoMmap(PROT_READ | PROT_EXEC, MAP_ANONYMOUS);
+ mmap(NULL, getpagesize(), PROT_READ | PROT_EXEC, MAP_ANONYMOUS, -1, 0);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
mmap_write_exec,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoMmap(PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS);
+ mmap(NULL, getpagesize(), PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS, -1, 0);
}
BPF_DEATH_TEST_C(NaClNonSfiSandboxTest,
mmap_read_write_exec,
DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()),
nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) {
- DoMmap(PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS);
+ mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE | PROT_EXEC,
+ MAP_ANONYMOUS, -1, 0);
}
BPF_TEST_C(NaClNonSfiSandboxTest,
@@ -591,13 +503,9 @@ BPF_TEST_C(NaClNonSfiSandboxTest,
// The kernel interface must return zero for brk.
BPF_ASSERT_EQ(0, syscall(__NR_brk, next_brk));
// The libc wrapper translates it to ENOMEM.
-
- // Note: PNaCl toolchain does not provide brk() system call wrapper.
-#if !defined(OS_NACL_NONSFI)
errno = 0;
BPF_ASSERT_EQ(-1, brk(next_brk));
BPF_ASSERT_EQ(ENOMEM, errno);
-#endif
}
// clockid restrictions are mostly tested in sandbox/ with the
diff --git a/components/nacl_helper_nonsfi_unittests.isolate b/components/nacl_helper_nonsfi_unittests.isolate
deleted file mode 100644
index 8de0893..0000000
--- a/components/nacl_helper_nonsfi_unittests.isolate
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-{
- 'conditions': [
- ['OS=="linux"', {
- 'variables': {
- 'command': [
- '<(PRODUCT_DIR)/nacl_helper_nonsfi_unittests',
- ],
- 'files': [
- '<(PRODUCT_DIR)/nacl_helper_nonsfi_unittests',
- ],
- 'read_only': 1,
- },
- }],
- ],
-}
diff --git a/components/nacl_nonsfi.gyp b/components/nacl_nonsfi.gyp
index 2a1aa58..53ff394 100644
--- a/components/nacl_nonsfi.gyp
+++ b/components/nacl_nonsfi.gyp
@@ -56,6 +56,8 @@
'nacl/loader/nacl_trusted_listener.cc',
'nacl/loader/nonsfi/nonsfi_listener.cc',
'nacl/loader/nonsfi/nonsfi_main.cc',
+ 'nacl/loader/nonsfi/nonsfi_sandbox.cc',
+ 'nacl/loader/sandbox_linux/nacl_sandbox_linux.cc',
],
'link_flags': [
@@ -72,7 +74,6 @@
'-lgpu_ipc_nacl',
'-lipc_nacl_nonsfi',
'-llatency_info_nacl',
- '-lnacl_helper_nonsfi_sandbox',
'-lplatform',
'-lppapi_ipc_nacl',
'-lppapi_proxy_nacl',
@@ -98,7 +99,6 @@
'>(tc_lib_dir_nonsfi_helper32)/libgpu_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libipc_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/liblatency_info_nacl.a',
- '>(tc_lib_dir_nonsfi_helper32)/libnacl_helper_nonsfi_sandbox.a',
'>(tc_lib_dir_nonsfi_helper32)/libplatform.a',
'>(tc_lib_dir_nonsfi_helper32)/libppapi_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libppapi_proxy_nacl.a',
@@ -123,7 +123,6 @@
'>(tc_lib_dir_nonsfi_helper_arm)/libgpu_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libipc_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/liblatency_info_nacl.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libnacl_helper_nonsfi_sandbox.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libplatform.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libppapi_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libppapi_proxy_nacl.a',
@@ -144,132 +143,9 @@
'../native_client/src/untrusted/nacl/nacl.gyp:nacl_lib_newlib',
'../ppapi/ppapi_proxy_nacl.gyp:ppapi_proxy_nacl',
'../sandbox/sandbox_nacl_nonsfi.gyp:sandbox_nacl_nonsfi',
- 'nacl_helper_nonsfi_sandbox',
- ],
- },
-
- {
- 'target_name': 'nacl_helper_nonsfi_sandbox',
- 'type': 'none',
- 'variables': {
- 'nacl_untrusted_build': 1,
- 'nlib_target': 'libnacl_helper_nonsfi_sandbox.a',
-
- 'build_glibc': 0,
- 'build_newlib': 0,
- 'build_irt': 0,
- 'build_pnacl_newlib': 0,
- 'build_nonsfi_helper': 1,
-
- 'sources': [
- 'nacl/loader/nonsfi/nonsfi_sandbox.cc',
- 'nacl/loader/sandbox_linux/nacl_sandbox_linux.cc',
- ],
- },
- 'dependencies': [
- '../base/base_nacl.gyp:base_nacl_nonsfi',
- '../content/content_nacl_nonsfi.gyp:content_common_nacl_nonsfi',
- '../sandbox/sandbox_nacl_nonsfi.gyp:sandbox_nacl_nonsfi',
- ],
- },
-
- {
- 'target_name': 'nacl_helper_nonsfi_unittests',
- 'type': 'none',
- 'variables': {
- 'nacl_untrusted_build': 1,
- 'nexe_target': 'nacl_helper_nonsfi_unittests',
- # Rename the output binary file to nacl_helper_nonsfi_unittests
- # and put it directly under out/{Debug,Release}/, so that this is
- # in the standard location, for running on the buildbots.
- 'out_newlib32_nonsfi': '<(PRODUCT_DIR)/nacl_helper_nonsfi_unittests',
- 'out_newlib_arm_nonsfi': '<(PRODUCT_DIR)/nacl_helper_nonsfi_unitttests',
-
- 'build_glibc': 0,
- 'build_newlib': 0,
- 'build_irt': 0,
- 'build_pnacl_newlib': 0,
- 'build_nonsfi_helper': 1,
-
- 'sources': [
- 'nacl/loader/nonsfi/nonsfi_sandbox_sigsys_unittest.cc',
- 'nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc',
- ],
-
- 'link_flags': [
- '-lbase_nacl_nonsfi',
- '-lcontent_common_nacl_nonsfi',
- '-levent_nacl_nonsfi',
- '-lgio',
- '-lgtest_main_nacl',
- '-lgtest_nacl',
- '-lnacl_helper_nonsfi_sandbox',
- '-lplatform',
- '-lsandbox_nacl_nonsfi',
- '-lsandbox_linux_test_utils_nacl_nonsfi',
- ],
-
- 'conditions': [
- ['target_arch=="ia32" or target_arch=="x64"', {
- 'extra_deps_newlib32_nonsfi': [
- '>(tc_lib_dir_nonsfi_helper32)/libbase_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper32)/libcontent_common_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper32)/libevent_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper32)/libgio.a',
- '>(tc_lib_dir_nonsfi_helper32)/libgtest_main_nacl.a',
- '>(tc_lib_dir_nonsfi_helper32)/libgtest_nacl.a',
- '>(tc_lib_dir_nonsfi_helper32)/libnacl_helper_nonsfi_sandbox.a',
- '>(tc_lib_dir_nonsfi_helper32)/libplatform.a',
- '>(tc_lib_dir_nonsfi_helper32)/libsandbox_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper32)/libsandbox_linux_test_utils_nacl_nonsfi.a',
- ],
- }],
- ['target_arch=="arm"', {
- 'extra_deps_newlib_arm_nonsfi': [
- '>(tc_lib_dir_nonsfi_helper_arm)/libbase_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libcontent_common_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libevent_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libgio.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libgtest_main_nacl.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libgtest_nacl.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libnacl_helper_nonsfi_sandbox.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libplatform.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libsandbox_nacl_nonsfi.a',
- '>(tc_lib_dir_nonsfi_helper_arm)/libsandbox_linux_test_utils_nacl_nonsfi.a',
- ],
- }],
- ],
- },
-
- 'dependencies': [
- '../base/base_nacl.gyp:base_nacl_nonsfi',
- '../content/content_nacl_nonsfi.gyp:content_common_nacl_nonsfi',
- '../native_client/src/nonsfi/irt/irt.gyp:nacl_sys_private',
- '../native_client/src/untrusted/nacl/nacl.gyp:nacl_lib_newlib',
- '../sandbox/sandbox_nacl_nonsfi.gyp:sandbox_nacl_nonsfi',
- '../sandbox/sandbox_nacl_nonsfi.gyp:sandbox_linux_test_utils_nacl_nonsfi',
- '../testing/gtest_nacl.gyp:gtest_main_nacl',
- '../testing/gtest_nacl.gyp:gtest_nacl',
- 'nacl_helper_nonsfi_sandbox',
- ],
- },
- ],
- }],
- ['disable_nacl==0 and disable_nacl_untrusted==0 and test_isolation_mode!="noop"', {
- 'targets': [
- {
- 'target_name': 'nacl_helper_nonsfi_unittests_run',
- 'type': 'none',
- 'dependencies': [
- 'nacl_helper_nonsfi_unittests',
- ],
- 'includes': [
- '../build/isolate.gypi',
- ],
- 'sources': [
- 'nacl_helper_nonsfi_unittests.isolate',
],
},
+ # TODO(hidehiko): Add Non-SFI version of nacl_loader_unittests.
],
}],
],