[PATCH] Segfault in AArch64 backend with -g and -mbig-endian

Oliver Stannard oliver.stannard at arm.com
Thu Aug 14 01:38:22 PDT 2014


================
Comment at: lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp:538
@@ -537,3 +537,3 @@
     const MCSection *Sec = Fixup.getValue()->FindAssociatedSection();
-    const MCSectionELF *SecELF = static_cast<const MCSectionELF *>(Sec);
-    if (SecELF->getSectionName() == ".eh_frame")
+    const MCSectionELF *SecELF = dyn_cast_or_null<const MCSectionELF>(Sec);
+    if (SecELF && SecELF->getSectionName() == ".eh_frame")
----------------
Eric Christopher wrote:
> Fixup to a null section? How's that happen?
This is the section associated with the value to put into the fixup location, not the section containing the fixup location. This can be null if:
 * It is a symbol which is not defined by this translation unit
 * It is the difference between two temporary symbols, for example to find the length of a debug data structure.

http://reviews.llvm.org/D4870






More information about the llvm-commits mailing list