fd-util: Move RAW_O_LARGEFILE definition to fd-util.h

This is not something that comes from glibc, but which we invent
ourselves. As such, it should not be part of our overrides of glibc
headers, but instead should be part of one of our own headers, so
let's move it to fd-util.h.

Follow up for 194a690181
This commit is contained in:
DaanDeMeyer
2025-07-03 14:18:50 +02:00
parent 76e3cc469d
commit cefec8f6ce
2 changed files with 26 additions and 26 deletions
+26
View File
@@ -18,6 +18,32 @@
#define EBADF_PAIR { -EBADF, -EBADF }
#define EBADF_TRIPLET { -EBADF, -EBADF, -EBADF }
/* So O_LARGEFILE is generally implied by glibc, and defined to zero hence, because we only build in LFS
* mode. However, when invoking fcntl(F_GETFL) the flag is ORed into the result anyway — glibc does not mask
* it away. Which sucks. Let's define the actual value here, so that we can mask it ourselves.
*
* The precise definition is arch specific, so we use the values defined in the kernel (note that some
* are hexa and others are octal; duplicated as-is from the kernel definitions):
* - alpha, arm, arm64, m68k, mips, parisc, powerpc, sparc: each has a specific value;
* - others: they use the "generic" value (defined in include/uapi/asm-generic/fcntl.h) */
#if O_LARGEFILE != 0
# define RAW_O_LARGEFILE O_LARGEFILE
#else
# if defined(__alpha__) || defined(__arm__) || defined(__aarch64__) || defined(__m68k__)
# define RAW_O_LARGEFILE 0400000
# elif defined(__mips__)
# define RAW_O_LARGEFILE 0x2000
# elif defined(__parisc__) || defined(__hppa__)
# define RAW_O_LARGEFILE 000004000
# elif defined(__powerpc__)
# define RAW_O_LARGEFILE 0200000
# elif defined(__sparc__)
# define RAW_O_LARGEFILE 0x40000
# else
# define RAW_O_LARGEFILE 00100000
# endif
#endif
int close_nointr(int fd);
int safe_close(int fd);
void safe_close_pair(int p[static 2]);
-26
View File
@@ -13,32 +13,6 @@
#define F_SEAL_EXEC 0x0020 /* prevent chmod modifying exec bits */
#endif
/* So O_LARGEFILE is generally implied by glibc, and defined to zero hence, because we only build in LFS
* mode. However, when invoking fcntl(F_GETFL) the flag is ORed into the result anyway — glibc does not mask
* it away. Which sucks. Let's define the actual value here, so that we can mask it ourselves.
*
* The precise definition is arch specific, so we use the values defined in the kernel (note that some
* are hexa and others are octal; duplicated as-is from the kernel definitions):
* - alpha, arm, arm64, m68k, mips, parisc, powerpc, sparc: each has a specific value;
* - others: they use the "generic" value (defined in include/uapi/asm-generic/fcntl.h) */
#if O_LARGEFILE != 0
#define RAW_O_LARGEFILE O_LARGEFILE
#else
#if defined(__alpha__) || defined(__arm__) || defined(__aarch64__) || defined(__m68k__)
#define RAW_O_LARGEFILE 0400000
#elif defined(__mips__)
#define RAW_O_LARGEFILE 0x2000
#elif defined(__parisc__) || defined(__hppa__)
#define RAW_O_LARGEFILE 000004000
#elif defined(__powerpc__)
#define RAW_O_LARGEFILE 0200000
#elif defined(__sparc__)
#define RAW_O_LARGEFILE 0x40000
#else
#define RAW_O_LARGEFILE 00100000
#endif
#endif
/* This is defined since glibc-2.39. */
#ifndef AT_HANDLE_FID
#define AT_HANDLE_FID AT_REMOVEDIR