1#!/usr/local/bin/bash
2# Copyright (C) 2018 Red Hat, Inc.
3# This file is part of elfutils.
4#
5# This file is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 3 of the License, or
8# (at your option) any later version.
9#
10# elfutils is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18. $srcdir/test-subr.sh
19
20# Make sure --debug-dump=info implies .debug_types, even when implicit.
21# See run-typeiter.sh
22testfiles testfile-debug-types
23
24testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=str --debug-dump=info testfile-debug-types<<\EOF
25
26DWARF section [28] '.debug_info' at offset 0x1089:
27 [Offset]
28 Compilation unit at offset 0:
29 Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
30 [     b]  compile_unit         abbrev: 8
31           producer             (strp) "GNU C++ 4.8.2 20140120 (Red Hat 4.8.2-16) -mtune=generic -march=x86-64 -g -fdebug-types-section"
32           language             (data1) C_plus_plus (4)
33           comp_dir             (strp) "/home/mark/src/elfutils/tests"
34           low_pc               (addr) 0x00000000004005b0 <main>
35           high_pc              (data8) 11 (0x00000000004005bb)
36           stmt_list            (sec_offset) 0
37 [    29]    subprogram           abbrev: 9
38             external             (flag_present) yes
39             name                 (strp) "main"
40             decl_file            (data1) <stdin> (1)
41             decl_line            (data1) 1
42             type                 (ref4) [    46]
43             low_pc               (addr) 0x00000000004005b0 <main>
44             high_pc              (data8) 11 (0x00000000004005bb)
45             frame_base           (exprloc)
46              [ 0] call_frame_cfa
47             GNU_all_call_sites   (flag_present) yes
48 [    46]    base_type            abbrev: 10
49             byte_size            (data1) 4
50             encoding             (data1) signed (5)
51             name                 (string) "int"
52 [    4d]    variable             abbrev: 11
53             name                 (string) "a"
54             decl_file            (data1) <stdin> (1)
55             decl_line            (data1) 1
56             type                 (ref_sig8) {18763953736e2de0}
57             external             (flag_present) yes
58             location             (exprloc)
59              [ 0] addr 0x601030 <a>
60 [    64]    variable             abbrev: 11
61             name                 (string) "b"
62             decl_file            (data1) <stdin> (1)
63             decl_line            (data1) 1
64             type                 (ref_sig8) {7cf9bbf793fcaf13}
65             external             (flag_present) yes
66             location             (exprloc)
67              [ 0] addr 0x601031 <b>
68
69DWARF section [31] '.debug_str' at offset 0x11dd:
70 Offset  String
71 [   0]  "/home/mark/src/elfutils/tests"
72 [  1e]  "GNU C++ 4.8.2 20140120 (Red Hat 4.8.2-16) -mtune=generic -march=x86-64 -g -fdebug-types-section"
73 [  7e]  "main"
74
75DWARF section [32] '.debug_types' at offset 0x1260:
76 [Offset]
77 Type unit at offset 0:
78 Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
79 Type signature: 0x7cf9bbf793fcaf13, Type offset: 0x38 [38]
80 [    17]  type_unit            abbrev: 1
81           language             (data1) C_plus_plus (4)
82           GNU_odr_signature    (data8) 4783233826607187165
83           stmt_list            (sec_offset) 0
84 [    25]    structure_type       abbrev: 2
85             name                 (string) "A"
86             signature            (ref_sig8) {18763953736e2de0}
87             declaration          (flag_present) yes
88             sibling              (ref4) [    38]
89 [    34]      structure_type       abbrev: 3
90               name                 (string) "B"
91               declaration          (flag_present) yes
92 [    38]    structure_type       abbrev: 4
93             name                 (string) "B"
94             byte_size            (data1) 1
95             decl_file            (data1) <stdin> (1)
96             decl_line            (data1) 1
97             specification        (ref4) [    34]
98 Type unit at offset 67:
99 Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
100 Type signature: 0x18763953736e2de0, Type offset: 0x25 [25]
101 [    5a]  type_unit            abbrev: 1
102           language             (data1) C_plus_plus (4)
103           GNU_odr_signature    (data8) 16005269134005989797
104           stmt_list            (sec_offset) 0
105 [    68]    structure_type       abbrev: 5
106             name                 (string) "A"
107             byte_size            (data1) 1
108             decl_file            (data1) <stdin> (1)
109             decl_line            (data1) 1
110 [    6e]      structure_type       abbrev: 6
111               name                 (string) "B"
112               declaration          (flag_present) yes
113               signature            (ref_sig8) {7cf9bbf793fcaf13}
114 [    79]      member               abbrev: 7
115               name                 (string) "x"
116               decl_file            (data1) <stdin> (1)
117               decl_line            (data1) 1
118               type                 (ref4) [    6e]
119               data_member_location (data1) 0
120EOF
121
122exit 0
123