Reapply: [WebAssembly] Implement build-id feature
authorDerek Schuff <dschuff@chromium.org>
Thu, 2 Mar 2023 23:52:25 +0000 (15:52 -0800)
committerDerek Schuff <dschuff@chromium.org>
Sat, 4 Mar 2023 01:15:55 +0000 (17:15 -0800)
commitc7af9ae577bb04c5fe120fc07844a500818c8f47
treebce5941c5cfe4ab049ae2fd6e690a52d403a0cbb
parent1a1dc440dae2e6dd05f899439dd9ebb97c0ba012
Reapply: [WebAssembly] Implement build-id feature

Implement the --build-id flag similarly to ELF, and generate a
build_id section according to the WebAssembly tool convention
specified in https://github.com/WebAssembly/tool-conventions/pull/183

The default style ("fast" aka "tree") hashes the contents of the
output and (unlike ELF) generates a v5 UUID based on the hash (using a
random namespace). It also supports generating a random v4 UUID, a
sha1 hash, and a user-specified string (as ELF does).

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

Fix MSVC build by std::copy on the underying buffer rather than
directly from std::array to llvm::MutableArrayRef
lld/test/wasm/build-id.test [new file with mode: 0644]
lld/wasm/Config.h
lld/wasm/Driver.cpp
lld/wasm/Options.td
lld/wasm/SyntheticSections.cpp
lld/wasm/SyntheticSections.h
lld/wasm/Writer.cpp