[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