[llvm] r328235 - [DWARF] Replace assert with diagnostic. PR36868.
Paul Robinson via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 22 12:37:56 PDT 2018
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
More information about the llvm-commits
mailing list