mirror of
https://github.com/ziglang/zig.git
synced 2025-02-05 04:12:40 +00:00
glibc patch: add backwards compatibility for some symbols
- `fcntl` was renamed to `fcntl64` in glibc 2.28 (see #9485) - `res_{,n}{search,query,querydomain}` became "their own" symbols since glibc 2.34: they were prefixed with `__` before. This PR makes it possible to use `fcntl` with glibc 2.27 or older and the `res_*` functions with glibc 2.33 or older. These patches will become redundant with universal-headers and can be dropped. But we have to do with what we have now.
This commit is contained in:
parent
f9c9ae84c6
commit
b40943e253
7
lib/libc/glibc/io/fcntl.h
vendored
7
lib/libc/glibc/io/fcntl.h
vendored
@ -167,6 +167,10 @@ typedef __pid_t pid_t;
|
||||
effective IDs, not real IDs. */
|
||||
#endif
|
||||
|
||||
|
||||
/* fcntl was a simple symbol until glibc 2.27 inclusive. glibc 2.28 onwards
|
||||
* re-defines it to fcntl64 (via #define) if _FILE_OFFSET_BITS == 64. */
|
||||
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 28) || __GLIBC__ > 2
|
||||
/* Do the file control operation described by CMD on FD.
|
||||
The remaining arguments are interpreted depending on CMD.
|
||||
|
||||
@ -197,6 +201,9 @@ extern int __fcntl_time64 (int __fd, int __request, ...) __THROW;
|
||||
# define fcntl __fcntl_time64
|
||||
# endif
|
||||
#endif
|
||||
#else /* glibc 2.27 or lower */
|
||||
extern int fcntl (int __fd, int __cmd, ...);
|
||||
#endif
|
||||
|
||||
/* Open FILE and return a new file descriptor for it, or -1 on error.
|
||||
OFLAG determines the type of access used. If O_CREAT or O_TMPFILE is set
|
||||
|
8
lib/libc/include/generic-glibc/fcntl.h
vendored
8
lib/libc/include/generic-glibc/fcntl.h
vendored
@ -167,6 +167,11 @@ typedef __pid_t pid_t;
|
||||
effective IDs, not real IDs. */
|
||||
#endif
|
||||
|
||||
|
||||
/* fcntl was a simple symbol until glibc 2.27 inclusive.
|
||||
* glibc 2.28 onwards converted it to a macro when compiled with
|
||||
* USE_LARGEFILE64. */
|
||||
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 28) || __GLIBC__ > 2
|
||||
/* Do the file control operation described by CMD on FD.
|
||||
The remaining arguments are interpreted depending on CMD.
|
||||
|
||||
@ -197,6 +202,9 @@ extern int __fcntl_time64 (int __fd, int __request, ...) __THROW;
|
||||
# define fcntl __fcntl_time64
|
||||
# endif
|
||||
#endif
|
||||
#else /* glibc 2.27 or lower */
|
||||
extern int fcntl (int __fd, int __cmd, ...);
|
||||
#endif
|
||||
|
||||
/* Open FILE and return a new file descriptor for it, or -1 on error.
|
||||
OFLAG determines the type of access used. If O_CREAT or O_TMPFILE is set
|
||||
|
22
lib/libc/include/generic-glibc/resolv.h
vendored
22
lib/libc/include/generic-glibc/resolv.h
vendored
@ -170,6 +170,28 @@ __END_DECLS
|
||||
#define res_init __res_init
|
||||
#define res_isourserver __res_isourserver
|
||||
|
||||
/* In glibc 2.33 and earlier res_search, res_nsearch, res_query, res_nquery,
|
||||
* res_querydomain, res_nquerydomain were #define'd to __res_search,
|
||||
* __res_nsearch, etc. glibc 2.34 onwards removes the macros and exposes the
|
||||
* symbols directly. New glibc exposes compat symbols with underscores for
|
||||
* backwards compatibility. Applications linked to glibc 2.34+ are expected
|
||||
* to use the non-underscored symbols.
|
||||
*
|
||||
* It will be enough to bring the macros back when compiling against the older
|
||||
* glibc versions.
|
||||
*
|
||||
* See glibc commit ea9878ec271c791880fcbbe519d70c42f8113750.
|
||||
*/
|
||||
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ < 34)
|
||||
#define res_search __res_search
|
||||
#define res_nsearch __res_nsearch
|
||||
#define res_query __res_query
|
||||
#define res_nquery __res_nquery
|
||||
#define res_querydomain __res_querydomain
|
||||
#define res_nquerydomain __res_nquerydomain
|
||||
#endif
|
||||
/* end glibc compat hacks */
|
||||
|
||||
#ifdef _LIBC
|
||||
# define __RESOLV_DEPRECATED
|
||||
# define __RESOLV_DEPRECATED_MSG(msg)
|
||||
|
Loading…
Reference in New Issue
Block a user