Skip to content

Dynamic linking: emscripten_get_now.sig is undefined #17106

@hoodmane

Description

@hoodmane

I am running into the following issue when building the cryptography PyO3 module:

RuntimeError: abort(Assertion failed: bad export type for `_emscripten_get_now`: undefined). Build with -s ASSERTIONS=1 for more info.
    at abort (http://127.0.0.1:32797/pyodide.asm.js:10:234384)
    at assert (http://127.0.0.1:32797/pyodide.asm.js:10:224838)
    at Object.reportUndefinedSymbols (http://127.0.0.1:32797/pyodide.asm.js:10:319214)

wasm-objdump shows that we are trying to import emscripten_get_now:

$ cryptography_rust.so -j Import -x | grep emscripten_get_now
 - func[62] sig=57 <env._emscripten_get_now> <- env._emscripten_get_now
 - global[57] i32 mutable=1 <- GOT.func._emscripten_get_now

but resolveGlobalSymbol("emscripten_get_now") returns undefined and so we get an error from reportUndefinedSymbols.

Adding the lines

Module["__emscripten_get_now"] = Module["_emscripten_get_now"];
Module["__emscripten_get_now"].sig = "d";

fixes the problem.

cf pyodide/pyodide#2378

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions