Update copyright year range in all GDB files
[external/binutils.git] / gdb / testsuite / gdb.perf / gmonster2.exp
1 # Copyright (C) 2015-2018 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 # Perftest description file for building the "gmonster2" benchmark.
17 # Where does the name come from?  The benchmark is derived from one of the
18 # monster programs at Google.
19 #
20 # Perftest descriptions are loaded thrice:
21 # 1) To generate the build .exp files
22 #    GDB_PERFTEST_MODE=gen-build-exps
23 #    This step allows for parallel builds of the majority of pieces of the
24 #    test binary and shlibs.
25 # 2) To compile the "pieces" of the binary and shlibs.
26 #    "Pieces" are the bulk of the machine-generated sources of the test.
27 #    This step is driven by lib/build-piece.exp.
28 #    GDB_PERFTEST_MODE=build-pieces
29 # 3) To perform the final link of the binary and shlibs.
30 #    GDB_PERFTEST_MODE=compile
31 #
32 # Example usage:
33 # bash$ make -j5 build-perf RUNTESTFLAGS="gmonster1.exp gmonster2.exp"
34 # bash$ make check-perf RUNTESTFLAGS="gdb.perf/gm*-*.exp GDB=/path/to/gdb"
35
36 load_lib perftest.exp
37 load_lib gen-perf-test.exp
38
39 if [skip_perf_tests] {
40     return 0
41 }
42
43 if ![info exists MONSTER] {
44     set MONSTER "n"
45 }
46
47 proc make_testcase_config { } {
48     global MONSTER
49
50     set program_name "gmonster2"
51     array set testcase [GenPerfTest::init_testcase $program_name]
52
53     set testcase(language) c++
54
55     # *_{sources,headers} need to be embedded in an outer list
56     # because remember each element of the outer list is for each run, and
57     # here we want to use the same value for all runs.
58     set testcase(binary_extra_sources) { { gmonster2.cc gm-hello.cc gm-use-cerr.cc } }
59     set testcase(binary_extra_headers) { { gm-utils.h gm-std.h } }
60     set testcase(gen_shlib_extra_sources) { { gm-hello.cc gm-use-cerr.cc } }
61     set testcase(gen_shlib_extra_headers) { { gm-utils.h gm-std.h } }
62     set testcase(tail_shlib_sources) { { gm-std.cc } }
63     set testcase(tail_shlib_headers) { { gm-std.h } }
64
65     if { $MONSTER == "y" } {
66         set testcase(run_names) { 10-sos 100-sos 1000-sos }
67         set testcase(nr_gen_shlibs) { 10 100 1000 }
68     } else {
69         set testcase(run_names) { 1-so 10-sos 100-sos }
70         set testcase(nr_gen_shlibs) { 1 10 100 }
71     }
72     set testcase(nr_compunits) 10
73
74     set testcase(nr_extern_globals) 10
75     set testcase(nr_static_globals) 10
76     set testcase(nr_extern_functions) 10
77     set testcase(nr_static_functions) 10
78
79     # class_specs needs to be embedded in an outer list because remember
80     # each element of the outer list is for each run, and here we want to use
81     # the same value for all runs.
82     set testcase(class_specs) { {
83         {
84             count 1 name { class }
85             nr_members 10 nr_static_members 10
86             nr_methods 10 nr_static_methods 10
87             nr_inline_methods 10 nr_static_inline_methods 10
88         }
89         {
90             count 1 name { ns0 class }
91             nr_members 10 nr_static_members 10
92             nr_methods 10 nr_static_methods 10
93             nr_inline_methods 10 nr_static_inline_methods 10
94         }
95         {
96             count 1 name { ns0 anonymous aclass }
97             nr_members 10 nr_static_members 10
98             nr_methods 10 nr_static_methods 10
99             nr_inline_methods 10 nr_static_inline_methods 10
100         }
101         {
102             count 1 name { ns0 ns1 class }
103             nr_members 10 nr_static_members 10
104             nr_methods 10 nr_static_methods 10
105             nr_inline_methods 10 nr_static_inline_methods 10
106         }
107         {
108             count 1 name { ns0 anonymous ns1 aclass }
109             nr_members 10 nr_static_members 10
110             nr_methods 10 nr_static_methods 10
111             nr_inline_methods 10 nr_static_inline_methods 10
112         }
113     } }
114
115     return [array get testcase]
116 }
117
118 GenPerfTest::standard_compile_driver gmonster2.exp make_testcase_config