From a19f0b93e6dc998002be8a835308ed3d87021aea Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Mon, 22 Jul 2019 17:48:03 +0000 Subject: Merging r366500: ------------------------------------------------------------------------ r366500 | quantum | 2019-07-18 23:18:24 +0200 (Thu, 18 Jul 2019) | 13 lines [WebAssembly] fix bug in finding .tdata segment Summary: Fix bug in `wasm-ld`'s `Writer::createInitTLSFunction` that only finds `.tdata` if it's the first section. Reviewers: tlively, aheejin, sbc100 Reviewed By: sbc100 Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64947 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@366707 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/wasm/tls.ll | 6 +++--- wasm/Writer.cpp | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/wasm/tls.ll b/test/wasm/tls.ll index b570d4675..855180ddd 100644 --- a/test/wasm/tls.ll +++ b/test/wasm/tls.ll @@ -2,8 +2,8 @@ target triple = "wasm32-unknown-unknown" -@tls1 = thread_local(localexec) global i32 1, align 4 @no_tls = global i32 0, align 4 +@tls1 = thread_local(localexec) global i32 1, align 4 @tls2 = thread_local(localexec) global i32 1, align 4 define i32* @tls1_addr() { @@ -49,7 +49,7 @@ define i32* @tls2_addr() { ; CHECK-NEXT: Body: 0B ; CHECK-NEXT: - Index: 1 ; CHECK-NEXT: Locals: [] -; CHECK-NEXT: Body: 20002401200041004108FC0800000B +; CHECK-NEXT: Body: 20002401200041004108FC0801000B ; Expected body of __wasm_init_tls: ; local.get 0 @@ -57,7 +57,7 @@ define i32* @tls2_addr() { ; local.get 0 ; i32.const 0 ; i32.const 8 -; memory.init 0, 0 +; memory.init 1, 0 ; end ; CHECK-NEXT: - Index: 2 diff --git a/wasm/Writer.cpp b/wasm/Writer.cpp index 4ad91ab11..68e001ccc 100644 --- a/wasm/Writer.cpp +++ b/wasm/Writer.cpp @@ -771,9 +771,10 @@ void Writer::createInitTLSFunction() { OutputSegment *tlsSeg = nullptr; for (auto *seg : segments) { - if (seg->name == ".tdata") + if (seg->name == ".tdata") { tlsSeg = seg; - break; + break; + } } writeUleb128(os, 0, "num locals"); -- cgit v1.2.3