From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/10663 Path: news.gmane.org!.POSTED!not-for-mail From: Laine Gholson Newsgroups: gmane.linux.lib.musl.general Subject: Re: Unable to build with --enable-shared Date: Sun, 23 Oct 2016 19:19:02 -0500 Message-ID: <05a838e1-ef3e-291e-5ddd-3867beed8653@gmail.com> References: <20161022215829.GA5749@port70.net> <20161023161708.GB19318@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1477268379 3574 195.159.176.226 (24 Oct 2016 00:19:39 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 24 Oct 2016 00:19:39 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux armv7l; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 To: musl@lists.openwall.com Original-X-From: musl-return-10676-gllmg-musl=m.gmane.org@lists.openwall.com Mon Oct 24 02:19:35 2016 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1bySz0-0006b3-Mz for gllmg-musl@m.gmane.org; Mon, 24 Oct 2016 02:19:18 +0200 Original-Received: (qmail 25602 invoked by uid 550); 24 Oct 2016 00:19:19 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 24560 invoked from network); 24 Oct 2016 00:19:18 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=Pzn1d+fx5mPyar5LDjBiT1/IG4uMya637Savtv2blJQ=; b=HSvY6ozweOEzIS4S2AfDaqVK1YOdRRpbksqsqRGCM4lfYwwSAhwSPrzrc8NplOEZTT e65Soaj0umcRIKjfhNcLj2eGIK2LRgGXOCrJ5XZneUxJrLCaAo4XqEkFtcwcSSe6PMJM OMnmgdTiOZRU5I/S/5Xq6AF79qj9f9hIpiNSX1xOAML8DCCgw1WcfYK4QXPI2vv/Q9bX FwuZBPwQs6omyM61IUVyxEDvxK5zevC9S7tss+BAosCB5645boBbZ2k2zmbZhbkXNU4G tYRDW4Pldf96/8DqMRAdoFzALgFMJKKw3XzKcWE4sNI8xiHB7Fv+7iLYVXxWspRkLtOi IJeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=Pzn1d+fx5mPyar5LDjBiT1/IG4uMya637Savtv2blJQ=; b=DZuEft1fvf8zrAWSRzK8qnhjrzU+LORPMSX/Z6189gbZfC16W/81i1RuUedRxevkHu BJCXN+eOGmcoPlIBO7LD0ET2atze4V7pHZYzQZ0mvUb/SFTfAtAcq6inszRL+cUaqyEI +WGVUEdAFsjoerIWIkgSl/806NAyZkU1cD/fIWLBmScpF+muYnBsfTTyNprqkoxydLM1 j6tavYUcVOHUFkyeqLg5iAXDkA1zZaTyhEbPJhm30OkCo3XgF/XsrLmbTfHE9EaSjzBX OEZrHuJMMhCLLEmsbYJIyBtIFzhz+jNO5wYsa1BFWy8eXzWE4/JmQumU4ycQFFzeTje5 rKCw== X-Gm-Message-State: ABUngveH3M7RQSVIl5OQNGbjaYVmh90ID5iLj+yrHywGqh1sPJOcfRhLmzSYULlWbjLVOw== X-Received: by 10.36.30.204 with SMTP id 195mr550220itt.90.1477268346310; Sun, 23 Oct 2016 17:19:06 -0700 (PDT) In-Reply-To: Xref: news.gmane.org gmane.linux.lib.musl.general:10663 Archived-At: I suggest that you put '-B/usr/local/bin/x86_64-pc-linux-gnu', in $CC, because it is needed for the C compiler to run correctly, e.g CC="x86_64-pc-linux-gnu-gcc -B/usr/local/bin/x86_64-pc-linux-gnu", and that will work fine with the current configure script. On 10/23/16 17:20, Samuel Sadok wrote: > 2016-10-23 18:17 GMT+02:00 Rich Felker : >> On Sun, Oct 23, 2016 at 02:22:28AM +0200, Samuel Sadok wrote: >>> 2016-10-22 23:58 GMT+02:00 Szabolcs Nagy : >>>> * Samuel Sadok [2016-10-22 22:37:46 +0200]: >>>>> I am unable to build musl with --enable-shared. Multiple issues in >>>>> unrelated projects (e.g. here: https://bugs.swift.org/browse/SR-1023) >>>>> suggest that the culprit is a change in behaviour between binutils >>>>> 2.25 and 2.26. >>>>> >>>> >>>> that bug is different, that's about object symbols >>>> >>>> (swift seems to misuse protected visibility objects, >>>> and instead of fixing the problem they switched to the >>>> gold linker which does not yet have the bfd linker fix, >>>> such incompetence is frustrating.. however the issue >>>> does not affect musl: we don't mark objects protected >>>> to avoid issues with broken toolchains.) >>> >>> That's precisely why I'm trying to get away from Apple. >>> >>>> >>>>> $ make >>>>> [...] >>>>> x86_64-pc-linux-gnu-gcc -D_XOPEN_SOURCE=700 -I./arch/x86_64 >>>>> -I./arch/generic -Iobj/src/internal -I./src/internal -Iobj/include >>>>> -I./include -include vis.h -B/usr/local/bin/x86_64-pc-linux-gnu- >>>>> -fPIC -c -o obj/src/process/posix_spawn.lo src/process/posix_spawn.c >>>> >>>> some flags are missing here.. e.g. freestanding flags >>> >>> Thanks for the pointer, that turned out to be the problem. >>> >>> I should mention that I am cross-compiling from macOS. Since I had a >>> Linux VM flying around, I tried to build musl there (success) and >>> compared the logs. >>> Looking at config.mak, there apparently was a serious misconfiguration: >>> >>> config.mak on the cross-build system (macOS): >>> >>> CFLAGS_AUTO = -include vis.h >>> CFLAGS_C99FSE = >>> CFLAGS_MEMOPS = >>> CFLAGS_NOSSP = >>> LDFLAGS_AUTO = >>> LIBCC = >> >> This probably indicates something is wrong with your cross toolchain; >> even if you manually fix config.mak, I would be concerned that >> something might have been built wrong. What cross toolchain are you >> using and how was it setup? How did you invoke configure? >> >> Rich > > I managed to track down the problem. > > I'm using a cross-toolchain I built from source with a slight > misconfiguration. Specifically, I must tell it where it is > (-B/usr/local/bin/x86_64-pc-linux-gnu-), otherwise it uses the > (incompatible) default linker. > > Now when the configure script checks whether some flag is working, it > forgets to pass the user-defined $CFLAGS to the compiler, which then > fails: > > tryflag () { > printf "checking whether compiler accepts %s... " "$2" > echo "typedef int x;" > "$tmpc" > if $CC $CFLAGS_TRY $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then > [...] > > Thus, we end up with no flags at all. > > Even though I'm aware that my setup is quite non-standard, I would > consider this a bug in the configure script. I appended a patch that > fixes the problem in all places where I spotted it. Using this patch I > am able to configure and build musl as expected. > Does this seem reasonable to you? > > > > From 084678f6c93ed0bf305ea0fbb35a33810c4c9ccc Mon Sep 17 00:00:00 2001 > From: Samuel Sadok > Date: Mon, 24 Oct 2016 00:10:04 +0200 > Subject: [PATCH] Pass CFLAGS to compiler under all circumstances in configure > script > > --- > configure | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/configure b/configure > index 707eb12..c1466ce 100755 > --- a/configure > +++ b/configure > @@ -72,7 +72,7 @@ echo "typedef int x;" > "$tmpc" > echo "#if $1" >> "$tmpc" > echo "#error yes" >> "$tmpc" > echo "#endif" >> "$tmpc" > -if $CC $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then > +if $CC $CFLAGS $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then > printf "false\n" > return 1 > else > @@ -84,7 +84,7 @@ fi > tryflag () { > printf "checking whether compiler accepts %s... " "$2" > echo "typedef int x;" > "$tmpc" > -if $CC $CFLAGS_TRY $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then > +if $CC $CFLAGS $CFLAGS_TRY $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then > printf "yes\n" > eval "$1=\"\${$1} \$2\"" > eval "$1=\${$1# }" > @@ -98,7 +98,7 @@ fi > tryldflag () { > printf "checking whether linker accepts %s... " "$2" > echo "typedef int x;" > "$tmpc" > -if $CC $LDFLAGS_TRY -nostdlib -shared "$2" -o /dev/null "$tmpc" >> /dev/null 2>&1 ; then > +if $CC $CFLAGS $LDFLAGS_TRY -nostdlib -shared "$2" -o /dev/null > "$tmpc" >/dev/null 2>&1 ; then > printf "yes\n" > eval "$1=\"\${$1} \$2\"" > eval "$1=\${$1# }" > @@ -275,7 +275,7 @@ echo "#if ! __GLIBC__" >> "$tmpc" > echo "#error no" >> "$tmpc" > echo "#endif" >> "$tmpc" > printf "checking for toolchain wrapper to build... " > -if test "$wrapper" = auto && ! $CC -c -o /dev/null "$tmpc" >/dev/null > 2>&1 ; then > +if test "$wrapper" = auto && ! $CC $CFLAGS -c -o /dev/null "$tmpc" >> /dev/null 2>&1 ; then > echo "none" > elif test "$cc_family" = gcc ; then > gcc_wrapper=yes > @@ -303,7 +303,7 @@ fi > # Find the target architecture > # > printf "checking target system type... " > -test -n "$target" || target=$($CC -dumpmachine 2>/dev/null) || target=unknown > +test -n "$target" || target=$($CC $CFLAGS -dumpmachine 2>/dev/null) > || target=unknown > printf "%s\n" "$target" > > # > @@ -397,7 +397,7 @@ test "$debug" = yes && CFLAGS_AUTO=-g > printf "checking whether we should preprocess assembly to add > debugging information... " > if fnmatch '-g*|*\ -g*' "$CFLAGS_AUTO $CFLAGS" && > test -f "tools/add-cfi.$ARCH.awk" && > - printf ".file 1 \"srcfile.s\"\n.line > 1\n.cfi_startproc\n.cfi_endproc" | $CC -g -x assembler -c -o /dev/null > 2>/dev/null - > + printf ".file 1 \"srcfile.s\"\n.line > 1\n.cfi_startproc\n.cfi_endproc" | $CC $CFLAGS -g -x assembler -c -o > /dev/null 2>/dev/null - > then > ADD_CFI=yes > else > @@ -588,7 +588,7 @@ tryldflag LDFLAGS_AUTO -Wl,-Bsymbolic-functions > # Find compiler runtime library > test -z "$LIBCC" && tryldflag LIBCC -lgcc && tryldflag LIBCC -lgcc_eh > test -z "$LIBCC" && tryldflag LIBCC -lcompiler_rt > -test -z "$LIBCC" && try_libcc=`$CC -print-file-name=libpcc.a 2>/dev/null` \ > +test -z "$LIBCC" && try_libcc=`$CC $CFLAGS -print-file-name=libpcc.a > 2>/dev/null` \ > && tryldflag LIBCC "$try_libcc" > printf "using compiler runtime libraries: %s\n" "$LIBCC" > > @@ -719,6 +719,7 @@ printf "creating config.mak... " > cmdline=$(quote "$0") > for i ; do cmdline="$cmdline $(quote "$i")" ; done > > + > exec 3>&1 1>config.mak > >