Re: Add bionutils support for DWARF v5's DW_OP_addrx
authorNatarajan, Kavitha <Kavitha.Natarajan@amd.com>
Wed, 25 May 2022 15:10:38 +0000 (16:10 +0100)
committerAlan Modra <amodra@gmail.com>
Wed, 25 May 2022 23:42:09 +0000 (09:12 +0930)
Testsuite files belonging to commit 3ac9da49378c.

binutils/testsuite/binutils-all/dw5-op.S [new file with mode: 0644]
binutils/testsuite/binutils-all/dw5-op.W [new file with mode: 0644]

diff --git a/binutils/testsuite/binutils-all/dw5-op.S b/binutils/testsuite/binutils-all/dw5-op.S
new file mode 100644 (file)
index 0000000..aa1851b
--- /dev/null
@@ -0,0 +1,134 @@
+/* Copyright (C) 2017-2022 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+       .file   "main.c"
+       .text
+.Letext0:
+       .section        .debug_info,"",%progbits
+.Ldebug_info0:
+       .4byte  0x4e    /* Length of Compilation Unit Info */
+       .2byte  0x5     /* DWARF version number */
+       .byte   0x1     /* DW_UT_compile */
+       .byte   0x8     /* Pointer Size (in bytes) */
+       .4byte  .Ldebug_abbrev0 /* Offset Into Abbrev. Section */
+       .uleb128 0x3    /* (DIE (0xc) DW_TAG_compile_unit) */
+       .4byte  .LASF21 /* DW_AT_producer: "GNU C11 7.0.1 20170218 (experimental) -mtune=generic -march=x86-64 -gdwarf-5 -O2" */
+       .byte   0x1d    /* DW_AT_language */
+       .4byte  .LASF0  /* DW_AT_name: "main.c" */
+       .4byte  .LASF1  /* DW_AT_comp_dir: "" */
+       .4byte  .LLRL2  /* DW_AT_ranges */
+       .8byte  0       /* DW_AT_low_pc */
+       .4byte  .Ldebug_line0   /* DW_AT_stmt_list */
+       .uleb128 0x1    /* (DIE (0x2a) DW_TAG_base_type) */
+       .byte   0x4     /* DW_AT_byte_size */
+       .byte   0x5     /* DW_AT_encoding */
+       .4byte  .LASF2  /* DW_AT_name: "short int" */
+       .uleb128 0x2    /* (DIE (0x31) DW_TAG_variable) */
+       .4byte  .LASF16 /* DW_AT_name: "xvar" */
+                       /* DW_AT_decl_file (1, main.c) */
+       .byte   0x2     /* DW_AT_decl_line */
+       .4byte  0x2a    /* DW_AT_type */
+                       /* DW_AT_external */
+       .uleb128 0x9    /* DW_AT_location */
+       .byte   0x3     /* DW_OP_addr */
+       .8byte  0x1234
+       .uleb128 0x2    /* (DIE (0x45) DW_TAG_variable) */
+       .4byte  .LASF17 /* DW_AT_name: "yvar" */
+                       /* DW_AT_decl_file (1, main.c) */
+       .byte   0x3     /* DW_AT_decl_line */
+       .4byte  0x2a    /* DW_AT_type */
+                       /* DW_AT_external */
+       .uleb128 0x2    /* DW_AT_location */
+       .byte   0xa1    /* DW_OP_addrx */
+       .byte   0x0
+       .section        .debug_abbrev,"",%progbits
+.Ldebug_abbrev0:
+       .uleb128 0x1    /* (abbrev code) */
+       .uleb128 0x24   /* (TAG: DW_TAG_base_type) */
+       .byte   0       /* DW_children_no */
+       .uleb128 0xb    /* (DW_AT_byte_size) */
+       .uleb128 0xb    /* (DW_FORM_data1) */
+       .uleb128 0x3e   /* (DW_AT_encoding) */
+       .uleb128 0xb    /* (DW_FORM_data1) */
+       .uleb128 0x3    /* (DW_AT_name) */
+       .uleb128 0xe    /* (DW_FORM_strp) */
+       .byte   0
+       .byte   0
+       .uleb128 0x2    /* (abbrev code) */
+       .uleb128 0x34   /* (TAG: DW_TAG_variable) */
+       .byte   0       /* DW_children_no */
+       .uleb128 0x3    /* (DW_AT_name) */
+       .uleb128 0xe    /* (DW_FORM_strp) */
+       .uleb128 0x3a   /* (DW_AT_decl_file) */
+       .uleb128 0x21   /* (DW_FORM_implicit_const) */
+       .sleb128 1      /* (main.c) */
+       .uleb128 0x3b   /* (DW_AT_decl_line) */
+       .uleb128 0xb    /* (DW_FORM_data1) */
+       .uleb128 0x49   /* (DW_AT_type) */
+       .uleb128 0x13   /* (DW_FORM_ref4) */
+       .uleb128 0x3f   /* (DW_AT_external) */
+       .uleb128 0x19   /* (DW_FORM_flag_present) */
+       .uleb128 0x2    /* (DW_AT_location) */
+       .uleb128 0x18   /* (DW_FORM_exprloc) */
+       .byte   0
+       .byte   0
+       .uleb128 0x3    /* (abbrev code) */
+       .uleb128 0x11   /* (TAG: DW_TAG_compile_unit) */
+       .byte   0x1     /* DW_children_yes */
+       .uleb128 0x25   /* (DW_AT_producer) */
+       .uleb128 0xe    /* (DW_FORM_strp) */
+       .uleb128 0x13   /* (DW_AT_language) */
+       .uleb128 0xb    /* (DW_FORM_data1) */
+       .uleb128 0x3    /* (DW_AT_name) */
+       .uleb128 0x1f   /* (DW_FORM_line_strp) */
+       .uleb128 0x1b   /* (DW_AT_comp_dir) */
+       .uleb128 0x1f   /* (DW_FORM_line_strp) */
+       .uleb128 0x55   /* (DW_AT_ranges) */
+       .uleb128 0x17   /* (DW_FORM_sec_offset) */
+       .uleb128 0x11   /* (DW_AT_low_pc) */
+       .uleb128 0x1    /* (DW_FORM_addr) */
+       .uleb128 0x10   /* (DW_AT_stmt_list) */
+       .uleb128 0x17   /* (DW_FORM_sec_offset) */
+       .byte   0
+       .byte   0
+       .byte   0
+       .section        .debug_line,"",%progbits
+.Ldebug_line0:
+       .4byte  .LELT0-.LSLT0   /* Length of Source Line Info */
+.LSLT0:
+       .2byte  0x5     /* DWARF Version */
+       .byte   0x8     /* Address Size */
+       .byte   0       /* Segment Size */
+       .4byte  .LASF0  /* File Entry: 0: "main.c" */
+       .byte   0
+.LELT0:
+       .section        .debug_str,"MS",%progbits,1
+.LASF22:
+       .asciz  "main"
+.LASF16:
+       .asciz  "xvar"
+.LASF21:
+       .asciz  "GNU C11 7.0.1 20170218 (experimental) -mtune=generic -march=x86-64 -gdwarf-5 -O2"
+.LASF17:
+       .asciz  "yvar"
+.LASF7:
+       .asciz  "short int"
+       .section        .debug_line_str,"MS",%progbits,1
+.LASF1:
+       .asciz  ""
+.LASF25:
+       .asciz  ""
+.LASF0:
+       .asciz  "main.c"
diff --git a/binutils/testsuite/binutils-all/dw5-op.W b/binutils/testsuite/binutils-all/dw5-op.W
new file mode 100644 (file)
index 0000000..544a071
--- /dev/null
@@ -0,0 +1,35 @@
+Contents of the .debug_info section:
+
+  Compilation Unit @ offset 0x0:
+   Length:        0x4e \(32-bit\)
+   Version:       5
+   Unit Type:     DW_UT_compile \(1\)
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+ <0><c>: Abbrev Number: 3 \(DW_TAG_compile_unit\)
+    <d>   DW_AT_producer    : \(indirect string, offset: 0xa\): GNU C11 7.0.1 20170218 \(experimental\) -mtune=generic -march=x86-64 -gdwarf-5 -O2
+    <11>   DW_AT_language    : 29      \(C11\)
+    <12>   DW_AT_name        : \(indirect line string, offset: 0x2\): main.c
+    <16>   DW_AT_comp_dir    : \(indirect line string, offset: 0x0\): 
+    <1a>   DW_AT_ranges      : 0x0
+    <1e>   DW_AT_low_pc      : 0x0
+    <26>   DW_AT_stmt_list   : 0x0
+ <1><2a>: Abbrev Number: 1 \(DW_TAG_base_type\)
+    <2b>   DW_AT_byte_size   : 4
+    <2c>   DW_AT_encoding    : 5       \(signed\)
+    <2d>   DW_AT_name        : \(indirect string, offset: 0x0\): main
+ <1><31>: Abbrev Number: 2 \(DW_TAG_variable\)
+    <32>   DW_AT_name        : \(indirect string, offset: 0x5\): xvar
+    <36>   DW_AT_decl_file   : 1
+    <36>   DW_AT_decl_line   : 2
+    <37>   DW_AT_type        : <0x2a>
+    <3b>   DW_AT_external    : 1
+    <3b>   DW_AT_location    : 9 byte block: 3 (0 0 0 0 0 0 12 34|34 12 0 0 0 0 0 0)   \(DW_OP_addr: 1234\)
+ <1><45>: Abbrev Number: 2 \(DW_TAG_variable\)
+    <46>   DW_AT_name        : \(indirect string, offset: 0x5b\): yvar
+    <4a>   DW_AT_decl_file   : 1
+    <4a>   DW_AT_decl_line   : 3
+    <4b>   DW_AT_type        : <0x2a>
+    <4f>   DW_AT_external    : 1
+    <4f>   DW_AT_location    : \(DW_OP_addrx <0x0>\)
+