aboutsummaryrefslogtreecommitdiff
path: root/lld/wasm/Writer.cpp
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2024-08-19 21:52:17 -0700
committerGitHub <noreply@github.com>2024-08-19 21:52:17 -0700
commit2a6136e552d24b6bf665c42a6e32efc0b2d88fbf (patch)
treeb7d9248a47553484ea96fd958bd0cbc7482f385b /lld/wasm/Writer.cpp
parent5403123197f8e331d3c2c24d82439ca1fe7e702d (diff)
downloadllvm-upstream/main.zip
llvm-upstream/main.tar.gz
llvm-upstream/main.tar.bz2
[llvm-objcopy][WebAssembly] Allow --strip-debug to operate on relocatable files. (#102978)upstream/main
This change is enough to allow `--strip-debug` to work on object files, without breaking the relocation information or symbol table. A more complete version of this change would instead reconstruct the symbol table and relocation sections, but that is much larger change. Bug: #102002
Diffstat (limited to 'lld/wasm/Writer.cpp')
-rw-r--r--lld/wasm/Writer.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp
index 6a66a29..6beef81 100644
--- a/lld/wasm/Writer.cpp
+++ b/lld/wasm/Writer.cpp
@@ -138,6 +138,11 @@ void Writer::calculateCustomSections() {
// Exclude COMDAT sections that are not selected for inclusion
if (section->discarded)
continue;
+ // Ignore empty custom sections. In particular objcopy/strip will
+ // sometimes replace stripped sections with empty custom sections to
+ // avoid section re-numbering.
+ if (section->getSize() == 0)
+ continue;
StringRef name = section->name;
// These custom sections are known the linker and synthesized rather than
// blindly copied.