[lld] r269149 - [LTO] Don't crash on old DebugInfo.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Tue May 10 18:07:22 PDT 2016


Author: davide
Date: Tue May 10 20:07:22 2016
New Revision: 269149

URL: http://llvm.org/viewvc/llvm-project?rev=269149&view=rev
Log:
[LTO] Don't crash on old DebugInfo.

Drop them and produce a graceful warning instead.

Added:
    lld/trunk/test/ELF/lto/Inputs/drop-debug-info.bc
    lld/trunk/test/ELF/lto/drop-debug-info.ll
Modified:
    lld/trunk/ELF/LTO.cpp

Modified: lld/trunk/ELF/LTO.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.cpp?rev=269149&r1=269148&r2=269149&view=diff
==============================================================================
--- lld/trunk/ELF/LTO.cpp (original)
+++ lld/trunk/ELF/LTO.cpp Tue May 10 20:07:22 2016
@@ -18,6 +18,7 @@
 #include "llvm/Bitcode/ReaderWriter.h"
 #include "llvm/CodeGen/CommandFlags.h"
 #include "llvm/CodeGen/ParallelCG.h"
+#include "llvm/IR/AutoUpgrade.h"
 #include "llvm/IR/LegacyPassManager.h"
 #include "llvm/Linker/IRMover.h"
 #include "llvm/Support/StringSaver.h"
@@ -100,6 +101,10 @@ void BitcodeCompiler::add(BitcodeFile &F
   if (M.getDataLayoutStr().empty())
     fatal("invalid bitcode file: " + F.getName() + " has no datalayout");
 
+  // Discard non-compatible debug infos if necessary.
+  M.materializeMetadata();
+  UpgradeDebugInfo(M);
+
   // If a symbol appears in @llvm.used, the linker is required
   // to treat the symbol as there is a reference to the symbol
   // that it cannot see. Therefore, we can't internalize.

Added: lld/trunk/test/ELF/lto/Inputs/drop-debug-info.bc
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/Inputs/drop-debug-info.bc?rev=269149&view=auto
==============================================================================
Binary files lld/trunk/test/ELF/lto/Inputs/drop-debug-info.bc (added) and lld/trunk/test/ELF/lto/Inputs/drop-debug-info.bc Tue May 10 20:07:22 2016 differ

Added: lld/trunk/test/ELF/lto/drop-debug-info.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/drop-debug-info.ll?rev=269149&view=auto
==============================================================================
--- lld/trunk/test/ELF/lto/drop-debug-info.ll (added)
+++ lld/trunk/test/ELF/lto/drop-debug-info.ll Tue May 10 20:07:22 2016
@@ -0,0 +1,9 @@
+; REQUIRES: x86
+;
+; drop-debug-info.bc was created from "void f(void) {}" with clang 3.5 and
+; -gline-tables-only, so it contains old debug info.
+;
+; RUN: ld.lld -m elf_x86_64 -shared %p/Inputs/drop-debug-info.bc \
+; RUN: -disable-verify 2>&1 | FileCheck %s
+; CHECK: warning: ignoring debug info with an invalid version (1) in {{.*}}drop-debug-info.bc
+




More information about the llvm-commits mailing list