https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110617
--- Comment #11 from Florian Weimer <fw at gcc dot gnu.org> --- (In reply to Xi Ruoyao from comment #10) > But Zack's reason against using __nonnull is __nonnull may cause unwanted > optimizations to *the user code*. GCC already offers options to control function call behavior in the presence of nonnull attributes: For function calls: • If the compiler determines that a null pointer is passed in an argument slot marked as non-null, and the ‘-Wnonnull’ option is enabled, a warning is issued. *Note Warning Options::. • The ‘-fisolate-erroneous-paths-attribute’ option can be specified to have GCC transform calls with null arguments to non-null functions into traps. *Note Optimize Options::. • The compiler may also perform optimizations based on the knowledge that certain function arguments cannot be null. These optimizations can be disabled by the ‘-fno-delete-null-pointer-checks’ option. *Note Optimize Options::. So I don't think we need another way to disable nonnull attributes in installed glibc headers.