In the manual, document where POSIX.1-2024 allows namespace pollution.
Although it might be nice to add something like GNULIB_POSIXCHECK to
detect when Gnulib-using code is unportable in this area, I don’t
offhand see a good way to do that.
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<inttypes.h>} and @code{<netinet/in.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<stdint.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Instead, you can use @samp{AT_FDCWD == -1 ? -2 : -1}.
@samp{AT_FDCWD} is @minus{}1 on some platforms:
Haiku R1/Beta4.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<sys/stat.h>} and @code{<unistd.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
@item
This header file is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<sys/stat.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<nl_types.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<inttypes.h>},
+@code{<netnet/in.h>}, and @code{<sys/socket.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<arpa/inet.h>}, @code{<inttypes.h>}
+and @code{<sys/socket.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<signal.h>} and @code{<time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
The macro @code{SIGBUS} is set to the same value as @code{SIGSEGV},
rather than being a distinct signal, on some platforms:
Haiku.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<stddef.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
System status macros such as @code{WEXITSTATUS} require an lvalue
argument on some platforms.
macOS 11.1.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<fcntl.h>}, @code{<limits.h>},
+@code{<math.h>}, @code{<stddef.h>}, and @code{<sys/wait.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<stddef.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
@item
This header file is missing on some platforms:
mingw, MSVC 14.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<fcntl.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
On some platforms, this header does not define some or all of the
symbolic constants required by POSIX@. For example, OpenVMS and Android do
not define @code{RLIM_SAVED_CUR} or @code{RLIM_SAVED_MAX}.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<sys/time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<signal.h>} and @code{<time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
This header file does not define the constant @code{MSG_CMSG_CLOFORK}
on some platforms:
glibc 2.42, musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Solaris 11.4, Cygwin, mingw, MSVC, Android.
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<sys/uio.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
@mindex areadlink-with-size
use the Gnulib module @code{areadlink-with-size} for a
better way to get symlink contents.
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
@mindex same-inode
@samp{struct timeval} is defined with a @code{tv_sec} type that is
wider than @code{time_t}:
OpenBSD 5.1 in 64-bit mode.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<sys/select.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
System status macros such as @code{WEXITSTATUS} require an lvalue
argument on some platforms:
macOS 11.1.
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<signal.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
On some platforms the @code{tv_nsec} member of @code{struct timespec}
is not of type @code{long}, but is of type @code{long long} instead:
glibc x32
+
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<signal.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<stddef.h>}, @code{<stdint.h>}, and
+@code{<wchar.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<fcntl.h>}, @code{<stddef.h>},
+@code{<stdint.h>}, and @code{<stdio.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
glibc 2.38 on 32-bit platforms like x86 and ARM where @code{time_t}
was historically 32 bits.
@xref{Avoiding the year 2038 problem}.
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the header @code{<sys/time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
on some platforms:
glibc version 2.5 or older, together with gcc version 4.3 or newer and the
option @samp{-std=c99} or @samp{-std=gnu99}.
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<ctype.h>}, @code{<stdarg.h>},
+@code{<stddef.h>}, @code{<stdlib.h>}, @code{<stdio.h>},
+@code{<string.h>}, and @code{<time.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX.1-2024 allows, but does not require, this file to make visible
+all symbols from the headers @code{<ctype.h>}, @code{<stdarg.h>},
+@code{<stddef.h>}, @code{<stdlib.h>}, @code{<stdio.h>},
+@code{<string.h>}, @code{<time.h>}, and @code{<wchar.h>}.
+Programs should not assume that these other symbols are visible merely
+because this file is included, or that they are invisible because only
+this file is included.
@end itemize