public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Fix pedantically invalid DWARF in gdb.trace/unavailable-dwarf-piece.exp
@ 2022-07-07 12:28 Pedro Alves
  0 siblings, 0 replies; only message in thread
From: Pedro Alves @ 2022-07-07 12:28 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a2a176c46bcb739db47c88b5641a23c1129accf0

commit a2a176c46bcb739db47c88b5641a23c1129accf0
Author: Pedro Alves <pedro@palves.net>
Date:   Thu Jul 7 13:05:50 2022 +0100

    Fix pedantically invalid DWARF in gdb.trace/unavailable-dwarf-piece.exp
    
    The DWARF spec says:
    
      Any debugging information entry representing the declaration of an object,
      module, subprogram or type may have DW_AT_decl_file, DW_AT_decl_line and
      DW_AT_decl_column attributes, each of whose value is an unsigned integer
                                                              ^^^^^^^^
      constant.
    
    Grepping around the DWARF-assembler-based testcases, I noticed that
    gdb.trace/unavailable-dwarf-piece.exp emits decl_line with
    DW_FORM_sdata, a signed integer form.  This commit tweaks it to use
    DW_FORM_udata instead.
    
    Unsurprisingly, this:
    
      $ make check \
          TESTS="gdb.trace/unavailable-dwarf-piece.exp" \
          RUNTESTFLAGS="--target_board=native-gdbserver"
    
    ... still passes cleanly for me after this change.
    
    I've noticed this because current llvm-dwarfdump crashed on an
    ROCm-internal DWARF-assembler-based testcase that incorrectly used
    signed forms for DW_AT_decl_file/DW_AT_decl_line.
    
    The older llvm-dwarfdump found on Ubuntu 20.04 (LLVM 10) reads the
    line numbers with signed forms as "0" instead of crashing.  Here's the
    before/after fix for gdb.trace/unavailable-dwarf-piece.exp with that
    llvm-dwarfdump version:
    
      $ diff -up before.txt after.txt
      --- before.txt    2022-07-07 13:21:28.387690334 +0100
      +++ after.txt     2022-07-07 13:21:39.379801092 +0100
      @@ -18,7 +18,7 @@
                       DW_AT_name     ("s")
                       DW_AT_byte_size        (3)
                       DW_AT_decl_file        (0)
      -                DW_AT_decl_line        (0)
      +                DW_AT_decl_line        (1)
    
       0x0000002f:     DW_TAG_member
                         DW_AT_name   ("a")
      @@ -41,7 +41,7 @@
                       DW_AT_name     ("t")
                       DW_AT_byte_size        (3)
                       DW_AT_decl_file        (0)
      -                DW_AT_decl_line        (0)
      +                DW_AT_decl_line        (1)
    
       0x00000054:     DW_TAG_member
                         DW_AT_name   ("a")
    
    Change-Id: I5c866946356da421ff944019d0eca2607b2b738f

Diff:
---
 gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp b/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
index c6b1382e9b1..f80f8005fcf 100644
--- a/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
+++ b/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
@@ -45,7 +45,7 @@ Dwarf::assemble $asm_file {
 		{name s}
 		{byte_size 3 DW_FORM_sdata}
 		{decl_file 0 DW_FORM_udata}
-		{decl_line 1 DW_FORM_sdata}
+		{decl_line 1 DW_FORM_udata}
 	    } {
 		DW_TAG_member {
 		    {name a}
@@ -74,7 +74,7 @@ Dwarf::assemble $asm_file {
 		{name t}
 		{byte_size 3 DW_FORM_sdata}
 		{decl_file 0 DW_FORM_udata}
-		{decl_line 1 DW_FORM_sdata}
+		{decl_line 1 DW_FORM_udata}
 	    } {
 		DW_TAG_member {
 		    {name a}


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-07 12:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07 12:28 [binutils-gdb] Fix pedantically invalid DWARF in gdb.trace/unavailable-dwarf-piece.exp Pedro Alves

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).