Btw Sam, with your last two PRs my sokol samples now build and run fine using the emsdk tot version.
Thanks for the quick fixes :) On Friday, 12 November 2021 at 16:48:40 UTC+1 [email protected] wrote: > On Fri, Nov 12, 2021 at 4:10 AM Floh <[email protected]> wrote: > >> Ah... that was simply the optimizer resolving the math code into a >> constant expression. Reproduction test cases incoming :) >> > > Yes, all these LTO issues related to LLVM creating references to symbols > during LTO that didn't exist prior. > > There has been an upstream LLVM issue open for a while now: > https://bugs.llvm.org/show_bug.cgi?id=44353 > > Hopefully this change is enough to address them: > https://github.com/emscripten-core/emscripten/pull/15497 > > cheers, > sam > > > >> On Friday, 12 November 2021 at 13:02:26 UTC+1 Floh wrote: >> >>> I started a github issue here: >>> https://github.com/emscripten-core/emscripten/issues/15506 >>> >>> ...unfortunately I haven't been able to create a simple reproducer yet, >>> building a simple test program which calls into one of the exp, exp2 or pow >>> functions appears to work, with or without lto. >>> >>> On Friday, 12 November 2021 at 12:23:09 UTC+1 Floh wrote: >>> >>>> > I suspect LTO is the culprit here. >>>> >>>> That's indeed the issue. Building without LTO works. I'll try to come >>>> up with a minimal reproducer, create a github ticket and then see if I can >>>> get your PR working with my local emsdk installation :) >>>> >>>> On Thursday, 11 November 2021 at 23:08:14 UTC+1 [email protected] wrote: >>>> >>>>> I think this should fix your issue: >>>>> https://github.com/emscripten-core/emscripten/pull/15497 >>>>> >>>>> On Thu, Nov 11, 2021 at 1:44 PM Sam Clegg <[email protected]> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Thu, Nov 11, 2021 at 4:46 AM Floh <[email protected]> wrote: >>>>>> >>>>>>> These are the related header/source pairs in MUSL, and it seems that >>>>>>> these are new (didn't exist in the stable SDK): >>>>>>> >>>>>>> >>>>>>> https://github.com/emscripten-core/emscripten/blob/main/system/lib/libc/musl/src/math/exp_data.h >>>>>>> >>>>>>> https://github.com/emscripten-core/emscripten/blob/main/system/lib/libc/musl/src/math/exp_data.c >>>>>>> >>>>>>> >>>>>>> https://github.com/emscripten-core/emscripten/blob/main/system/lib/libc/musl/src/math/exp2f_data.h >>>>>>> >>>>>>> https://github.com/emscripten-core/emscripten/blob/main/system/lib/libc/musl/src/math/exp2f_data.c >>>>>>> >>>>>>> When listing the libc.a symbols in the emscripten cache with llvm-nm >>>>>>> I can see the entry for exp_data but nothing for exp2f_data: >>>>>>> >>>>>>> exp_data.o: >>>>>>> -------- D __exp_data >>>>>>> >>>>>>> (which is doubly weird, why does exp_data produce a linker error >>>>>>> even though it's there, and why isn't exp2f_data anywhere to be found) >>>>>>> >>>>>>> ...anyway, that's how far I got :) >>>>>>> >>>>>> >>>>>> I suspect LTO is the culprit here. Does you non-LTO build work? >>>>>> >>>>>> I think these symbols can get generated at codegen time which can >>>>>> confuse LTO because it likes to know all the symbols needed before >>>>>> running >>>>>> the compiler/LTO. >>>>>> >>>>>> >>>>>> >>>>>>> On Thursday, 11 November 2021 at 12:57:06 UTC+1 Floh wrote: >>>>>>> >>>>>>>> PS: my other WASM projects appear to work fine (the home computer >>>>>>>> emulators here: https://floooh.github.io/tiny8bit/, and the Z80 >>>>>>>> and 6502 netlist simulations: >>>>>>>> https://floooh.github.io/visualz80remix/, >>>>>>>> https://floooh.github.io/visual6502remix/). >>>>>>>> >>>>>>>> On Thursday, 11 November 2021 at 12:02:12 UTC+1 Floh wrote: >>>>>>>> >>>>>>>>> I'm getting the following linker errors in my sokol-samples >>>>>>>>> project: >>>>>>>>> >>>>>>>>> 5x: >>>>>>>>> wasm-ld: error: >>>>>>>>> /...cache/sysroot/lib/wasm32-emscripten/lto/libc.a(exp2f_data.o): >>>>>>>>> undefined >>>>>>>>> symbol: __exp2f_data >>>>>>>>> >>>>>>>>> 8x: >>>>>>>>> wasm-ld: error: >>>>>>>>> /...cache/sysroot/lib/wasm32-emscripten/lto/libc.a(exp_data.o): >>>>>>>>> undefined >>>>>>>>> symbol: __exp_data >>>>>>>>> >>>>>>>>> Full wasm-ld command line: >>>>>>>>> >>>>>>>>> em++: error: >>>>>>>>> '/Users/floh/projects/fips-sdks/emsdk/upstream/bin/wasm-ld -o >>>>>>>>> /Users/floh/projects/fips-deploy/sokol-samples/sapp-webgl2-wasm-ninja-release/modplay-sapp.wasm >>>>>>>>> >>>>>>>>> sapp/CMakeFiles/modplay-sapp.dir/modplay-sapp.c.obj >>>>>>>>> libs/sokol/libsokol.a >>>>>>>>> fips-libmodplug_libmodplug/liblibmodplug.a >>>>>>>>> -L/Users/floh/projects/fips-sdks/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/lto >>>>>>>>> >>>>>>>>> -lGL-webgl2 -lal -lhtml5 -lstubs -lc -lcompiler_rt -lc++-noexcept >>>>>>>>> -lc++abi-noexcept -lemmalloc -lc_rt_wasm -lsockets -mllvm >>>>>>>>> -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj >>>>>>>>> -mllvm >>>>>>>>> -disable-lsr --import-undefined --strip-debug >>>>>>>>> --export-if-defined=main >>>>>>>>> --export-if-defined=stackSave --export-if-defined=stackRestore >>>>>>>>> --export-if-defined=stackAlloc --export-if-defined=__wasm_call_ctors >>>>>>>>> --export-if-defined=__errno_location --export-if-defined=malloc >>>>>>>>> --export-if-defined=free --export-if-defined=__start_em_asm >>>>>>>>> --export-if-defined=__stop_em_asm --export-table -z >>>>>>>>> stack-size=5242880 >>>>>>>>> --initial-memory=33554432 --no-entry --max-memory=2147483648 >>>>>>>>> <(214)%20748-3648> --global-base=1024' failed (returned 1) >>>>>>>>> >>>>>>>>> ...and the em++ command line: >>>>>>>>> >>>>>>>>> /Users/floh/projects/fips-sdks/emsdk/upstream/emscripten/em++ -s >>>>>>>>> DISABLE_EXCEPTION_CATCHING=1 -fno-exceptions -fno-rtti -std=c++11 >>>>>>>>> -fstrict-aliasing -Wall -Wno-multichar -Wextra -Wno-unknown-pragmas >>>>>>>>> -Wno-ignored-qualifiers -Wno-long-long -Wno-overloaded-virtual >>>>>>>>> -Wno-deprecated-writable-strings -Wno-unused-volatile-lvalue >>>>>>>>> -Wno-inconsistent-missing-override -Wno-warn-absolute-paths >>>>>>>>> -Wno-expansion-to-defined -flto -O3 -DNDEBUG -s >>>>>>>>> DISABLE_EXCEPTION_CATCHING=1 --memory-init-file 0 -s >>>>>>>>> INITIAL_MEMORY=33554432 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s >>>>>>>>> NO_EXIT_RUNTIME=1 -s ALLOW_MEMORY_GROWTH=1 -s USE_WEBGL2=1 -s >>>>>>>>> "MALLOC='emmalloc'" -s NO_FILESYSTEM=1 -s WASM=1 --shell-file >>>>>>>>> /Users/floh/projects/sokol-samples/webpage/shell.html -O3 -flto >>>>>>>>> --closure >>>>>>>>> 1 -s ASSERTIONS=0 sapp/CMakeFiles/modplay-sapp.dir/modplay-sapp.c.obj >>>>>>>>> -o >>>>>>>>> /Users/floh/projects/fips-deploy/sokol-samples/sapp-webgl2-wasm-ninja-release/modplay-sapp.html >>>>>>>>> >>>>>>>>> libs/sokol/libsokol.a fips-libmodplug_libmodplug/liblibmodplug.a >>>>>>>>> >>>>>>>>> Investigating now, I think the most likely culprit is libmodplug >>>>>>>>> (a MOD player library). >>>>>>>>> >>>>>>>>> Should I open a separate github ticket, or append this type of >>>>>>>>> feedback to the PR? >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> -Andre. >>>>>>>>> >>>>>>>>> On Wednesday, 10 November 2021 at 17:33:34 UTC+1 [email protected] >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Yesterday I landed the update to musl v1.2.2: >>>>>>>>>> https://github.com/emscripten-core/emscripten/pull/13006 >>>>>>>>>> >>>>>>>>>> This is a fairly large change so we decided that next emscripten >>>>>>>>>> release will bump the version 3.0.0. >>>>>>>>>> >>>>>>>>>> If you are interested in helping us test this new version >>>>>>>>>> before we release it it would be great if you could try installing >>>>>>>>>> the >>>>>>>>>> `tot` version of emsdk which now contains this new version musl >>>>>>>>>> (`./emsdk >>>>>>>>>> install tot`). We are keen to find and fix any issues that might >>>>>>>>>> arise from this change. >>>>>>>>>> >>>>>>>>>> cheers, >>>>>>>>>> sam >>>>>>>>>> >>>>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "emscripten-discuss" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected]. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/ff0f0683-9ed5-44b0-b0be-f51267863559n%40googlegroups.com >>>>>>> >>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/ff0f0683-9ed5-44b0-b0be-f51267863559n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/dc1badc0-77ea-4f08-85ba-40298631c025n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/emscripten-discuss/dc1badc0-77ea-4f08-85ba-40298631c025n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/581adbb2-c802-4f8d-a6f3-ef8c1c4d2fb3n%40googlegroups.com.
