|
Message-ID: <20121108224032.GY20323@brightrain.aerifal.cx> Date: Thu, 8 Nov 2012 17:40:32 -0500 From: Rich Felker <dalias@...ifal.cx> To: musl@...ts.openwall.com Subject: Re: [ANN] sabotage 0.9.7 milestone (x86[_64]) release On Thu, Nov 08, 2012 at 02:29:49PM -0800, Isaac Dunham wrote: > On Wed, 7 Nov 2012 20:31:04 -0500 > Rich Felker <dalias@...ifal.cx> wrote: > > > > > > > > Is there a reason Opera would not work with this release? Its only > > > > > external dependencies are X11 and freetype/fontconfig. > > > > > > > > And glibc. > > And libstdc++. If it's using a shared libstdc++, then it would either need to be run with a different library path pointing at the glibc libstdc++.so, or musl will need to provide a sufficiently compatible ABI, in the C++ sense, for the musl-built libstdc++ to satisfy the needs of a glibc-linked binary. > > I'm not clear on whether any of the issues affect Opera, but for such > > a large program I'd be fairly surprised if they don't (albeit happily > > surprised, of course). > Here's what I got (using a somewhat out-of-date libc.so; I know at > least one function has since been added, but this gives a general > idea of the scope): > $ /opt/musl/lib/libc.so lib/opera/opera > Error relocating /usr/lib/libstdc++.so.6: __nl_langinfo_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __strftime_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: strtold_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __wctype_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __wcsftime_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __towupper_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __strxfrm_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __strtod_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __wcsxfrm_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __uselocale: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __freelocale: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __strcoll_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __towlower_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __iswctype_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __strtof_l: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __duplocale: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __newlocale: symbol not found > Error relocating /usr/lib/libstdc++.so.6: __wcscoll_l: symbol not found All of these would be fixed if we could use a musl-built libstdc++.so instead of the glibc-built one. > Error relocating /lib/libgcc_s.so.1: dl_iterate_phdr: symbol not found Fixed. > Error relocating lib/opera/opera: __pthread_register_cancel: symbol not found Interesting. I had not really thought about what could be done to satisfy the glibc thread-cancellation ABI. For musl-linked programs, we use the ancient (glibc 2.1 era) cancellation push/pop functions which are much cleaner and don't need special GCC hacks. But there should be some way to provide at least an ABI layer for the glibc way. > Error relocating lib/opera/opera: memmem: symbol not found Also fixed; we have memmem now. > Error relocating lib/opera/opera: __res_ninit: symbol not found This could probably be stubbed out. musl's resolver is completely stateless. > Error relocating lib/opera/opera: __pthread_unregister_cancel: symbol not found > Error relocating lib/opera/opera: qsort_r: symbol not found Should be easy to add. > Error relocating lib/opera/opera: __sigsetjmp: symbol not found This is just another symbol alias. Rich
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.