Skip to content

Ports libpng and libfreetype uses emscripten_longjmp (-s SUPPORT_LONGJMP=wasm) #19001

Closed
@codeart1st

Description

@codeart1st

Version of emscripten/emsdk:
emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.34 (57b21b8)
clang version 17.0.0 (https://github.com/llvm/llvm-project a031f72187ce495b9faa4ccf99b1e901a3872f4b)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /emsdk/upstream/bin

Failing command line in full:

warning: undefined symbol: emscripten_longjmp (referenced by top-level compiled C/C++ code)
emcc: warning: warnings in JS library compilation [-Wjs-compiler]
Traceback (most recent call last):
  File "/emsdk/upstream/emscripten/emcc.py", line 4420, in <module>
    sys.exit(main(sys.argv))
  File "/usr/lib/python3.10/contextlib.py", line 79, in inner
    return func(*args, **kwds)
  File "/emsdk/upstream/emscripten/emcc.py", line 4413, in main
    ret = run(args)
  File "/emsdk/upstream/emscripten/emcc.py", line 1358, in run
    phase_post_link(options, state, wasm_target, wasm_target, target)
  File "/usr/lib/python3.10/contextlib.py", line 79, in inner
    return func(*args, **kwds)
  File "/emsdk/upstream/emscripten/emcc.py", line 3124, in phase_post_link
    phase_emscript(options, in_wasm, wasm_target, memfile)
  File "/usr/lib/python3.10/contextlib.py", line 79, in inner
    return func(*args, **kwds)
  File "/emsdk/upstream/emscripten/emcc.py", line 3151, in phase_emscript
    emscripten.run(in_wasm, wasm_target, final_js, memfile)
  File "/emsdk/upstream/emscripten/emscripten.py", line 945, in run
    emscript(in_wasm, out_wasm, outfile_js, memfile)
  File "/emsdk/upstream/emscripten/emscripten.py", line 433, in emscript
    module = create_module(receiving, metadata, forwarded_json['librarySymbols'])
  File "/emsdk/upstream/emscripten/emscripten.py", line 831, in create_module
    assert not metadata.invokeFuncs, "invoke_ functions exported but exceptions and longjmp are both disabled"
AssertionError: invoke_ functions exported but exceptions and longjmp are both disabled

Full link command and output with -v appended:

/emsdk/upstream/emscripten/emcc -O2 -fwasm-exceptions -s USE_ZLIB=1 -s USE_FREETYPE=1 -s USE_LIBPNG=1 -s USE_LIBJPEG=1 -s ENVIRONMENT='worker' -s MODULARIZE=1 -s ALLOW_MEMORY_GROWTH=1 -s 'EXPORTED_RUNTIME_METHODS=["cwrap", "FS"]' -s ERROR_ON_UNDEFINED_SYMBOLS=0 -lworkerfs.js [...]

The ports for libpng and libfreetype are use emscripten_longjmp. Is there a simple way to modify this behavior? Can i pass -s SUPPORT_LONGJMP=wasm to port build?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions