[PATCH] D96473: [WebAssembly] Fix assert in lookup of section symbols

Wouter van Oortmerssen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 10 17:36:36 PST 2021


aardappel created this revision.
aardappel added reviewers: dschuff, sbc100.
Herald added subscribers: ecnelises, sunfish, hiraditya, jgravelle-google.
aardappel requested review of this revision.
Herald added subscribers: llvm-commits, sstefan1, aheejin.
Herald added a reviewer: jdoerfert.
Herald added a project: LLVM.

Fixes assert in: https://bugs.llvm.org/show_bug.cgi?id=49036

getWasmSection creates sections if they don't exist, but doesn't add them to the Symbols table. This may cause problems in subsequent calls to getOrCreateSymbol which checks this table, the calls createSymbol assuming it doesn't exist, which then checks UsedNames and finds out it does exist, causing an assert on trying to rename a non-temp symbol.

I tried also fixing the somewhat unintuitive forced suffixing (adding `0`), but it turns out that WasmObjectWriter currently assumes these section symbols are unique, so that may have to be a separate fix.

Also worth noting is that getWasmSection calling createSymbol may not be correct to start with, given that createSymbol seems to assume it is creating non-section symbols. But again, for a future fix.

Related: where some of this was introduced: https://github.com/llvm/llvm-project/commit/8d396acac3bc21f688ac707bb42e4698dbdcab7e


https://reviews.llvm.org/D96473

Files:
  llvm/lib/MC/MCContext.cpp
  llvm/test/MC/WebAssembly/comdat-sections.s
  llvm/test/MC/WebAssembly/section-symbol.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96473.322877.patch
Type: text/x-patch
Size: 13814 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210211/7507df00/attachment.bin>


More information about the llvm-commits mailing list