I receive the following when trying to build gcc using --disable-checking.
gcc (GCC) 4.2.0 20060421 (experimental)
gcc -DIN_GCC -O2 -g0 -DGENERATOR_FILE -s -o build/genextract \
build/genextract.o build/rtl.o build/read-rtl.o build/ggc-none.o
build/min-insn-modes.o build/gensupport.o build/pri
nt-rtl.o build/errors.o build/vec.o
../build-i686-pc-linux-gnu/libiberty/libiberty.a
build/genextract.o(.text+0x370): In function `gen_insn':
: undefined reference to `vec_assert_fail'
build/genextract.o(.text+0x46b): In function `VEC_safe_set_locstr':
: undefined reference to `vec_assert_fail'
build/genextract.o(.text+0x6e3): In function `walk_rtx':
: undefined reference to `vec_assert_fail'
collect2: ld returned 1 exit status
make[2]: *** [build/genextract] Error 1
After quickly looking into it, here is my initial theory:
1.
build=i686-pc-linux-gnu
host=i686-pc-mingw32
target=i686-pc-mingw32
2.
configure with --disable-checking
3.
from gcc/configure:
# auto-host.h is the file containing items generated by autoconf and is
# the first file included by config.h.
# If host=build, it is correct to have bconfig include auto-host.h
# as well. If host!=build, we are in error and need to do more
# work to find out the build config parameters.
if test x$host = x$build
then
build_auto=auto-host.h
else
# We create a subdir, then run autoconf in the subdir.
# To prevent recursion we set host and build for the new
# invocation of configure to the build for this invocation
# of configure.
tempdir=build.$$
rm -rf $tempdir
mkdir $tempdir
cd $tempdir
case ${srcdir} in
/* | A-Za-z:\\/* ) realsrcdir=${srcdir};;
*) realsrcdir=../${srcdir};;
esac
saved_CFLAGS="${CFLAGS}"
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
${realsrcdir}/configure \
--enable-languages=${enable_languages-all} \
--target=$target_alias --host=$build_alias --build=$build_alias
CFLAGS="${saved_CFLAGS}"
# We just finished tests for the build machine, so rename
# the file auto-build.h in the gcc directory.
mv auto-host.h ../auto-build.h
cd ..
rm -rf $tempdir
build_auto=auto-build.h
fi
4.
This creates an auto-build.h with enable_checking 1
#ifndef USED_FOR_TARGET
#define ENABLE_CHECKING 1
#endif
5.
bconfig.h includes it
#ifndef GCC_BCONFIG_H
#define GCC_BCONFIG_H
#include "auto-build.h"
#ifdef IN_GCC
# include "ansidecl.h"
#endif
#endif /* GCC_BCONFIG_H */
6.
gcc/genextract.c is compiled with checking since it includes "bconfig.h"
it also includes "vec.h", and consequently vec_assert_fail
gcc -c -DIN_GCC -O2 -g0 -DGENERATOR_FILE -I. -Ibuild -I/home/gcc/gcc/gcc
-I/home/gcc/gcc/gcc/build -I/home/gcc/gcc/gcc/../include
-I/home/gcc/gcc/gcc/../libcpp/include -I/home/gcc/gcc/gcc/../libdecnumber
-I../libdecnumber -o build/genextract.o /home/gcc/gcc/gcc/genextract.c
7.
gcc/vec.c is compiled without checking, so it will not define vec_assert_fail:
gcc -c -DIN_GCC -O2 -g0 -DGENERATOR_FILE -I. -Ibuild -I/home/gcc/gcc/gcc
-I/home/gcc/gcc/gcc/build -I/home/gcc/gcc/gcc/../include
-I/home/gcc/gcc/gcc/../libcpp/include -I/home/gcc/gcc/gcc/../libdecnumber
-I../libdecnumber -o build/vec.o /home/gcc/gcc/gcc/vec.c
8.
vec_assert_fail isn't defined.
gcc -DIN_GCC -O2 -g0 -DGENERATOR_FILE -s -o build/genextract \
build/genextract.o build/rtl.o build/read-rtl.o build/ggc-none.o
build/min-insn-modes.o build/gensupport.o build/print-rtl.o build/errors.o
build/vec.o ../build-i686-pc-linux-gnu/libiberty/libiberty.a
build/genextract.o(.text+0x370): In function `gen_insn':
: undefined reference to `vec_assert_fail'
build/genextract.o(.text+0x46b): In function `VEC_safe_set_locstr':
: undefined reference to `vec_assert_fail'
build/genextract.o(.text+0x6e3): In function `walk_rtx':
: undefined reference to `vec_assert_fail'
collect2: ld returned 1 exit status
make[2]: *** [build/genextract] Error 1
--
Summary: undefined reference to `vec_assert_fail' with --disable-
checking
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: r_ovidius at eml dot cc
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-mingw32
GCC target triplet: i686-pc-mingw32
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27251