From 815a05ca6ba8a846d842b875eece804be94168a5 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Thu, 7 Mar 2019 02:43:19 +0000 Subject: [PATCH] [WebAssembly] LTO: Don't include bitcode-only symbols in the symtab Fixes https://bugs.llvm.org/show_bug.cgi?id=40654 Differential Revision: https://reviews.llvm.org/D59012 llvm-svn: 355577 --- lld/test/ELF/lto/relocatable.ll | 2 ++ lld/test/wasm/lto/relocatable.ll | 27 +++++++++++++++++++++++++++ lld/wasm/Writer.cpp | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 lld/test/wasm/lto/relocatable.ll diff --git a/lld/test/ELF/lto/relocatable.ll b/lld/test/ELF/lto/relocatable.ll index 5a0ed4252bfe..a0a4d4ebcc8d 100644 --- a/lld/test/ELF/lto/relocatable.ll +++ b/lld/test/ELF/lto/relocatable.ll @@ -71,3 +71,5 @@ define void @foo() { define internal void @bar() { ret void } + +declare i32 @baz(...) diff --git a/lld/test/wasm/lto/relocatable.ll b/lld/test/wasm/lto/relocatable.ll new file mode 100644 index 000000000000..2feb87026efc --- /dev/null +++ b/lld/test/wasm/lto/relocatable.ll @@ -0,0 +1,27 @@ +; RUN: llvm-as %s -o %t1.o +; RUN: wasm-ld %t1.o -r -o %t +; RUN: llvm-readobj -symbols %t | FileCheck %s + +; CHECK: Symbols [ +; CHECK-NEXT: Symbol { +; CHECK-NEXT: Name: foo +; CHECK-NEXT: Type: FUNCTION (0x0) +; CHECK-NEXT: Flags [ (0x0) +; CHECK-NEXT: ] +; CHECK-NEXT: ElementIndex: 0x0 +; CHECK-NEXT: } +; CHECK-NEXT: ] + +target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" +target triple = "wasm32-unknown-unknown" + +define void @foo() { + call void @bar() + ret void +} + +define internal void @bar() { + ret void +} + +declare i32 @baz(...) diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp index 879a1595361f..0082ae3a48d5 100644 --- a/lld/wasm/Writer.cpp +++ b/lld/wasm/Writer.cpp @@ -950,7 +950,7 @@ void Writer::assignSymtab() { }; for (Symbol *Sym : Symtab->getSymbols()) - if (!Sym->isLazy()) + if (Sym->IsUsedInRegularObj) AddSymbol(Sym); for (ObjFile *File : Symtab->ObjectFiles) {