summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/sysdeps/linux/common/getegid.c9
-rw-r--r--libc/sysdeps/linux/common/geteuid.c12
-rw-r--r--libc/sysdeps/linux/common/getresgid.c11
-rw-r--r--libc/sysdeps/linux/common/getresuid.c7
4 files changed, 30 insertions, 9 deletions
diff --git a/libc/sysdeps/linux/common/getegid.c b/libc/sysdeps/linux/common/getegid.c
index ff28c51b7..466d63d89 100644
--- a/libc/sysdeps/linux/common/getegid.c
+++ b/libc/sysdeps/linux/common/getegid.c
@@ -12,8 +12,13 @@
libc_hidden_proto(getegid)
-#ifdef __NR_getegid
-#define __NR___syscall_getegid __NR_getegid
+#if defined(__NR_getegid32)
+# undef __NR_getegid
+# define __NR_getegid __NR_getegid32
+_syscall0(gid_t, getegid);
+
+#elif defined(__NR_getegid)
+# define __NR___syscall_getegid __NR_getegid
static inline _syscall0(int, __syscall_getegid);
gid_t getegid(void)
{
diff --git a/libc/sysdeps/linux/common/geteuid.c b/libc/sysdeps/linux/common/geteuid.c
index 819a1d65f..247f1bfda 100644
--- a/libc/sysdeps/linux/common/geteuid.c
+++ b/libc/sysdeps/linux/common/geteuid.c
@@ -12,19 +12,25 @@
libc_hidden_proto(geteuid)
-#ifdef __NR_geteuid
-#define __NR___syscall_geteuid __NR_geteuid
+#if defined(__NR_geteuid32)
+# undef __NR_geteuid
+# define __NR_geteuid __NR_geteuid32
+_syscall0(uid_t, geteuid);
+
+#elif defined(__NR_geteuid)
+# define __NR___syscall_geteuid __NR_geteuid
static inline _syscall0(int, __syscall_geteuid);
uid_t geteuid(void)
{
return (__syscall_geteuid());
}
+
#else
libc_hidden_proto(getuid)
-
uid_t geteuid(void)
{
return (getuid());
}
#endif
+
libc_hidden_def(geteuid)
diff --git a/libc/sysdeps/linux/common/getresgid.c b/libc/sysdeps/linux/common/getresgid.c
index b7f1cbc6c..158a8984f 100644
--- a/libc/sysdeps/linux/common/getresgid.c
+++ b/libc/sysdeps/linux/common/getresgid.c
@@ -10,10 +10,15 @@
#include "syscalls.h"
#include <unistd.h>
-#ifdef __NR_getresgid
+#if defined(__NR_getresgid32)
+# undef __NR_getresgid
+# define __NR_getresgid __NR_getresgid32
+_syscall3(int, getresgid, gid_t *, rgid, gid_t *, egid, gid_t *, sgid)
+
+#elif defined(__NR_getresgid)
# define __NR___syscall_getresgid __NR_getresgid
-static inline _syscall3(int, __syscall_getresgid, __kernel_gid_t *, egid,
- __kernel_gid_t *, rgid, __kernel_gid_t *, sgid);
+static inline _syscall3(int, __syscall_getresgid, __kernel_gid_t *, rgid,
+ __kernel_gid_t *, egid, __kernel_gid_t *, sgid);
int getresgid(gid_t * rgid, gid_t * egid, gid_t * sgid)
{
diff --git a/libc/sysdeps/linux/common/getresuid.c b/libc/sysdeps/linux/common/getresuid.c
index 37b5191c1..7f0e0f2b0 100644
--- a/libc/sysdeps/linux/common/getresuid.c
+++ b/libc/sysdeps/linux/common/getresuid.c
@@ -10,7 +10,12 @@
#include "syscalls.h"
#include <unistd.h>
-#ifdef __NR_getresuid
+#if defined(__NR_getresuid32)
+# undef __NR_getresuid
+# define __NR_getresuid __NR_getresuid32
+_syscall3(int, getresuid, uid_t *, ruid, uid_t *, euid, uid_t *, suid)
+
+#elif defined(__NR_getresuid)
# define __NR___syscall_getresuid __NR_getresuid
static inline _syscall3(int, __syscall_getresuid, __kernel_uid_t *, ruid,
__kernel_uid_t *, euid, __kernel_uid_t *, suid);