[llvm] r328235 - [DWARF] Replace assert with diagnostic. PR36868.

via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 26 12:58:12 PDT 2018


r328578.

From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On Behalf Of via llvm-commits
Sent: Monday, March 26, 2018 2:57 PM
To: dblaikie at gmail.com; jh7370.2008 at my.bristol.ac.uk
Cc: llvm-commits at lists.llvm.org
Subject: RE: [llvm] r328235 - [DWARF] Replace assert with diagnostic. PR36868.

I think it is a fine comment. ☺  I was off Friday, I will take care of it today.
--paulr

From: David Blaikie [mailto:dblaikie at gmail.com]
Sent: Monday, March 26, 2018 12:31 PM
To: jh7370.2008 at my.bristol.ac.uk
Cc: Robinson, Paul; llvm-commits
Subject: Re: [llvm] r328235 - [DWARF] Replace assert with diagnostic. PR36868.

Ping - Paul, any thoughts on James's comment?

On Fri, Mar 23, 2018 at 8:16 AM James Henderson via llvm-commits <llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org>> wrote:
Hi Paul,
Spotted this whilst rebasing D44560: in the fprintf, the second PRIx32 should be a PRIx8, to match the return type of getAddressSize().
James

On 22 March 2018 at 19:37, Paul Robinson via llvm-commits <llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org>> wrote:
Author: probinson
Date: Thu Mar 22 12:37:56 2018
New Revision: 328235

URL: http://llvm.org/viewvc/llvm-project?rev=328235&view=rev
Log:
[DWARF] Replace assert with diagnostic. PR36868.

Added:
    llvm/trunk/test/DebugInfo/X86/dwarfdump-line-mismatch.s
Modified:
    llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp

Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp?rev=328235&r1=328234&r2=328235&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp Thu Mar 22 12:37:56 2018
@@ -551,8 +551,14 @@ bool DWARFDebugLine::LineTable::parse(DW
         // from the size of the operand.
         if (DebugLineData.getAddressSize() == 0)
           DebugLineData.setAddressSize(Len - 1);
-        else
-          assert(DebugLineData.getAddressSize() == Len - 1);
+        else if (DebugLineData.getAddressSize() != Len - 1) {
+          fprintf(stderr, "Mismatching address size at offset 0x%8.8" PRIx32
+                  " expected 0x%2.2" PRIx32 " found 0x%2.2" PRIx64 "\n",
+                  ExtOffset, DebugLineData.getAddressSize(), Len - 1);
+          // Skip the rest of the line-number program.
+          *OffsetPtr = EndOffset;
+          return false;
+        }
         State.Row.Address = DebugLineData.getRelocatedAddress(OffsetPtr);
         if (OS)
           *OS << format(" (0x%16.16" PRIx64 ")", State.Row.Address);

Added: llvm/trunk/test/DebugInfo/X86/dwarfdump-line-mismatch.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarfdump-line-mismatch.s?rev=328235&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/dwarfdump-line-mismatch.s (added)
+++ llvm/trunk/test/DebugInfo/X86/dwarfdump-line-mismatch.s Thu Mar 22 12:37:56 2018
@@ -0,0 +1,38 @@
+# The .debug_info section says 8-byte addresses, but the assembler
+# will generate a line table with 4-byte addresses (for i686).
+
+# RUN: llvm-mc -filetype=obj -triple i686-linux-gnu %s -o - | \
+# RUN: llvm-dwarfdump -debug-line - 2>&1 | FileCheck %s
+
+# CHECK: Mismatching address size at offset 0x{{[0-9a-f]+}}
+# CHECK-SAME: expected 0x08 found 0x04
+       .text
+       .file   "reduced.c"
+       .globl  main
+main:
+       .file   1 "/tmp" "reduced.c"
+       .loc    1 2 0
+       xorl    %eax, %eax
+       retl
+       .file   2 "/tmp/repeat/repeat/repeat/repeat" "repeat.h"
+
+       .section        .debug_abbrev,"", at progbits
+       .byte   1                       # Abbreviation Code
+       .byte   17                      # DW_TAG_compile_unit
+       .byte   0                       # DW_CHILDREN_no
+       .byte   16                      # DW_AT_stmt_list
+       .byte   23                      # DW_FORM_sec_offset
+       .byte   0                       # EOM(1)
+       .byte   0                       # EOM(2)
+       .byte   0                       # EOM(3)
+
+        .section       .debug_info,"", at progbits
+       .long   .Lend0 - .Lbegin0       # Length of Unit
+.Lbegin0:
+       .short  4                       # DWARF version number
+       .long   .debug_abbrev           # Offset Into Abbrev. Section
+       .byte   8                       # Address Size (in bytes)
+       .byte   1                       # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+       .long   .debug_line             # DW_AT_stmt_list
+.Lend0:
+       .section        .debug_line,"", at progbits


_______________________________________________
llvm-commits mailing list
llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

_______________________________________________
llvm-commits mailing list
llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180326/36d61c49/attachment.html>


More information about the llvm-commits mailing list