xref: /aosp_15_r20/external/elfutils/tests/run-allfcts.sh (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard Worker#! /bin/sh
2*7304104dSAndroid Build Coastguard Worker# Copyright (C) 2005, 2013 Red Hat, Inc.
3*7304104dSAndroid Build Coastguard Worker# This file is part of elfutils.
4*7304104dSAndroid Build Coastguard Worker# Written by Ulrich Drepper <[email protected]>, 2005.
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 Workertestfiles testfile testfile2 testfile8
22*7304104dSAndroid Build Coastguard Worker
23*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/allfcts testfile testfile2 testfile8 <<\EOF
24*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/new-bu/build/ttt/m.c:5:main
25*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/new-bu/build/ttt/b.c:4:bar
26*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/new-bu/build/ttt/f.c:3:foo
27*7304104dSAndroid Build Coastguard Worker/shoggoth/drepper/b.c:4:bar
28*7304104dSAndroid Build Coastguard Worker/shoggoth/drepper/f.c:3:foo
29*7304104dSAndroid Build Coastguard Worker/shoggoth/drepper/m.c:5:main
30*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:107:main
31*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:159:print_version
32*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:173:parse_opt
33*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:201:more_help
34*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:217:process_file
35*7304104dSAndroid Build Coastguard Worker/usr/include/sys/stat.h:375:stat64
36*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:291:crc32_file
37*7304104dSAndroid Build Coastguard Worker/home/drepper/gnu/elfutils/build/src/../../src/strip.c:313:handle_elf
38*7304104dSAndroid Build Coastguard WorkerEOF
39*7304104dSAndroid Build Coastguard Worker
40*7304104dSAndroid Build Coastguard Worker# = nested_funcs.c =
41*7304104dSAndroid Build Coastguard Worker#
42*7304104dSAndroid Build Coastguard Worker# static int
43*7304104dSAndroid Build Coastguard Worker# foo (int x)
44*7304104dSAndroid Build Coastguard Worker# {
45*7304104dSAndroid Build Coastguard Worker#   int bar (int y)
46*7304104dSAndroid Build Coastguard Worker#   {
47*7304104dSAndroid Build Coastguard Worker#     return x - y;
48*7304104dSAndroid Build Coastguard Worker#   }
49*7304104dSAndroid Build Coastguard Worker#
50*7304104dSAndroid Build Coastguard Worker#   return bar (x * 2);
51*7304104dSAndroid Build Coastguard Worker# }
52*7304104dSAndroid Build Coastguard Worker#
53*7304104dSAndroid Build Coastguard Worker# int
54*7304104dSAndroid Build Coastguard Worker# main (int argc, char ** argv)
55*7304104dSAndroid Build Coastguard Worker# {
56*7304104dSAndroid Build Coastguard Worker#   return foo (argc);
57*7304104dSAndroid Build Coastguard Worker# }
58*7304104dSAndroid Build Coastguard Worker#
59*7304104dSAndroid Build Coastguard Worker# gcc -g -o nested_funcs nested_funcs.c
60*7304104dSAndroid Build Coastguard Worker
61*7304104dSAndroid Build Coastguard Worker# = class_func.cxx =
62*7304104dSAndroid Build Coastguard Worker#
63*7304104dSAndroid Build Coastguard Worker# namespace foobar
64*7304104dSAndroid Build Coastguard Worker# {
65*7304104dSAndroid Build Coastguard Worker#   class Foo
66*7304104dSAndroid Build Coastguard Worker#   {
67*7304104dSAndroid Build Coastguard Worker#   public:
68*7304104dSAndroid Build Coastguard Worker#     int bar(int x);
69*7304104dSAndroid Build Coastguard Worker#   };
70*7304104dSAndroid Build Coastguard Worker#
71*7304104dSAndroid Build Coastguard Worker#   int Foo::bar(int x) { return x - 42; }
72*7304104dSAndroid Build Coastguard Worker# };
73*7304104dSAndroid Build Coastguard Worker#
74*7304104dSAndroid Build Coastguard Worker# int
75*7304104dSAndroid Build Coastguard Worker# main (int argc, char **argv)
76*7304104dSAndroid Build Coastguard Worker# {
77*7304104dSAndroid Build Coastguard Worker#   foobar::Foo foo;
78*7304104dSAndroid Build Coastguard Worker#
79*7304104dSAndroid Build Coastguard Worker#   return foo.bar (42);
80*7304104dSAndroid Build Coastguard Worker# }
81*7304104dSAndroid Build Coastguard Worker#
82*7304104dSAndroid Build Coastguard Worker# clang++ -g -o class_func class_func.cxx
83*7304104dSAndroid Build Coastguard Worker
84*7304104dSAndroid Build Coastguard Workertestfiles testfile_nested_funcs testfile_class_func
85*7304104dSAndroid Build Coastguard Worker
86*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/allfcts testfile_nested_funcs testfile_class_func <<\EOF
87*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/nested/nested_funcs.c:2:foo
88*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/nested/nested_funcs.c:4:bar
89*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/nested/nested_funcs.c:13:main
90*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/nested/class_func.cxx:6:bar
91*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/nested/class_func.cxx:13:main
92*7304104dSAndroid Build Coastguard WorkerEOF
93*7304104dSAndroid Build Coastguard Worker
94*7304104dSAndroid Build Coastguard Worker# = testfile-lto.h =
95*7304104dSAndroid Build Coastguard Worker# struct t
96*7304104dSAndroid Build Coastguard Worker# {
97*7304104dSAndroid Build Coastguard Worker#   int *p;
98*7304104dSAndroid Build Coastguard Worker#   int c;
99*7304104dSAndroid Build Coastguard Worker# };
100*7304104dSAndroid Build Coastguard Worker#
101*7304104dSAndroid Build Coastguard Worker# extern int foo (int i, struct t *t);
102*7304104dSAndroid Build Coastguard Worker
103*7304104dSAndroid Build Coastguard Worker# = testfile-lto-func.c =
104*7304104dSAndroid Build Coastguard Worker# #include "testfile-lto.h"
105*7304104dSAndroid Build Coastguard Worker#
106*7304104dSAndroid Build Coastguard Worker# int
107*7304104dSAndroid Build Coastguard Worker# foo (int i, struct t *t)
108*7304104dSAndroid Build Coastguard Worker# {
109*7304104dSAndroid Build Coastguard Worker#   int j, res = 0;
110*7304104dSAndroid Build Coastguard Worker#   for (j = 0; j < i && j < t->c; j++)
111*7304104dSAndroid Build Coastguard Worker#     res += t->p[j];
112*7304104dSAndroid Build Coastguard Worker#
113*7304104dSAndroid Build Coastguard Worker#   return res;
114*7304104dSAndroid Build Coastguard Worker# }
115*7304104dSAndroid Build Coastguard Worker
116*7304104dSAndroid Build Coastguard Worker# = testfile-lto-main.c =
117*7304104dSAndroid Build Coastguard Worker# #include "testfile-lto.h"
118*7304104dSAndroid Build Coastguard Worker#
119*7304104dSAndroid Build Coastguard Worker# static struct t g;
120*7304104dSAndroid Build Coastguard Worker#
121*7304104dSAndroid Build Coastguard Worker# int
122*7304104dSAndroid Build Coastguard Worker# main (int argc, char **argv)
123*7304104dSAndroid Build Coastguard Worker# {
124*7304104dSAndroid Build Coastguard Worker#   int i;
125*7304104dSAndroid Build Coastguard Worker#   int j[argc];
126*7304104dSAndroid Build Coastguard Worker#   g.c = argc;
127*7304104dSAndroid Build Coastguard Worker#   g.p = j;
128*7304104dSAndroid Build Coastguard Worker#   for (i = 0; i < argc; i++)
129*7304104dSAndroid Build Coastguard Worker#     j[i] = (int) argv[i][0];
130*7304104dSAndroid Build Coastguard Worker#   return foo (3, &g);
131*7304104dSAndroid Build Coastguard Worker# }
132*7304104dSAndroid Build Coastguard Worker
133*7304104dSAndroid Build Coastguard Worker# Using gcc (GCC) 10.0.1 20200430 (Red Hat 10.0.1-0.13)
134*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -c testfile-lto-func.c
135*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -c testfile-lto-main.c
136*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -o testfile-lto-gcc10 testfile-lto-func.o testfile-lto-main.o
137*7304104dSAndroid Build Coastguard Worker
138*7304104dSAndroid Build Coastguard Workertestfiles testfile-lto-gcc10
139*7304104dSAndroid Build Coastguard Worker
140*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/allfcts testfile-lto-gcc10 <<\EOF
141*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-main.c:6:main
142*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-func.c:4:foo
143*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-main.c:6:main
144*7304104dSAndroid Build Coastguard WorkerEOF
145*7304104dSAndroid Build Coastguard Worker
146*7304104dSAndroid Build Coastguard Worker# Using gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
147*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -c testfile-lto-func.c
148*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -c testfile-lto-main.c
149*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -o testfile-lto-gcc8 testfile-lto-func.o testfile-lto-main.o
150*7304104dSAndroid Build Coastguard Worker
151*7304104dSAndroid Build Coastguard Workertestfiles testfile-lto-gcc8
152*7304104dSAndroid Build Coastguard Worker
153*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/allfcts testfile-lto-gcc8 <<\EOF
154*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-func.c:4:foo
155*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-main.c:6:main
156*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-main.c:6:main
157*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-func.c:4:foo
158*7304104dSAndroid Build Coastguard WorkerEOF
159*7304104dSAndroid Build Coastguard Worker
160*7304104dSAndroid Build Coastguard Worker# gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2)
161*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -c testfile-lto-func.c
162*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -c testfile-lto-main.c
163*7304104dSAndroid Build Coastguard Worker# gcc -g -O2 -flto -o testfile-lto-gcc9 testfile-lto-func.o testfile-lto-main.o
164*7304104dSAndroid Build Coastguard Worker
165*7304104dSAndroid Build Coastguard Workertestfiles testfile-lto-gcc9
166*7304104dSAndroid Build Coastguard Worker
167*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/allfcts testfile-lto-gcc9 <<\EOF
168*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-main.c:6:main
169*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-func.c:4:foo
170*7304104dSAndroid Build Coastguard Worker/home/mark/src/tests/testfile-lto-main.c:6:main
171*7304104dSAndroid Build Coastguard WorkerEOF
172*7304104dSAndroid Build Coastguard Worker
173*7304104dSAndroid Build Coastguard Worker# = dwarf5-line.c =
174*7304104dSAndroid Build Coastguard Worker# int
175*7304104dSAndroid Build Coastguard Worker# main (int argc, char **argv)
176*7304104dSAndroid Build Coastguard Worker# {
177*7304104dSAndroid Build Coastguard Worker#   return 0;
178*7304104dSAndroid Build Coastguard Worker# }
179*7304104dSAndroid Build Coastguard Worker
180*7304104dSAndroid Build Coastguard Worker# Using clang version 17.0.4 (Fedora 17.0.4-1.fc39)
181*7304104dSAndroid Build Coastguard Worker# clang -gdwarf-5 -o testfile-dwarf5-line-clang dwarf5-line.c
182*7304104dSAndroid Build Coastguard Worker
183*7304104dSAndroid Build Coastguard Workertestfiles testfile-dwarf5-line-clang
184*7304104dSAndroid Build Coastguard Worker
185*7304104dSAndroid Build Coastguard Worker# Check that dwarf_decl_file can handle .debug_line file table index 0
186*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/allfcts testfile-dwarf5-line-clang <<\EOF
187*7304104dSAndroid Build Coastguard Worker/home/amerey/test/dwarf5-line.c:2:main
188*7304104dSAndroid Build Coastguard WorkerEOF
189*7304104dSAndroid Build Coastguard Worker
190*7304104dSAndroid Build Coastguard Workerexit 0
191