summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2019-02-07 01:24:44 +0000
committerSam Clegg <sbc@chromium.org>2019-02-07 01:24:44 +0000
commitd6ef8da31780ea2fbce89873528295e5983d8323 (patch)
tree5bb4ed450c1f8c1235d6135b0923565ac561c7eb /llvm/lib/MC
parent40b1c0746231ebbd1364526638a494d8dc2a25af (diff)
downloadbcm5719-llvm-d6ef8da31780ea2fbce89873528295e5983d8323.tar.gz
bcm5719-llvm-d6ef8da31780ea2fbce89873528295e5983d8323.zip
[WebAssembly] Add symbol flag to the binary format llvm.used
Summary: Rather than add a new attribute See https://github.com/WebAssembly/tool-conventions/issues/64 Subscribers: dschuff, jgravelle-google, aheejin, sunfish, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57864 llvm-svn: 353360
Diffstat (limited to 'llvm/lib/MC')
-rw-r--r--llvm/lib/MC/MCAsmInfoWasm.cpp1
-rw-r--r--llvm/lib/MC/MCWasmStreamer.cpp4
-rw-r--r--llvm/lib/MC/WasmObjectWriter.cpp2
3 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCAsmInfoWasm.cpp b/llvm/lib/MC/MCAsmInfoWasm.cpp
index 65a937b7716..ce6ec7ef211 100644
--- a/llvm/lib/MC/MCAsmInfoWasm.cpp
+++ b/llvm/lib/MC/MCAsmInfoWasm.cpp
@@ -18,6 +18,7 @@ void MCAsmInfoWasm::anchor() {}
MCAsmInfoWasm::MCAsmInfoWasm() {
HasIdentDirective = true;
+ HasNoDeadStrip = true;
WeakRefDirective = "\t.weak\t";
PrivateGlobalPrefix = ".L";
PrivateLabelPrefix = ".L";
diff --git a/llvm/lib/MC/MCWasmStreamer.cpp b/llvm/lib/MC/MCWasmStreamer.cpp
index 36571fce062..86fa7219785 100644
--- a/llvm/lib/MC/MCWasmStreamer.cpp
+++ b/llvm/lib/MC/MCWasmStreamer.cpp
@@ -121,6 +121,10 @@ bool MCWasmStreamer::EmitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) {
case MCSA_Cold:
break;
+ case MCSA_NoDeadStrip:
+ Symbol->setExported();
+ break;
+
default:
// unrecognized directive
llvm_unreachable("unexpected MCSymbolAttr");
diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp
index b5260bbceae..00d48659890 100644
--- a/llvm/lib/MC/WasmObjectWriter.cpp
+++ b/llvm/lib/MC/WasmObjectWriter.cpp
@@ -1454,6 +1454,8 @@ uint64_t WasmObjectWriter::writeObject(MCAssembler &Asm,
Flags |= wasm::WASM_SYMBOL_BINDING_LOCAL;
if (WS.isUndefined())
Flags |= wasm::WASM_SYMBOL_UNDEFINED;
+ if (WS.isExported())
+ Flags |= wasm::WASM_SYMBOL_EXPORTED;
wasm::WasmSymbolInfo Info;
Info.Name = WS.getName();
OpenPOWER on IntegriCloud