Loading tools/include/nolibc/sys.h +13 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,7 @@ void *sbrk(intptr_t inc) /* * int chdir(const char *path); * int fchdir(int fildes); */ static __attribute__((unused)) Loading @@ -132,6 +133,18 @@ int chdir(const char *path) return __sysret(sys_chdir(path)); } static __attribute__((unused)) int sys_fchdir(int fildes) { return my_syscall1(__NR_fchdir, fildes); } static __attribute__((unused)) int fchdir(int fildes) { return __sysret(sys_fchdir(fildes)); } /* * int chmod(const char *path, mode_t mode); Loading tools/testing/selftests/nolibc/nolibc-test.c +2 −0 Original line number Diff line number Diff line Loading @@ -1348,6 +1348,8 @@ int run_syscall(int min, int max) CASE_TEST(dup3_0); tmp = dup3(0, 100, 0); EXPECT_SYSNE(1, tmp, -1); close(tmp); break; CASE_TEST(dup3_m1); tmp = dup3(-1, 100, 0); EXPECT_SYSER(1, tmp, -1, EBADF); if (tmp != -1) close(tmp); break; CASE_TEST(execve_root); EXPECT_SYSER(1, execve("/", (char*[]){ [0] = "/", [1] = NULL }, NULL), -1, EACCES); break; CASE_TEST(fchdir_stdin); EXPECT_SYSER(1, fchdir(STDIN_FILENO), -1, ENOTDIR); break; CASE_TEST(fchdir_badfd); EXPECT_SYSER(1, fchdir(-1), -1, EBADF); break; CASE_TEST(file_stream); EXPECT_SYSZR(1, test_file_stream()); break; CASE_TEST(fork); EXPECT_SYSZR(1, test_fork(FORK_STANDARD)); break; CASE_TEST(getdents64_root); EXPECT_SYSNE(1, test_getdents64("/"), -1); break; Loading Loading
tools/include/nolibc/sys.h +13 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,7 @@ void *sbrk(intptr_t inc) /* * int chdir(const char *path); * int fchdir(int fildes); */ static __attribute__((unused)) Loading @@ -132,6 +133,18 @@ int chdir(const char *path) return __sysret(sys_chdir(path)); } static __attribute__((unused)) int sys_fchdir(int fildes) { return my_syscall1(__NR_fchdir, fildes); } static __attribute__((unused)) int fchdir(int fildes) { return __sysret(sys_fchdir(fildes)); } /* * int chmod(const char *path, mode_t mode); Loading
tools/testing/selftests/nolibc/nolibc-test.c +2 −0 Original line number Diff line number Diff line Loading @@ -1348,6 +1348,8 @@ int run_syscall(int min, int max) CASE_TEST(dup3_0); tmp = dup3(0, 100, 0); EXPECT_SYSNE(1, tmp, -1); close(tmp); break; CASE_TEST(dup3_m1); tmp = dup3(-1, 100, 0); EXPECT_SYSER(1, tmp, -1, EBADF); if (tmp != -1) close(tmp); break; CASE_TEST(execve_root); EXPECT_SYSER(1, execve("/", (char*[]){ [0] = "/", [1] = NULL }, NULL), -1, EACCES); break; CASE_TEST(fchdir_stdin); EXPECT_SYSER(1, fchdir(STDIN_FILENO), -1, ENOTDIR); break; CASE_TEST(fchdir_badfd); EXPECT_SYSER(1, fchdir(-1), -1, EBADF); break; CASE_TEST(file_stream); EXPECT_SYSZR(1, test_file_stream()); break; CASE_TEST(fork); EXPECT_SYSZR(1, test_fork(FORK_STANDARD)); break; CASE_TEST(getdents64_root); EXPECT_SYSNE(1, test_getdents64("/"), -1); break; Loading