diff options
author | Sam Clegg <sbc@chromium.org> | 2017-06-20 04:04:59 +0000 |
---|---|---|
committer | Sam Clegg <sbc@chromium.org> | 2017-06-20 04:04:59 +0000 |
commit | b7787fd076f307a09075108525bdbabb44cd7373 (patch) | |
tree | 38f834ba14026325cff7e288ed91c1b735528c0d /llvm/lib/MC/MCWasmStreamer.cpp | |
parent | 47a78a2502f058f7c528d9e94efa6b51138c8929 (diff) | |
download | bcm5719-llvm-b7787fd076f307a09075108525bdbabb44cd7373.tar.gz bcm5719-llvm-b7787fd076f307a09075108525bdbabb44cd7373.zip |
[WebAssembly] Add support for weak symbols in the binary format
This also introduces the updated format for the
"linking" section which can represent extra
symbol information. See:
https://github.com/WebAssembly/tool-conventions/pull/10
Differential Revision: https://reviews.llvm.org/D34019
llvm-svn: 305769
Diffstat (limited to 'llvm/lib/MC/MCWasmStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/MCWasmStreamer.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCWasmStreamer.cpp b/llvm/lib/MC/MCWasmStreamer.cpp index 59b62b8d37c..02fa070f0c5 100644 --- a/llvm/lib/MC/MCWasmStreamer.cpp +++ b/llvm/lib/MC/MCWasmStreamer.cpp @@ -98,18 +98,30 @@ bool MCWasmStreamer::EmitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { case MCSA_WeakDefAutoPrivate: case MCSA_Invalid: case MCSA_IndirectSymbol: + case MCSA_Hidden: return false; + + case MCSA_Weak: + case MCSA_WeakReference: + Symbol->setWeak(true); + Symbol->setExternal(true); + break; + case MCSA_Global: Symbol->setExternal(true); break; + case MCSA_ELF_TypeFunction: Symbol->setIsFunction(true); break; + case MCSA_ELF_TypeObject: Symbol->setIsFunction(false); break; + default: // unrecognized directive + llvm_unreachable("unexpected MCSymbolAttr"); return false; } |