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

James Henderson via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 23 08:16:52 PDT 2018


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> 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
> 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/20180323/d3f09be5/attachment.html>


More information about the llvm-commits mailing list