There is a new minor release of fortify-headers, namely 3.0.1. Minor releases means no new features, only bug fixes.
The C language doesn't really have the notion of namespaces: all symbols,
except those marked as static are exposed. To mitigate the possibility of
collisions, it's a good practise to prefix exported symbols with an
library-specific identifier, like xml for libxml2 (eg. xmlReadFile),
SSL for OpenSSL (eg. SSL_library_init) and so on. Symbols starting with an
underscore followed by either an upper-case letter or another underscore are
implementation-reserved.
I was a bit cocky, and assumed that since fortify-headers is kind of part of
the implementation, I could name macros __format, __warning_if, __access,
… Unfortunately, this lead to a collision with LLVM's libcxx, as it defines
a __format macro in its C++ locale header (/usr/include/c++/v1/locale).
This was found by
Haelwenn (lanodan) Monnier, when he tried to make use
of fortify-headers on Gentoo. The fix is quite straightforward: make use of a
fortify-headers specific prefix, resulting in __fortify_format,
__fortify_warning_if, __fortify_access.
The release is available on github, and the tag has been pushed on 2f30 as well.