binutils-gdb/binutils/testsuite/binutils-all/dwarf-attributes.S
Nick Clifton ec1b0fbb8d Improve the DWARF decoder's ability to describe the DW_AT_discr_list attribute.
PR 24510
	* dwarf.c (MAX_CU_NESTING): New constant.
	(level_type_signed): New static array.
	(skip_attr_bytes): New function.
	(get_type_signedness): New function.
	(read_and_print_leb128): New function.
	(display_discr_list): New function.
	(read_and_display_attr_value): Add start parameter.
	Use new functions when handling DW_AT_type and DW_AT_discr_list.
	(read_and_display_attr): Add start parameter.  Pass to
	read_and_display_attr_value.
	(process_debug_info): Update call to read_and_display_attr.
	(display_formatted_table): Likewise.
	(display_debug_lines_decoded): Likewise.  Also add start
	parameter.
	(display_debug_lines): Likewise.
	* testsuite/binutils-all/dwarf-attributes.S: Update discrimination
	lists.
	* testsuite/binutils-all/dwarf-attributes.W: Update expected
	output.
2019-08-27 16:28:55 +01:00

134 lines
4.3 KiB
ArmAsm

/* Copyright (C) 2017-2019 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/>. */
/* This file is intended to check the encoding and decoding of DWARF attributes.
Currently only numeric attributes are tested, but this file should be extended
to cover other types of attribute as well. */
.file "dwarf-attributes.S"
.section .debug_info,"",%progbits
.4byte .Ldebug_info_end - .Ldebug_info_start /* Length of Compilation Unit Info. */
.Ldebug_info_start:
.2byte 0x5 /* DWARF version number. */
.byte 0x1 /* DW_UT_compile. */
.byte 0x4 /* Pointer Size (in bytes). */
.4byte .Ldebug_abbrevs /* Offset Into Abbrev. Section. */
/* Start of DIE 0xc. */
.uleb128 0x1 /* Using abbrev #1 */
.byte 1 /* Ordering: column major. */
.2byte 1 /* Language: C89. */
.byte 1 /* Visibility: local. */
.byte 1 /* Inline: inlined. */
.byte 1 /* Accessibility: public. */
.byte 1 /* Calling convention: normal. */
.byte 3,1,1,2 /* Discriminate list: range. */
.byte 1 /* Encoding: address. */
.byte 1 /* Identifier case: up. */
.byte 1 /* Virtuality: virtual. */
.byte 1 /* Decimal sign: unsigned. */
.byte 1 /* Endianity: big. */
.byte 1 /* Defaulted: in class. */
.uleb128 0x1 /* Using abbrev #1 */
.byte 0 /* Ordering: row major */
.2byte 0x0016 /* Language: Go. */
.byte 2 /* Visibility: exported. */
.byte 0 /* Inline: not. */
.byte 2 /* Accessibility: protected. */
.byte 5 /* Calling convention: pass by value. */
.byte 2,0,1 /* Discriminate list: label. */
.byte 0x12 /* Encoding: ASCII. */
.byte 0 /* Identifier case: sensitive. */
.byte 0 /* Virtuality: none. */
.byte 2 /* Decimal sign: leading overpunch. */
.byte 0 /* Endianity: default. */
.byte 0 /* Defaulted: no. */
.uleb128 0x1 /* Using abbrev #1 */
.byte -1 /* Ordering: undefined. */
.2byte 0x8001 /* Language: MIPS Assembler. */
.byte 3 /* Visibility: qualified. */
.byte 3 /* Inline: declared. */
.byte 3 /* Accessibility: private. */
.byte 0x40 /* Calling convention: Renesas SH. */
.byte 5,1,2,3,0,4 /* Discriminate list: range and label. */
.byte 0x81 /* Encoding: user specified. */
.byte 3 /* Identifier case: insensitive. */
.byte 2 /* Virtuality: pure. */
.byte 5 /* Decimal sign: trailing separate. */
.byte 0x50 /* Endianity: user specified. */
.byte 2 /* Defaulted: out of class. */
.byte 0 /* End of children of DIE 0xc. */
.Ldebug_info_end:
.section .debug_abbrev,"",%progbits
.Ldebug_abbrevs:
.uleb128 0x1 /* (abbrev code) */
.uleb128 0x5555 /* (TAG: DW_TAG_lo_user + 0x1555) */
.byte 0 /* DW_children_no */
/* Attributes to be tested. Sorted by attribute value. */
.uleb128 0x9 /* (DW_AT_ordering) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x13 /* (DW_AT_language) */
.uleb128 0x05 /* (DW_FORM_data2) */
.uleb128 0x17 /* (DW_AT_visibility) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x20 /* (DW_AT_inline) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x32 /* (DW_AT_accessibility) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x36 /* (DW_AT_calling_convention) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x3d /* (DW_AT_discr_lists) */
.uleb128 0x0a /* (DW_FORM_block1) */
.uleb128 0x3e /* (DW_AT_encoding) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x42 /* (DW_AT_identifier_case) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x4c /* (DW_AT_virtuality) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x5e /* (DW_AT_decimal_sign) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x65 /* (DW_AT_endianity) */
.uleb128 0x0b /* (DW_FORM_data1) */
.uleb128 0x8b /* (DW_AT_defaulted) */
.uleb128 0x0b /* (DW_FORM_data1) */
.byte 0 /* End of abbreviation. */
.byte 0
.byte 0 /* End of abbreviations. */