[arch-commits] Commit in llvm/trunk (PKGBUILD llvm-3.1-fix-debug-line-info.patch)

Evangelos Foutras foutrelis at archlinux.org
Fri Aug 10 21:20:58 UTC 2012


    Date: Friday, August 10, 2012 @ 17:20:58
  Author: foutrelis
Revision: 165097

upgpkg: llvm 3.1-4

Fix FS#31098: LLVM 3.1 produces invalid debug information.

Added:
  llvm/trunk/llvm-3.1-fix-debug-line-info.patch
Modified:
  llvm/trunk/PKGBUILD

------------------------------------+
 PKGBUILD                           |    8 +++-
 llvm-3.1-fix-debug-line-info.patch |   65 +++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+), 1 deletion(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-08-10 18:33:15 UTC (rev 165096)
+++ PKGBUILD	2012-08-10 21:20:58 UTC (rev 165097)
@@ -11,7 +11,7 @@
 
 pkgname=('llvm' 'llvm-ocaml' 'clang' 'clang-analyzer')
 pkgver=3.1
-pkgrel=3
+pkgrel=4
 arch=('i686' 'x86_64')
 url="http://llvm.org/"
 license=('custom:University of Illinois/NCSA Open Source License')
@@ -24,6 +24,7 @@
         cindexer-clang-path.patch
         clang-pure64.patch
         enable-lto.patch
+        llvm-3.1-fix-debug-line-info.patch
         clang-3.1-fix-libprofile_rt.a-location.patch)
 sha256sums=('1ea05135197b5400c1f88d00ff280d775ce778f8f9ea042e25a1e1e734a4b9ab'
             'ff63e215dcd3e2838ffdea38502f8d35bab17e487f3c3799579961e452d5a786'
@@ -33,6 +34,7 @@
             '3074df5322900e087377a8e03a02115463ccc0011c25917c2f06df11facd9b92'
             '288a82fbff17bc554f5863734246500e637882af33ee8511019d5e0d6cd20524'
             'f7145e203ffb4ce2c01976027f7840a9520e5341a9945f2459b6b11e5422d5b7'
+            'db1f1aadebbc4c4232bdad49fb9b7dc61eac727085c63154b870fa9ce64fd18d'
             '0d32ad283566357ca1bfbeb4cbe6b0b961943b79d3d718ed0435101c05629137')
 
 build() {
@@ -79,6 +81,10 @@
   patch -d tools/clang -Np1 -i \
     "$srcdir/clang-3.1-fix-libprofile_rt.a-location.patch"
 
+  # Fix FS#31098: LLVM 3.1 produces invalid debug information
+  # http://llvm.org/bugs/show_bug.cgi?id=13211
+  patch -Np1 -i "$srcdir/llvm-3.1-fix-debug-line-info.patch"
+
   # Apply strip option to configure
   _optimized_switch="enable"
   [[ $(check_option strip) == n ]] && _optimized_switch="disable"

Added: llvm-3.1-fix-debug-line-info.patch
===================================================================
--- llvm-3.1-fix-debug-line-info.patch	                        (rev 0)
+++ llvm-3.1-fix-debug-line-info.patch	2012-08-10 21:20:58 UTC (rev 165097)
@@ -0,0 +1,65 @@
+From 737fdba46f2b2b7d39bc728d15ea2334c44779e0 Mon Sep 17 00:00:00 2001
+From: Ben Longbons <b.r.longbons at gmail.com>
+Date: Fri, 29 Jun 2012 12:58:34 -0700
+Subject: [PATCH] Revert "Patch to set is_stmt a little better for prologue
+ lines in a function."
+
+This meants that the debugger could find meaningful line information.
+
+This reverts commit 60b35f408bc3194e7ea4e96367c0b42dc5e7f850.
+---
+ lib/CodeGen/AsmPrinter/DwarfDebug.cpp |    7 ++-----
+ test/DebugInfo/X86/ending-run.ll      |    6 ++----
+ 2 files changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+index 3e79a6d..24aedfb 100644
+--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
++++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+@@ -1093,15 +1093,12 @@ void DwarfDebug::beginInstruction(const MachineInstr *MI) {
+   if (!MI->isDebugValue()) {
+     DebugLoc DL = MI->getDebugLoc();
+     if (DL != PrevInstLoc && (!DL.isUnknown() || UnknownLocations)) {
+-      unsigned Flags = 0;
++      unsigned Flags = DWARF2_FLAG_IS_STMT;
+       PrevInstLoc = DL;
+       if (DL == PrologEndLoc) {
+         Flags |= DWARF2_FLAG_PROLOGUE_END;
+         PrologEndLoc = DebugLoc();
+       }
+-      if (PrologEndLoc.isUnknown())
+-        Flags |= DWARF2_FLAG_IS_STMT;
+-
+       if (!DL.isUnknown()) {
+         const MDNode *Scope = DL.getScope(Asm->MF->getFunction()->getContext());
+         recordSourceLine(DL.getLine(), DL.getCol(), Scope, Flags);
+@@ -1382,7 +1379,7 @@ void DwarfDebug::beginFunction(const MachineFunction *MF) {
+                                        MF->getFunction()->getContext());
+     recordSourceLine(FnStartDL.getLine(), FnStartDL.getCol(),
+                      FnStartDL.getScope(MF->getFunction()->getContext()),
+-                     0);
++                     DWARF2_FLAG_IS_STMT);
+   }
+ }
+ 
+diff --git a/test/DebugInfo/X86/ending-run.ll b/test/DebugInfo/X86/ending-run.ll
+index 6935c47..0cd3de1 100644
+--- a/test/DebugInfo/X86/ending-run.ll
++++ b/test/DebugInfo/X86/ending-run.ll
+@@ -1,11 +1,9 @@
+ ; RUN: llc -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj
+ ; RUN: llvm-dwarfdump %t | FileCheck %s
+ 
+-; Check that the line table starts at 7, not 4, but that the first
+-; statement isn't until line 8.
++; Check that the line table starts at 7, not 4.
+ 
+-; CHECK-NOT: 0x0000000000000000      7      0      1   0  is_stmt
+-; CHECK: 0x0000000000000000      7      0      1   0
++; CHECK: 0x0000000000000000      7      0      1   0  is_stmt
+ ; CHECK: 0x0000000000000004      8     18      1   0  is_stmt prologue_end
+ 
+ define i32 @callee(i32 %x) nounwind uwtable ssp {
+-- 
+1.7.10
+




More information about the arch-commits mailing list