implementations for these functions, we lean on GNU builtin functions for using them, so these declarations are also conditional on using a GNU compiler.