[LLD][COFF] Discard .llvmbc and .llvmcmd sections (#150897)

Those sections are generated by -fembed-bitcode and do not need to be
kept in executable files.
This commit is contained in:
Haohai Wen 2025-07-28 16:17:26 +08:00 committed by GitHub
parent 72b77c193f
commit 41f333250b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 35 additions and 0 deletions

View File

@ -403,6 +403,11 @@ 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).
//

View File

@ -0,0 +1,30 @@
# 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
...