[PATCH] D52038: [LLD][ELF][AArch64] Guard --fix-cortex-a53-843419 against --just-syms

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 13 08:50:34 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL342146: [ELF] Guard --fix-cortex-a53-843419 against --just-syms (authored by psmith, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D52038?vs=165294&id=165307#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D52038

Files:
  lld/trunk/ELF/AArch64ErrataFix.cpp
  lld/trunk/test/ELF/aarch64-cortex-a53-843419-abs-mapsyms.s


Index: lld/trunk/test/ELF/aarch64-cortex-a53-843419-abs-mapsyms.s
===================================================================
--- lld/trunk/test/ELF/aarch64-cortex-a53-843419-abs-mapsyms.s
+++ lld/trunk/test/ELF/aarch64-cortex-a53-843419-abs-mapsyms.s
@@ -0,0 +1,22 @@
+// REQUIRES: aarch64
+// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t
+// RUN: ld.lld --just-symbols %t -fix-cortex-a53-843419 -o %t.axf
+// RUN: llvm-readobj --symbols %t.axf | FileCheck %s
+
+// Check that we can gracefully handle --just-symbols, which gives a local
+// absolute mapping symbol (with no Section). Previously we assumed that all
+// mapping symbols were defined relative to a section and assert failed.
+
+        .text
+        .global _start
+        .type _start, %function
+_start: ret
+
+// CHECK:     Name: $x.0
+// CHECK-NEXT:     Value: 0x0
+// CHECK-NEXT:     Size: 0
+// CHECK-NEXT:     Binding: Local (0x0)
+// CHECK-NEXT:     Type: None (0x0)
+// CHECK-NEXT:     Other: 0
+// CHECK-NEXT:     Section: Absolute (0xFFF1)
+// CHECK-NEXT:   }
Index: lld/trunk/ELF/AArch64ErrataFix.cpp
===================================================================
--- lld/trunk/ELF/AArch64ErrataFix.cpp
+++ lld/trunk/ELF/AArch64ErrataFix.cpp
@@ -451,7 +451,7 @@
         continue;
       if (!IsCodeMapSymbol(Def) && !IsDataMapSymbol(Def))
         continue;
-      if (auto *Sec = dyn_cast<InputSection>(Def->Section))
+      if (auto *Sec = dyn_cast_or_null<InputSection>(Def->Section))
         if (Sec->Flags & SHF_EXECINSTR)
           SectionMap[Sec].push_back(Def);
     }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52038.165307.patch
Type: text/x-patch
Size: 1590 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180913/ddd5b568/attachment.bin>


More information about the llvm-commits mailing list