Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 3 May 2016 13:39:43 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Cc: j-core@...ore.org
Subject: Re: musl-cross-make / litecross improvements

* Rich Felker <dalias@...c.org> [2016-05-03 00:48:36 -0400]:
> I've made a number of improvements and fixes to musl-cross-make which
> are in the upstream repo now, based on bug reports I got:
> 
> - Spurious dependency on flex (upstream's fault, worked around)
> - Spurious dependency on texinfo (ditto)

gcc assumes you want to install info files if BUILD_INFO
is set, which is set based on MAKEINFO, however you cannot
override that, because the configure script will find a
working makeinfo if there is one on the system anyway..

explicit gcc_cv_prog_makeinfo_modern=no solves this in gcc
directories. (the man pages are still installed)

possibly make -o info -o install-info -o install-man
can do this too (havent tested).

> - Ability to use pre-installed gmp/mpc/mpfr libs
> - Config examples for static linking, no-debug builds.

this is not enough:
COMMON_CONFIG += CFLAGS="-g0 -Os" CXXFLAGS="-g0 -Os" LDFLAGS="-s"

target libs still have the full debug path in them,
for that you also need:
COMMON_CONFIG += CFLAGS_FOR_TARGET="-g0 -Os" CXXFLAGS_FOR_TARGET="-g0 -Os" LDFLAGS_FOR_TARGET="-s"

however libgcc seems to be built specially and -g
is always passed there (after CFLAGS_FOR_TARGET),
but one can drop the build path prefix by
COMMON_CONFIG += --with-debug-prefix-map=$(PWD)=

musl is built differently (LDFLAGS is needed because of libgcc):
MUSL_CONFIG += --disable-debug LDFLAGS=-s

i'm not sure if it's a good idea distributing the
toolchain without debug info, but this is needed
if you want to avoid leaking the build path.
the abs build path is still present in all the .la
and .a files and in
lib/gcc/x86_64-linux-musl/5.2.0/install-tools/mkheaders.conf
for me the host lib path managed to get into
lib64/libcc1.so.0.0.0 (via rpath).

> 
> https://github.com/richfelker/musl-cross-make
> 
> A few things I still plan to add at some point:
> 
> - Support for GCC 6, maybe older GCC's too
> - Fixing configure bottlenecks with config.cache
> - Getting "make check" working
> - Automating multi-target builds
> - Automating building binary static-linked-vs-musl toolchains
> 
> Let me know if any major bugs/inconveniences remain that I should
> prioritize fixing.

the target libs are installed under lib64/,
i think the usr/ and lib64/ symlinks are useful
(so it can be used as rootfs without fiddling
with etc/ld-musl*.path).

i think
GCC_CONFIG += --disable-gnu-indirect-function
is important, otherwise libatomic will be broken.

gcc-6 will need
GCC_CONFIG += --disable-libmpx

and libstdc++ only uses vdso clock_gettime
with --enable-libstdcxx-time

View attachment "mcm.diff" of type "text/x-diff" (1140 bytes)

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.