http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57725
--- Comment #5 from jbeulich at novell dot com --- How that? How is code supposed to find out then? Perhaps briefly explaining where this is coming from originally might help: The Xen hypervisor (as much as Linux) has a number of linker script constructs like .xsm_initcall.init : { __xsm_initcall_start = .; *(.xsm_initcall.init) __xsm_initcall_end = .; } :text If there's no matching input section at all, the two boundary symbols will end up equal. How would C code be supposed to find out if the comparison result is unspecified? And remember, this is not a problem with default visibility (presumably because the code needs to be prepared for link time overrides of the symbols), but Xen likes to get built with non-default visibility in order to avoid expensive GOT indirections when accessing data despite the necessary use of -fPIC.