[llvm] r311416 - dsymutil: don't copy compile units without children from PCM files

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 21 18:10:48 PDT 2017


Author: adrian
Date: Mon Aug 21 18:10:48 2017
New Revision: 311416

URL: http://llvm.org/viewvc/llvm-project?rev=311416&view=rev
Log:
dsymutil: don't copy compile units without children from PCM files

rdar://problem/33830532

Added:
    llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/
    llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/1.o
    llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/Empty.pcm
    llvm/trunk/test/tools/dsymutil/X86/modules-empty.m
Modified:
    llvm/trunk/tools/dsymutil/DwarfLinker.cpp

Added: llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/1.o
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/1.o?rev=311416&view=auto
==============================================================================
Binary files llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/1.o (added) and llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/1.o Mon Aug 21 18:10:48 2017 differ

Added: llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/Empty.pcm
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/Empty.pcm?rev=311416&view=auto
==============================================================================
Binary files llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/Empty.pcm (added) and llvm/trunk/test/tools/dsymutil/Inputs/modules-empty/Empty.pcm Mon Aug 21 18:10:48 2017 differ

Added: llvm/trunk/test/tools/dsymutil/X86/modules-empty.m
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/modules-empty.m?rev=311416&view=auto
==============================================================================
--- llvm/trunk/test/tools/dsymutil/X86/modules-empty.m (added)
+++ llvm/trunk/test/tools/dsymutil/X86/modules-empty.m Mon Aug 21 18:10:48 2017
@@ -0,0 +1,28 @@
+/* Compile with:
+   cat >modules.modulemap <<EOF
+     module Empty {
+       header "Empty.h"
+     }
+EOF
+   touch Empty.h
+   clang -c -fmodules -fmodule-map-file=modules.modulemap \
+     -g -gmodules -fmodules-cache-path=. \
+     -Xclang -fdisable-module-hash modules-empty.m -o 1.o
+*/
+
+// RUN: rm -rf %t.dir
+// RUN: mkdir %t.dir
+// RUN: cp %p/../Inputs/modules-empty/1.o %p/../Inputs/modules-empty/Empty.pcm %t.dir
+// RUN: llvm-dsymutil -f -oso-prepend-path=%t.dir \
+// RUN:   -y %p/dummy-debug-map.map -o - \
+// RUN:     | llvm-dwarfdump --debug-dump=info - | FileCheck %s
+
+#include "Empty.h"
+int main() {
+  return 0;
+}
+
+// The empty CU from the pcm should not get copied into the dSYM.
+// CHECK: DW_TAG_compile_unit
+// CHECK-NOT: DW_TAG_compile_unit
+

Modified: llvm/trunk/tools/dsymutil/DwarfLinker.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/DwarfLinker.cpp?rev=311416&r1=311415&r2=311416&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/DwarfLinker.cpp (original)
+++ llvm/trunk/tools/dsymutil/DwarfLinker.cpp Mon Aug 21 18:10:48 2017
@@ -3358,6 +3358,8 @@ void DwarfLinker::loadClangModule(String
       Unit->markEverythingAsKept();
     }
   }
+  if (!Unit->getOrigUnit().getUnitDIE().hasChildren())
+    return;
   if (Options.Verbose) {
     outs().indent(Indent);
     outs() << "cloning .debug_info from " << Filename << "\n";




More information about the llvm-commits mailing list