summaryrefslogtreecommitdiffstats
path: root/native_client_sdk
diff options
context:
space:
mode:
authorsbc@chromium.org <sbc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-18 16:31:22 +0000
committersbc@chromium.org <sbc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-18 16:31:22 +0000
commit07597bf344cfea50d6ed40a67a3ccf89f44d8ea6 (patch)
tree4ec834271c4bfa8eb584449fc4abcd86ec46e766 /native_client_sdk
parentf44a107d8487abea343db9e28032824ba558f343 (diff)
downloadchromium_src-07597bf344cfea50d6ed40a67a3ccf89f44d8ea6.zip
chromium_src-07597bf344cfea50d6ed40a67a3ccf89f44d8ea6.tar.gz
chromium_src-07597bf344cfea50d6ed40a67a3ccf89f44d8ea6.tar.bz2
[NaCl SDK] nacl_io: make remove(3) glibc-only
Both newlib implements remove in terms of unlink(2) and rmdir(2) so there is no need to intercept it at this level. What is more it is causing link errors in certain cucumstances because newlib's remove lives in the same objects _remove_r. Ideally we would remove this function for glibc as well but the plumbing is not yet in place for this. R=binji@chromium.org Review URL: https://codereview.chromium.org/23588004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223888 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
-rw-r--r--native_client_sdk/src/libraries/nacl_io/syscalls/remove.c8
-rw-r--r--native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc3
-rw-r--r--native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc2
3 files changed, 11 insertions, 2 deletions
diff --git a/native_client_sdk/src/libraries/nacl_io/syscalls/remove.c b/native_client_sdk/src/libraries/nacl_io/syscalls/remove.c
index a816abb..a3a7bfb 100644
--- a/native_client_sdk/src/libraries/nacl_io/syscalls/remove.c
+++ b/native_client_sdk/src/libraries/nacl_io/syscalls/remove.c
@@ -5,6 +5,14 @@
#include "nacl_io/kernel_intercept.h"
#include "nacl_io/kernel_wrap.h"
+#ifdef __GLIBC__
+// Glibc's remove(3) and unlink(2) entry points are not yet hooked up
+// to the lower level IRT interfaces. Therefore the only way to intercept
+// these calls is to override them here..
+// TODO(sbc): remove this once glibc plumbing is in place for remove/unlink
+
int remove(const char* path) {
return ki_remove(path);
}
+
+#endif
diff --git a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
index 3dbb8eb..e2e416d 100644
--- a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
+++ b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
@@ -74,7 +74,6 @@ class KernelProxyTest : public ::testing::Test {
TEST_F(KernelProxyTest, FileLeak) {
const size_t buffer_size = 1024;
char filename[128];
- int file_num;
int garbage[buffer_size];
MountMem* mount = (MountMem*)kp_.RootMount();
@@ -83,7 +82,7 @@ TEST_F(KernelProxyTest, FileLeak) {
EXPECT_EQ(0, mount->Open(Path("/"), O_RDONLY, &root));
EXPECT_EQ(0, root->ChildCount());
- for (file_num = 0; file_num < 4096; file_num++) {
+ for (int file_num = 0; file_num < 4096; file_num++) {
sprintf(filename, "/foo%i.tmp", file_num++);
FILE* f = fopen(filename, "w");
EXPECT_NE((FILE*)0, f);
diff --git a/native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc b/native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc
index 4472d8c..8f9957c 100644
--- a/native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc
+++ b/native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc
@@ -257,10 +257,12 @@ TEST_F(KernelWrapTest, read) {
read(4567, NULL, 5678);
}
+#ifdef __GLIBC__
TEST_F(KernelWrapTest, remove) {
EXPECT_CALL(mock, remove(StrEq("remove"))).Times(1);
remove("remove");
}
+#endif
TEST_F(KernelWrapTest, rmdir) {
EXPECT_CALL(mock, rmdir(StrEq("rmdir"))).Times(1);