[llvm-bugs] [Bug 35383] New: WASM backend fails on aliased symbols
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Nov 22 07:46:19 PST 2017
https://bugs.llvm.org/show_bug.cgi?id=35383
Bug ID: 35383
Summary: WASM backend fails on aliased symbols
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Backend: WebAssembly
Assignee: unassignedbugs at nondot.org
Reporter: ncw at realvnc.com
CC: llvm-bugs at lists.llvm.org
When creating aliased symbols, the WASM backend seems to get mixed up -
possibly by assuming that each function maps 1-to-1 to a symbol?
Full testcase:
####### test.c #######
static void dummy(void) {}
extern void __attribute__((weak, alias("dummy"))) __dothing(void);
void testFunc(void) { __dothing(); }
####### Commandline #######
> $LLVM/clang --version
clang version 6.0.0 (trunk 318652)
Target: wasm32-unknown-unknown-wasm
Thread model: posix
> $LLVM/clang -Oz -c -o test.o test.c
####### Output #######
> $WABT/wasm2wat test.o
(module
(type (;0;) (func))
(func $dummy (type 0))
(func $testFunc (type 0)
call $dummy)
(table (;0;) 0 anyfunc)
(memory (;0;) 0)
(export "dummy" (func $dummy)) ; marked as "local" for lld
(export "testFunc" (func $testFunc))
(export "__dothing" (func $dummy))) ; marked as "weak" for lld
The problem is that the definition of "$testFunc" has been linked against the
symbol "$dummy" directly, rather than to the weak exported symbol "$__dothing".
This style of programming seems to be common in systems applications, such as
Musl libc (which I have distilled this test case from). The local function
should link against the weak symbol, which will be resolved according to
whichever object exports that symbol most strongly. (In this case, the WASM
file that clang outputs has correctly-annotated the "export" entries using its
custom "linking" section.)
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20171122/0b1140ed/attachment.html>
More information about the llvm-bugs
mailing list