diff options
author | sbc@chromium.org <sbc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-18 16:31:22 +0000 |
---|---|---|
committer | sbc@chromium.org <sbc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-18 16:31:22 +0000 |
commit | 07597bf344cfea50d6ed40a67a3ccf89f44d8ea6 (patch) | |
tree | 4ec834271c4bfa8eb584449fc4abcd86ec46e766 /native_client_sdk | |
parent | f44a107d8487abea343db9e28032824ba558f343 (diff) | |
download | chromium_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')
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); |