xref: /third_party/elfutils/tests/run-allfcts.sh (revision da0c48c4)
1da0c48c4Sopenharmony_ci#! /bin/sh
2da0c48c4Sopenharmony_ci# Copyright (C) 2005, 2013 Red Hat, Inc.
3da0c48c4Sopenharmony_ci# This file is part of elfutils.
4da0c48c4Sopenharmony_ci# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
5da0c48c4Sopenharmony_ci#
6da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify
7da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by
8da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or
9da0c48c4Sopenharmony_ci# (at your option) any later version.
10da0c48c4Sopenharmony_ci#
11da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but
12da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of
13da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14da0c48c4Sopenharmony_ci# GNU General Public License for more details.
15da0c48c4Sopenharmony_ci#
16da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License
17da0c48c4Sopenharmony_ci# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18da0c48c4Sopenharmony_ci
19da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh
20da0c48c4Sopenharmony_ci
21da0c48c4Sopenharmony_citestfiles testfile testfile2 testfile8
22da0c48c4Sopenharmony_ci
23da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/allfcts testfile testfile2 testfile8 <<\EOF
24da0c48c4Sopenharmony_ci/home/drepper/gnu/new-bu/build/ttt/m.c:5:main
25da0c48c4Sopenharmony_ci/home/drepper/gnu/new-bu/build/ttt/b.c:4:bar
26da0c48c4Sopenharmony_ci/home/drepper/gnu/new-bu/build/ttt/f.c:3:foo
27da0c48c4Sopenharmony_ci/shoggoth/drepper/b.c:4:bar
28da0c48c4Sopenharmony_ci/shoggoth/drepper/f.c:3:foo
29da0c48c4Sopenharmony_ci/shoggoth/drepper/m.c:5:main
30da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:107:main
31da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:159:print_version
32da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:173:parse_opt
33da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:201:more_help
34da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:217:process_file
35da0c48c4Sopenharmony_ci/usr/include/sys/stat.h:375:stat64
36da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:291:crc32_file
37da0c48c4Sopenharmony_ci/home/drepper/gnu/elfutils/build/src/../../src/strip.c:313:handle_elf
38da0c48c4Sopenharmony_ciEOF
39da0c48c4Sopenharmony_ci
40da0c48c4Sopenharmony_ci# = nested_funcs.c =
41da0c48c4Sopenharmony_ci#
42da0c48c4Sopenharmony_ci# static int
43da0c48c4Sopenharmony_ci# foo (int x)
44da0c48c4Sopenharmony_ci# {
45da0c48c4Sopenharmony_ci#   int bar (int y)
46da0c48c4Sopenharmony_ci#   {
47da0c48c4Sopenharmony_ci#     return x - y;
48da0c48c4Sopenharmony_ci#   }
49da0c48c4Sopenharmony_ci# 
50da0c48c4Sopenharmony_ci#   return bar (x * 2);
51da0c48c4Sopenharmony_ci# }
52da0c48c4Sopenharmony_ci#
53da0c48c4Sopenharmony_ci# int
54da0c48c4Sopenharmony_ci# main (int argc, char ** argv)
55da0c48c4Sopenharmony_ci# {
56da0c48c4Sopenharmony_ci#   return foo (argc);
57da0c48c4Sopenharmony_ci# }
58da0c48c4Sopenharmony_ci#
59da0c48c4Sopenharmony_ci# gcc -g -o nested_funcs nested_funcs.c
60da0c48c4Sopenharmony_ci
61da0c48c4Sopenharmony_ci# = class_func.cxx =
62da0c48c4Sopenharmony_ci#
63da0c48c4Sopenharmony_ci# namespace foobar
64da0c48c4Sopenharmony_ci# {
65da0c48c4Sopenharmony_ci#   class Foo
66da0c48c4Sopenharmony_ci#   {
67da0c48c4Sopenharmony_ci#   public:
68da0c48c4Sopenharmony_ci#     int bar(int x);
69da0c48c4Sopenharmony_ci#   };
70da0c48c4Sopenharmony_ci#
71da0c48c4Sopenharmony_ci#   int Foo::bar(int x) { return x - 42; }
72da0c48c4Sopenharmony_ci# };
73da0c48c4Sopenharmony_ci#
74da0c48c4Sopenharmony_ci# int
75da0c48c4Sopenharmony_ci# main (int argc, char **argv)
76da0c48c4Sopenharmony_ci# {
77da0c48c4Sopenharmony_ci#   foobar::Foo foo;
78da0c48c4Sopenharmony_ci#
79da0c48c4Sopenharmony_ci#   return foo.bar (42);
80da0c48c4Sopenharmony_ci# }
81da0c48c4Sopenharmony_ci#
82da0c48c4Sopenharmony_ci# clang++ -g -o class_func class_func.cxx
83da0c48c4Sopenharmony_ci
84da0c48c4Sopenharmony_citestfiles testfile_nested_funcs testfile_class_func
85da0c48c4Sopenharmony_ci
86da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/allfcts testfile_nested_funcs testfile_class_func <<\EOF
87da0c48c4Sopenharmony_ci/home/mark/src/tests/nested/nested_funcs.c:2:foo
88da0c48c4Sopenharmony_ci/home/mark/src/tests/nested/nested_funcs.c:4:bar
89da0c48c4Sopenharmony_ci/home/mark/src/tests/nested/nested_funcs.c:13:main
90da0c48c4Sopenharmony_ci/home/mark/src/tests/nested/class_func.cxx:6:bar
91da0c48c4Sopenharmony_ci/home/mark/src/tests/nested/class_func.cxx:13:main
92da0c48c4Sopenharmony_ciEOF
93da0c48c4Sopenharmony_ci
94da0c48c4Sopenharmony_ci# = testfile-lto.h =
95da0c48c4Sopenharmony_ci# struct t
96da0c48c4Sopenharmony_ci# {
97da0c48c4Sopenharmony_ci#   int *p;
98da0c48c4Sopenharmony_ci#   int c;
99da0c48c4Sopenharmony_ci# };
100da0c48c4Sopenharmony_ci#
101da0c48c4Sopenharmony_ci# extern int foo (int i, struct t *t);
102da0c48c4Sopenharmony_ci
103da0c48c4Sopenharmony_ci# = testfile-lto-func.c =
104da0c48c4Sopenharmony_ci# #include "testfile-lto.h"
105da0c48c4Sopenharmony_ci#
106da0c48c4Sopenharmony_ci# int
107da0c48c4Sopenharmony_ci# foo (int i, struct t *t)
108da0c48c4Sopenharmony_ci# {
109da0c48c4Sopenharmony_ci#   int j, res = 0;
110da0c48c4Sopenharmony_ci#   for (j = 0; j < i && j < t->c; j++)
111da0c48c4Sopenharmony_ci#     res += t->p[j];
112da0c48c4Sopenharmony_ci#
113da0c48c4Sopenharmony_ci#   return res;
114da0c48c4Sopenharmony_ci# }
115da0c48c4Sopenharmony_ci
116da0c48c4Sopenharmony_ci# = testfile-lto-main.c =
117da0c48c4Sopenharmony_ci# #include "testfile-lto.h"
118da0c48c4Sopenharmony_ci#
119da0c48c4Sopenharmony_ci# static struct t g;
120da0c48c4Sopenharmony_ci#
121da0c48c4Sopenharmony_ci# int
122da0c48c4Sopenharmony_ci# main (int argc, char **argv)
123da0c48c4Sopenharmony_ci# {
124da0c48c4Sopenharmony_ci#   int i;
125da0c48c4Sopenharmony_ci#   int j[argc];
126da0c48c4Sopenharmony_ci#   g.c = argc;
127da0c48c4Sopenharmony_ci#   g.p = j;
128da0c48c4Sopenharmony_ci#   for (i = 0; i < argc; i++)
129da0c48c4Sopenharmony_ci#     j[i] = (int) argv[i][0];
130da0c48c4Sopenharmony_ci#   return foo (3, &g);
131da0c48c4Sopenharmony_ci# }
132da0c48c4Sopenharmony_ci
133da0c48c4Sopenharmony_ci# Using gcc (GCC) 10.0.1 20200430 (Red Hat 10.0.1-0.13)
134da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -c testfile-lto-func.c
135da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -c testfile-lto-main.c
136da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -o testfile-lto-gcc10 testfile-lto-func.o testfile-lto-main.o
137da0c48c4Sopenharmony_ci
138da0c48c4Sopenharmony_citestfiles testfile-lto-gcc10
139da0c48c4Sopenharmony_ci
140da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/allfcts testfile-lto-gcc10 <<\EOF
141da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-main.c:6:main
142da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-func.c:4:foo
143da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-main.c:6:main
144da0c48c4Sopenharmony_ciEOF
145da0c48c4Sopenharmony_ci
146da0c48c4Sopenharmony_ci# Using gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
147da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -c testfile-lto-func.c
148da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -c testfile-lto-main.c
149da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -o testfile-lto-gcc8 testfile-lto-func.o testfile-lto-main.o
150da0c48c4Sopenharmony_ci
151da0c48c4Sopenharmony_citestfiles testfile-lto-gcc8
152da0c48c4Sopenharmony_ci
153da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/allfcts testfile-lto-gcc8 <<\EOF
154da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-func.c:4:foo
155da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-main.c:6:main
156da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-main.c:6:main
157da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-func.c:4:foo
158da0c48c4Sopenharmony_ciEOF
159da0c48c4Sopenharmony_ci
160da0c48c4Sopenharmony_ci# gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2)
161da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -c testfile-lto-func.c
162da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -c testfile-lto-main.c
163da0c48c4Sopenharmony_ci# gcc -g -O2 -flto -o testfile-lto-gcc9 testfile-lto-func.o testfile-lto-main.o
164da0c48c4Sopenharmony_ci
165da0c48c4Sopenharmony_citestfiles testfile-lto-gcc9
166da0c48c4Sopenharmony_ci
167da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/allfcts testfile-lto-gcc9 <<\EOF
168da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-main.c:6:main
169da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-func.c:4:foo
170da0c48c4Sopenharmony_ci/home/mark/src/tests/testfile-lto-main.c:6:main
171da0c48c4Sopenharmony_ciEOF
172da0c48c4Sopenharmony_ci
173da0c48c4Sopenharmony_ciexit 0
174