[BOLT] Don't choke on nobits symbols (#136384)

This commit is contained in:
Rafael Auler
2025-04-18 17:29:24 -07:00
committed by GitHub
parent 50db7a7d26
commit 5c4e6c6113
2 changed files with 27 additions and 2 deletions

View File

@@ -1055,10 +1055,11 @@ void RewriteInstance::discoverFileObjects() {
continue;
}
if (!Section->isText()) {
if (!Section->isText() || Section->isVirtual()) {
assert(SymbolType != SymbolRef::ST_Function &&
"unexpected function inside non-code section");
LLVM_DEBUG(dbgs() << "BOLT-DEBUG: rejecting as symbol is not in code\n");
LLVM_DEBUG(dbgs() << "BOLT-DEBUG: rejecting as symbol is not in code or "
"is in nobits section\n");
registerName(SymbolSize);
continue;
}

View File

@@ -0,0 +1,24 @@
## Check that llvm-bolt doesn't choke on symbols defined in nobits sections.
# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
# RUN: %clang %cflags %t.o -o %t.exe
# RUN: llvm-bolt %t.exe -o %t
#
.type symbol_in_nobits,@object
.section .my.nobits.section,"awx",@nobits
.globl symbol_in_nobits
.p2align 4, 0x0
symbol_in_nobits:
.zero 0x100000
.size symbol_in_nobits, 0x100000
.text
.globl main
.type main, %function
main:
.cfi_startproc
.LBB06:
retq
.cfi_endproc
.size main, .-main