Date: Sat, 30 Jan 2021 15:12:31 -0500 From: Rich Felker <dalias@...c.org> To: Jiahao XU <Jiahao_XU@...look.com> Cc: "musl@...ts.openwall.com" <musl@...ts.openwall.com> Subject: Re: Can’t build musl with lto=thin On Fri, Jan 29, 2021 at 12:19:42PM +0000, Jiahao XU wrote: > musl-1.2.2 compilation with clang-11 failed to build libc.so at the final linking stage: > > ld.lld: error: undefined hidden symbol: __dls2 > >>> referenced by ld-temp.o > >>> lto.tmp:(_dlstart_c) > >>> did you mean: __dls3 > >>> defined in: lto.tmp > > I am using CFLAGS=‘-march=native -mtune=native -Oz -flto > -fmerge-all-constants -fomit-frame-pointer’ and LDFLAGS=‘-flto ^^^^^^^^^^^^^^^^^^^^^ The -fmerge-all-constants option gives non-conforming language semantics and should not be used, but that's a separate issue. > -fuse-ld=lld -Wl,—plugin-opt=O3,-O3,—icf=safe’. > No configure option is supplied. Otherwise, it's a known issue that LTO misses references from asm (both top-level and in functions). I think dlstart.lo and a few other files should just be built with LTO disabled; any LTO-type optimization in code that runs at this stage is inherently invalid, anyway. So something like (in config.mak): obj/ldso/dlstart.lo: CFLAGS_ALL += -fno-lto 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.