From 9ff0a447d055a72ae4c758ef72ca2b64deefcfb7 Mon Sep 17 00:00:00 2001 From: "Mikhail R. Gadelha" Date: Thu, 7 Sep 2023 15:22:26 -0300 Subject: [PATCH] [libc] Fix setrlimit/getrlimit on 32-bit systems libc uses SYS_prlimit64 (which takes a struct rlimit64) to implement setrlimt and getrlimit (which take a struct rlimit). In 64-bit bits systems this is not an issue since the members of struct rlimit64 and struct rlimit are 64 bits long, however, in 32-bit systems the members of struct rlimit are only 32 bits long, causing wrong values being passed to SYS_prlimit64. This patch changes rlim_t to be __UINT64_TYPE__ (which also changes rlimit as a side-effect), fixing the problem of mismatching types in the syscall. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D159104 --- libc/include/llvm-libc-types/rlim_t.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/include/llvm-libc-types/rlim_t.h b/libc/include/llvm-libc-types/rlim_t.h index 467a715c31df..4e5acfb24c1b 100644 --- a/libc/include/llvm-libc-types/rlim_t.h +++ b/libc/include/llvm-libc-types/rlim_t.h @@ -9,6 +9,6 @@ #ifndef __LLVM_LIBC_TYPES_RLIM_T_H__ #define __LLVM_LIBC_TYPES_RLIM_T_H__ -typedef unsigned long rlim_t; +typedef __UINT64_TYPE__ rlim_t; #endif // __LLVM_LIBC_TYPES_RLIM_T_H__