Malformed instrumentation profile data can occur in some WebAssembly binaries
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
This is a minimal repro discussed in #172023.
```c
// foo.c
extern void bar(void);
void foo(void) {
bar();
}
```
```c
// bar.c
void bar(void) {}
```
Use emscripten:
```
emcc -c bar.c -g -fprofile-instr-generate -fcoverage-mapping -o bar.o
emar rcs libbar.a bar.o
emcc foo.c libbar.a -g -fprofile-instr-generate -fcoverage-mapping -sSTANDALONE_WASM=1 -Wl,--gc-sections,--no-entry -o x.wasm
llvm-cov export --object x.wasm --empty-profile
error: failed to load coverage: 'x.wasm': malformed instrumentation profile data: function name is empty
error: could not load coverage information
```
Use clang:
```c
// instr-prof.c
int __llvm_profile_runtime = 0;
```
```
clang -fprofile-instr-generate -fcoverage-mapping instr-prof.c foo.c bar.c -c -target wasm32-unknown-unknown
wasm-ld instr-prof.o foo.o --start-lib bar.o --end-lib --gc-sections --no-entry -o x.wasm
llvm-cov export --object x.wasm --empty-profile
error: failed to load coverage: 'x.wasm': malformed instrumentation profile data: function name is empty
error: could not load coverage information
```
Contributor guide
Assessment
This issue has not been assessed yet.