Re: git: 415a0ce02c9e - main - Revert Make newly POSIX functions visible
Date: Thu, 20 Mar 2025 09:55:56 UTC
On Thu, Mar 20, 2025, 1:42 AM Stephen Hurd <shurd@freebsd.org> wrote:
> The branch main has been updated by shurd:
>
> URL:
> https://cgit.FreeBSD.org/src/commit/?id=415a0ce02c9ee2c15c7973b2dfbddda71f6344a2
>
> commit 415a0ce02c9ee2c15c7973b2dfbddda71f6344a2
> Author: Stephen Hurd <shurd@FreeBSD.org>
> AuthorDate: 2025-03-20 07:15:15 +0000
> Commit: Stephen Hurd <shurd@FreeBSD.org>
> CommitDate: 2025-03-20 07:41:27 +0000
>
> Revert Make newly POSIX functions visible
>
> Summary:
> This reverts commit d7efac1be1441c122f7fb9de51a409172f21326c.
> This reverts commit 9d0eea9422d075c8a6924b33161d2d5abfb4072a.
>
> Some ports (specifically Python) define __BSD_VISIBLE themselves, so
> the change from __BSD_VISIBLE to __POSIX_VISIBLE >= 202405 makes them
> fail.
>
That's not legal. Defining __BSD_VISIBLE directly is illegal and won't work
right. Can't work right and should likely be a compile time error. With am
exp run to fix.
Warner
> Reported by: jrtc27, cperciva
> ---
> include/dlfcn.h | 8 +-------
> include/stdlib.h | 13 +++++--------
> include/string.h | 6 +++---
> include/time.h | 8 +++-----
> include/unistd.h | 16 ++++++----------
> include/wchar.h | 7 ++-----
> 6 files changed, 20 insertions(+), 38 deletions(-)
>
> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index ec4ad14b5091..89ec43b332e9 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -80,9 +80,6 @@ typedef struct dl_info {
> const char *dli_sname; /* Name of nearest symbol. */
> void *dli_saddr; /* Address of nearest symbol. */
> } Dl_info;
> -#if __POSIX_VISIBLE >= 202405
> -typedef struct dl_info Dl_info_t;
> -#endif
>
> /*-
> * The actual type declared by this typedef is immaterial, provided that
> @@ -122,12 +119,9 @@ char *dlerror(void);
> void *dlopen(const char *, int);
> void *dlsym(void * __restrict, const char * __restrict);
>
> -#if __POSIX_VISIBLE >= 202405
> -int dladdr(const void * __restrict, Dl_info * __restrict);
> -#endif
> -
> #if __BSD_VISIBLE
> void *fdlopen(int, int);
> +int dladdr(const void * __restrict, Dl_info * __restrict);
> dlfunc_t dlfunc(void * __restrict, const char * __restrict);
> int dlinfo(void * __restrict, int, void * __restrict);
> void dllockinit(void *_context,
> diff --git a/include/stdlib.h b/include/stdlib.h
> index 449b17fefff5..162031ab393d 100644
> --- a/include/stdlib.h
> +++ b/include/stdlib.h
> @@ -157,7 +157,7 @@ _Noreturn void _Exit(int) __noexcept;
> /*
> * If we're in a mode greater than C99, expose C11 functions.
> */
> -#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L || __POSIX_VISIBLE
> >= 202405
> +#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
> void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
> __alloc_size(2);
> int at_quick_exit(void (*)(void)) __noexcept;
> @@ -236,13 +236,6 @@ int unlockpt(int);
> int ptsname_r(int, char *, size_t);
> #endif
>
> -#if __POSIX_VISIBLE >= 202405
> -void qsort_r(void *, size_t, size_t,
> - int (*)(const void *, const void *, void *), void *);
> -void *reallocarray(void *, size_t, size_t) __result_use_check
> - __alloc_size2(2, 3);
> -#endif
> -
> #if __BSD_VISIBLE
> extern const char *malloc_conf;
> extern void (*malloc_message)(void *, const char *);
> @@ -312,8 +305,12 @@ int mergesort_b(void *, size_t, size_t, int
> (^)(const void *, const void *));
> int mkostemp(char *, int);
> int mkostemps(char *, int, int);
> int mkostempsat(int, char *, int, int);
> +void qsort_r(void *, size_t, size_t,
> + int (*)(const void *, const void *, void *), void *);
> int radixsort(const unsigned char **, int, const unsigned char *,
> unsigned);
> +void *reallocarray(void *, size_t, size_t) __result_use_check
> + __alloc_size2(2, 3);
> void *reallocf(void *, size_t) __result_use_check __alloc_size(2);
> int rpmatch(const char *);
> char *secure_getenv(const char *);
> diff --git a/include/string.h b/include/string.h
> index 3deca63bd71a..a3fa96ebb449 100644
> --- a/include/string.h
> +++ b/include/string.h
> @@ -63,8 +63,8 @@ void *memrchr(const void *, int, size_t) __pure;
> #endif
> int memcmp(const void *, const void *, size_t) __pure;
> void *(memcpy)(void * __restrict, const void * __restrict, size_t);
> -#if __POSIX_VISIBLE >= 202405
> -void *(memmem)(const void *, size_t, const void *, size_t) __pure;
> +#if __BSD_VISIBLE
> +void *memmem(const void *, size_t, const void *, size_t) __pure;
> #endif
> void *(memmove)(void *, const void *, size_t);
> #if __BSD_VISIBLE
> @@ -98,7 +98,7 @@ char *strerror(int);
> #if __POSIX_VISIBLE >= 200112
> int strerror_r(int, char *, size_t);
> #endif
> -#if __POSIX_VISIBLE >= 202405
> +#if __BSD_VISIBLE
> size_t (strlcat)(char * __restrict, const char * __restrict, size_t);
> size_t (strlcpy)(char * __restrict, const char * __restrict, size_t);
> #endif
> diff --git a/include/time.h b/include/time.h
> index e011792aaaeb..89a76ca5fd93 100644
> --- a/include/time.h
> +++ b/include/time.h
> @@ -180,17 +180,15 @@ time_t posix2time(time_t t);
> #include <xlocale/_time.h>
> #endif
>
> -#if __ISO_C_VISIBLE >= 2011 || __POSIX_VISIBLE >= 202405 || \
> +#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 2011 || \
> (defined(__cplusplus) && __cplusplus >= 201703)
> #include <sys/_timespec.h>
> /* ISO/IEC 9899:2011 7.27.2.5 The timespec_get function */
> #define TIME_UTC 1 /* time elapsed since epoch */
> -#if __ISO_C_VISIBLE >= 2023 || __POSIX_VISIBLE >= 202405
> -/* ISO/IEC 9899:2024 7.29.1 Components of time */
> -#define TIME_MONOTONIC 2 /* monotonic time */
> -#endif
> int timespec_get(struct timespec *ts, int base);
> #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 2023
> +/* ISO/IEC 9899:2024 7.29.1 Components of time */
> +#define TIME_MONOTONIC 2 /* monotonic time */
> /* ISO/IEC 9899:2024 7.29.2.7 The timespec_getres function */
> int timespec_getres(struct timespec *, int);
> #endif
> diff --git a/include/unistd.h b/include/unistd.h
> index 3a4e1be192d9..8574b2ba9915 100644
> --- a/include/unistd.h
> +++ b/include/unistd.h
> @@ -483,16 +483,6 @@ int usleep(useconds_t);
> pid_t vfork(void) __returns_twice;
> #endif
>
> -/* 1003.1-2024 */
> -#if __POSIX_VISIBLE >= 202405
> -pid_t _Fork(void);
> -int getentropy(void *, size_t);
> -int getresgid(gid_t *, gid_t *, gid_t *);
> -int getresuid(uid_t *, uid_t *, uid_t *);
> -int setresgid(gid_t, gid_t, gid_t);
> -int setresuid(uid_t, uid_t, uid_t);
> -#endif
> -
> #if __BSD_VISIBLE
> struct timeval; /* select(2) */
>
> @@ -520,11 +510,14 @@ int feature_present(const char *);
> int fchroot(int);
> char *fflagstostr(u_long);
> int getdomainname(char *, int);
> +int getentropy(void *, size_t);
> int getgrouplist(const char *, gid_t, gid_t *, int *);
> int getloginclass(char *, size_t);
> mode_t getmode(const void *, mode_t);
> int getosreldate(void);
> int getpeereid(int, uid_t *, gid_t *);
> +int getresgid(gid_t *, gid_t *, gid_t *);
> +int getresuid(uid_t *, uid_t *, uid_t *);
> char *getusershell(void);
> int initgroups(const char *, gid_t);
> int iruserok(unsigned long, int, const char *, const char *);
> @@ -582,6 +575,8 @@ void *setmode(const char *);
> int setpgrp(pid_t, pid_t); /* obsoleted by setpgid()
> */
> void setproctitle(const char *_fmt, ...) __printf0like(1, 2);
> void setproctitle_fast(const char *_fmt, ...) __printf0like(1, 2);
> +int setresgid(gid_t, gid_t, gid_t);
> +int setresuid(uid_t, uid_t, uid_t);
> int setrgid(gid_t);
> int setruid(uid_t);
> void setusershell(void);
> @@ -594,6 +589,7 @@ int undelete(const char *);
> int unwhiteout(const char *);
> void *valloc(size_t); /* obsoleted by malloc() */
> int funlinkat(int, const char *, int, int);
> +pid_t _Fork(void);
>
> #ifndef _OPTRESET_DECLARED
> #define _OPTRESET_DECLARED
> diff --git a/include/wchar.h b/include/wchar.h
> index a8c016c42faf..e4b037c9b16f 100644
> --- a/include/wchar.h
> +++ b/include/wchar.h
> @@ -235,13 +235,10 @@ size_t wcsnrtombs(char * __restrict, const
> wchar_t ** __restrict, size_t,
> size_t, mbstate_t * __restrict);
> #endif
>
> -#if __POSIX_VISIBLE >= 202405
> -size_t wcslcat(wchar_t *, const wchar_t *, size_t);
> -size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
> -#endif
> -
> #if __BSD_VISIBLE
> wchar_t *fgetwln(FILE * __restrict, size_t * __restrict);
> +size_t wcslcat(wchar_t *, const wchar_t *, size_t);
> +size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
> #endif
>
> #if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
>