xref: /aosp_15_r20/external/elfutils/tests/run-readelf-const-values.sh (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard Worker#! /bin/sh
2*7304104dSAndroid Build Coastguard Worker# Test for displaying DW_AT_const_types with the "correct" sign.
3*7304104dSAndroid Build Coastguard Worker# Copyright (C) 2018 Red Hat, Inc.
4*7304104dSAndroid Build Coastguard Worker# This file is part of elfutils.
5*7304104dSAndroid Build Coastguard Worker#
6*7304104dSAndroid Build Coastguard Worker# This file is free software; you can redistribute it and/or modify
7*7304104dSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by
8*7304104dSAndroid Build Coastguard Worker# the Free Software Foundation; either version 3 of the License, or
9*7304104dSAndroid Build Coastguard Worker# (at your option) any later version.
10*7304104dSAndroid Build Coastguard Worker#
11*7304104dSAndroid Build Coastguard Worker# elfutils is distributed in the hope that it will be useful, but
12*7304104dSAndroid Build Coastguard Worker# WITHOUT ANY WARRANTY; without even the implied warranty of
13*7304104dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*7304104dSAndroid Build Coastguard Worker# GNU General Public License for more details.
15*7304104dSAndroid Build Coastguard Worker#
16*7304104dSAndroid Build Coastguard Worker# You should have received a copy of the GNU General Public License
17*7304104dSAndroid Build Coastguard Worker# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18*7304104dSAndroid Build Coastguard Worker
19*7304104dSAndroid Build Coastguard Worker. $srcdir/test-subr.sh
20*7304104dSAndroid Build Coastguard Worker
21*7304104dSAndroid Build Coastguard Worker# = s.c
22*7304104dSAndroid Build Coastguard Worker#
23*7304104dSAndroid Build Coastguard Worker# int s()
24*7304104dSAndroid Build Coastguard Worker# {
25*7304104dSAndroid Build Coastguard Worker#   int i = -1;
26*7304104dSAndroid Build Coastguard Worker#   int j = -1;
27*7304104dSAndroid Build Coastguard Worker#
28*7304104dSAndroid Build Coastguard Worker#   return i - j;
29*7304104dSAndroid Build Coastguard Worker# }
30*7304104dSAndroid Build Coastguard Worker#
31*7304104dSAndroid Build Coastguard Worker# = m.c
32*7304104dSAndroid Build Coastguard Worker#
33*7304104dSAndroid Build Coastguard Worker# extern int s();
34*7304104dSAndroid Build Coastguard Worker#
35*7304104dSAndroid Build Coastguard Worker# int
36*7304104dSAndroid Build Coastguard Worker# main ()
37*7304104dSAndroid Build Coastguard Worker# {
38*7304104dSAndroid Build Coastguard Worker#   const signed char sc = -2;
39*7304104dSAndroid Build Coastguard Worker#   const unsigned char uc = 254;
40*7304104dSAndroid Build Coastguard Worker#
41*7304104dSAndroid Build Coastguard Worker#   const signed short ss = -16;
42*7304104dSAndroid Build Coastguard Worker#   const unsigned short us = 65520;
43*7304104dSAndroid Build Coastguard Worker#
44*7304104dSAndroid Build Coastguard Worker#   const signed int si = -3;
45*7304104dSAndroid Build Coastguard Worker#   const unsigned int ui = 4200000000;
46*7304104dSAndroid Build Coastguard Worker#
47*7304104dSAndroid Build Coastguard Worker#   signed long sl = -1;
48*7304104dSAndroid Build Coastguard Worker#   unsigned long ul = 0xffffffffffffffffUL;
49*7304104dSAndroid Build Coastguard Worker#
50*7304104dSAndroid Build Coastguard Worker#   return s ();
51*7304104dSAndroid Build Coastguard Worker# }
52*7304104dSAndroid Build Coastguard Worker#
53*7304104dSAndroid Build Coastguard Worker# gcc -gdwarf-5 -O2 -c s.c
54*7304104dSAndroid Build Coastguard Worker# gcc -gdwarf-4 -O2 -c m.c
55*7304104dSAndroid Build Coastguard Worker# gcc -o testfile-const-values s.o m.o
56*7304104dSAndroid Build Coastguard Worker# eu-strip -g -f testfile-const-values.debug testfile-const-values
57*7304104dSAndroid Build Coastguard Worker
58*7304104dSAndroid Build Coastguard Workertestfiles testfile-const-values.debug
59*7304104dSAndroid Build Coastguard Worker
60*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile-const-values.debug << EOF
61*7304104dSAndroid Build Coastguard Worker
62*7304104dSAndroid Build Coastguard WorkerDWARF section [28] '.debug_info' at offset 0x2e0:
63*7304104dSAndroid Build Coastguard Worker [Offset]
64*7304104dSAndroid Build Coastguard Worker Compilation unit at offset 0:
65*7304104dSAndroid Build Coastguard Worker Version: 5, Abbreviation section offset: 0, Address size: 8, Offset size: 4
66*7304104dSAndroid Build Coastguard Worker Unit type: compile (1)
67*7304104dSAndroid Build Coastguard Worker [     c]  compile_unit         abbrev: 2
68*7304104dSAndroid Build Coastguard Worker           producer             (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-5 -O2"
69*7304104dSAndroid Build Coastguard Worker           language             (data1) C11 (29)
70*7304104dSAndroid Build Coastguard Worker           name                 (string) "s.c"
71*7304104dSAndroid Build Coastguard Worker           comp_dir             (strp) "/home/mark/build/elfutils-obj"
72*7304104dSAndroid Build Coastguard Worker           low_pc               (addr) 0x00000000004004d0
73*7304104dSAndroid Build Coastguard Worker           high_pc              (data8) 3 (0x00000000004004d3)
74*7304104dSAndroid Build Coastguard Worker           stmt_list            (sec_offset) 0
75*7304104dSAndroid Build Coastguard Worker [    2e]    subprogram           abbrev: 3
76*7304104dSAndroid Build Coastguard Worker             external             (flag_present) yes
77*7304104dSAndroid Build Coastguard Worker             name                 (string) "s"
78*7304104dSAndroid Build Coastguard Worker             decl_file            (data1) s.c (1)
79*7304104dSAndroid Build Coastguard Worker             decl_line            (data1) 1
80*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [    5e]
81*7304104dSAndroid Build Coastguard Worker             low_pc               (addr) 0x00000000004004d0
82*7304104dSAndroid Build Coastguard Worker             high_pc              (data8) 3 (0x00000000004004d3)
83*7304104dSAndroid Build Coastguard Worker             frame_base           (exprloc) 
84*7304104dSAndroid Build Coastguard Worker              [ 0] call_frame_cfa
85*7304104dSAndroid Build Coastguard Worker             call_all_calls       (flag_present) yes
86*7304104dSAndroid Build Coastguard Worker             sibling              (ref4) [    5e]
87*7304104dSAndroid Build Coastguard Worker [    4d]      variable             abbrev: 1
88*7304104dSAndroid Build Coastguard Worker               name                 (string) "i"
89*7304104dSAndroid Build Coastguard Worker               decl_file            (implicit_const) s.c (1)
90*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 3
91*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [    5e]
92*7304104dSAndroid Build Coastguard Worker               const_value          (implicit_const) -1
93*7304104dSAndroid Build Coastguard Worker [    55]      variable             abbrev: 1
94*7304104dSAndroid Build Coastguard Worker               name                 (string) "j"
95*7304104dSAndroid Build Coastguard Worker               decl_file            (implicit_const) s.c (1)
96*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 4
97*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [    5e]
98*7304104dSAndroid Build Coastguard Worker               const_value          (implicit_const) -1
99*7304104dSAndroid Build Coastguard Worker [    5e]    base_type            abbrev: 4
100*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 4
101*7304104dSAndroid Build Coastguard Worker             encoding             (data1) signed (5)
102*7304104dSAndroid Build Coastguard Worker             name                 (string) "int"
103*7304104dSAndroid Build Coastguard Worker Compilation unit at offset 102:
104*7304104dSAndroid Build Coastguard Worker Version: 4, Abbreviation section offset: 73, Address size: 8, Offset size: 4
105*7304104dSAndroid Build Coastguard Worker [    71]  compile_unit         abbrev: 1
106*7304104dSAndroid Build Coastguard Worker           producer             (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-4 -O2"
107*7304104dSAndroid Build Coastguard Worker           language             (data1) C99 (12)
108*7304104dSAndroid Build Coastguard Worker           name                 (string) "m.c"
109*7304104dSAndroid Build Coastguard Worker           comp_dir             (strp) "/home/mark/build/elfutils-obj"
110*7304104dSAndroid Build Coastguard Worker           ranges               (sec_offset) range list [     0]
111*7304104dSAndroid Build Coastguard Worker           low_pc               (addr) 000000000000000000
112*7304104dSAndroid Build Coastguard Worker           stmt_list            (sec_offset) 54
113*7304104dSAndroid Build Coastguard Worker [    8f]    subprogram           abbrev: 2
114*7304104dSAndroid Build Coastguard Worker             external             (flag_present) yes
115*7304104dSAndroid Build Coastguard Worker             name                 (strp) "main"
116*7304104dSAndroid Build Coastguard Worker             decl_file            (data1) m.c (1)
117*7304104dSAndroid Build Coastguard Worker             decl_line            (data1) 4
118*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   119]
119*7304104dSAndroid Build Coastguard Worker             low_pc               (addr) 0x00000000004003e0
120*7304104dSAndroid Build Coastguard Worker             high_pc              (data8) 7 (0x00000000004003e7)
121*7304104dSAndroid Build Coastguard Worker             frame_base           (exprloc) 
122*7304104dSAndroid Build Coastguard Worker              [ 0] call_frame_cfa
123*7304104dSAndroid Build Coastguard Worker             GNU_all_call_sites   (flag_present) yes
124*7304104dSAndroid Build Coastguard Worker             sibling              (ref4) [   119]
125*7304104dSAndroid Build Coastguard Worker [    b0]      variable             abbrev: 3
126*7304104dSAndroid Build Coastguard Worker               name                 (string) "sc"
127*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
128*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 6
129*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   12c]
130*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) -2
131*7304104dSAndroid Build Coastguard Worker [    bb]      variable             abbrev: 3
132*7304104dSAndroid Build Coastguard Worker               name                 (string) "uc"
133*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
134*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 7
135*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   138]
136*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) 254 (-2)
137*7304104dSAndroid Build Coastguard Worker [    c6]      variable             abbrev: 3
138*7304104dSAndroid Build Coastguard Worker               name                 (string) "ss"
139*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
140*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 9
141*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   144]
142*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) -16
143*7304104dSAndroid Build Coastguard Worker [    d1]      variable             abbrev: 3
144*7304104dSAndroid Build Coastguard Worker               name                 (string) "us"
145*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
146*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 10
147*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   150]
148*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) 65520 (-16)
149*7304104dSAndroid Build Coastguard Worker [    dc]      variable             abbrev: 3
150*7304104dSAndroid Build Coastguard Worker               name                 (string) "si"
151*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
152*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 12
153*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   120]
154*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) -3
155*7304104dSAndroid Build Coastguard Worker [    e7]      variable             abbrev: 3
156*7304104dSAndroid Build Coastguard Worker               name                 (string) "ui"
157*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
158*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 13
159*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   15c]
160*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) 4200000000 (-94967296)
161*7304104dSAndroid Build Coastguard Worker [    f5]      variable             abbrev: 3
162*7304104dSAndroid Build Coastguard Worker               name                 (string) "sl"
163*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
164*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 15
165*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   161]
166*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) -1
167*7304104dSAndroid Build Coastguard Worker [   100]      variable             abbrev: 3
168*7304104dSAndroid Build Coastguard Worker               name                 (string) "ul"
169*7304104dSAndroid Build Coastguard Worker               decl_file            (data1) m.c (1)
170*7304104dSAndroid Build Coastguard Worker               decl_line            (data1) 16
171*7304104dSAndroid Build Coastguard Worker               type                 (ref4) [   168]
172*7304104dSAndroid Build Coastguard Worker               const_value          (sdata) 18446744073709551615 (-1)
173*7304104dSAndroid Build Coastguard Worker [   10b]      GNU_call_site        abbrev: 4
174*7304104dSAndroid Build Coastguard Worker               low_pc               (addr) 0x00000000004003e7
175*7304104dSAndroid Build Coastguard Worker               GNU_tail_call        (flag_present) yes
176*7304104dSAndroid Build Coastguard Worker               abstract_origin      (ref4) [   16f]
177*7304104dSAndroid Build Coastguard Worker [   119]    base_type            abbrev: 5
178*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 4
179*7304104dSAndroid Build Coastguard Worker             encoding             (data1) signed (5)
180*7304104dSAndroid Build Coastguard Worker             name                 (string) "int"
181*7304104dSAndroid Build Coastguard Worker [   120]    const_type           abbrev: 6
182*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   119]
183*7304104dSAndroid Build Coastguard Worker [   125]    base_type            abbrev: 7
184*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 1
185*7304104dSAndroid Build Coastguard Worker             encoding             (data1) signed_char (6)
186*7304104dSAndroid Build Coastguard Worker             name                 (strp) "signed char"
187*7304104dSAndroid Build Coastguard Worker [   12c]    const_type           abbrev: 6
188*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   125]
189*7304104dSAndroid Build Coastguard Worker [   131]    base_type            abbrev: 7
190*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 1
191*7304104dSAndroid Build Coastguard Worker             encoding             (data1) unsigned_char (8)
192*7304104dSAndroid Build Coastguard Worker             name                 (strp) "unsigned char"
193*7304104dSAndroid Build Coastguard Worker [   138]    const_type           abbrev: 6
194*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   131]
195*7304104dSAndroid Build Coastguard Worker [   13d]    base_type            abbrev: 7
196*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 2
197*7304104dSAndroid Build Coastguard Worker             encoding             (data1) signed (5)
198*7304104dSAndroid Build Coastguard Worker             name                 (strp) "short int"
199*7304104dSAndroid Build Coastguard Worker [   144]    const_type           abbrev: 6
200*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   13d]
201*7304104dSAndroid Build Coastguard Worker [   149]    base_type            abbrev: 7
202*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 2
203*7304104dSAndroid Build Coastguard Worker             encoding             (data1) unsigned (7)
204*7304104dSAndroid Build Coastguard Worker             name                 (strp) "short unsigned int"
205*7304104dSAndroid Build Coastguard Worker [   150]    const_type           abbrev: 6
206*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   149]
207*7304104dSAndroid Build Coastguard Worker [   155]    base_type            abbrev: 7
208*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 4
209*7304104dSAndroid Build Coastguard Worker             encoding             (data1) unsigned (7)
210*7304104dSAndroid Build Coastguard Worker             name                 (strp) "unsigned int"
211*7304104dSAndroid Build Coastguard Worker [   15c]    const_type           abbrev: 6
212*7304104dSAndroid Build Coastguard Worker             type                 (ref4) [   155]
213*7304104dSAndroid Build Coastguard Worker [   161]    base_type            abbrev: 7
214*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 8
215*7304104dSAndroid Build Coastguard Worker             encoding             (data1) signed (5)
216*7304104dSAndroid Build Coastguard Worker             name                 (strp) "long int"
217*7304104dSAndroid Build Coastguard Worker [   168]    base_type            abbrev: 7
218*7304104dSAndroid Build Coastguard Worker             byte_size            (data1) 8
219*7304104dSAndroid Build Coastguard Worker             encoding             (data1) unsigned (7)
220*7304104dSAndroid Build Coastguard Worker             name                 (strp) "long unsigned int"
221*7304104dSAndroid Build Coastguard Worker [   16f]    subprogram           abbrev: 8
222*7304104dSAndroid Build Coastguard Worker             external             (flag_present) yes
223*7304104dSAndroid Build Coastguard Worker             declaration          (flag_present) yes
224*7304104dSAndroid Build Coastguard Worker             linkage_name         (string) "s"
225*7304104dSAndroid Build Coastguard Worker             name                 (string) "s"
226*7304104dSAndroid Build Coastguard Worker             decl_file            (data1) m.c (1)
227*7304104dSAndroid Build Coastguard Worker             decl_line            (data1) 1
228*7304104dSAndroid Build Coastguard WorkerEOF
229*7304104dSAndroid Build Coastguard Worker
230*7304104dSAndroid Build Coastguard Workerexit 0
231