NetBSD Problem Report #47955
From mlelstv@serpens.de Sun Jun 23 05:42:48 2013
Return-Path: <mlelstv@serpens.de>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
(Client CN "mail.NetBSD.org", Issuer "Postmaster NetBSD.org" (verified OK))
by mollari.NetBSD.org (Postfix) with ESMTPS id D9ABF715B8
for <gnats-bugs@gnats.NetBSD.org>; Sun, 23 Jun 2013 05:42:48 +0000 (UTC)
Message-Id: <201306230542.r5N5gRpb024762@serpens.de>
Date: Sun, 23 Jun 2013 07:42:28 +0200 (MEST)
From: mlelstv@serpens.de
Reply-To: mlelstv@serpens.de
To: gnats-bugs@NetBSD.org
Subject: toolchain issues with glib2
X-Send-Pr-Version: 3.95
>Number: 47955
>Category: toolchain
>Synopsis: toolchain issues with glib2
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: mrg
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Jun 23 05:45:00 +0000 2013
>Closed-Date: Mon Oct 07 03:40:17 +0000 2013
>Last-Modified: Mon Oct 07 03:40:17 +0000 2013
>Originator: Michael van Elst
>Release: NetBSD 6.99.19
>Organization:
>Environment:
System: NetBSD twitty 6.99.19 NetBSD 6.99.19 (TWITTY) #1: Wed May 22 19:52:07 CEST 2013 mlelstv@pussyfoot:/home/netbsd-current/obj.evbarm/home/netbsd-current/src/sys/arch/evbarm/compile/TWITTY evbarm
Architecture: earm
Machine: evbarm
>Description:
Trying to build the package devel/glib2 on an evbarm EABI system
results in the following error:
| ld --eh-frame-hdr -X -m armelf_nbsd_eabi -dc -dp -e __start -dynamic-linker /usr/libexec/ld.elf_so -o .libs/gobject-query /usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/pkgwrk/devel/glib2/work.twitty/glib-2.36.3/gobject/.libs -L/usr/pkgwrk/devel/glib2/work.twitty/glib-2.36.3/glib/.libs -L/usr/pkgwrk/devel/glib2/work.twitty/.buildlink/lib -v -R/usr/pkg/lib gobject-query.o -rpath /usr/pkg/lib -lgobject-2.0 -lffi -lglib-2.0 -lpcre -lintl -lgcc -lpthread -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
| GNU ld (NetBSD Binutils nb1) 2.21.1
| /usr/pkgwrk/devel/glib2/work.twitty/.buildlink/lib/libffi.so: undefined reference to `__aeabi_unwind_cpp_pr1'
This is caused by libgcc.a not providing the unwind functions. Those are
only in libgcc_eh.a, but the compiler doesn't select it for linking.
The compiler (gcc4.5.4) doesn't select it for linking, because that's
not defined in the spec file. If you look at 'gcc -dumpsepcs' output
you only find:
*libgcc:
-lgcc
The more interesting part however is, that the specs for x86_64 show
the same:
*libgcc:
-lgcc
but somehow building glib2 does not fail for x86_64. The reason probably
is that the unwind functions for x86_64 exist in libgcc and libgcc_eh.
pussyfoot: {47} uname -a
NetBSD pussyfoot 6.99.19 NetBSD 6.99.19 (PUSSYFOOT) #1: Wed May 1 10:30:36 CEST 2013 mlelstv@pussyfoot:/home/netbsd-current/obj.amd64/home/netbsd-current/src/sys/arch/amd64/compile/PUSSYFOOT amd64
pussyfoot: {44} nm /usr/lib/libgcc.a | grep Unwind_Backtrace
00000000000022ae T _Unwind_Backtrace
pussyfoot: {45} nm /usr/lib/libgcc_eh.a | grep Unwind_Backtrace
00000000000022ae T _Unwind_Backtrace
Looking at an older arch/amiga system with gcc4.1.3 you find that
libgcc and libgcc_eh are different, only libgcc_eh provides the
unwind functions.
serpens% uname -a
NetBSD serpens.de 5.0_STABLE NetBSD 5.0_STABLE (SERPENS) #0: Sun Nov 1 23:35:16 CET 2009 spz@aquila:/home/netbsd/src5/src/sys/arch/amiga/compile/obj/SERPENS amiga
serpens% nm /usr/lib/libgcc.a | grep -i Unwind_Backtrace
serpens% nm /usr/lib/libgcc_eh.a | grep -i Unwind_Backtrace
00001644 T _Unwind_Backtrace
But here the specs tell the compiler what to do:
*libgcc:
%{static: -lgcc -lgcc_eh}%{static-libgcc: %{!shared:-lgcc -lgcc_eh}%{shared:-lgc
c_pic -lgcc_eh_pic}}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc
-lgcc_eh}%{shared-libgcc:-lgcc_s -lgcc}}%{shared:%{shared-libgcc:-lgcc_s} -lgcc_
pic}}}
It could be that gcc4.5.4 dropped the spec-file mechanics and requires
libgcc to include the unwind functions, then we build or libgcc wrong
for some archs.
Or what I find more likely is, that we build bad specs and libgcc
on x86_64 is built wrong to compensate.
>How-To-Repeat:
Try to build devel/glib2 on an evbarm EABI system.
>Fix:
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: toolchain-manager->mrg
Responsible-Changed-By: mrg@NetBSD.org
Responsible-Changed-When: Fri, 28 Jun 2013 12:48:14 +0000
Responsible-Changed-Why:
i caused this i believe.
State-Changed-From-To: open->feedback
State-Changed-By: mrg@NetBSD.org
State-Changed-When: Fri, 28 Jun 2013 12:48:14 +0000
State-Changed-Why:
please try with the latest -current. i *think* i've fixed this, but
i didn't setup a system to test.
From: "matthew green" <mrg@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/47955 CVS commit: src/external/gpl3/gcc
Date: Fri, 28 Jun 2013 12:45:04 +0000
Module Name: src
Committed By: mrg
Date: Fri Jun 28 12:45:03 UTC 2013
Modified Files:
src/external/gpl3/gcc/lib/crtstuff/arch: alpha.mk arm.mk armeb.mk
earm.mk earmeb.mk earmhf.mk earmhfeb.mk hppa.mk i386.mk m68000.mk
m68k.mk mips64eb.mk mips64el.mk mipseb.mk mipsel.mk powerpc.mk
sh3eb.mk sh3el.mk sparc.mk sparc64.mk vax.mk x86_64.mk
src/external/gpl3/gcc/lib/libgcc/arch: alpha.mk arm.mk armeb.mk earm.mk
earmeb.mk earmhf.mk earmhfeb.mk hppa.mk i386.mk m68000.mk m68k.mk
mips64eb.mk mips64el.mk mipseb.mk mipsel.mk powerpc.mk sh3eb.mk
sh3el.mk sparc.mk sparc64.mk vax.mk x86_64.mk
src/external/gpl3/gcc/lib/libiberty/arch/armeb: config.h
src/external/gpl3/gcc/lib/libstdc++-v3/arch/arm: c++config.h config.h
src/external/gpl3/gcc/lib/libstdc++-v3/arch/armeb: c++config.h config.h
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earm: c++config.h config.h
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb: c++config.h
config.h
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf: c++config.h
config.h
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb: c++config.h
config.h
src/external/gpl3/gcc/usr.bin/gcc/arch/alpha: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/arm: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/armeb: auto-host.h configargs.h
defs.mk tm.h
src/external/gpl3/gcc/usr.bin/gcc/arch/earm: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/earmeb: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/earmhf: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/hppa: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/i386: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/m68000: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/m68k: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/mips64eb: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/mips64el: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/mipseb: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/mipsel: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/powerpc: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/sh3eb: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/sh3el: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/sparc: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/sparc64: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/vax: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/gcc/arch/x86_64: configargs.h defs.mk
src/external/gpl3/gcc/usr.bin/libdecnumber/arch/armeb: config.h
Log Message:
re-run mknative-gcc. pickups fixes for ENABLE_SHARED (which
might want to be pulled up to netbsd-6?), removes the
entirely wrong -I/usr/include/libelf from various include flags
and fixes for when NEWCONFIGDIR != NETBSDSRCDIR.
i should fix PR 47955 but i haven't setup a system to test.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/gpl3/gcc/lib/crtstuff/arch/alpha.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/hppa.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/mips64eb.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/mips64el.mk
cvs rdiff -u -r1.3 -r1.4 src/external/gpl3/gcc/lib/crtstuff/arch/arm.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/armeb.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/earmeb.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/earmhf.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/m68000.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/m68k.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/mipseb.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/mipsel.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/powerpc.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/sh3eb.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/sh3el.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/sparc.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/sparc64.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/vax.mk
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/lib/crtstuff/arch/earm.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/i386.mk \
src/external/gpl3/gcc/lib/crtstuff/arch/x86_64.mk
cvs rdiff -u -r1.1 -r1.2 src/external/gpl3/gcc/lib/crtstuff/arch/earmhfeb.mk
cvs rdiff -u -r1.2 -r1.3 src/external/gpl3/gcc/lib/libgcc/arch/alpha.mk \
src/external/gpl3/gcc/lib/libgcc/arch/earmeb.mk \
src/external/gpl3/gcc/lib/libgcc/arch/hppa.mk \
src/external/gpl3/gcc/lib/libgcc/arch/mips64eb.mk \
src/external/gpl3/gcc/lib/libgcc/arch/mips64el.mk
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/gcc/lib/libgcc/arch/arm.mk
cvs rdiff -u -r1.5 -r1.6 src/external/gpl3/gcc/lib/libgcc/arch/armeb.mk \
src/external/gpl3/gcc/lib/libgcc/arch/m68000.mk
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/lib/libgcc/arch/earm.mk \
src/external/gpl3/gcc/lib/libgcc/arch/earmhf.mk \
src/external/gpl3/gcc/lib/libgcc/arch/powerpc.mk \
src/external/gpl3/gcc/lib/libgcc/arch/sh3eb.mk \
src/external/gpl3/gcc/lib/libgcc/arch/sh3el.mk
cvs rdiff -u -r1.1 -r1.2 src/external/gpl3/gcc/lib/libgcc/arch/earmhfeb.mk
cvs rdiff -u -r1.3 -r1.4 src/external/gpl3/gcc/lib/libgcc/arch/i386.mk \
src/external/gpl3/gcc/lib/libgcc/arch/m68k.mk \
src/external/gpl3/gcc/lib/libgcc/arch/mipseb.mk \
src/external/gpl3/gcc/lib/libgcc/arch/mipsel.mk \
src/external/gpl3/gcc/lib/libgcc/arch/sparc.mk \
src/external/gpl3/gcc/lib/libgcc/arch/sparc64.mk \
src/external/gpl3/gcc/lib/libgcc/arch/vax.mk \
src/external/gpl3/gcc/lib/libgcc/arch/x86_64.mk
cvs rdiff -u -r1.1 -r1.2 \
src/external/gpl3/gcc/lib/libiberty/arch/armeb/config.h
cvs rdiff -u -r1.8 -r1.9 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/arm/c++config.h
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/arm/config.h
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/c++config.h
cvs rdiff -u -r1.6 -r1.7 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/config.h
cvs rdiff -u -r1.5 -r1.6 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earm/c++config.h \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earm/config.h
cvs rdiff -u -r1.3 -r1.4 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/c++config.h \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/config.h
cvs rdiff -u -r1.3 -r1.4 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/c++config.h \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/config.h
cvs rdiff -u -r1.1 -r1.2 \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/c++config.h \
src/external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/config.h
cvs rdiff -u -r1.6 -r1.7 \
src/external/gpl3/gcc/usr.bin/gcc/arch/alpha/configargs.h
cvs rdiff -u -r1.3 -r1.4 src/external/gpl3/gcc/usr.bin/gcc/arch/alpha/defs.mk
cvs rdiff -u -r1.8 -r1.9 \
src/external/gpl3/gcc/usr.bin/gcc/arch/arm/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/arm/defs.mk
cvs rdiff -u -r1.2 -r1.3 \
src/external/gpl3/gcc/usr.bin/gcc/arch/armeb/auto-host.h
cvs rdiff -u -r1.8 -r1.9 \
src/external/gpl3/gcc/usr.bin/gcc/arch/armeb/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/armeb/defs.mk
cvs rdiff -u -r1.1 -r1.2 src/external/gpl3/gcc/usr.bin/gcc/arch/armeb/tm.h
cvs rdiff -u -r1.6 -r1.7 \
src/external/gpl3/gcc/usr.bin/gcc/arch/earm/configargs.h
cvs rdiff -u -r1.3 -r1.4 src/external/gpl3/gcc/usr.bin/gcc/arch/earm/defs.mk
cvs rdiff -u -r1.2 -r1.3 \
src/external/gpl3/gcc/usr.bin/gcc/arch/earmeb/configargs.h \
src/external/gpl3/gcc/usr.bin/gcc/arch/earmeb/defs.mk
cvs rdiff -u -r1.3 -r1.4 \
src/external/gpl3/gcc/usr.bin/gcc/arch/earmhf/configargs.h \
src/external/gpl3/gcc/usr.bin/gcc/arch/earmhf/defs.mk
cvs rdiff -u -r1.1 -r1.2 \
src/external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/configargs.h \
src/external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/hppa/configargs.h
cvs rdiff -u -r1.3 -r1.4 src/external/gpl3/gcc/usr.bin/gcc/arch/hppa/defs.mk
cvs rdiff -u -r1.10 -r1.11 \
src/external/gpl3/gcc/usr.bin/gcc/arch/i386/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/i386/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/m68000/configargs.h
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/usr.bin/gcc/arch/m68000/defs.mk
cvs rdiff -u -r1.6 -r1.7 \
src/external/gpl3/gcc/usr.bin/gcc/arch/m68k/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/m68k/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/configargs.h
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mips64el/configargs.h
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mips64el/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mipseb/configargs.h
cvs rdiff -u -r1.5 -r1.6 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mipseb/defs.mk
cvs rdiff -u -r1.8 -r1.9 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mipsel/configargs.h
cvs rdiff -u -r1.5 -r1.6 \
src/external/gpl3/gcc/usr.bin/gcc/arch/mipsel/defs.mk
cvs rdiff -u -r1.12 -r1.13 \
src/external/gpl3/gcc/usr.bin/gcc/arch/powerpc/configargs.h
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/usr.bin/gcc/arch/powerpc/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/defs.mk
cvs rdiff -u -r1.9 -r1.10 \
src/external/gpl3/gcc/usr.bin/gcc/arch/sh3el/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/sh3el/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/sparc/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/sparc/defs.mk
cvs rdiff -u -r1.8 -r1.9 \
src/external/gpl3/gcc/usr.bin/gcc/arch/sparc64/configargs.h
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/usr.bin/gcc/arch/sparc64/defs.mk
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/usr.bin/gcc/arch/vax/configargs.h
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/usr.bin/gcc/arch/vax/defs.mk
cvs rdiff -u -r1.10 -r1.11 \
src/external/gpl3/gcc/usr.bin/gcc/arch/x86_64/configargs.h
cvs rdiff -u -r1.6 -r1.7 \
src/external/gpl3/gcc/usr.bin/gcc/arch/x86_64/defs.mk
cvs rdiff -u -r1.1 -r1.2 \
src/external/gpl3/gcc/usr.bin/libdecnumber/arch/armeb/config.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: Michael van Elst <mlelstv@serpens.de>
To: gnats-bugs@gnats.netbsd.org
Cc:
Subject: Re: toolchain/47955 toolchain issues with glib2
Date: Mon, 5 Aug 2013 08:10:03 +0200
With these changes, glib2 builds.
--
Michael van Elst
Internet: mlelstv@serpens.de
"A potential Snark may lurk in every tree."
State-Changed-From-To: feedback->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 07 Oct 2013 03:40:17 +0000
State-Changed-Why:
confirmed fixed
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.