From 5e662010c1f7881970de6de19bcbd50f2726ea00 Mon Sep 17 00:00:00 2001 From: mseaborn Date: Mon, 20 Jul 2015 13:41:51 -0700 Subject: [PATCH] NaCl cleanup: Split out irt_interfaces.cc from irt_ppapi.cc The intention here is that irt_interfaces.{cc,h} should list the NaCl IRT interfaces that we implement in Chromium but that other files (like irt_ppapi.cc) should implement them. This matches how the files are organised in native_client/src/untrusted/irt/. This is in preparation for copying the PNaCl translator IRT interfaces to the Chromium side. That will add a couple more interfaces to irt_interfaces.cc (rather than to irt_ppapi.cc). BUG=302078 TEST=NaCl tests in browser_tests Review URL: https://codereview.chromium.org/1244533006 Cr-Commit-Position: refs/heads/master@{#339508} --- components/nacl/loader/nonsfi/nonsfi_main.cc | 2 +- ppapi/nacl_irt/irt_interfaces.cc | 70 ++++++++++++++++++++ ppapi/nacl_irt/irt_interfaces.h | 15 +++++ ppapi/nacl_irt/irt_ppapi.cc | 65 +----------------- ppapi/nacl_irt/irt_ppapi.h | 3 - ppapi/nacl_irt/irt_start.cc | 2 +- ppapi/ppapi_proxy.gypi | 2 + ppapi/proxy/BUILD.gn | 2 + 8 files changed, 93 insertions(+), 68 deletions(-) create mode 100644 ppapi/nacl_irt/irt_interfaces.cc create mode 100644 ppapi/nacl_irt/irt_interfaces.h diff --git a/components/nacl/loader/nonsfi/nonsfi_main.cc b/components/nacl/loader/nonsfi/nonsfi_main.cc index 6781514a7a3ec2..4fdb77a88a602c 100644 --- a/components/nacl/loader/nonsfi/nonsfi_main.cc +++ b/components/nacl/loader/nonsfi/nonsfi_main.cc @@ -11,7 +11,7 @@ #if defined(OS_NACL_NONSFI) #include "native_client/src/public/nonsfi/elf_loader.h" -#include "ppapi/nacl_irt/irt_ppapi.h" +#include "ppapi/nacl_irt/irt_interfaces.h" #else #include "base/memory/scoped_ptr.h" #include "components/nacl/loader/nonsfi/elf_loader.h" diff --git a/ppapi/nacl_irt/irt_interfaces.cc b/ppapi/nacl_irt/irt_interfaces.cc new file mode 100644 index 00000000000000..77ce9d8415e03f --- /dev/null +++ b/ppapi/nacl_irt/irt_interfaces.cc @@ -0,0 +1,70 @@ +// Copyright 2015 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. + +#include "ppapi/nacl_irt/irt_interfaces.h" + +#include + +#include "build/build_config.h" +#include "native_client/src/public/irt_core.h" +#include "native_client/src/trusted/service_runtime/include/sys/unistd.h" +#include "native_client/src/untrusted/irt/irt.h" +#include "ppapi/nacl_irt/irt_manifest.h" +#include "ppapi/nacl_irt/public/irt_ppapi.h" +#include "ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h" + +#if defined(OS_NACL_SFI) +static int ppapihook_pnacl_private_filter(void) { + int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE); + if (pnacl_mode == -1) + return 0; + return pnacl_mode; +} +#endif + +static const nacl_irt_resource_open kIrtResourceOpen = { + ppapi::IrtOpenResource, +}; + +#if defined(OS_NACL_SFI) +static int not_pnacl_filter(void) { + int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE); + if (pnacl_mode == -1) + return 0; + return !pnacl_mode; +} +#endif + +static const struct nacl_irt_interface irt_interfaces[] = { + { NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook), + NULL }, +#if defined(OS_NACL_SFI) + { NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1, + &nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private), + ppapihook_pnacl_private_filter }, +#endif + { NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen, + sizeof(kIrtResourceOpen), +#if defined(OS_NACL_SFI) + not_pnacl_filter, +#else + // If we change PNaCl to use Non-SFI Mode on the open web, + // we should add a filter here. + NULL, +#endif + }, +}; + +size_t chrome_irt_query(const char* interface_ident, + void* table, size_t tablesize) { + size_t result = nacl_irt_query_list(interface_ident, + table, + tablesize, + irt_interfaces, + sizeof(irt_interfaces)); + if (result != 0) + return result; + + return nacl_irt_query_core(interface_ident, table, tablesize); +} diff --git a/ppapi/nacl_irt/irt_interfaces.h b/ppapi/nacl_irt/irt_interfaces.h new file mode 100644 index 00000000000000..0971900d8316a6 --- /dev/null +++ b/ppapi/nacl_irt/irt_interfaces.h @@ -0,0 +1,15 @@ +// Copyright 2015 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. + +#ifndef PPAPI_NACL_IRT_IRT_INTERFACES_H_ +#define PPAPI_NACL_IRT_IRT_INTERFACES_H_ + +#include + +extern const struct nacl_irt_ppapihook nacl_irt_ppapihook; + +size_t chrome_irt_query(const char* interface_ident, + void* table, size_t tablesize); + +#endif // PPAPI_NACL_IRT_IRT_INTERFACES_H_ diff --git a/ppapi/nacl_irt/irt_ppapi.cc b/ppapi/nacl_irt/irt_ppapi.cc index a9c13eb89072a1..7cdf58957c5fdf 100644 --- a/ppapi/nacl_irt/irt_ppapi.cc +++ b/ppapi/nacl_irt/irt_ppapi.cc @@ -2,17 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include - #include "build/build_config.h" -#include "native_client/src/public/irt_core.h" -#include "native_client/src/trusted/service_runtime/include/sys/unistd.h" -#include "native_client/src/untrusted/irt/irt.h" -#include "ppapi/nacl_irt/irt_manifest.h" +#include "ppapi/nacl_irt/irt_interfaces.h" #include "ppapi/nacl_irt/irt_ppapi.h" #include "ppapi/nacl_irt/plugin_main.h" #include "ppapi/nacl_irt/public/irt_ppapi.h" -#include "ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h" static struct PP_StartFunctions g_pp_functions; @@ -34,62 +28,7 @@ const void* PPP_GetInterface(const char* interface_name) { return g_pp_functions.PPP_GetInterface(interface_name); } -static const struct nacl_irt_ppapihook nacl_irt_ppapihook = { +const struct nacl_irt_ppapihook nacl_irt_ppapihook = { irt_ppapi_start, PpapiPluginRegisterThreadCreator, }; - -#if defined(OS_NACL_SFI) -static int ppapihook_pnacl_private_filter(void) { - int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE); - if (pnacl_mode == -1) - return 0; - return pnacl_mode; -} -#endif - -static const nacl_irt_resource_open kIrtResourceOpen = { - ppapi::IrtOpenResource, -}; - -#if defined(OS_NACL_SFI) -static int not_pnacl_filter(void) { - int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE); - if (pnacl_mode == -1) - return 0; - return !pnacl_mode; -} -#endif - -static const struct nacl_irt_interface irt_interfaces[] = { - { NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook), - NULL }, -#if defined(OS_NACL_SFI) - { NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1, - &nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private), - ppapihook_pnacl_private_filter }, -#endif - { NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen, - sizeof(kIrtResourceOpen), -#if defined(OS_NACL_SFI) - not_pnacl_filter, -#else - // If we change PNaCl to use Non-SFI Mode on the open web, - // we should add a filter here. - NULL, -#endif - }, -}; - -size_t chrome_irt_query(const char* interface_ident, - void* table, size_t tablesize) { - size_t result = nacl_irt_query_list(interface_ident, - table, - tablesize, - irt_interfaces, - sizeof(irt_interfaces)); - if (result != 0) - return result; - - return nacl_irt_query_core(interface_ident, table, tablesize); -} diff --git a/ppapi/nacl_irt/irt_ppapi.h b/ppapi/nacl_irt/irt_ppapi.h index bc2e74c7494dfa..d65bede29486b3 100644 --- a/ppapi/nacl_irt/irt_ppapi.h +++ b/ppapi/nacl_irt/irt_ppapi.h @@ -7,7 +7,4 @@ extern "C" int irt_ppapi_start(const struct PP_StartFunctions* funcs); -size_t chrome_irt_query(const char* interface_ident, - void* table, size_t tablesize); - #endif // PPAPI_NACL_IRT_IRT_PPAPI_H_ diff --git a/ppapi/nacl_irt/irt_start.cc b/ppapi/nacl_irt/irt_start.cc index f199de1383be73..82765c8419af03 100644 --- a/ppapi/nacl_irt/irt_start.cc +++ b/ppapi/nacl_irt/irt_start.cc @@ -11,7 +11,7 @@ #include "base/at_exit.h" #include "native_client/src/public/chrome_main.h" #include "native_client/src/public/irt_core.h" -#include "ppapi/nacl_irt/irt_ppapi.h" +#include "ppapi/nacl_irt/irt_interfaces.h" #include "ppapi/nacl_irt/plugin_startup.h" void nacl_irt_start(uint32_t* info) { diff --git a/ppapi/ppapi_proxy.gypi b/ppapi/ppapi_proxy.gypi index d099e0a6504e42..bfb3b5cafcdc16 100644 --- a/ppapi/ppapi_proxy.gypi +++ b/ppapi/ppapi_proxy.gypi @@ -253,6 +253,8 @@ 'target_conditions': [ ['>(nacl_untrusted_build)==1', { 'sources': [ + 'nacl_irt/irt_interfaces.cc', + 'nacl_irt/irt_interfaces.h', 'nacl_irt/irt_ppapi.cc', 'nacl_irt/irt_ppapi.h', 'nacl_irt/irt_start.cc', diff --git a/ppapi/proxy/BUILD.gn b/ppapi/proxy/BUILD.gn index 8e260088d8e34c..c9de2442f7eac3 100644 --- a/ppapi/proxy/BUILD.gn +++ b/ppapi/proxy/BUILD.gn @@ -196,6 +196,8 @@ component("proxy") { if (is_nacl) { sources += [ + "../nacl_irt/irt_interfaces.cc", + "../nacl_irt/irt_interfaces.h", "../nacl_irt/irt_ppapi.cc", "../nacl_irt/irt_ppapi.h", "../nacl_irt/irt_start.cc",