| # Copyright (C) 2015-2021 Free Software Foundation, Inc. | 
 |  | 
 | # This program is free software; you can redistribute it and/or modify | 
 | # it under the terms of the GNU General Public License as published by | 
 | # the Free Software Foundation; either version 3 of the License, or | 
 | # (at your option) any later version. | 
 | # | 
 | # This program is distributed in the hope that it will be useful, | 
 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 | # GNU General Public License for more details. | 
 | # | 
 | # You should have received a copy of the GNU General Public License | 
 | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
 |  | 
 | # Perftest description file for building the "gmonster2" benchmark. | 
 | # Where does the name come from?  The benchmark is derived from one of the | 
 | # monster programs at Google. | 
 | # | 
 | # Perftest descriptions are loaded thrice: | 
 | # 1) To generate the build .exp files | 
 | #    GDB_PERFTEST_MODE=gen-build-exps | 
 | #    This step allows for parallel builds of the majority of pieces of the | 
 | #    test binary and shlibs. | 
 | # 2) To compile the "pieces" of the binary and shlibs. | 
 | #    "Pieces" are the bulk of the machine-generated sources of the test. | 
 | #    This step is driven by lib/build-piece.exp. | 
 | #    GDB_PERFTEST_MODE=build-pieces | 
 | # 3) To perform the final link of the binary and shlibs. | 
 | #    GDB_PERFTEST_MODE=compile | 
 | # | 
 | # Example usage: | 
 | # bash$ make -j5 build-perf RUNTESTFLAGS="gmonster1.exp gmonster2.exp" | 
 | # bash$ make check-perf RUNTESTFLAGS="gdb.perf/gm*-*.exp GDB=/path/to/gdb" | 
 |  | 
 | load_lib perftest.exp | 
 | load_lib gen-perf-test.exp | 
 |  | 
 | if [skip_perf_tests] { | 
 |     return 0 | 
 | } | 
 |  | 
 | if ![info exists MONSTER] { | 
 |     set MONSTER "n" | 
 | } | 
 |  | 
 | proc make_testcase_config { } { | 
 |     global MONSTER | 
 |  | 
 |     set program_name "gmonster2" | 
 |     array set testcase [GenPerfTest::init_testcase $program_name] | 
 |  | 
 |     set testcase(language) c++ | 
 |  | 
 |     # *_{sources,headers} need to be embedded in an outer list | 
 |     # because remember each element of the outer list is for each run, and | 
 |     # here we want to use the same value for all runs. | 
 |     set testcase(binary_extra_sources) { { gmonster2.cc gm-hello.cc gm-use-cerr.cc } } | 
 |     set testcase(binary_extra_headers) { { gm-utils.h gm-std.h } } | 
 |     set testcase(gen_shlib_extra_sources) { { gm-hello.cc gm-use-cerr.cc } } | 
 |     set testcase(gen_shlib_extra_headers) { { gm-utils.h gm-std.h } } | 
 |     set testcase(tail_shlib_sources) { { gm-std.cc } } | 
 |     set testcase(tail_shlib_headers) { { gm-std.h } } | 
 |  | 
 |     if { $MONSTER == "y" } { | 
 | 	set testcase(run_names) { 10-sos 100-sos 1000-sos } | 
 | 	set testcase(nr_gen_shlibs) { 10 100 1000 } | 
 |     } else { | 
 | 	set testcase(run_names) { 1-so 10-sos 100-sos } | 
 | 	set testcase(nr_gen_shlibs) { 1 10 100 } | 
 |     } | 
 |     set testcase(nr_compunits) 10 | 
 |  | 
 |     set testcase(nr_extern_globals) 10 | 
 |     set testcase(nr_static_globals) 10 | 
 |     set testcase(nr_extern_functions) 10 | 
 |     set testcase(nr_static_functions) 10 | 
 |  | 
 |     # class_specs needs to be embedded in an outer list because remember | 
 |     # each element of the outer list is for each run, and here we want to use | 
 |     # the same value for all runs. | 
 |     set testcase(class_specs) { { | 
 | 	{ | 
 | 	    count 1 name { class } | 
 | 	    nr_members 10 nr_static_members 10 | 
 | 	    nr_methods 10 nr_static_methods 10 | 
 | 	    nr_inline_methods 10 nr_static_inline_methods 10 | 
 | 	} | 
 | 	{ | 
 | 	    count 1 name { ns0 class } | 
 | 	    nr_members 10 nr_static_members 10 | 
 | 	    nr_methods 10 nr_static_methods 10 | 
 | 	    nr_inline_methods 10 nr_static_inline_methods 10 | 
 | 	} | 
 | 	{ | 
 | 	    count 1 name { ns0 anonymous aclass } | 
 | 	    nr_members 10 nr_static_members 10 | 
 | 	    nr_methods 10 nr_static_methods 10 | 
 | 	    nr_inline_methods 10 nr_static_inline_methods 10 | 
 | 	} | 
 | 	{ | 
 | 	    count 1 name { ns0 ns1 class } | 
 | 	    nr_members 10 nr_static_members 10 | 
 | 	    nr_methods 10 nr_static_methods 10 | 
 | 	    nr_inline_methods 10 nr_static_inline_methods 10 | 
 | 	} | 
 | 	{ | 
 | 	    count 1 name { ns0 anonymous ns1 aclass } | 
 | 	    nr_members 10 nr_static_members 10 | 
 | 	    nr_methods 10 nr_static_methods 10 | 
 | 	    nr_inline_methods 10 nr_static_inline_methods 10 | 
 | 	} | 
 |     } } | 
 |  | 
 |     return [array get testcase] | 
 | } | 
 |  | 
 | GenPerfTest::standard_compile_driver gmonster2.exp make_testcase_config |