]> granicus.if.org Git - llvm/commitdiff
[dsymutil] Check AttrInfo.Name validity before using it
authorKeno Fischer <keno@alumni.harvard.edu>
Thu, 26 Oct 2017 17:31:33 +0000 (17:31 +0000)
committerKeno Fischer <keno@alumni.harvard.edu>
Thu, 26 Oct 2017 17:31:33 +0000 (17:31 +0000)
Summary:
This upstreams a patch from the osxcross [1] toolchain.
It appears that llvm-dsymutil crashes at this place during GCC
bootstrap. Adding the check here seems reasonable, since it operates
on arbitrary input DWARF, not necessarily generated by the LLVM
toolchain, and it seems the un-mangled name need not necessarily exist.

Patch by Thomas Pöchtrager

[1] https://github.com/tpoechtrager/osxcross

Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D39336

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316678 91177308-0d34-0410-b5e6-96231b3b80d8

tools/dsymutil/DwarfLinker.cpp

index e422bd035cbe5392f5388db4772155f9b561fc71..b22b7a9dd1ad56a24bb3ea3fd1fce7428af7ac89 100644 (file)
@@ -2878,7 +2878,8 @@ DIE *DwarfLinker::DIECloner::cloneDIE(
                               Tag == dwarf::DW_TAG_inlined_subroutine);
   } else if (isTypeTag(Tag) && !AttrInfo.IsDeclaration &&
              getDIENames(InputDIE, AttrInfo)) {
-    Unit.addTypeAccelerator(Die, AttrInfo.Name, AttrInfo.NameOffset);
+    if (AttrInfo.Name)
+      Unit.addTypeAccelerator(Die, AttrInfo.Name, AttrInfo.NameOffset);
   }
 
   // Determine whether there are any children that we want to keep.