[PATCH] D146215: [BOLT] Reject symbols pointing to section end
Job Noorman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 18 02:05:10 PDT 2023
jobnoorman updated this revision to Diff 506280.
jobnoorman added a comment.
Swap check with the `if (!Section->isText())` check as suggested by @yota9.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146215/new/
https://reviews.llvm.org/D146215
Files:
bolt/lib/Rewrite/RewriteInstance.cpp
bolt/test/X86/section-end-sym.s
Index: bolt/test/X86/section-end-sym.s
===================================================================
--- /dev/null
+++ bolt/test/X86/section-end-sym.s
@@ -0,0 +1,29 @@
+## Check that BOLT doesn't consider end-of-section symbols (e.g., _etext) as
+## functions.
+
+# REQUIRES: system-linux
+
+# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-linux %s -o %t.o
+# RUN: ld.lld %t.o -o %t.exe -q
+# RUN: llvm-bolt %t.exe -o /dev/null --print-cfg --debug-only=bolt 2>&1 \
+# RUN: | FileCheck %s
+
+# CHECK: considering symbol etext for function
+# CHECK-NEXT: rejecting as symbol points to end of its section
+# CHECK-NOT: Binary Function "etext{{.*}}" after building cfg
+
+
+ .text
+ .globl _start
+ .type _start, at function
+_start:
+ retq
+ .size _start, .-_start
+
+ .align 0x1000
+ .globl etext
+etext:
+
+ .data
+.Lfoo:
+ .word 0
Index: bolt/lib/Rewrite/RewriteInstance.cpp
===================================================================
--- bolt/lib/Rewrite/RewriteInstance.cpp
+++ bolt/lib/Rewrite/RewriteInstance.cpp
@@ -1050,6 +1050,16 @@
LLVM_DEBUG(dbgs() << "BOLT-DEBUG: considering symbol " << UniqueName
<< " for function\n");
+ if (Address == Section->getAddress() + Section->getSize()) {
+ assert(SymbolSize == 0 &&
+ "unexpect non-zero sized symbol at end of section");
+ LLVM_DEBUG(
+ dbgs()
+ << "BOLT-DEBUG: rejecting as symbol points to end of its section\n");
+ registerName(SymbolSize);
+ continue;
+ }
+
if (!Section->isText()) {
assert(SymbolType != SymbolRef::ST_Function &&
"unexpected function inside non-code section");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146215.506280.patch
Type: text/x-patch
Size: 1678 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230318/be56dc83/attachment.bin>
More information about the llvm-commits
mailing list