66#include " fake_fstat64.h"
77#include " syscall_ext.h"
88
9- EXPORT int lsw_mprotect (void * addr, size_t len, int prot) {
9+ NO_MANGLE int lsw_mprotect (void * addr, size_t len, int prot) {
1010 const int NR_mprotect = __NR_mprotect;
1111 return (int ) syscall_ext (NR_mprotect, (uintptr_t ) addr, len, prot, 0 , 0 , 0 );
1212}
1313
14- EXPORT ssize_t lsw_pread64 (int fd, void * buf, size_t count, uint64_t offset) {
14+ NO_MANGLE ssize_t lsw_pread64 (int fd, void * buf, size_t count, uint64_t offset) {
1515 const int NR_pread64 = __NR_pread64;
1616#if defined(__LP64__)
1717 return (ssize_t ) syscall_ext (NR_pread64, fd, (uintptr_t ) buf, count, offset, 0 , 0 );
@@ -27,7 +27,7 @@ EXPORT ssize_t lsw_pread64(int fd, void* buf, size_t count, uint64_t offset) {
2727#endif
2828}
2929
30- EXPORT void * lsw_mmap64 (void * addr, size_t length, int prot, int flags, int fd, uint64_t offset) {
30+ NO_MANGLE void * lsw_mmap64 (void * addr, size_t length, int prot, int flags, int fd, uint64_t offset) {
3131 uintptr_t res;
3232#if defined(__LP64__)
3333 res = syscall_ext (__NR_mmap, (uintptr_t ) addr, length, prot, flags, fd, offset);
@@ -41,7 +41,7 @@ EXPORT void* lsw_mmap64(void* addr, size_t length, int prot, int flags, int fd,
4141 return (void *) res;
4242}
4343
44- EXPORT int lsw_fstatfs64 (int fd, kernel_statfs64_compat* buf) {
44+ NO_MANGLE int lsw_fstatfs64 (int fd, kernel_statfs64_compat* buf) {
4545#if defined(__LP64__)
4646 const int NR_fstatfs = __NR_fstatfs;
4747#else
@@ -50,7 +50,60 @@ EXPORT int lsw_fstatfs64(int fd, kernel_statfs64_compat* buf) {
5050 return (int ) syscall_ext (NR_fstatfs, fd, (uintptr_t ) buf, 0 , 0 , 0 , 0 );
5151}
5252
53- EXPORT int lsw_munmap (void * addr, size_t len) {
53+ NO_MANGLE int lsw_munmap (void * addr, size_t len) {
5454 const int NR_munmap = __NR_munmap;
5555 return (int ) syscall_ext (NR_munmap, (uintptr_t ) addr, len, 0 , 0 , 0 , 0 );
5656}
57+
58+ NO_MANGLE ssize_t lsw_read (int fd, void * buf, size_t nbytes) {
59+ const int NR_read = __NR_read;
60+ return (ssize_t ) syscall_ext (NR_read, fd, (uintptr_t ) buf, nbytes, 0 , 0 , 0 );
61+ }
62+
63+ NO_MANGLE ssize_t lsw_write (int fd, const void * buf, size_t nbytes) {
64+ const int NR_write = __NR_write;
65+ return (ssize_t ) syscall_ext (NR_write, fd, (uintptr_t ) buf, nbytes, 0 , 0 , 0 );
66+ }
67+
68+ NO_MANGLE int lsw_openat (int dirfd, const char * pathname, int flags, mode_t mode) {
69+ const int NR_openat = __NR_openat;
70+ return (int ) syscall_ext (NR_openat, dirfd, (uintptr_t ) pathname, flags, mode, 0 , 0 );
71+ }
72+
73+ NO_MANGLE int lsw_fstatat64 (int dirfd, const char * pathname, kernel_stat64_compat* buf, int flags) {
74+ #if defined(__LP64__)
75+ const int NR_fstatat = __NR_newfstatat;
76+ #else
77+ const int NR_fstatat = __NR_fstatat64;
78+ #endif
79+ return (int ) syscall_ext (NR_fstatat, dirfd, (uintptr_t ) pathname, (uintptr_t ) buf, flags, 0 , 0 );
80+ }
81+
82+ NO_MANGLE int lsw_stat64 (const char * pathname, kernel_stat64_compat* buf) {
83+ return lsw_fstatat64 (AT_FDCWD, pathname, buf, 0 );
84+ }
85+
86+ NO_MANGLE int lsw_fstat64 (int fd, kernel_stat64_compat* buf) {
87+ #if defined(__LP64__)
88+ const int NR_fstat = __NR_fstat;
89+ #else
90+ const int NR_fstat = __NR_fstat64;
91+ #endif
92+ return (int ) syscall_ext (NR_fstat, fd, (uintptr_t ) buf, 0 , 0 , 0 , 0 );
93+ }
94+
95+ NO_MANGLE int lsw_close (int fd) {
96+ const int NR_close = __NR_close;
97+ return (int ) syscall_ext (NR_close, fd, 0 , 0 , 0 , 0 , 0 );
98+ }
99+
100+ NO_MANGLE int lsw_ioctl (int fd, unsigned long request, void * arg) {
101+ const int NR_ioctl = __NR_ioctl;
102+ return (int ) syscall_ext (NR_ioctl, fd, request, (uintptr_t ) arg, 0 , 0 , 0 );
103+ }
104+
105+ NO_MANGLE NO_RETURN void lsw_exit_group (int status) {
106+ const int NR_exit_group = __NR_exit_group;
107+ syscall_ext (NR_exit_group, status, 0 , 0 , 0 , 0 , 0 );
108+ __builtin_unreachable ();
109+ }
0 commit comments