← Back to team overview

cross-toolchain-base-devs team mailing list archive

Bug#845143: cross-toolchain-base: FTBFS in stage1 gcc: libiberty uses libc headers


Source: cross-toolchain-base
Version: 13
Severity: serious
User: helmutg@xxxxxxxxxx
Usertags: rebootstrap

Hi Matthias,

Since a few gcc-6 uploads, cross-toolchain-base FTBFS. I don't know
exactly which version made it break, but 6.2.1-4 is known to be broken
and 6.2.0-13 is known to not have this issue (which is different from
#844866). The symptom is:

| config.status: creating config.h
| config.status: config.h is unchanged
| config.status: executing default commands
| if [ x"" != x ]; then \
|   /<<PKGBUILDDIR>>/gcc/build/./gcc/xgcc -B/<<PKGBUILDDIR>>/gcc/build/./gcc/ -B/usr/s390x-linux-gnu/bin/ -B/usr/s390x-linux-gnu/lib/ -isystem /usr/s390x-linux-gnu/include -isystem /usr/s390x-linux-gnu/sys-include -isystem /<<PKGBUILDDIR>>/gcc/build/sys-include --sysroot=/<<PKGBUILDDIR>>/debian/tmp.s390x   -c -DHAVE_CONFIG_H -g -O2  -I. -I../../../src/libiberty/../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  -D_GNU_SOURCE  ../../../src/libiberty/regex.c -o pic/regex.o; \
| else true; fi
| if [ x"" != x ]; then \
|   /<<PKGBUILDDIR>>/gcc/build/./gcc/xgcc -B/<<PKGBUILDDIR>>/gcc/build/./gcc/ -B/usr/s390x-linux-gnu/bin/ -B/usr/s390x-linux-gnu/lib/ -isystem /usr/s390x-linux-gnu/include -isystem /usr/s390x-linux-gnu/sys-include -isystem /<<PKGBUILDDIR>>/gcc/build/sys-include --sysroot=/<<PKGBUILDDIR>>/debian/tmp.s390x   -c -DHAVE_CONFIG_H -g -O2  -I. -I../../../src/libiberty/../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  -D_GNU_SOURCE   ../../../src/libiberty/regex.c -o noasan/regex.o; \
| else true; fi
| /<<PKGBUILDDIR>>/gcc/build/./gcc/xgcc -B/<<PKGBUILDDIR>>/gcc/build/./gcc/ -B/usr/s390x-linux-gnu/bin/ -B/usr/s390x-linux-gnu/lib/ -isystem /usr/s390x-linux-gnu/include -isystem /usr/s390x-linux-gnu/sys-include -isystem /<<PKGBUILDDIR>>/gcc/build/sys-include --sysroot=/<<PKGBUILDDIR>>/debian/tmp.s390x   -c -DHAVE_CONFIG_H -g -O2  -I. -I../../../src/libiberty/../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  -D_GNU_SOURCE ../../../src/libiberty/regex.c -o regex.o
| ../../../src/libiberty/regex.c:52:25: fatal error: sys/types.h: No such file or directory
|  #  include <sys/types.h>
|                          ^
| compilation terminated.
| Makefile:1166: recipe for target 'regex.o' failed
| make[5]: *** [regex.o] Error 1
| make[5]: Leaving directory '/<<PKGBUILDDIR>>/gcc/build/s390x-linux-gnu/libiberty'
| Makefile:11866: recipe for target 'all-target-libiberty' failed
| make[4]: *** [all-target-libiberty] Error 2
| make[4]: Leaving directory '/<<PKGBUILDDIR>>/gcc/build'
| Makefile:861: recipe for target 'all' failed
| make[3]: *** [all] Error 2
| make[3]: Leaving directory '/<<PKGBUILDDIR>>/gcc/build'

It occurs during the stage1 gcc build while building libiberty. The
issue is independent of the target architecture. s390x just happens to
be the first one tried by cross-toolchain-base. We see that regex.c
includes libc headers, but a stage1 build should not be using libc
headers. I looked into the recent gcc-6 packaging commits and couldn't
identify an obvious cause. I also looked into recently successful cross
compiler builds an it seems that formerly libiberty was only built for
the host architecture and not for the target architecture in stage1.

I am Ccing d-cross@l.d.o to gain more eyeballs for the issue. Any ideas?