[PATCH] D69744: ELF: Discard .ARM.exidx sections for empty functions instead of misordering them.

Peter Collingbourne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 4 09:12:33 PST 2019


This revision was not accepted when it landed; it landed in state "Needs Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rG2c6fae179e69: ELF: Discard .ARM.exidx sections for empty functions instead of misordering… (authored by pcc).

Changed prior to commit:
  https://reviews.llvm.org/D69744?vs=227558&id=227724#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69744/new/

https://reviews.llvm.org/D69744

Files:
  lld/ELF/SyntheticSections.cpp
  lld/test/ELF/arm-exidx-empty-fn.s


Index: lld/test/ELF/arm-exidx-empty-fn.s
===================================================================
--- /dev/null
+++ lld/test/ELF/arm-exidx-empty-fn.s
@@ -0,0 +1,41 @@
+// REQUIRES: arm
+// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o
+// RUN: ld.lld %t.o -o %t -shared
+
+// RUN: llvm-readelf --unwind %t | FileCheck %s
+
+// Check that any exidx sections for empty functions are discarded.
+
+// CHECK:      Entries [
+// CHECK-NEXT:   Entry {
+// CHECK-NEXT:     FunctionAddress:
+// CHECK-NEXT:     Model: CantUnwind
+// CHECK-NEXT:   }
+// CHECK-NEXT:   Entry {
+// CHECK-NEXT:     FunctionAddress:
+// CHECK-NEXT:     Model: CantUnwind
+// CHECK-NEXT:   }
+// CHECK-NEXT: ]
+
+.section .text.f0,"ax",%progbits
+.globl f0
+f0:
+.fnstart
+bx lr
+.cantunwind
+.fnend
+
+.section .text.f1,"ax",%progbits
+.globl f1
+f1:
+.fnstart
+.cantunwind
+.fnend
+
+.section .text.f2,"ax",%progbits
+.globl f2
+f2:
+.fnstart
+bx lr
+.cantunwind
+.fnend
Index: lld/ELF/SyntheticSections.cpp
===================================================================
--- lld/ELF/SyntheticSections.cpp
+++ lld/ELF/SyntheticSections.cpp
@@ -3164,12 +3164,10 @@
 
 bool ARMExidxSyntheticSection::addSection(InputSection *isec) {
   if (isec->type == SHT_ARM_EXIDX) {
-    if (InputSection* dep = isec->getLinkOrderDep())
-      if (isValidExidxSectionDep(dep)) {
+    if (InputSection *dep = isec->getLinkOrderDep())
+      if (isValidExidxSectionDep(dep))
         exidxSections.push_back(isec);
-        return true;
-      }
-    return false;
+    return true;
   }
 
   if (isValidExidxSectionDep(isec)) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69744.227724.patch
Type: text/x-patch
Size: 1626 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191104/37e72ed3/attachment.bin>


More information about the llvm-commits mailing list