I am not producing a web application. Indeed, I'm thoroughly unfamiliar with doing that; my background is C, C++ and assembly languages.
I'm porting a large library written in C and C++ to WebAssembly using Emscripten, along with the library's test harness. The library is intended to be used in web applications, written by organisations that license this (commercial, closed-source) library. I'm planning to ship the library as an archive library, to be statically linked into web applications. I am not producing a JavaScript binding for it at present, because the API is large, complex, and not designed to be JavaScript-friendly: it uses lots of pointers.
I'm linking the application and the test harness statically, with SINGLE_FILE, to produce a large .js file to run in Node. It's convenient for my build system to produce a single file, and that has also caused me to notice a potential problem.
As I'm shipping an archive library, it's possible to do a link which produces basic debug symbols, such as function names. Emscripten doesn't do this by default, but it can. My management is rather jumpy on that subject, feeling that the names of functions in the library reveal significant information about the ways it operates. Since a web application is easier to get hold of than a licensed on-premises application, they're concerned about intellectual property protection. So, we will require organisations that license the WebAssembly library to not ship their web applications with debug symbols.
That raises the question of "How can we tell if they are complying with that requirement?"
- If they ship a .wasm file, it's easy: we use emnm to list debug symbols.
- If they ship a .js file, emnm seems unable to handle that. Which is reasonable, since the wasm code is encoded as strings within the .js.
Is there a way to extract .wasm code and debug symbols from within a SINGLE_FILE .js file?
Thanks in advance,
John