From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Subject: bug#36882: Qemu 4.2.0 build for x86_64-linux fails Date: Sun, 23 Feb 2020 12:32:21 +0100 Message-ID: <87o8tptu7u.fsf@gnu.org> References: <87k14gnqng.fsf@gmail.com> <87mu9b3crd.fsf@gnu.org> <87a75a5taw.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:59627) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j5pVQ-0001Gs-Gb for bug-guix@gnu.org; Sun, 23 Feb 2020 06:33:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j5pVO-0003X3-F5 for bug-guix@gnu.org; Sun, 23 Feb 2020 06:33:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:44473) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j5pVO-0003Wy-C4 for bug-guix@gnu.org; Sun, 23 Feb 2020 06:33:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1j5pVO-0002Ve-8k for bug-guix@gnu.org; Sun, 23 Feb 2020 06:33:02 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87a75a5taw.fsf@gmail.com> (Mathieu Othacehe's message of "Sat, 22 Feb 2020 20:13:43 +0100") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane-mx.org@gnu.org Sender: "bug-Guix" To: Mathieu Othacehe Cc: 36882@debbugs.gnu.org Hi Mathieu, Mathieu Othacehe skribis: > On master, when building qemu, this is the gcc include path (obtained > with "gcc -v -x c -E /dev/null"): > > /gnu/store/adm2cx3ayabn1sp84nnjsk0672m800ip-flex-2.6.4/include > /gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6/include > ... > /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/gcc/x86_64= -unknown-linux-gnu/7.4.0/include [1] > /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/gcc/x86_64= -unknown-linux-gnu/7.4.0/include-fixed > /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/include [2] > > > We see that glibc comes last. So when building a program with "gcc > -ffreestanding -m16", the first header picked is the one from > gcc (marked [1] above). This header contains: > > #ifndef _GCC_WRAP_STDINT_H > #if __STDC_HOSTED__ <-- Set to 0 because of -ffreestanding option. > # if defined __cplusplus && __cplusplus >=3D 201103L > # undef __STDC_LIMIT_MACROS > # define __STDC_LIMIT_MACROS > # undef __STDC_CONSTANT_MACROS > # define __STDC_CONSTANT_MACROS > # endif > # include_next > #else > # include "stdint-gcc.h" <-- This one gets included. > #endif > #define _GCC_WRAP_STDINT_H > #endif > > > So the from glibc (marked [2] above) is neved included. And > that's good because this header would try to include > that our glibc does not provide. [...] > Now, what's happening on core-updates? Because of CPATH -> > C_INCLUDE_PATH transition, we have a different behaviour. The same > command as above states: > > ignoring duplicate directory "/gnu/store/jsjsczgr8xdnbdminl7lm2v56b7dq7lq= -glibc-2.31/include" > ... > /gnu/store/kyypmcn2miyzllqqmcx28gvj89qnvhpi-flex-2.6.4/include > ... > /gnu/store/jsjsczgr8xdnbdminl7lm2v56b7dq7lq-glibc-2.31/include [1] > ... > /gnu/store/wl7zanqf0s9bfppggmv8qxqan71fjfw8-gcc-7.5.0-lib/lib/gcc/x86_64= -unknown-linux-gnu/7.5.0/include [2] > /gnu/store/wl7zanqf0s9bfppggmv8qxqan71fjfw8-gcc-7.5.0-lib/lib/gcc/x86_64= -unknown-linux-gnu/7.5.0/include-fixed > > The glibc ignored seems to be the hardcoded one. The one from the > C_INCLUDE_PATH is kept. So the included is the one from glibc > (marked [1] above), which triggers inclusion and makes > build fail. Woow, thanks for the analysis. It=E2=80=99s a bug on =E2=80=98core-updates=E2=80=99 that GCC=E2=80=99s hea= ders come after libc=E2=80=99s. This is what should be fixed IMO. So is it expected that C_INCLUDE_PATH comes before the hard-coded GCC include directory? How can we work around that? Thanks! Ludo=E2=80=99.