Why does gnulib bundle <sys/cdefs.h>? We edit this file regularly in glibc. In the past, some gnulib-using programs supplied their own copy of <sys/cdefs.h> instead, even when building against glibc. This caused build failures in the glibc headers because they (quite reasonably) assumed that <sys/cdefs.h> defines the macros for that glibc version.
Does gnulib still override <sys/cdefs.h> unconditionally? A version check will be difficult because sometimes, we have to backport header fixes to older versions, and that may require adding additional macros in <sys/cdefs.h>. We could move glibc's internal definitions to a new header, reducing <sys/cdefs.h> in scope, but presumably that means gnulib would just starting bundling that other header, and we would have the same issue once more. Thanks, Florian