[llvm-branch-commits] [lld] release/22.x: [lld][COFF] Restore `lto-embed-bitcode` and `-fembed-bitcode` Bitcode Embedding Features (#188398) (PR #189375)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Mar 30 06:14:59 PDT 2026
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/189375
Backport 1e99c9e4c7e82c8417e4bdb0d1cb3b86e6640c6c
Requested by: @mstorsjo
>From a23e047403a56f158944155dd09173c9aff51d0e Mon Sep 17 00:00:00 2001
From: Austin Hudson <austinhudson at protonmail.ch>
Date: Mon, 30 Mar 2026 06:05:37 -0700
Subject: [PATCH] [lld][COFF] Restore `lto-embed-bitcode` and `-fembed-bitcode`
Bitcode Embedding Features (#188398)
Removes the patches introduced by #150897 which broke LTO embed
documented features for creating whole-program-bitcode representations
of executables, used in production analysis/rewriting toolsets. This was
a documented feature available up until 21.1.8 broken by 22.x release.
This previously allowed the users to have a whole-program-bitcode
section `.llvmbc` embedded inside of the final executable.
(cherry picked from commit 1e99c9e4c7e82c8417e4bdb0d1cb3b86e6640c6c)
---
lld/COFF/InputFiles.cpp | 5 -----
lld/test/COFF/embed-bitcode.test | 30 ------------------------------
2 files changed, 35 deletions(-)
delete mode 100644 lld/test/COFF/embed-bitcode.test
diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp
index d415955b6093b..0cc3aaeba41e3 100644
--- a/lld/COFF/InputFiles.cpp
+++ b/lld/COFF/InputFiles.cpp
@@ -403,11 +403,6 @@ SectionChunk *ObjFile::readSection(uint32_t sectionNumber,
return nullptr;
}
- // Those sections are generated by -fembed-bitcode and do not need to be kept
- // in executable files.
- if (name == ".llvmbc" || name == ".llvmcmd")
- return nullptr;
-
// Object files may have DWARF debug info or MS CodeView debug info
// (or both).
//
diff --git a/lld/test/COFF/embed-bitcode.test b/lld/test/COFF/embed-bitcode.test
deleted file mode 100644
index 10f88c5c0117d..0000000000000
--- a/lld/test/COFF/embed-bitcode.test
+++ /dev/null
@@ -1,30 +0,0 @@
-# RUN: yaml2obj %s -o %t.obj
-# RUN: lld-link /entry:main /subsystem:console /out:%t.exe %t.obj
-# RUN: llvm-readobj -S %t.exe | FileCheck %s
-
-# CHECK-NOT: Name: .llvmbc
-# CHECK-NOT: Name: .llvmcmd
-
---- !COFF
-header:
- Machine: IMAGE_FILE_MACHINE_AMD64
-
-sections:
- - Name: .text
- Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
- SectionData: "C3"
- - Name: .llvmbc
- Characteristics: [ IMAGE_SCN_MEM_DISCARDABLE ]
- SectionData: "4243C0DE"
- - Name: .llvmcmd
- Characteristics: [ IMAGE_SCN_MEM_DISCARDABLE ]
- SectionData: "2D63633100"
-
-symbols:
- - Name: main
- Value: 0
- SectionNumber: 1
- SimpleType: IMAGE_SYM_TYPE_NULL
- ComplexType: IMAGE_SYM_DTYPE_FUNCTION
- StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-...
More information about the llvm-branch-commits
mailing list