[Bug ada/56271] New: GCC build errors when building ada and using LDFLAGS

karlson2k at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Feb 10 00:11:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56271

             Bug #: 56271
           Summary: GCC build errors when building ada and using LDFLAGS
    Classification: Unclassified
           Product: gcc
           Version: 4.7.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: karlson2k@gmail.com
              Host: i686-pc-mingw32
            Target: i686-pc-mingw32
             Build: x86_64-w64-mingw32, i686-w64-mingw32


GCC is configured with 

LDFLAGS="-L/home/xxx/mingw-w64/packages/gcc/packages/gmp/gmp-5.1.0-i686/lib"
../../source/gcc-4.7.2/configure --build=i686-pc-mingw32 --host=i686-pc-mingw32
--target=i686-w64-mingw32 --disable-nls --disable-multilib
--prefix=/home/xxx/mingw-w64/mingw-w64-i686
--with-sysroot=/home/xxx/mingw-w64/mingw-w64-i686
--with-native-system-header-dir=/i686-w64-mingw32/include
--with-host-libstdcxx=/mingw/lib/gcc/mingw32/4.7.2/libstdc++.a
--disable-cloog-version-check --disable-ppl-version-check
--with-mpc=/home/xxx/mingw-w64/packages/gcc/packages/mpc/mpc-1.0.1-i686
--with-mpfr=/home/xxx/mingw-w64/packages/gcc/packages/mpfr/mpfr-3.1.1-i686
--with-gmp=/home/xxx/mingw-w64/packages/gcc/packages/gmp/gmp-5.1.0-i686
--with-ppl=/home/xxx/mingw-w64/packages/gcc/packages/ppl/ppl-1.0-i686
--with-isl=/home/xxx/mingw-w64/packages/gcc/packages/isl/isl-0.11.1-i686
--with-cloog=/home/xxx/mingw-w64/packages/gcc/packages/cloog-ppl/cloog-ppl-0.15.11-i686
--enable-languages=ada,c,c++ --enable-threads=win32
--enable-fully-dynamic-string --disable-sjlj-exceptions
--with-multilib-list=m32 --with-arch=pentium3
--enable-leading-mingw64-underscores --with-dwarf2 --enable-lto
--disable-win32-registry --with-win32-nlsapi=unicode --enable-libstdcxx-debug

Building ada is always produce some errors like 

if [ -f gnat1.exe ] ; \
        then \
          make "ADA_CFLAGS=" "BISON=bison" "BISONFLAGS=" "CFLAGS=-pipe
-D__USE_MINGW_ACCESS "
"LDFLAGS=-L/home/xxx/mingw-w64/packages/gcc/packages/gmp/gmp-5.1.0-i686/lib
"FLEX=flex" "FLEXFLAGS=" "LN=ln" "LN_S=cp -pR"
"MAKEINFO=makeinfo--split-size=5000000" "MAKEINFOFLAGS=--no-split"
"MAKEOVERRIDES=" "SHELL=/bin/sh" "exeext=.exe" "build_exeext=.exe" "objext=.o"
"exec_prefix=/home/xxx/mingw-w64/mingw-w64-i686"
"prefix=/home/xxx/mingw-w64/mingw-w64-i686" "local_prefix=/usr/local"
"gxx_include_dir=/home/xxx/mingw-w64/mingw-w64-i686/lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/include/c++/4.7.2"
"build_tooldir=/home/xxx/mingw-w64/mingw-w64-i686/i686-w64-mingw32"
"gcc_tooldir=/home/xxx/mingw-w64/mingw-w64-i686/lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32"
"bindir=/home/xxx/mingw-w64/mingw-w64-i686/bin"
"libexecsubdir=/home/xxx/mingw-w64/mingw-w64-i686/libexec/gcc/i686-w64-mingw32/4.7.2"
"datarootdir=/home/xxx/mingw-w64/mingw-w64-i686/share"
"datadir=/home/xxx/mingw-w64/mingw-w64-i686/share"
"localedir=/home/xxx/mingw-w64/mingw-w64-i686/share/locale" "ADA_FOR_BUILD="
"ADA_INCLUDE_DIR=/home/xxx/mingw-w64/mingw-w64-i686/lib/gcc/i686-w64-mingw32/4.7.2/adainclude"
"ADA_RTL_OBJ_DIR=/home/xxx/mingw-w64/mingw-w64-i686/lib/gcc/i686-w64-mingw32/4.7.2/adalib"
"ADAFLAGS=-gnatpg -gnata -gnatwns -W -Wall" "ADA_FOR_TARGET="
"INSTALL=/bin/install -c" "INSTALL_DATA=/bin/install -c -m 644"
"INSTALL_PROGRAM=/bin/install -c" install-gnatlib; \
        fi
/bin/sh: -c: line 2: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 4: syntax error: unexpected end of file
make[1]: [ada.install-common] Error 2 (ignored)

As you can see make parameter "LDFLAGS=... don't have closing double quote.
The reason for this is as follows: 'root' Makefile adds to LDFLAGS: 

LDFLAGS += -Wl,--stack,12582912

, so ./gcc/Makefile has 

LDFLAGS = 
-L/home/Karlson/mingw-w64/packages/gcc/packages/gmp/gmp-5.1.0-i686/lib
-Wl,--stack,12582912

that flag in included into FLAGS_TO_PASS by

FLAGS_TO_PASS = \
    "ADA_CFLAGS=$(ADA_CFLAGS)" \
    "BISON=$(BISON)" \
    "BISONFLAGS=$(BISONFLAGS)" \
    "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
    "LDFLAGS=$(LDFLAGS)" \
    "FLEX=$(FLEX)" \...

which is filtered in included makefile
source/gcc/ada/gcc-interface/Make-lang.in:

COMMON_FLAGS_TO_PASS = $(filter-out -pedantic -W%, $(FLAGS_TO_PASS))

This filter is supposed to exclude '-pedantic' and all warning control flags,
but in real:
1. Don't filter out option not surrounded by spaces, like CFLAGS=-pedantic
2. With '-W%' filter out with closing quote in "LDFLAGS=-L/some/path
-Wl,--stack,12582912"
3. Filter out all -Wp,... -Wl,... -Wa,.. options as well



More information about the Gcc-bugs mailing list