[all-commits] [llvm/llvm-project] b062fe: [lld][WebAssembly] Fail if bitcode objects are pul...

Sam Clegg via All-commits all-commits at lists.llvm.org
Tue Feb 11 17:43:49 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: b062fe181625bd1944ca9ca2a58246ffd7cd3536
      https://github.com/llvm/llvm-project/commit/b062fe181625bd1944ca9ca2a58246ffd7cd3536
  Author: Sam Clegg <sbc at chromium.org>
  Date:   2020-02-11 (Tue, 11 Feb 2020)

  Changed paths:
    A lld/test/wasm/lto/Inputs/libcall-truncsfhf2.ll
    A lld/test/wasm/lto/libcall-truncsfhf2.ll
    M lld/wasm/InputFiles.cpp
    M lld/wasm/InputFiles.h
    M lld/wasm/SymbolTable.cpp

  Log Message:
  -----------
  [lld][WebAssembly] Fail if bitcode objects are pulled in after LTO

This can happen if lto::LTO::getRuntimeLibcallSymbols doesn't return
an complete/accurate list of libcalls.  In this case new bitcode
object can be linked in after LTO.

For example the WebAssembly backend currently calls:
  setLibcallName(RTLIB::FPROUND_F32_F16, "__truncsfhf2");

But `__truncsfhf2` is not part of `getRuntimeLibcallSymbols` so if
this symbol is generated during LTO the link will currently fail.

Without this change the linker crashes because the bitcode symbol
makes it all the way to the output phase.

See: https://bugs.llvm.org/show_bug.cgi?id=44353

Differential Revision: https://reviews.llvm.org/D71632




More information about the All-commits mailing list