Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 7 Jul 2012 11:54:08 -0400 (EDT)
From: idunham@...abit.com
To: musl@...ts.openwall.com
Subject: Re: Hello

> On Fri, 6 Jul 2012 16:14:17 -0700 (PDT)
> idunham@...abit.com wrote:
>
>> >> > gtk2 will not work that way, I checked. One library in chain
>> >> > requires libstdc++, libstdc++ defines 'unique' symbols (see
>> >> > manual page of binutils nm) which musl linker cannot handle.
>> >> > Additionally, there is much more missing symbols including
>> >> > missing functions. But plain X11 apps worked (I checked xfontsel
>> >> > and xlogo).
>> >>
>> >> Have you looked into building the apps/libs natively against musl
>> >> except for the nvidia binary blob, to see if the blob works under
>> >> that usage? I think that's a usage case that's a lot more
>> >> applicable to real-world usage of musl, and in fact it's probably
>> >> the first real reason anybody would be interested in having musl
>> >> work with code that was built against glibc...
>> The first step would probably be dropping a musl-compatible (generic,
>> not gnu-linux) libstdc++ into the test environment.
>
> Bootstrapping libstdc++ I think even more nightmarish than dealing with
> pkg-config or autohell, since this library is part of gcc. So I went in
> another way: I've taken my package cache and relinked gtk2 and pango,
> now they do not depend on libstdc++ (since they do not import things
> from that library. Why they were linked to it - is another open
> question.)
Apparently this wouldn't be ABI compatible (IE-don't bother trying), but
it isn't too hard:
apply the musl patches, then (if they don't already do this)
cd libstdc++-v3/os;  rm gnu-linux; cp generic gnu-linux; cd -

> After some dancing around undefined symbols I've got not-so-big list:
>
> __res_init(), __res_iclose(), inet_nsap_ntoa(), __res_maybe_init(),
> initstate_r(), random_r() and stuff related to pthread scheduling:
> pthread_setschedparam(), pthread_getschedparam().
>
> Since that gtk2 and it's stuff do not require libstdc++ to work I'll
> try to build them against musl.

>> Also, I often set up a chroot with musl and build under that.  If
>> you'd rather not build the whole chroot yourself, you can prepare a
>> chroot and follow the installation notes for converting a glibc-based
>> system, using the chroot environment instead of a full install (this
>> works well with Debian).
>> If you do this, make sure not to do a plain cp of the system
>> libraries; this would mess up the sonames, since lib*.so must be
>> symlinks to lib*.so.<version>.  It also really messes with ldconfig.
>
> Converting existing system maybe possible, but I will prefer to rebuild
> all the stuff from scratch with musl and (possibly in future) with
> different compiler(s) (I really tired from gcc/binutils, but there
> seems no any alternatives written in C and able to build major
> software like gtk2 and Linux kernel). Converting will be possible when
> musl will be binary compatible with glibc, but this is not primary
> goal. As a bonus, maybe. One issue here was that binary nvidia blob
> that can be needed even after rebuild on desktop, so missing interfaces
> were not big deal with it. Other things can be patched/recompiled.

Converting a system (as described in musl/INSTALL) does not mean replacing
libc; it means a parallel install of musl, move system libs out of the
default search path, then change gcc to use musl by default. It would work
 even with an ABI-incompatible libc, since you leave ld-linux alone.



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.