diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 26aa81ee331..a21e36e6d1e 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2017-02-23 Jan Kratochvil + + * testsuite/binutils-all/dw5.S: New file. + * testsuite/binutils-all/dw5.W: New file. + * testsuite/binutils-all/readelf.exp (readelf -wiaoRlL): New test. + 2017-02-23 Jan Kratochvil * dwarf.c (read_and_display_attr_value): Support DW_FORM_data16. diff --git a/binutils/testsuite/binutils-all/dw5.S b/binutils/testsuite/binutils-all/dw5.S new file mode 100644 index 00000000000..83bb6396412 --- /dev/null +++ b/binutils/testsuite/binutils-all/dw5.S @@ -0,0 +1,679 @@ +/* Copyright (C) 2017 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 . */ + + .file "main.c" + .text +.Ltext0: + .p2align 4,,15 + .globl func + .type func, %function +func: +.LFB0: + /* main.c:5 */ +.LM1: +/* BLOCK 2 freq:10000 seq:0 */ +/* PRED: ENTRY [100.0%] (FALLTHRU) */ + /* main.c:5 */ +.LM2: + .dc.b 0 +/* SUCC: */ + .dc.b 0 +.LFE0: + .size func, .-func + .section .text.startup,"ax",%progbits + .p2align 4,,15 + .globl main + .type main, %function +main: +.LFB1: + /* main.c:6 */ +.LM3: +.LVL0: +/* BLOCK 2 freq:10000 seq:0 */ +/* PRED: ENTRY [100.0%] (FALLTHRU) */ + .dc.b 0 + /* main.c:6 */ +.LM4: + .dc.b 0 +.LVL1: + .dc.b 0 +.LVL2: + .dc.b 0 +/* SUCC: EXIT [100.0%] */ + .dc.b 0 +.LFE1: + .size main, .-main + .comm pvar,8,8 + .comm yvar,4,4 + .globl xvar + .data + .align 4 + .type xvar, %object + .size xvar, 4 +xvar: + .4byte 42 + .text +.Letext0: + .section .debug_info,"",%progbits +.Ldebug_info0: + .4byte 0x160 /* 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 0x6 /* (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 0x1 /* DW_AT_byte_size */ + .byte 0x8 /* DW_AT_encoding */ + .4byte .LASF2 /* DW_AT_name: "unsigned char" */ + .uleb128 0x1 /* (DIE (0x31) DW_TAG_base_type) */ + .byte 0x2 /* DW_AT_byte_size */ + .byte 0x7 /* DW_AT_encoding */ + .4byte .LASF3 /* DW_AT_name: "short unsigned int" */ + .uleb128 0x1 /* (DIE (0x38) DW_TAG_base_type) */ + .byte 0x4 /* DW_AT_byte_size */ + .byte 0x7 /* DW_AT_encoding */ + .4byte .LASF4 /* DW_AT_name: "unsigned int" */ + .uleb128 0x1 /* (DIE (0x3f) DW_TAG_base_type) */ + .byte 0x8 /* DW_AT_byte_size */ + .byte 0x7 /* DW_AT_encoding */ + .4byte .LASF5 /* DW_AT_name: "long unsigned int" */ + .uleb128 0x1 /* (DIE (0x46) DW_TAG_base_type) */ + .byte 0x1 /* DW_AT_byte_size */ + .byte 0x6 /* DW_AT_encoding */ + .4byte .LASF6 /* DW_AT_name: "signed char" */ + .uleb128 0x1 /* (DIE (0x4d) DW_TAG_base_type) */ + .byte 0x2 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .4byte .LASF7 /* DW_AT_name: "short int" */ + .uleb128 0x7 /* (DIE (0x54) DW_TAG_base_type) */ + .byte 0x4 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .ascii "int\0" /* DW_AT_name */ + .uleb128 0x1 /* (DIE (0x5b) DW_TAG_base_type) */ + .byte 0x8 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .4byte .LASF8 /* DW_AT_name: "long int" */ + .uleb128 0x1 /* (DIE (0x62) DW_TAG_base_type) */ + .byte 0x8 /* DW_AT_byte_size */ + .byte 0x7 /* DW_AT_encoding */ + .4byte .LASF9 /* DW_AT_name: "sizetype" */ + .uleb128 0x3 /* (DIE (0x69) DW_TAG_pointer_type) */ + /* DW_AT_byte_size (0x8) */ + .4byte 0x6e /* DW_AT_type */ + .uleb128 0x1 /* (DIE (0x6e) DW_TAG_base_type) */ + .byte 0x1 /* DW_AT_byte_size */ + .byte 0x6 /* DW_AT_encoding */ + .4byte .LASF10 /* DW_AT_name: "char" */ + .uleb128 0x8 /* (DIE (0x75) DW_TAG_variable) */ + .4byte .LASF11 /* DW_AT_name: "__environ" */ + .byte 0x2 /* DW_AT_decl_file (/usr/include/unistd.h) */ + .2byte 0x222 /* DW_AT_decl_line */ + .4byte 0x81 /* DW_AT_type */ + /* DW_AT_external */ + /* DW_AT_declaration */ + .uleb128 0x3 /* (DIE (0x81) DW_TAG_pointer_type) */ + /* DW_AT_byte_size (0x8) */ + .4byte 0x69 /* DW_AT_type */ + .uleb128 0x2 /* (DIE (0x86) DW_TAG_variable) */ + .4byte .LASF12 /* DW_AT_name: "optarg" */ + /* DW_AT_decl_file (3, /usr/include/getopt.h) */ + .byte 0x39 /* DW_AT_decl_line */ + .4byte 0x69 /* DW_AT_type */ + /* DW_AT_external */ + /* DW_AT_declaration */ + .uleb128 0x2 /* (DIE (0x90) DW_TAG_variable) */ + .4byte .LASF13 /* DW_AT_name: "optind" */ + /* DW_AT_decl_file (3, /usr/include/getopt.h) */ + .byte 0x47 /* DW_AT_decl_line */ + .4byte 0x54 /* DW_AT_type */ + /* DW_AT_external */ + /* DW_AT_declaration */ + .uleb128 0x2 /* (DIE (0x9a) DW_TAG_variable) */ + .4byte .LASF14 /* DW_AT_name: "opterr" */ + /* DW_AT_decl_file (3, /usr/include/getopt.h) */ + .byte 0x4c /* DW_AT_decl_line */ + .4byte 0x54 /* DW_AT_type */ + /* DW_AT_external */ + /* DW_AT_declaration */ + .uleb128 0x2 /* (DIE (0xa4) DW_TAG_variable) */ + .4byte .LASF15 /* DW_AT_name: "optopt" */ + /* DW_AT_decl_file (3, /usr/include/getopt.h) */ + .byte 0x50 /* DW_AT_decl_line */ + .4byte 0x54 /* DW_AT_type */ + /* DW_AT_external */ + /* DW_AT_declaration */ + .uleb128 0x4 /* (DIE (0xae) DW_TAG_variable) */ + .4byte .LASF16 /* DW_AT_name: "xvar" */ + /* DW_AT_decl_file (1, main.c) */ + .byte 0x2 /* DW_AT_decl_line */ + .4byte 0x54 /* DW_AT_type */ + /* DW_AT_external */ + .uleb128 0x9 /* DW_AT_location */ + .byte 0x3 /* DW_OP_addr */ + .8byte 0x1234 + .uleb128 0x4 /* (DIE (0xc2) DW_TAG_variable) */ + .4byte .LASF17 /* DW_AT_name: "yvar" */ + /* DW_AT_decl_file (1, main.c) */ + .byte 0x3 /* DW_AT_decl_line */ + .4byte 0x54 /* DW_AT_type */ + /* DW_AT_external */ + .uleb128 0x9 /* DW_AT_location */ + .byte 0x3 /* DW_OP_addr */ + .8byte 0x1234 + .uleb128 0x4 /* (DIE (0xd6) DW_TAG_variable) */ + .4byte .LASF18 /* DW_AT_name: "pvar" */ + /* DW_AT_decl_file (1, main.c) */ + .byte 0x4 /* DW_AT_decl_line */ + .4byte 0xea /* DW_AT_type */ + /* DW_AT_external */ + .uleb128 0x9 /* DW_AT_location */ + .byte 0x3 /* DW_OP_addr */ + .8byte 0x1234 + .uleb128 0x3 /* (DIE (0xea) DW_TAG_pointer_type) */ + /* DW_AT_byte_size (0x8) */ + .4byte 0x54 /* DW_AT_type */ + .uleb128 0x9 /* (DIE (0xef) DW_TAG_subprogram) */ + /* DW_AT_external */ + .4byte .LASF22 /* DW_AT_name: "main" */ + .byte 0x1 /* DW_AT_decl_file (main.c) */ + .byte 0x6 /* DW_AT_decl_line */ + /* DW_AT_prototyped */ + .4byte 0x54 /* DW_AT_type */ + .8byte 0x1234 /* DW_AT_low_pc */ + .8byte 0x5678 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_AT_frame_base */ + .byte 0x9c /* DW_OP_call_frame_cfa */ + /* DW_AT_call_all_calls */ + .4byte 0x13e /* DW_AT_sibling */ + .uleb128 0x5 /* (DIE (0x110) DW_TAG_formal_parameter) */ + .4byte .LASF19 /* DW_AT_name: "argc" */ + /* DW_AT_decl_file (1, main.c) */ + /* DW_AT_decl_line (0x6) */ + .4byte 0x54 /* DW_AT_type */ + .4byte .LLST0 /* DW_AT_location */ + .uleb128 0x5 /* (DIE (0x11d) DW_TAG_formal_parameter) */ + .4byte .LASF20 /* DW_AT_name: "argv" */ + /* DW_AT_decl_file (1, main.c) */ + /* DW_AT_decl_line (0x6) */ + .4byte 0x81 /* DW_AT_type */ + .4byte .LLST1 /* DW_AT_location */ + .uleb128 0xa /* (DIE (0x12a) DW_TAG_call_site) */ + .8byte 0x12345 /* DW_AT_call_return_pc */ + .4byte 0x157 /* DW_AT_call_origin */ + .uleb128 0xb /* (DIE (0x137) DW_TAG_call_site_parameter) */ + .uleb128 0x1 /* DW_AT_location */ + .byte 0x55 /* DW_OP_reg5 */ + .uleb128 0x1 /* DW_AT_call_value */ + .byte 0x30 /* DW_OP_lit0 */ + .byte 0 /* end of children of DIE 0x12a */ + .byte 0 /* end of children of DIE 0xef */ + .uleb128 0xc /* (DIE (0x13e) DW_TAG_subprogram) */ + /* DW_AT_external */ + .4byte .LASF23 /* DW_AT_name: "func" */ + .byte 0x1 /* DW_AT_decl_file (main.c) */ + .byte 0x5 /* DW_AT_decl_line */ + /* DW_AT_prototyped */ + .8byte 0x1234 /* DW_AT_low_pc */ + .8byte 0x5678 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_AT_frame_base */ + .byte 0x9c /* DW_OP_call_frame_cfa */ + /* DW_AT_call_all_calls */ + .uleb128 0xd /* (DIE (0x157) DW_TAG_subprogram) */ + /* DW_AT_external */ + /* DW_AT_declaration */ + .4byte .LASF24 /* DW_AT_linkage_name: "alarm" */ + .4byte .LASF24 /* DW_AT_name: "alarm" */ + .byte 0x2 /* DW_AT_decl_file (/usr/include/unistd.h) */ + .2byte 0x1b3 /* DW_AT_decl_line */ + .byte 0 /* end of children of DIE 0xc */ + .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 3 /* (/usr/include/getopt.h) */ + .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 0x3c /* (DW_AT_declaration) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .byte 0 + .byte 0 + .uleb128 0x3 /* (abbrev code) */ + .uleb128 0xf /* (TAG: DW_TAG_pointer_type) */ + .byte 0 /* DW_children_no */ + .uleb128 0xb /* (DW_AT_byte_size) */ + .uleb128 0x21 /* (DW_FORM_implicit_const) */ + .sleb128 8 + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x4 /* (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 0x5 /* (abbrev code) */ + .uleb128 0x5 /* (TAG: DW_TAG_formal_parameter) */ + .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 0x21 /* (DW_FORM_implicit_const) */ + .sleb128 6 + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0x17 /* (DW_FORM_sec_offset) */ + .byte 0 + .byte 0 + .uleb128 0x6 /* (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 + .uleb128 0x7 /* (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 0x8 /* (DW_FORM_string) */ + .byte 0 + .byte 0 + .uleb128 0x8 /* (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 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0x5 /* (DW_FORM_data2) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x3c /* (DW_AT_declaration) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .byte 0 + .byte 0 + .uleb128 0x9 /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0xe /* (DW_FORM_strp) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x27 /* (DW_AT_prototyped) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x12 /* (DW_AT_high_pc) */ + .uleb128 0x7 /* (DW_FORM_data8) */ + .uleb128 0x40 /* (DW_AT_frame_base) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7a /* (DW_AT_call_all_calls) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x1 /* (DW_AT_sibling) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0xa /* (abbrev code) */ + .uleb128 0x48 /* (TAG: DW_TAG_call_site) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x7d /* (DW_AT_call_return_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x7f /* (DW_AT_call_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0xb /* (abbrev code) */ + .uleb128 0x49 /* (TAG: DW_TAG_call_site_parameter) */ + .byte 0 /* DW_children_no */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7e /* (DW_AT_call_value) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .byte 0 + .byte 0 + .uleb128 0xc /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0xe /* (DW_FORM_strp) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x27 /* (DW_AT_prototyped) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x12 /* (DW_AT_high_pc) */ + .uleb128 0x7 /* (DW_FORM_data8) */ + .uleb128 0x40 /* (DW_AT_frame_base) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7a /* (DW_AT_call_all_calls) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .byte 0 + .byte 0 + .uleb128 0xd /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x3c /* (DW_AT_declaration) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x6e /* (DW_AT_linkage_name) */ + .uleb128 0xe /* (DW_FORM_strp) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0xe /* (DW_FORM_strp) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0x5 /* (DW_FORM_data2) */ + .byte 0 + .byte 0 + .byte 0 + .section .debug_loclists,"",%progbits + .4byte .Ldebug_loc2-.Ldebug_loc1 /* Length of Location Lists */ +.Ldebug_loc1: + .2byte 0x5 /* DWARF Version */ + .byte 0x8 /* Address Size */ + .byte 0 /* Segment Size */ + .4byte 0 /* Offset Entry Count */ +.Ldebug_loc0: +.LLST0: + .byte 0x6 /* DW_LLE_base_address (*.LLST0) */ + .8byte 0x1234 /* Base address (*.LLST0) */ + .byte 0x4 /* DW_LLE_offset_pair (*.LLST0) */ + .uleb128 .LVL0-.LVL0 /* Location list begin address (*.LLST0) */ + .uleb128 .LVL1-.LVL0 /* Location list end address (*.LLST0) */ + .uleb128 0x1 /* Location expression size */ + .byte 0x55 /* DW_OP_reg5 */ + .byte 0x4 /* DW_LLE_offset_pair (*.LLST0) */ + .uleb128 .LVL1-.LVL0 /* Location list begin address (*.LLST0) */ + .uleb128 .LFE1-.LVL0 /* Location list end address (*.LLST0) */ + .uleb128 0x4 /* Location expression size */ + .byte 0xa3 /* DW_OP_entry_value */ + .uleb128 0x1 + .byte 0x55 /* DW_OP_reg5 */ + .byte 0x9f /* DW_OP_stack_value */ + .byte 0 /* DW_LLE_end_of_list (*.LLST0) */ +.LLST1: + .byte 0x6 /* DW_LLE_base_address (*.LLST1) */ + .8byte 0x1234 /* Base address (*.LLST1) */ + .byte 0x4 /* DW_LLE_offset_pair (*.LLST1) */ + .uleb128 .LVL0-.LVL0 /* Location list begin address (*.LLST1) */ + .uleb128 .LVL2-1-.LVL0 /* Location list end address (*.LLST1) */ + .uleb128 0x1 /* Location expression size */ + .byte 0x54 /* DW_OP_reg4 */ + .byte 0x4 /* DW_LLE_offset_pair (*.LLST1) */ + .uleb128 .LVL2-1-.LVL0 /* Location list begin address (*.LLST1) */ + .uleb128 .LFE1-.LVL0 /* Location list end address (*.LLST1) */ + .uleb128 0x4 /* Location expression size */ + .byte 0xa3 /* DW_OP_entry_value */ + .uleb128 0x1 + .byte 0x54 /* DW_OP_reg4 */ + .byte 0x9f /* DW_OP_stack_value */ + .byte 0 /* DW_LLE_end_of_list (*.LLST1) */ +.Ldebug_loc2: + .section .debug_aranges,"",%progbits + .4byte 0x3c /* Length of Address Ranges Info */ + .2byte 0x2 /* DWARF Version */ + .4byte .Ldebug_info0 /* Offset of Compilation Unit Info */ + .byte 0x8 /* Size of Address */ + .byte 0 /* Size of Segment Descriptor */ + .2byte 0 /* Pad to 16 byte boundary */ + .2byte 0 + .8byte 0x1234 /* Address */ + .8byte 0x4567 /* Length */ + .8byte 0x1234 /* Address */ + .8byte 0x5678 /* Length */ + .8byte 0 + .8byte 0 + .section .debug_rnglists,"",%progbits +.Ldebug_ranges0: + .4byte .Ldebug_ranges3-.Ldebug_ranges2 /* Length of Range Lists */ +.Ldebug_ranges2: + .2byte 0x5 /* DWARF Version */ + .byte 0x8 /* Address Size */ + .byte 0 /* Segment Size */ + .4byte 0 /* Offset Entry Count */ +.LLRL2: + .byte 0x7 /* DW_RLE_start_length (*.LLRL2) */ + .8byte 0x1234 /* Range begin address (*.LLRL2) */ + .uleb128 .Letext0-.Ltext0 /* Range length (*.LLRL2) */ + .byte 0x7 /* DW_RLE_start_length (*.LLRL2) */ + .8byte 0x1234 /* Range begin address (*.LLRL2) */ + .uleb128 .LFE1-.LFB1 /* Range length (*.LLRL2) */ + .byte 0 /* DW_RLE_end_of_list (*.LLRL2) */ +.Ldebug_ranges3: + .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 .LELTP0-.LASLTP0 /* Prolog Length */ +.LASLTP0: + .byte 0x1 /* Minimum Instruction Length */ + .byte 0x1 /* Maximum Operations Per Instruction */ + .byte 0x1 /* Default is_stmt_start flag */ + .byte 0xf6 /* Line Base Value (Special Opcodes) */ + .byte 0xf2 /* Line Range Value (Special Opcodes) */ + .byte 0xd /* Special Opcode Base */ + .byte 0 /* opcode: 0x1 has 0 args */ + .byte 0x1 /* opcode: 0x2 has 1 args */ + .byte 0x1 /* opcode: 0x3 has 1 args */ + .byte 0x1 /* opcode: 0x4 has 1 args */ + .byte 0x1 /* opcode: 0x5 has 1 args */ + .byte 0 /* opcode: 0x6 has 0 args */ + .byte 0 /* opcode: 0x7 has 0 args */ + .byte 0 /* opcode: 0x8 has 0 args */ + .byte 0x1 /* opcode: 0x9 has 1 args */ + .byte 0 /* opcode: 0xa has 0 args */ + .byte 0 /* opcode: 0xb has 0 args */ + .byte 0x1 /* opcode: 0xc has 1 args */ + .byte 0x1 /* Directory entry format count */ + .uleb128 0x1 /* DW_LNCT_path */ + .uleb128 0x1f /* DW_FORM_line_strp */ + .uleb128 0x3 /* Directories count */ + .4byte .LASF1 /* Directory Entry: 0: "" */ + .4byte .LASF25 /* Directory Entry: 0: "" */ + .4byte .LASF26 /* Directory Entry: 0: "/usr/include" */ + .byte 0x2 /* File name entry format count */ + .uleb128 0x1 /* DW_LNCT_path */ + .uleb128 0x1f /* DW_FORM_line_strp */ + .uleb128 0x2 /* DW_LNCT_directory_index */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x4 /* File names count */ + .4byte .LASF0 /* File Entry: 0: "main.c" */ + .byte 0 + .4byte .LASF27 /* File Entry: 0: "main.c" */ + .byte 0x1 + .4byte .LASF28 /* File Entry: 0: "unistd.h" */ + .byte 0x2 + .4byte .LASF29 /* File Entry: 0: "getopt.h" */ + .byte 0x2 +.LELTP0: + .byte 0 /* set address *.LM3 */ + .uleb128 0x9 + .byte 0x2 + .8byte 0x1234 + .byte 0x1c /* line 6 */ + .byte 0 /* set address *.LM4 */ + .uleb128 0x9 + .byte 0x2 + .8byte 0x12346 + .byte 0x1 /* copy line 6 */ + .byte 0 /* set address *.LFE1 */ + .uleb128 0x9 + .byte 0x2 + .8byte 0x1234 + .byte 0 /* end sequence */ + .uleb128 0x1 + .byte 0x1 + .byte 0 /* set address *.LM1 */ + .uleb128 0x9 + .byte 0x2 + .8byte 0x1234 + .byte 0x1b /* line 5 */ + .byte 0 /* set address *.LM2 */ + .uleb128 0x9 + .byte 0x2 + .8byte 0x1234 + .byte 0x1 /* copy line 5 */ + .byte 0 /* set address *.Letext0 */ + .uleb128 0x9 + .byte 0x2 + .8byte 0x1234 + .byte 0 /* end sequence */ + .uleb128 0x1 + .byte 0x1 +.LELT0: + .section .debug_str,"MS",%progbits,1 +.LASF4: + .string "unsigned int" +.LASF15: + .string "optopt" +.LASF22: + .string "main" +.LASF6: + .string "signed char" +.LASF16: + .string "xvar" +.LASF5: + .string "long unsigned int" +.LASF14: + .string "opterr" +.LASF21: + .string "GNU C11 7.0.1 20170218 (experimental) -mtune=generic -march=x86-64 -gdwarf-5 -O2" +.LASF2: + .string "unsigned char" +.LASF10: + .string "char" +.LASF13: + .string "optind" +.LASF8: + .string "long int" +.LASF19: + .string "argc" +.LASF3: + .string "short unsigned int" +.LASF17: + .string "yvar" +.LASF18: + .string "pvar" +.LASF11: + .string "__environ" +.LASF23: + .string "func" +.LASF12: + .string "optarg" +.LASF7: + .string "short int" +.LASF24: + .string "alarm" +.LASF9: + .string "sizetype" +.LASF20: + .string "argv" + .section .debug_line_str,"MS",%progbits,1 +.LASF1: + .string "" +.LASF25: + .string "" +.LASF29: + .string "getopt.h" +.LASF28: + .string "unistd.h" +.LASF0: + .string "main.c" +.LASF27: + .string "main.c" +.LASF26: + .string "/usr/include" + .ident "GCC: (GNU) 7.0.1 20170218 (experimental)" + .section .note.GNU-stack,"",%progbits diff --git a/binutils/testsuite/binutils-all/dw5.W b/binutils/testsuite/binutils-all/dw5.W new file mode 100644 index 00000000000..6f3f8efa124 --- /dev/null +++ b/binutils/testsuite/binutils-all/dw5.W @@ -0,0 +1,355 @@ +Contents of the .debug_info section: + + Compilation Unit @ offset 0x0: + Length: 0x160 \(32-bit\) + Version: 5 + Abbrev Offset: 0x0 + Pointer Size: 8 + <0>: Abbrev Number: 6 \(DW_TAG_compile_unit\) + DW_AT_producer : \(indirect string, offset: 0x43\): 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: 0x14\): main.c + <16> DW_AT_comp_dir : \(indirect line string, offset: 0x0\): + <1a> DW_AT_ranges : 0xc + <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 : 1 + <2c> DW_AT_encoding : 8 \(unsigned char\) + <2d> DW_AT_name : \(indirect string, offset: 0x94\): unsigned char + <1><31>: Abbrev Number: 1 \(DW_TAG_base_type\) + <32> DW_AT_byte_size : 2 + <33> DW_AT_encoding : 7 \(unsigned\) + <34> DW_AT_name : \(indirect string, offset: 0xbc\): short unsigned int + <1><38>: Abbrev Number: 1 \(DW_TAG_base_type\) + <39> DW_AT_byte_size : 4 + <3a> DW_AT_encoding : 7 \(unsigned\) + <3b> DW_AT_name : \(indirect string, offset: 0x0\): unsigned int + <1><3f>: Abbrev Number: 1 \(DW_TAG_base_type\) + <40> DW_AT_byte_size : 8 + <41> DW_AT_encoding : 7 \(unsigned\) + <42> DW_AT_name : \(indirect string, offset: 0x2a\): long unsigned int + <1><46>: Abbrev Number: 1 \(DW_TAG_base_type\) + <47> DW_AT_byte_size : 1 + <48> DW_AT_encoding : 6 \(signed char\) + <49> DW_AT_name : \(indirect string, offset: 0x19\): signed char + <1><4d>: Abbrev Number: 1 \(DW_TAG_base_type\) + <4e> DW_AT_byte_size : 2 + <4f> DW_AT_encoding : 5 \(signed\) + <50> DW_AT_name : \(indirect string, offset: 0xef\): short int + <1><54>: Abbrev Number: 7 \(DW_TAG_base_type\) + <55> DW_AT_byte_size : 4 + <56> DW_AT_encoding : 5 \(signed\) + <57> DW_AT_name : int + <1><5b>: Abbrev Number: 1 \(DW_TAG_base_type\) + <5c> DW_AT_byte_size : 8 + <5d> DW_AT_encoding : 5 \(signed\) + <5e> DW_AT_name : \(indirect string, offset: 0xae\): long int + <1><62>: Abbrev Number: 1 \(DW_TAG_base_type\) + <63> DW_AT_byte_size : 8 + <64> DW_AT_encoding : 7 \(unsigned\) + <65> DW_AT_name : \(indirect string, offset: 0xff\): sizetype + <1><69>: Abbrev Number: 3 \(DW_TAG_pointer_type\) + <6a> DW_AT_byte_size : 8 + <6a> DW_AT_type : <0x6e> + <1><6e>: Abbrev Number: 1 \(DW_TAG_base_type\) + <6f> DW_AT_byte_size : 1 + <70> DW_AT_encoding : 6 \(signed char\) + <71> DW_AT_name : \(indirect string, offset: 0xa2\): char + <1><75>: Abbrev Number: 8 \(DW_TAG_variable\) + <76> DW_AT_name : \(indirect string, offset: 0xd9\): __environ + <7a> DW_AT_decl_file : 2 + <7b> DW_AT_decl_line : 546 + <7d> DW_AT_type : <0x81> + <81> DW_AT_external : 1 + <81> DW_AT_declaration : 1 + <1><81>: Abbrev Number: 3 \(DW_TAG_pointer_type\) + <82> DW_AT_byte_size : 8 + <82> DW_AT_type : <0x69> + <1><86>: Abbrev Number: 2 \(DW_TAG_variable\) + <87> DW_AT_name : \(indirect string, offset: 0xe8\): optarg + <8b> DW_AT_decl_file : 3 + <8b> DW_AT_decl_line : 57 + <8c> DW_AT_type : <0x69> + <90> DW_AT_external : 1 + <90> DW_AT_declaration : 1 + <1><90>: Abbrev Number: 2 \(DW_TAG_variable\) + <91> DW_AT_name : \(indirect string, offset: 0xa7\): optind + <95> DW_AT_decl_file : 3 + <95> DW_AT_decl_line : 71 + <96> DW_AT_type : <0x54> + <9a> DW_AT_external : 1 + <9a> DW_AT_declaration : 1 + <1><9a>: Abbrev Number: 2 \(DW_TAG_variable\) + <9b> DW_AT_name : \(indirect string, offset: 0x3c\): opterr + <9f> DW_AT_decl_file : 3 + <9f> DW_AT_decl_line : 76 + DW_AT_type : <0x54> + DW_AT_external : 1 + DW_AT_declaration : 1 + <1>: Abbrev Number: 2 \(DW_TAG_variable\) + DW_AT_name : \(indirect string, offset: 0xd\): optopt + DW_AT_decl_file : 3 + DW_AT_decl_line : 80 + DW_AT_type : <0x54> + DW_AT_external : 1 + DW_AT_declaration : 1 + <1>: Abbrev Number: 4 \(DW_TAG_variable\) + DW_AT_name : \(indirect string, offset: 0x25\): xvar + DW_AT_decl_file : 1 + DW_AT_decl_line : 2 + DW_AT_type : <0x54> + DW_AT_external : 1 + DW_AT_location : 9 byte block: 3 (0|34) (0|12) 0 0 0 0 (0|12) (0|34) \(DW_OP_addr: 1234\) + <1>: Abbrev Number: 4 \(DW_TAG_variable\) + DW_AT_name : \(indirect string, offset: 0xcf\): yvar + DW_AT_decl_file : 1 + DW_AT_decl_line : 3 + DW_AT_type : <0x54> + DW_AT_external : 1 + DW_AT_location : 9 byte block: 3 (0|34) (0|12) 0 0 0 0 (0|12) (0|34) \(DW_OP_addr: 1234\) + <1>: Abbrev Number: 4 \(DW_TAG_variable\) + DW_AT_name : \(indirect string, offset: 0xd4\): pvar + DW_AT_decl_file : 1 + DW_AT_decl_line : 4 + DW_AT_type : <0xea> + DW_AT_external : 1 + DW_AT_location : 9 byte block: 3 (0|34) (0|12) 0 0 0 0 (0|12) (0|34) \(DW_OP_addr: 1234\) + <1>: Abbrev Number: 3 \(DW_TAG_pointer_type\) + DW_AT_byte_size : 8 + DW_AT_type : <0x54> + <1>: Abbrev Number: 9 \(DW_TAG_subprogram\) + DW_AT_external : 1 + DW_AT_name : \(indirect string, offset: 0x14\): main + DW_AT_decl_file : 1 + DW_AT_decl_line : 6 + DW_AT_prototyped : 1 + DW_AT_type : <0x54> + DW_AT_low_pc : 0x1234 + <102> DW_AT_high_pc : 0x5678 + <10a> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\) + <10c> DW_AT_call_all_calls: 1 + <10c> DW_AT_sibling : <0x13e> + <2><110>: Abbrev Number: 5 \(DW_TAG_formal_parameter\) + <111> DW_AT_name : \(indirect string, offset: 0xb7\): argc + <115> DW_AT_decl_file : 1 + <115> DW_AT_decl_line : 6 + <115> DW_AT_type : <0x54> + <119> DW_AT_location : 0xc \(location list\) + <2><11d>: Abbrev Number: 5 \(DW_TAG_formal_parameter\) + <11e> DW_AT_name : \(indirect string, offset: 0x108\): argv + <122> DW_AT_decl_file : 1 + <122> DW_AT_decl_line : 6 + <122> DW_AT_type : <0x81> + <126> DW_AT_location : 0x23 \(location list\) + <2><12a>: Abbrev Number: 10 \(DW_TAG_call_site\) + <12b> DW_AT_call_return_pc: 0x12345 + <133> DW_AT_call_origin : <0x157> + <3><137>: Abbrev Number: 11 \(DW_TAG_call_site_parameter\) + <138> DW_AT_location : 1 byte block: 55 \(DW_OP_reg5 \([^()]*\)\) + <13a> DW_AT_call_value : 1 byte block: 30 \(DW_OP_lit0\) + <3><13c>: Abbrev Number: 0 + <2><13d>: Abbrev Number: 0 + <1><13e>: Abbrev Number: 12 \(DW_TAG_subprogram\) + <13f> DW_AT_external : 1 + <13f> DW_AT_name : \(indirect string, offset: 0xe3\): func + <143> DW_AT_decl_file : 1 + <144> DW_AT_decl_line : 5 + <145> DW_AT_prototyped : 1 + <145> DW_AT_low_pc : 0x1234 + <14d> DW_AT_high_pc : 0x5678 + <155> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\) + <157> DW_AT_call_all_calls: 1 + <1><157>: Abbrev Number: 13 \(DW_TAG_subprogram\) + <158> DW_AT_external : 1 + <158> DW_AT_declaration : 1 + <158> DW_AT_linkage_name: \(indirect string, offset: 0xf9\): alarm + <15c> DW_AT_name : \(indirect string, offset: 0xf9\): alarm + <160> DW_AT_decl_file : 2 + <161> DW_AT_decl_line : 435 + <1><163>: Abbrev Number: 0 + +Contents of the .debug_abbrev section: + + Number TAG \(0x0\) + 1 DW_TAG_base_type \[no children\] + DW_AT_byte_size DW_FORM_data1 + DW_AT_encoding DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT value: 0 DW_FORM value: 0 + 2 DW_TAG_variable \[no children\] + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_implicit_const: 3 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + DW_AT_declaration DW_FORM_flag_present + DW_AT value: 0 DW_FORM value: 0 + 3 DW_TAG_pointer_type \[no children\] + DW_AT_byte_size DW_FORM_implicit_const: 8 + DW_AT_type DW_FORM_ref4 + DW_AT value: 0 DW_FORM value: 0 + 4 DW_TAG_variable \[no children\] + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_implicit_const: 1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + DW_AT_location DW_FORM_exprloc + DW_AT value: 0 DW_FORM value: 0 + 5 DW_TAG_formal_parameter \[no children\] + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_implicit_const: 1 + DW_AT_decl_line DW_FORM_implicit_const: 6 + DW_AT_type DW_FORM_ref4 + DW_AT_location DW_FORM_sec_offset + DW_AT value: 0 DW_FORM value: 0 + 6 DW_TAG_compile_unit \[has children\] + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data1 + DW_AT_name DW_FORM_line_strp + DW_AT_comp_dir DW_FORM_line_strp + DW_AT_ranges DW_FORM_sec_offset + DW_AT_low_pc DW_FORM_addr + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT value: 0 DW_FORM value: 0 + 7 DW_TAG_base_type \[no children\] + DW_AT_byte_size DW_FORM_data1 + DW_AT_encoding DW_FORM_data1 + DW_AT_name DW_FORM_string + DW_AT value: 0 DW_FORM value: 0 + 8 DW_TAG_variable \[no children\] + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data2 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + DW_AT_declaration DW_FORM_flag_present + DW_AT value: 0 DW_FORM value: 0 + 9 DW_TAG_subprogram \[has children\] + DW_AT_external DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data8 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_call_all_calls DW_FORM_flag_present + DW_AT_sibling DW_FORM_ref4 + DW_AT value: 0 DW_FORM value: 0 + 10 DW_TAG_call_site \[has children\] + DW_AT_call_return_pc DW_FORM_addr + DW_AT_call_origin DW_FORM_ref4 + DW_AT value: 0 DW_FORM value: 0 + 11 DW_TAG_call_site_parameter \[no children\] + DW_AT_location DW_FORM_exprloc + DW_AT_call_value DW_FORM_exprloc + DW_AT value: 0 DW_FORM value: 0 + 12 DW_TAG_subprogram \[no children\] + DW_AT_external DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data8 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_call_all_calls DW_FORM_flag_present + DW_AT value: 0 DW_FORM value: 0 + 13 DW_TAG_subprogram \[no children\] + DW_AT_external DW_FORM_flag_present + DW_AT_declaration DW_FORM_flag_present + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data2 + DW_AT value: 0 DW_FORM value: 0 +#... +Contents of the .debug_loclists section: +#... + Offset Begin End Expression + 0000000c 0000000000001234 \(base address\) + 00000015 0000000000001234 0000000000001236 \(DW_OP_reg5 \([^()]*\)\) + 0000001a 0000000000001236 0000000000001239 \(DW_OP_entry_value: \(DW_OP_reg5 \([^()]*\)\); DW_OP_stack_value\) + 00000022 + 00000023 0000000000001234 \(base address\) + 0000002c 0000000000001234 0000000000001236 \(DW_OP_reg4 \([^()]*\)\) + 00000031 0000000000001236 0000000000001239 \(DW_OP_entry_value: \(DW_OP_reg4 \([^()]*\)\); DW_OP_stack_value\) + 00000039 + +Contents of the .debug_rnglists section: + + Offset Begin End + 0000000c 0000000000001234 0000000000001236 + 00000016 0000000000001234 0000000000001239 + 00000020 + +Raw dump of debug contents of section .debug_line: + + Offset: 0x0 + Length: 144 + DWARF Version: 5 + Prologue Length: 60 + Minimum Instruction Length: 1 + Maximum Ops per Instruction: 1 + Initial value of 'is_stmt': 1 + Line Base: -10 + Line Range: 242 + Opcode Base: 13 + + Opcodes: + Opcode 1 has 0 args + Opcode 2 has 1 args + Opcode 3 has 1 args + Opcode 4 has 1 args + Opcode 5 has 1 args + Opcode 6 has 0 args + Opcode 7 has 0 args + Opcode 8 has 0 args + Opcode 9 has 1 args + Opcode 10 has 0 args + Opcode 11 has 0 args + Opcode 12 has 1 args + + The Directory Table \(offset 0x22\): + Entry Name + 0 \(indirect line string, offset: 0x0\): + 1 \(indirect line string, offset: 0x1\): + 2 \(indirect line string, offset: 0x22\): /usr/include + + The File name Table \(offset 0x34\): + Entry Dir Name + 0 0 \(indirect line string, offset: 0x14\): main.c + 1 1 \(indirect line string, offset: 0x1b\): main.c + 2 2 \(indirect line string, offset: 0xb\): unistd.h + 3 2 \(indirect line string, offset: 0x2\): getopt.h + + Line Number Statements: + \[0x00000048\] Extended opcode 2: set Address to 0x1234 + \[0x00000053\] Special opcode 15: advance Address by 0 to 0x1234 and Line by 5 to 6 + \[0x00000054\] Extended opcode 2: set Address to 0x12346 + \[0x0000005f\] Copy + \[0x00000060\] Extended opcode 2: set Address to 0x1234 + \[0x0000006b\] Extended opcode 1: End of Sequence + + \[0x0000006e\] Extended opcode 2: set Address to 0x1234 + \[0x00000079\] Special opcode 14: advance Address by 0 to 0x1234 and Line by 4 to 5 + \[0x0000007a\] Extended opcode 2: set Address to 0x1234 + \[0x00000085\] Copy + \[0x00000086\] Extended opcode 2: set Address to 0x1234 + \[0x00000091\] Extended opcode 1: End of Sequence + + +Decoded dump of debug contents of section .debug_line: + +CU: ./main.c: +File name Line number Starting address +main.c 6 0x1234 +main.c 6 0x12346 + +main.c 5 0x1234 +main.c 5 0x1234 + + diff --git a/binutils/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp index e442bdff280..10f2b7a1b62 100644 --- a/binutils/testsuite/binutils-all/readelf.exp +++ b/binutils/testsuite/binutils-all/readelf.exp @@ -394,3 +394,28 @@ if {![binutils_assemble $srcdir/$subdir/z.s tmpdir/z.o]} then { readelf_test {--decompress --hex-dump .debug_loc} $tempfile readelf.z {} } + +# Skip the next test for the RISCV architectures because they do not +# support .ULEB128 pseudo-ops with non-constant values. +if ![istarget "riscv*-*-*"] then { + + # Assemble the DWARF-5 test file. + if {![binutils_assemble $srcdir/$subdir/dw5.S tmpdir/dw5.o]} then { + perror "could not assemble dw5 test file" + unresolved "readelf - failed to assemble dw5" + return + } + + # Download it. + if ![is_remote host] { + set tempfile tmpdir/dw5.o + } else { + set tempfile [remote_download host tmpdir/dw5.o] + } + + # First, determine the size, so specific output matchers can be used. + readelf_find_size $tempfile + + # Make sure that readelf can decode the contents. + readelf_test -wiaoRlL $tempfile dw5.W {} +}