summaryrefslogtreecommitdiffstats
path: root/native_client_sdk
diff options
context:
space:
mode:
authornoelallen@chromium.org <noelallen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-11 19:34:35 +0000
committernoelallen@chromium.org <noelallen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-11 19:34:35 +0000
commit1d44c10678bbdf2dedaf5255f50b2881957a2604 (patch)
tree560b39ce72163711d28ebf664f60d9ad2b382caa /native_client_sdk
parent308689687fe41bea875adddc978151b31c88164d (diff)
downloadchromium_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')
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/kernel_intercept.cc5
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.cc8
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/kernel_wrap.h2
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_glibc.cc33
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_newlib.cc28
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/kernel_wrap_win.cc3
-rw-r--r--native_client_sdk/src/libraries/nacl_mounts/library.dsc1
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",