@itemize @bullet
@item
-Clang's @option{-fsanitize=undefined} option causes the program to
-crash if it adds zero to a null pointer -- behavior that is undefined
-in strict C, but which yields a null pointer on all practical porting
-targets and which the Gnulib portability guidelines allow.
+In Clang 19 and earlier, the @option{-fsanitize=undefined} option
+causes the program to crash if it adds zero to a null pointer --
+behavior that is undefined in strict C17 and earlier, but which yields
+a null pointer in C23 and later and on all practical porting targets,
+and which the Gnulib portability guidelines allow.
-If you use Clang with @option{-fsanitize=undefined}, you can work
+If you use Clang 19 or earlier with @option{-fsanitize=undefined}, you can work
around the problem by also using @samp{-fno-sanitize=pointer-overflow},
although this may also disable some unrelated and useful pointer checks.
Perhaps someday the Clang developers will fix the infelicity.
Currently Gnulib assumes at least a freestanding C99 compiler,
possibly operating with a C library that predates C99; with time this
assumption will likely be strengthened to later versions of the C
-standard. Old platforms currently supported include AIX 6.1, HP-UX
-11i v1 and Solaris 10, though these platforms are rarely tested.
+standard. Old platforms currently supported include AIX 7.3
+and Solaris 10, though these platforms are rarely tested.
Gnulib itself is so old that it contains many fixes for obsolete
platforms, fixes that may be removed in the future.
For example, @code{0 + (char *) NULL == (char *) NULL}.
Similarly, subtracting zero does not change a null pointer,
and subtracting two null pointers results in zero.
-A future C standard is planned to require this behavior; see
+C23 was the first C standard to require this behavior; see
``@url{https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3322.pdf,
-Allow zero length operations on null pointers}'', WG14 N3322 (2024-08-28).
+Allow zero length operations on null pointers}'', WG14 N3322 (2024-08-28);
+which was adopted retroactively for C23.
@end itemize
@end itemize