118 lines
4 KiB
Text
118 lines
4 KiB
Text
# Copyright (C) 2015-2022 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
|