diff options
| author | PucklaJ <jonaas.pucher000000@gmail.com> | 2024-04-24 15:15:38 +0200 |
|---|---|---|
| committer | PucklaJ <jonaas.pucher000000@gmail.com> | 2024-04-24 15:15:38 +0200 |
| commit | 2bf00d9b3f5a694bdc6d8b2c76be7a278f02f40b (patch) | |
| tree | f7ad5e6afb8e86db212c8d5c3b1f708c2212ce48 /core/sys/linux | |
| parent | 5b6c96cd18af9818c37ecdef5130d79ca7149b87 (diff) | |
[sys/linux]: Add flags parameter to execveat and fix execve on arm64
Diffstat (limited to 'core/sys/linux')
| -rw-r--r-- | core/sys/linux/constants.odin | 2 | ||||
| -rw-r--r-- | core/sys/linux/sys.odin | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/core/sys/linux/constants.odin b/core/sys/linux/constants.odin index 51f7db68f..389ff1417 100644 --- a/core/sys/linux/constants.odin +++ b/core/sys/linux/constants.odin @@ -5,6 +5,8 @@ package linux that relative paths are relative to current directory. */ AT_FDCWD :: Fd(-100) +AT_EMPTY_PATH :: 0x1000 +AT_SYMLINK_NOFOLLOW :: 0x100 /* Special value to put into timespec for utimensat() to set timestamp to the current time. diff --git a/core/sys/linux/sys.odin b/core/sys/linux/sys.odin index 63fb3b776..22fe2ab50 100644 --- a/core/sys/linux/sys.odin +++ b/core/sys/linux/sys.odin @@ -769,8 +769,7 @@ execve :: proc "contextless" (name: cstring, argv: [^]cstring, envp: [^]cstring) ret := syscall(SYS_execve, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp) return Errno(-ret) } else { - ret := syscall(SYS_execveat, AT_FDCWD, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp) - return Errno(-ret) + return execveat(AT_FDCWD, name, argv, envp, 0) } } @@ -2803,8 +2802,8 @@ getrandom :: proc "contextless" (buf: []u8, flags: Get_Random_Flags) -> (int, Er Execute program relative to a directory file descriptor. Available since Linux 3.19. */ -execveat :: proc "contextless" (dirfd: Fd, name: cstring, argv: [^]cstring, envp: [^]cstring) -> (Errno) { - ret := syscall(SYS_execveat, dirfd, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp) +execveat :: proc "contextless" (dirfd: Fd, name: cstring, argv: [^]cstring, envp: [^]cstring, flags: i32) -> (Errno) { + ret := syscall(SYS_execveat, dirfd, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp, flags) return Errno(-ret) } |