Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 23 Oct 2016 02:22:28 +0200
From: Samuel Sadok <innovation-labs@...install.ch>
To: musl@...ts.openwall.com
Subject: Re: Unable to build with --enable-shared

2016-10-22 23:58 GMT+02:00 Szabolcs Nagy <nsz@...t70.net>:
> * Samuel Sadok <innovation-labs@...install.ch> [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 =

config.mak on Ubuntu:

CFLAGS_AUTO = -Os -pipe -fomit-frame-pointer -fno-unwind-tables
-fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections
-Werror=implicit-function-declaration -Werror=implicit-int
-Werror=pointer-sign -Werror=pointer-arith -include vis.h
CFLAGS_C99FSE = -std=c99 -nostdinc -ffreestanding
-fexcess-precision=standard -frounding-math -Wa,--noexecstack
CFLAGS_MEMOPS = -fno-tree-loop-distribute-patterns
CFLAGS_NOSSP = -fno-stack-protector
LDFLAGS_AUTO = -Wl,--sort-section,alignment -Wl,--sort-common
-Wl,--gc-sections -Wl,--hash-style=both -Wl,--no-undefined
-Wl,--exclude-libs=ALL -Wl,-Bsymbolic-functions
LIBCC = -lgcc -lgcc_eh

After adding the missing flags (except the seemingly unused -lgcc_eh),
the build succeeded on macOS.

I'm not sure if this can be fixed cleanly by passing appropriate
arguments to configure or if the script should be patched. My
experience with configure scripts is limited, but I will try to look
further into what went wrong exactly.

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.