[Bug other/58312] New: libssp configure check for "usable vsnprintf" is broken on cross-compilers.
brooks at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 3 21:58:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58312
Bug ID: 58312
Summary: libssp configure check for "usable vsnprintf" is
broken on cross-compilers.
Product: gcc
Version: 4.8.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
Assignee: unassigned at gcc dot gnu.org
Reporter: brooks at gcc dot gnu.org
The libssp configure script contains a check for "whether vsnprintf is usable",
starting around line 128.
This check is based on an AC_RUN_IFELSE call, which compiles and runs a program
that uses a vsnprintf call. The problem is in the fallback argument for the
cross-compiling case, which is simply "ssp_have_usable_vsnprintf=undef" --
which is to say, assume it does not work. The result is that about a third of
the libssp files -- sprintf-chk.c, snprintf-chk.c, vsprintf-chk.c, and
vsnprintf-chk.c -- are then effectively #ifdef'ed out of existence.
This is a significant problem; we have programs compiled with a native compiler
that are having runtime link errors with the runtime libraries from a cross
compiler for the same target, because functions such as __sprintf_chk are not
defined in the cross-compiled libssp.so.
It's not at all clear to me why this check needs to be a runtime check at all;
is it not simply sufficient to check for the existence of a vsnprintf function?
There are no comments in the code to indicate why this is insufficient, and
the runtime check was present in the initial version of the code without
comments:
http://gcc.gnu.org/ml/gcc-patches/2005-07/msg00066.html
More information about the Gcc-bugs
mailing list