[lld] 1e99c9e - [lld][COFF] Restore `lto-embed-bitcode` and `-fembed-bitcode` Bitcode Embedding Features (#188398)

via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 30 06:05:42 PDT 2026


Author: Austin Hudson
Date: 2026-03-30T16:05:37+03:00
New Revision: 1e99c9e4c7e82c8417e4bdb0d1cb3b86e6640c6c

URL: https://github.com/llvm/llvm-project/commit/1e99c9e4c7e82c8417e4bdb0d1cb3b86e6640c6c
DIFF: https://github.com/llvm/llvm-project/commit/1e99c9e4c7e82c8417e4bdb0d1cb3b86e6640c6c.diff

LOG: [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.

Added: 
    

Modified: 
    lld/COFF/InputFiles.cpp

Removed: 
    lld/test/COFF/embed-bitcode.test


################################################################################
diff  --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp
index 492b2ad80166d..4320a39644616 100644
--- a/lld/COFF/InputFiles.cpp
+++ b/lld/COFF/InputFiles.cpp
@@ -404,11 +404,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-commits mailing list