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

via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 18 16:02:01 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-bolt

Author: Rafael Auler (rafaelauler)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/136384.diff


2 Files Affected:

- (modified) bolt/lib/Rewrite/RewriteInstance.cpp (+3-2) 
- (added) bolt/test/X86/nobits-symbol.s (+24) 


``````````diff
diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp
index 37dcfa868c211..45bc995ce906f 100644
--- a/bolt/lib/Rewrite/RewriteInstance.cpp
+++ b/bolt/lib/Rewrite/RewriteInstance.cpp
@@ -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;
     }
diff --git a/bolt/test/X86/nobits-symbol.s b/bolt/test/X86/nobits-symbol.s
new file mode 100644
index 0000000000000..4110c79930b29
--- /dev/null
+++ b/bolt/test/X86/nobits-symbol.s
@@ -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, at object
+  .section        .my.nobits.section,"awx", at 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

``````````

</details>


https://github.com/llvm/llvm-project/pull/136384


More information about the llvm-commits mailing list