diff options
author | noelallen@chromium.org <noelallen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-11 19:34:35 +0000 |
---|---|---|
committer | noelallen@chromium.org <noelallen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-11 19:34:35 +0000 |
commit | 1d44c10678bbdf2dedaf5255f50b2881957a2604 (patch) | |
tree | 560b39ce72163711d28ebf664f60d9ad2b382caa /native_client_sdk | |
parent | 308689687fe41bea875adddc978151b31c88164d (diff) | |
download | chromium_src-1d44c10678bbdf2dedaf5255f50b2881957a2604.zip chromium_src-1d44c10678bbdf2dedaf5255f50b2881957a2604.tar.gz chromium_src-1d44c10678bbdf2dedaf5255f50b2881957a2604.tar.bz2 |
Fix hello_world_stdio
Fix regression in nacl_mounts due to unused symbol during link.
Add a kernel_wrap_init function to switch between libc and
nacl_mount implementations for IO functions.
Delete unused kernel_wrap.cc
NOTRY=true
R=binji@chromium.org
BUG=169367
Review URL: https://chromiumcodereview.appspot.com/11783113
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176414 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
7 files changed, 39 insertions, 41 deletions
diff --git a/native_client_sdk/src/libraries/nacl_mounts/kernel_intercept.cc b/native_client_sdk/src/libraries/nacl_mounts/kernel_intercept.cc index 24d83a6..21d4ca5 100644 --- a/native_client_sdk/src/libraries/nacl_mounts/kernel_intercept.cc +++ b/native_client_sdk/src/libraries/nacl_mounts/kernel_intercept.cc @@ -4,12 +4,11 @@ */ #include "nacl_mounts/kernel_intercept.h" #include "nacl_mounts/kernel_proxy.h" +#include "nacl_mounts/kernel_wrap.h" #include "nacl_mounts/pepper_interface.h" #include "nacl_mounts/pepper_interface.h" #include "nacl_mounts/real_pepper_interface.h" -#include "utils/macros.h" -FORCE_LINK_THAT(kernel_wrap) static KernelProxy* s_kp; @@ -20,6 +19,8 @@ void ki_init(void* kp) { void ki_init_ppapi(void* kp, PP_Instance instance, PPB_GetInterface get_browser_interface) { + kernel_wrap_init(); + if (kp == NULL) kp = new KernelProxy(); s_kp = static_cast<KernelProxy*>(kp); diff --git a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.cc b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.cc deleted file mode 100644 index c3a7775..0000000 --- a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.cc +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2012 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 "utils/macros.h" - -FORCE_LINK_THIS(kernel_wrap) diff --git a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.h b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.h index 0ad70c6..d09195d 100644 --- a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.h +++ b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.h @@ -32,6 +32,8 @@ typedef ssize_t write_ssize_t; EXTERN_C_BEGIN +void kernel_wrap_init(); + int NAME(access)(const char* path, int amode) NOTHROW; int NAME(chdir)(const char* path) NOTHROW; int NAME(chmod)(const char* path, chmod_mode_t mode) NOTHROW; diff --git a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_glibc.cc b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_glibc.cc index 42e58cc..1396b8c 100644 --- a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_glibc.cc +++ b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_glibc.cc @@ -263,24 +263,23 @@ int WRAP(write)(int fd, const void *buf, size_t count, size_t *nwrote) { return (*nwrote < 0) ? errno : 0; } +void kernel_wrap_init() { + DO_WRAP(chdir); + DO_WRAP(close); + DO_WRAP(dup); + DO_WRAP(fstat); + DO_WRAP(getcwd); + DO_WRAP(getdents); + DO_WRAP(mkdir); + DO_WRAP(open); + DO_WRAP(read); + DO_WRAP(rmdir); + DO_WRAP(seek); + DO_WRAP(stat); + DO_WRAP(write); +} + EXTERN_C_END -static struct NaClMountsStaticInitializer { - NaClMountsStaticInitializer() { - DO_WRAP(chdir); - DO_WRAP(close); - DO_WRAP(dup); - DO_WRAP(fstat); - DO_WRAP(getcwd); - DO_WRAP(getdents); - DO_WRAP(mkdir); - DO_WRAP(open); - DO_WRAP(read); - DO_WRAP(rmdir); - DO_WRAP(seek); - DO_WRAP(stat); - DO_WRAP(write); - } -} nacl_mounts_static_initializer; #endif // defined(__native_client__) && defined(__GLIBC__) diff --git a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_newlib.cc b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_newlib.cc index 57cbdb3..4a490dc 100644 --- a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_newlib.cc +++ b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_newlib.cc @@ -43,6 +43,7 @@ DECLARE(fdio, write) DECLARE(filename, open) DECLARE(filename, stat) + int access(const char* path, int amode) { return ki_access(path, amode); } @@ -152,20 +153,21 @@ int WRAP(write)(int fd, const void *buf, size_t count, size_t *nwrote) { return (*nwrote < 0) ? errno : 0; } + +void kernel_wrap_init() { + DO_WRAP(fdio, close); + DO_WRAP(fdio, dup); + DO_WRAP(fdio, fstat); + DO_WRAP(fdio, getdents); + DO_WRAP(fdio, read); + DO_WRAP(fdio, seek); + DO_WRAP(fdio, write); + DO_WRAP(filename, open); + DO_WRAP(filename, stat); +} + + EXTERN_C_END -static struct NaClMountsStaticInitializer { - NaClMountsStaticInitializer() { - DO_WRAP(fdio, close); - DO_WRAP(fdio, dup); - DO_WRAP(fdio, fstat); - DO_WRAP(fdio, getdents); - DO_WRAP(fdio, read); - DO_WRAP(fdio, seek); - DO_WRAP(fdio, write); - DO_WRAP(filename, open); - DO_WRAP(filename, stat); - } -} nacl_mounts_static_initializer; #endif // defined(__native_client__) && !defined(__GLIBC__) diff --git a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_win.cc b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_win.cc index 12c8010..fe536aa 100644 --- a/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_win.cc +++ b/native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_win.cc @@ -219,6 +219,9 @@ int _write(int fd, const void* buf, size_t nbyte) { return ki_write(fd, buf, nbyte); } +// Do nothing for Windows, we replace the library at link time. +void kernel_wrap_init() { +} EXTERN_C_END #endif // defined(WIN32) diff --git a/native_client_sdk/src/libraries/nacl_mounts/library.dsc b/native_client_sdk/src/libraries/nacl_mounts/library.dsc index 87c7366..e7f81ee 100644 --- a/native_client_sdk/src/libraries/nacl_mounts/library.dsc +++ b/native_client_sdk/src/libraries/nacl_mounts/library.dsc @@ -17,7 +17,6 @@ "kernel_intercept.cc", "kernel_object.cc", "kernel_proxy.cc", - "kernel_wrap.cc", "kernel_wrap_glibc.cc", "kernel_wrap_newlib.cc", "kernel_wrap_win.cc", |