The posix_memalign declaration is incompatible with musl for C++, because of the exception specification. It also pollutes the namespace and lacks protection against a potential macro definition that is allowed by POSIX. The fix avoids source level namespace pollution but retains the dependency on the posix_memalign extern libc symbol. The fix is ugly, but it is not possible to correctly redeclare a libc function in a public gcc header for C++. gcc/Changelog: 2015-04-16 Szabolcs Nagy * config/i386/pmm_malloc.h (posix_memalign): Renamed to ... (__gcc_posix_memalign): This. Use posix_memalign as extern symbol only.