binutils-gdb/gdb/testsuite/gdb.perf/disassemble.py
Pedro Alves a13af434cf Fix 'FAIL: gdb.perf/disassemble.exp: python Disassemble().run()'
We currently have one FAIL while running "make check-perf":

  PerfTest::assemble, run ...
  python Disassemble().run()
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/home/pedro/rocm/gdb/src/gdb/testsuite/gdb.perf/lib/perftest/perftest.py", line 64, in run
      self.warm_up()
    File "<string>", line 25, in warm_up
  gdb.error: No symbol "ada_evaluate_subexp" in current context.
  Error while executing Python code.
  (gdb) FAIL: gdb.perf/disassemble.exp: python Disassemble().run()
  ...

The gdb.perf/disassemble.exp testcase debugs GDB with itself, runs to
main, and then disassembles a few GDB functions.  The problem is that
most(!) functions it is trying to disassemble are now gone...

This commit fixes the issue by simply picking some other functions to
disassemble.

It would perhaps be better to come up with some test program to
disassemble, one that would stay the same throughout the years,
instead of disassembling GDB itself.  I don't know why that wasn't
done to begin with.  I'll have to leave that for another rainy day,
though.

gdb/testsuite/
yyyy-mm-dd  Pedro Alves  <pedro@palves.net>

	* gdb.perf/disassemble.py (Disassemble::warm_up): Disassemble
	evaluate_subexp_do_call instead of ada_evaluate_subexp.
	(Disassemble::warm_up): Disassemble "captured_main",
	"run_inferior_call" and "update_global_location_list" instead of
	"evaluate_subexp_standard" and "c_parse_internal".

Change-Id: I89d1cca89ce2e495dea5096e439685739cc0d3df
2021-09-24 17:35:37 +01:00

44 lines
1.6 KiB
Python

# Copyright (C) 2013-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/>.
from perftest import perftest
class Disassemble(perftest.TestCaseWithBasicMeasurements):
def __init__(self):
super(Disassemble, self).__init__("disassemble")
def warm_up(self):
do_test_command = "disassemble evaluate_subexp_do_call"
gdb.execute(do_test_command, False, True)
def _do_test(self, c):
for func in [
"captured_main",
"handle_inferior_event",
"run_inferior_call",
"update_global_location_list",
]:
do_test_command = "disassemble %s" % func
for _ in range(c + 1):
gdb.execute(do_test_command, False, True)
def execute_test(self):
for i in range(3):
# Flush code cache.
gdb.execute("set code-cache off")
gdb.execute("set code-cache on")
self.measure.measure(lambda: self._do_test(i), i)