emscripten-core / emscripten-core/emscripten

link error: undefined symbol of the EM_JS in EMSDK 3.1.28

Offen
#18,436 8 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C++
Sterne
27.6k
Forks
3.6k
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
125

Beschreibung

I have an EM_JS function defined in individual file and it works just fine before. But recently I upgraded EMSDK to 3.1.28, I received linking error: undefined symbol of the EM_JS function.

I have opened EMCC_DEBUG=1, and got following errors.

profiler:DEBUG: block "JS symbol generation" took 0.391 seconds

wasm-ld: error: CMakeFiles/PRJ_dir/Unity/unity_5_cxx.cxx.o: undefined symbol: THE_EM_JS

I checked the __em_js_xxx symbols existing in another unity_12_cxx.cxx.o file. Why the Binaryen failed to handle it?
How can I debug the Binaryen processing or maybe logs?

cc @sbc100 , any ideas?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den Link-Fehler in EMSDK 3.1.28 mit der gemeldeten EM_JS-Funktion zu reproduzieren, und untersuche anschließend die EMCC_DEBUG=1-Ausgabe rund um „JS symbol generation“ und den wasm-ld-Befehl. Vergleiche die __em_js_xxx-Symbole in unity_5_cxx.cxx.o und unity_12_cxx.cxx.o; die Aufgabe ist erledigt, wenn das EM_JS-Symbol während des Linkens aufgelöst wird oder der Fehler erklärt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp, wasm
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.