Package: cross-config Version: 2.6.15-3 Tags: patch User: [email protected] Usertags: ftcbfs Control: affects -1 + src:gcc-9 src:gcc-10
gcc-N fails to cross build from source from 64bit architectures to 32bit architectures due to cross-config cache variables. gcc is a little unusual here as it has a number of configure scripts and invokes them with varying build/host/target combinations during a cross build. However, cross-config's cache variables fail to distinguish this and in some cases, gcc picks up wrong sizeof results from cross-config. An example failure is: http://crossqa.debian.net/build/gcc-10_10-20200418-1_armhf_20200420204732.log | configure: loading site script /etc/dpkg-cross/cross-config.armhf | checking build system type... x86_64-pc-linux-gnu | checking host system type... x86_64-pc-linux-gnu | checking target system type... arm-unknown-linux-gnueabihf ... | checking size of void *... (cached) 4 ... | g++ -c -DIN_GCC -DGENERATOR_FILE -I. -Ibuild -I../../src/gcc -I../../src/gcc/build -I../../src/gcc/../include -I../../src/gcc/../libcpp/include \ | -o build/genpreds.o ../../src/gcc/genpreds.c | In file included from ../../src/gcc/rtl.h:27, | from ../../src/gcc/genpreds.c:27: | ../../src/gcc/real.h:81:76: error: narrowing conversion of '-1' from 'int' to 'long unsigned int' [-Wnarrowing] | 81 | [sizeof (REAL_VALUE_TYPE) <= REAL_WIDTH * sizeof (HOST_WIDE_INT) ? 1 : -1]; | | ^ | ../../src/gcc/real.h:81:68: error: size '-1' of array 'test_real_width' is negative | 81 | [sizeof (REAL_VALUE_TYPE) <= REAL_WIDTH * sizeof (HOST_WIDE_INT) ? 1 : -1]; | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~ | make[4]: *** [Makefile:2709: build/genpreds.o] Error 1 | make[4]: Leaving directory '/<<PKGBUILDDIR>>/build/gcc' | make[3]: *** [Makefile:4449: all-gcc] Error 2 | make[3]: Leaving directory '/<<PKGBUILDDIR>>/build' | make[2]: *** [Makefile:978: all] Error 2 | make[2]: Leaving directory '/<<PKGBUILDDIR>>/build' As one can see, the size of void * is incorrectly determined as 4 for amd64 due to a cache variable. One should note that since a few years, autoconf is able to compute compile time integers (including sizeof) using bisection during cross compilation. Therefore the benefit of providing these variables is quite limited. I propose removing them entirely. I would like to very much thank Jessica Clarke for spotting the cause of this issue. All I did here was implement the obvious patch, test it and write this up. Helmut
diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.alpha dpkg-cross-2.6.15/config/cross-config.alpha --- dpkg-cross-2.6.15/config/cross-config.alpha 2019-04-06 07:21:56.000000000 +0200 +++ dpkg-cross-2.6.15/config/cross-config.alpha 2020-05-03 10:08:53.000000000 +0200 @@ -7,19 +7,3 @@ # ac_cv_c_bigendian=no ac_cv_c_char_unsigned=no -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=8 -ac_cv_sizeof_unsigned_long=8 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_char=1 -ac_cv_sizeof_unsigned_char=1 -ac_cv_sizeof_signed_char=1 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=8 -ac_cv_sizeof_void_p=8 -ac_cv_sizeof_char_p=8 diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.amd64 dpkg-cross-2.6.15/config/cross-config.amd64 --- dpkg-cross-2.6.15/config/cross-config.amd64 2019-04-06 07:21:56.000000000 +0200 +++ dpkg-cross-2.6.15/config/cross-config.amd64 2020-05-03 10:07:59.000000000 +0200 @@ -6,16 +6,3 @@ # ac_cv_c_bigendian=no ac_cv_c_char_unsigned=no -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=8 -ac_cv_sizeof_unsigned_long=8 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=16 diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.arm64 dpkg-cross-2.6.15/config/cross-config.arm64 --- dpkg-cross-2.6.15/config/cross-config.arm64 2015-01-22 20:10:23.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.arm64 2020-05-03 10:09:09.000000000 +0200 @@ -6,23 +6,6 @@ # now ensure the real architecture-dependent values take priority ac_cv_c_bigendian=no ac_cv_c_char_unsigned=yes -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=8 -ac_cv_sizeof_unsigned_long=8 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_char=1 -ac_cv_sizeof_unsigned_char=1 -ac_cv_sizeof_signed_char=1 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=16 -ac_cv_sizeof_void_p=8 -ac_cv_sizeof_char_p=8 -ac_cv_sizeof_time_t=8 #lots of things: turn off stack protector libc_cv_fno_stack_protector=no @@ -43,7 +26,6 @@ #Verifed with native test program apr_cv_mutex_robust_shared=yes #probably more general than just APR. verifed by cross compiling and running test from configure -ac_cv_sizeof_struct_iovec=16 # mysql # mysql wants to know stack direction: diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.armel dpkg-cross-2.6.15/config/cross-config.armel --- dpkg-cross-2.6.15/config/cross-config.armel 2015-01-22 20:17:29.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.armel 2020-05-03 10:07:55.000000000 +0200 @@ -3,22 +3,6 @@ # now ensure the real architecture-dependent values take priority ac_cv_c_bigendian=no ac_cv_c_char_unsigned=yes -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_char=1 -ac_cv_sizeof_unsigned_char=1 -ac_cv_sizeof_signed_char=1 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=8 -ac_cv_sizeof_void_p=4 -ac_cv_sizeof_char_p=4 path=`dirname $ac_site_file` # now allow package-specific architecture-independent values to be set diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.armhf dpkg-cross-2.6.15/config/cross-config.armhf --- dpkg-cross-2.6.15/config/cross-config.armhf 2015-01-22 20:16:56.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.armhf 2020-05-03 10:08:15.000000000 +0200 @@ -3,22 +3,6 @@ # now ensure the real architecture-dependent values take priority ac_cv_c_bigendian=no ac_cv_c_char_unsigned=yes -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_char=1 -ac_cv_sizeof_unsigned_char=1 -ac_cv_sizeof_signed_char=1 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=8 -ac_cv_sizeof_void_p=4 -ac_cv_sizeof_char_p=4 path=`dirname $ac_site_file` # now allow package-specific architecture-independent values to be set diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.cache dpkg-cross-2.6.15/config/cross-config.cache --- dpkg-cross-2.6.15/config/cross-config.cache 2012-11-24 22:14:14.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.cache 2020-05-03 10:08:05.000000000 +0200 @@ -27,7 +27,6 @@ apr_cv_epoll_create1=yes # apr_cv_process_shared_works: maybe arch specific? # apr_cv_mutex_robust_shared: maybe arch specific? -# ac_cv_sizeof_struct_iovec: is arch specific fi # avahi diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.cygwin-i386 dpkg-cross-2.6.15/config/cross-config.cygwin-i386 --- dpkg-cross-2.6.15/config/cross-config.cygwin-i386 2011-03-27 08:14:10.000000000 +0200 +++ dpkg-cross-2.6.15/config/cross-config.cygwin-i386 2020-05-03 10:08:30.000000000 +0200 @@ -9,8 +9,6 @@ # host. So supply them manually... # ac_cv_c_bigendian=no -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_unsigned_long=4 #ac_cv_header_stdc=yes #ac_cv_func_closedir_void=no diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.hppa dpkg-cross-2.6.15/config/cross-config.hppa --- dpkg-cross-2.6.15/config/cross-config.hppa 2019-04-06 07:21:56.000000000 +0200 +++ dpkg-cross-2.6.15/config/cross-config.hppa 2020-05-03 10:07:40.000000000 +0200 @@ -7,19 +7,6 @@ # ac_cv_c_bigendian=yes ac_cv_c_char_unsigned=no -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=12 ## bash diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.i386 dpkg-cross-2.6.15/config/cross-config.i386 --- dpkg-cross-2.6.15/config/cross-config.i386 2009-02-10 17:51:19.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.i386 2020-05-03 10:08:24.000000000 +0200 @@ -9,19 +9,6 @@ # ac_cv_c_bigendian=no ac_cv_c_char_unsigned=no -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=12 path=`dirname $ac_site_file` # now allow package-specific architecture-independent values to be set diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.m32r dpkg-cross-2.6.15/config/cross-config.m32r --- dpkg-cross-2.6.15/config/cross-config.m32r 2015-01-22 20:17:47.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.m32r 2020-05-03 10:07:50.000000000 +0200 @@ -4,21 +4,6 @@ # m32r specific configure variables ac_cv_c_bigendian=yes ac_cv_c_char_unsigned=no -ac_cv_sizeof_char=1 -ac_cv_sizeof_double=8 -ac_cv_sizeof_float=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_long=4 -ac_cv_sizeof_long_double=12 -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_short=2 -ac_cv_sizeof_signed_char=1 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_void_p=4 # ac_cv_func_setpgrp_void=yes ac_cv_prog_cc_cross=yes diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.m68k dpkg-cross-2.6.15/config/cross-config.m68k --- dpkg-cross-2.6.15/config/cross-config.m68k 2019-04-06 07:21:56.000000000 +0200 +++ dpkg-cross-2.6.15/config/cross-config.m68k 2020-05-03 10:08:44.000000000 +0200 @@ -7,16 +7,3 @@ # ac_cv_c_bigendian=yes ac_cv_c_char_unsigned=no -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 -ac_cv_sizeof_long_double=12 diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.mips dpkg-cross-2.6.15/config/cross-config.mips --- dpkg-cross-2.6.15/config/cross-config.mips 2009-02-10 17:51:19.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.mips 2020-05-03 10:08:40.000000000 +0200 @@ -5,12 +5,6 @@ # ac_cv_c_bigendian=yes ac_cv_c_char_unsigned=no -ac_cv_sizeof_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_char_p=4 -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_unsigned_int=4 path=`dirname $ac_site_file` # now allow package-specific architecture-independent values to be set diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.mipsel dpkg-cross-2.6.15/config/cross-config.mipsel --- dpkg-cross-2.6.15/config/cross-config.mipsel 2009-02-10 22:04:18.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.mipsel 2020-05-03 10:08:48.000000000 +0200 @@ -5,12 +5,6 @@ # ac_cv_c_bigendian=no ac_cv_c_char_unsigned=no -ac_cv_sizeof_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_char_p=4 -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_unsigned_int=4 path=`dirname $ac_site_file` # now allow package-specific architecture-independent values to be set diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.powerpc dpkg-cross-2.6.15/config/cross-config.powerpc --- dpkg-cross-2.6.15/config/cross-config.powerpc 2009-02-10 17:51:19.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.powerpc 2020-05-03 10:08:36.000000000 +0200 @@ -9,18 +9,6 @@ # ac_cv_c_bigendian=yes ac_cv_c_char_unsigned=yes -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_long=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_float=4 -ac_cv_sizeof_double=8 # for glib2.0 if [ "$PACKAGE" = "glib2.0" -o "$PACKAGE_NAME" = "glib2.0" ]; then diff --minimal -Nru dpkg-cross-2.6.15/config/cross-config.sh dpkg-cross-2.6.15/config/cross-config.sh --- dpkg-cross-2.6.15/config/cross-config.sh 2015-01-22 20:18:13.000000000 +0100 +++ dpkg-cross-2.6.15/config/cross-config.sh 2020-05-03 10:08:11.000000000 +0200 @@ -6,21 +6,6 @@ ac_cv_func_setpgrp_void=yes ac_cv_prog_cc_cross=yes ac_cv_search_clock_gettime=no -ac_cv_sizeof_char=1 -ac_cv_sizeof_double=8 -ac_cv_sizeof_float=4 -ac_cv_sizeof_int=4 -ac_cv_sizeof_long=4 -ac_cv_sizeof_long_double=12 -ac_cv_sizeof_long_long=8 -ac_cv_sizeof_short=2 -ac_cv_sizeof_signed_char=1 -ac_cv_sizeof_unsigned_int=4 -ac_cv_sizeof_unsigned_long=4 -ac_cv_sizeof_unsigned_long_long=8 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_unsigned_short=2 -ac_cv_sizeof_void_p=4 # DB2, DB3 db_cv_alignp_t=int db_cv_fcntl_f_setfd=yes diff --minimal -Nru dpkg-cross-2.6.15/debian/changelog dpkg-cross-2.6.15/debian/changelog --- dpkg-cross-2.6.15/debian/changelog 2019-05-26 23:33:37.000000000 +0200 +++ dpkg-cross-2.6.15/debian/changelog 2020-05-03 10:09:29.000000000 +0200 @@ -1,3 +1,11 @@ +dpkg-cross (2.6.15-3.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove all ac_cv_sizeof_* variables. (Closes: #-1) + Thanks to Jessica Clarke for identifying the gcc-V FTCBFS cause. + + -- Helmut Grohne <[email protected]> Sun, 03 May 2020 10:09:29 +0200 + dpkg-cross (2.6.15-3) unstable; urgency=medium [ Helmut Grohne ]

