mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
ec1b0fbb8d
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.
134 lines
4.3 KiB
ArmAsm
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. */
|