+
Experiment File
+
+"""
+
+def _GetExperimentFileHTML(experiment_file_text):
+ if not experiment_file_text:
+ return ''
+ return _ExperimentFileHTML % (cgi.escape(experiment_file_text), )
+
+
+_ResultsSectionHTML = Template("""
+
+
$sect_name
+
+ $tab_menu
+
+""")
+
+def _GetResultsSectionHTML(print_table, table_name, data):
+ first_word = table_name.strip().split()[0]
+ short_name = first_word.lower()
+ return _ResultsSectionHTML.substitute(sect_name=table_name,
+ html_table=print_table(data, 'HTML'),
+ text_table=print_table(data, 'PLAIN'),
+ tsv_table=print_table(data, 'TSV'),
+ tab_menu=_GetTabMenuHTML(short_name),
+ short_name=short_name)
+
+
+
+_MainHTML = Template("""
+
+
+
+
+
+
+
+
+ $summary_table
+ $perf_html
+
+ $full_table
+ $experiment_file
+
+
+""")
+
+# It's a bit ugly that we take some HTML things, and some non-HTML things, but I
+# need to balance prettiness with time spent making things pretty.
+def GenerateHTMLPage(perf_table, chart_js, summary_table, print_table,
+ chart_divs, full_table, experiment_file):
+ """Generates a crosperf HTML page from the given arguments.
+
+ print_table is a two-arg function called like: print_table(t, f)
+ t is one of [summary_table, print_table, full_table]; it's the table we want
+ to format.
+ f is one of ['TSV', 'HTML', 'PLAIN']; it's the type of format we want.
+ """
+ summary_table_html = _GetResultsSectionHTML(print_table, 'Summary Table',
+ summary_table)
+ if perf_table:
+ perf_html = _GetResultsSectionHTML(print_table, 'Perf Table', perf_table)
+ perf_init = "switchTab('perf', 'html')"
+ else:
+ perf_html = ''
+ perf_init = ''
+
+ full_table_html = _GetResultsSectionHTML(print_table, 'Full Table',
+ full_table)
+ experiment_file_html = _GetExperimentFileHTML(experiment_file)
+ return _MainHTML.substitute(perf_init=perf_init, chart_js=chart_js,
+ summary_table=summary_table_html,
+ perf_html=perf_html, chart_divs=chart_divs,
+ full_table=full_table_html,
+ experiment_file=experiment_file_html)
diff --git a/crosperf/results_report_unittest.py b/crosperf/results_report_unittest.py
new file mode 100755
index 0000000000000000000000000000000000000000..ed5c74fa44b787645f4e6a15def25ceac92ce8e9
--- /dev/null
+++ b/crosperf/results_report_unittest.py
@@ -0,0 +1,415 @@
+#!/usr/bin/env python2
+#
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Unittest for the results reporter."""
+
+from __future__ import division
+from __future__ import print_function
+
+from StringIO import StringIO
+
+import collections
+import mock
+import os
+import test_flag
+import unittest
+
+from benchmark_run import MockBenchmarkRun
+from cros_utils import logger
+from experiment_factory import ExperimentFactory
+from experiment_file import ExperimentFile
+from machine_manager import MockCrosMachine
+from machine_manager import MockMachineManager
+from results_cache import MockResult
+from results_report import BenchmarkResults
+from results_report import HTMLResultsReport
+from results_report import JSONResultsReport
+from results_report import ParseChromeosImage
+from results_report import ParseStandardPerfReport
+from results_report import TextResultsReport
+
+
+class FreeFunctionsTest(unittest.TestCase):
+ """Tests for any free functions in results_report."""
+
+ def testParseChromeosImage(self):
+ # N.B. the cases with blank versions aren't explicitly supported by
+ # ParseChromeosImage. I'm not sure if they need to be supported, but the
+ # goal of this was to capture existing functionality as much as possible.
+ base_case = '/my/chroot/src/build/images/x86-generic/R01-1.0.date-time' \
+ '/chromiumos_test_image.bin'
+ self.assertEqual(ParseChromeosImage(base_case), ('R01-1.0', base_case))
+
+ dir_base_case = os.path.dirname(base_case)
+ self.assertEqual(ParseChromeosImage(dir_base_case), ('', dir_base_case))
+
+ buildbot_case = '/my/chroot/chroot/tmp/buildbot-build/R02-1.0.date-time' \
+ '/chromiumos_test_image.bin'
+ buildbot_img = buildbot_case.split('/chroot/tmp')[1]
+
+ self.assertEqual(ParseChromeosImage(buildbot_case),
+ ('R02-1.0', buildbot_img))
+ self.assertEqual(ParseChromeosImage(os.path.dirname(buildbot_case)),
+ ('', os.path.dirname(buildbot_img)))
+
+ # Ensure we don't act completely insanely given a few mildly insane paths.
+ fun_case = '/chromiumos_test_image.bin'
+ self.assertEqual(ParseChromeosImage(fun_case), ('', fun_case))
+
+ fun_case2 = 'chromiumos_test_image.bin'
+ self.assertEqual(ParseChromeosImage(fun_case2), ('', fun_case2))
+
+
+# There are many ways for this to be done better, but the linter complains
+# about all of them (that I can think of, at least).
+_fake_path_number = [0]
+def FakePath(ext):
+ """Makes a unique path that shouldn't exist on the host system.
+
+ Each call returns a different path, so if said path finds its way into an
+ error message, it may be easier to track it to its source.
+ """
+ _fake_path_number[0] += 1
+ prefix = '/tmp/should/not/exist/%d/' % (_fake_path_number[0], )
+ return os.path.join(prefix, ext)
+
+
+def MakeMockExperiment(compiler='gcc'):
+ """Mocks an experiment using the given compiler."""
+ mock_experiment_file = StringIO("""
+ board: x86-alex
+ remote: 127.0.0.1
+ perf_args: record -a -e cycles
+ benchmark: PageCycler {
+ iterations: 3
+ }
+
+ image1 {
+ chromeos_image: %s
+ }
+
+ image2 {
+ remote: 127.0.0.2
+ chromeos_image: %s
+ }
+ """ % (FakePath('cros_image1.bin'), FakePath('cros_image2.bin')))
+ efile = ExperimentFile(mock_experiment_file)
+ experiment = ExperimentFactory().GetExperiment(efile,
+ FakePath('working_directory'),
+ FakePath('log_dir'))
+ for label in experiment.labels:
+ label.compiler = compiler
+ return experiment
+
+
+def _InjectSuccesses(experiment, how_many, keyvals, for_benchmark=0,
+ label=None):
+ """Injects successful experiment runs (for each label) into the experiment."""
+ # Defensive copy of keyvals, so if it's modified, we'll know.
+ keyvals = dict(keyvals)
+ num_configs = len(experiment.benchmarks) * len(experiment.labels)
+ num_runs = len(experiment.benchmark_runs) // num_configs
+
+ # TODO(gbiv): Centralize the mocking of these, maybe? (It's also done in
+ # benchmark_run_unittest)
+ bench = experiment.benchmarks[for_benchmark]
+ cache_conditions = []
+ log_level = 'average'
+ share_cache = ''
+ locks_dir = ''
+ log = logger.GetLogger()
+ machine_manager = MockMachineManager(FakePath('chromeos_root'), 0,
+ log_level, locks_dir)
+ machine_manager.AddMachine('testing_machine')
+ machine = next(m for m in machine_manager.GetMachines()
+ if m.name == 'testing_machine')
+ for label in experiment.labels:
+ def MakeSuccessfulRun(n):
+ run = MockBenchmarkRun('mock_success%d' % (n, ), bench, label,
+ 1 + n + num_runs, cache_conditions,
+ machine_manager, log, log_level, share_cache)
+ mock_result = MockResult(log, label, log_level, machine)
+ mock_result.keyvals = keyvals
+ run.result = mock_result
+ return run
+
+ experiment.benchmark_runs.extend(MakeSuccessfulRun(n)
+ for n in xrange(how_many))
+ return experiment
+
+
+class TextResultsReportTest(unittest.TestCase):
+ """Tests that the output of a text report contains the things we pass in.
+
+ At the moment, this doesn't care deeply about the format in which said
+ things are displayed. It just cares that they're present.
+ """
+
+ def _checkReport(self, email):
+ num_success = 2
+ success_keyvals = {'retval': 0, 'machine': 'some bot', 'a_float': 3.96}
+ experiment = _InjectSuccesses(MakeMockExperiment(), num_success,
+ success_keyvals)
+ text_report = TextResultsReport.FromExperiment(experiment, email=email) \
+ .GetReport()
+ self.assertIn(str(success_keyvals['a_float']), text_report)
+ self.assertIn(success_keyvals['machine'], text_report)
+ self.assertIn(MockCrosMachine.CPUINFO_STRING, text_report)
+ return text_report
+
+
+ def testOutput(self):
+ email_report = self._checkReport(email=True)
+ text_report = self._checkReport(email=False)
+
+ # Ensure that the reports somehow different. Otherwise, having the
+ # distinction is useless.
+ self.assertNotEqual(email_report, text_report)
+
+
+class HTMLResultsReportTest(unittest.TestCase):
+ """Tests that the output of a HTML report contains the things we pass in.
+
+ At the moment, this doesn't care deeply about the format in which said
+ things are displayed. It just cares that they're present.
+ """
+
+ _TestOutput = collections.namedtuple('TestOutput', ['summary_table',
+ 'perf_html',
+ 'chart_js',
+ 'charts',
+ 'full_table',
+ 'experiment_file'])
+
+ @staticmethod
+ def _GetTestOutput(perf_table, chart_js, summary_table, print_table,
+ chart_divs, full_table, experiment_file):
+ # N.B. Currently we don't check chart_js; it's just passed through because
+ # cros lint complains otherwise.
+ summary_table = print_table(summary_table, 'HTML')
+ perf_html = print_table(perf_table, 'HTML')
+ full_table = print_table(full_table, 'HTML')
+ return HTMLResultsReportTest._TestOutput(summary_table=summary_table,
+ perf_html=perf_html,
+ chart_js=chart_js,
+ charts=chart_divs,
+ full_table=full_table,
+ experiment_file=experiment_file)
+
+ def _GetOutput(self, experiment=None, benchmark_results=None):
+ with mock.patch('results_report_templates.GenerateHTMLPage') as standin:
+ if experiment is not None:
+ HTMLResultsReport.FromExperiment(experiment).GetReport()
+ else:
+ HTMLResultsReport(benchmark_results).GetReport()
+ mod_mock = standin
+ self.assertEquals(mod_mock.call_count, 1)
+ # call_args[0] is positional args, call_args[1] is kwargs.
+ self.assertEquals(mod_mock.call_args[0], tuple())
+ fmt_args = mod_mock.call_args[1]
+ return self._GetTestOutput(**fmt_args)
+
+ def testNoSuccessOutput(self):
+ output = self._GetOutput(MakeMockExperiment())
+ self.assertIn('no result', output.summary_table)
+ self.assertIn('no result', output.full_table)
+ self.assertEqual(output.charts, '')
+ self.assertNotEqual(output.experiment_file, '')
+
+ def testSuccessfulOutput(self):
+ num_success = 2
+ success_keyvals = {'retval': 0, 'a_float': 3.96}
+ output = self._GetOutput(_InjectSuccesses(MakeMockExperiment(), num_success,
+ success_keyvals))
+
+ self.assertNotIn('no result', output.summary_table)
+ #self.assertIn(success_keyvals['machine'], output.summary_table)
+ self.assertIn('a_float', output.summary_table)
+ self.assertIn(str(success_keyvals['a_float']), output.summary_table)
+ self.assertIn('a_float', output.full_table)
+ # The _ in a_float is filtered out when we're generating HTML.
+ self.assertIn('afloat', output.charts)
+ # And make sure we have our experiment file...
+ self.assertNotEqual(output.experiment_file, '')
+
+ def testBenchmarkResultFailure(self):
+ labels = ['label1']
+ benchmark_names_and_iterations = [('bench1', 1)]
+ benchmark_keyvals = {'bench1': [[]]}
+ results = BenchmarkResults(labels, benchmark_names_and_iterations,
+ benchmark_keyvals)
+ output = self._GetOutput(benchmark_results=results)
+ self.assertIn('no result', output.summary_table)
+ self.assertEqual(output.charts, '')
+ self.assertEqual(output.experiment_file, '')
+
+ def testBenchmarkResultSuccess(self):
+ labels = ['label1']
+ benchmark_names_and_iterations = [('bench1', 1)]
+ benchmark_keyvals = {'bench1': [[{'retval': 1, 'foo': 2.0}]]}
+ results = BenchmarkResults(labels, benchmark_names_and_iterations,
+ benchmark_keyvals)
+ output = self._GetOutput(benchmark_results=results)
+ self.assertNotIn('no result', output.summary_table)
+ self.assertIn('bench1', output.summary_table)
+ self.assertIn('bench1', output.full_table)
+ self.assertNotEqual(output.charts, '')
+ self.assertEqual(output.experiment_file, '')
+
+
+class JSONResultsReportTest(unittest.TestCase):
+ """Tests JSONResultsReport."""
+
+ REQUIRED_REPORT_KEYS = ('date', 'time', 'label', 'test_name', 'pass')
+ EXPERIMENT_REPORT_KEYS = ('board', 'chromeos_image', 'chromeos_version',
+ 'chrome_version', 'compiler')
+
+ @staticmethod
+ def _GetRequiredKeys(is_experiment):
+ required_keys = JSONResultsReportTest.REQUIRED_REPORT_KEYS
+ if is_experiment:
+ required_keys += JSONResultsReportTest.EXPERIMENT_REPORT_KEYS
+ return required_keys
+
+ def _CheckRequiredKeys(self, test_output, is_experiment):
+ required_keys = self._GetRequiredKeys(is_experiment)
+ for output in test_output:
+ for key in required_keys:
+ self.assertIn(key, output)
+
+ def testAllFailedJSONReportOutput(self):
+ experiment = MakeMockExperiment()
+ results = JSONResultsReport.FromExperiment(experiment).GetReportObject()
+ self._CheckRequiredKeys(results, is_experiment=True)
+ # Nothing succeeded; we don't send anything more than what's required.
+ required_keys = self._GetRequiredKeys(is_experiment=True)
+ for result in results:
+ self.assertItemsEqual(result.iterkeys(), required_keys)
+
+ def testJSONReportOutputWithSuccesses(self):
+ success_keyvals = {
+ 'retval': 0,
+ 'a_float': '2.3',
+ 'many_floats': [['1.0', '2.0'], ['3.0']],
+ 'machine': "i'm a pirate"
+ }
+
+ # 2 is arbitrary.
+ num_success = 2
+ experiment = _InjectSuccesses(MakeMockExperiment(), num_success,
+ success_keyvals)
+ results = JSONResultsReport.FromExperiment(experiment).GetReportObject()
+ self._CheckRequiredKeys(results, is_experiment=True)
+
+ num_passes = num_success * len(experiment.labels)
+ non_failures = [r for r in results if r['pass']]
+ self.assertEqual(num_passes, len(non_failures))
+
+ # TODO(gbiv): ...Is the 3.0 *actually* meant to be dropped?
+ expected_detailed = {'a_float': 2.3, 'many_floats': [1.0, 2.0]}
+ for pass_ in non_failures:
+ self.assertIn('detailed_results', pass_)
+ self.assertDictEqual(expected_detailed, pass_['detailed_results'])
+ self.assertIn('machine', pass_)
+ self.assertEqual(success_keyvals['machine'], pass_['machine'])
+
+ def testFailedJSONReportOutputWithoutExperiment(self):
+ labels = ['label1']
+ benchmark_names_and_iterations = [('bench1', 1), ('bench2', 2),
+ ('bench3', 1), ('bench4', 0)]
+ benchmark_keyvals = {
+ 'bench1': [[{'retval': 1, 'foo': 2.0}]],
+ 'bench2': [[{'retval': 1, 'foo': 4.0}, {'retval': -1, 'bar': 999}]],
+ # lack of retval is considered a failure.
+ 'bench3': [[{}]],
+ 'bench4': [[]]
+ }
+ bench_results = BenchmarkResults(labels, benchmark_names_and_iterations,
+ benchmark_keyvals)
+ results = JSONResultsReport(bench_results).GetReportObject()
+ self._CheckRequiredKeys(results, is_experiment=False)
+ self.assertFalse(any(r['pass'] for r in results))
+
+ def testJSONGetReportObeysJSONSettings(self):
+ labels = ['label1']
+ benchmark_names_and_iterations = [('bench1', 1)]
+ # These can be anything, really. So long as they're distinctive.
+ separators = (',\t\n\t', ':\t\n\t')
+ benchmark_keyvals = {'bench1': [[{'retval': 0, 'foo': 2.0}]]}
+ bench_results = BenchmarkResults(labels, benchmark_names_and_iterations,
+ benchmark_keyvals)
+ reporter = JSONResultsReport(bench_results,
+ json_args={'separators': separators})
+ result_str = reporter.GetReport()
+ self.assertIn(separators[0], result_str)
+ self.assertIn(separators[1], result_str)
+
+ def testSuccessfulJSONReportOutputWithoutExperiment(self):
+ labels = ['label1']
+ benchmark_names_and_iterations = [('bench1', 1), ('bench2', 2)]
+ benchmark_keyvals = {
+ 'bench1': [[{'retval': 0, 'foo': 2.0}]],
+ 'bench2': [[{'retval': 0, 'foo': 4.0}, {'retval': 0, 'bar': 999}]]
+ }
+ bench_results = BenchmarkResults(labels, benchmark_names_and_iterations,
+ benchmark_keyvals)
+ results = JSONResultsReport(bench_results).GetReportObject()
+ self._CheckRequiredKeys(results, is_experiment=False)
+ self.assertTrue(all(r['pass'] for r in results))
+ # Enforce that the results have *some* deterministic order.
+ keyfn = lambda r: (r['test_name'], r['detailed_results'].get('foo', 5.0))
+ sorted_results = sorted(results, key=keyfn)
+ detailed_results = [r['detailed_results'] for r in sorted_results]
+ bench1, bench2_foo, bench2_bar = detailed_results
+ self.assertEqual(bench1['foo'], 2.0)
+ self.assertEqual(bench2_foo['foo'], 4.0)
+ self.assertEqual(bench2_bar['bar'], 999)
+ self.assertNotIn('bar', bench1)
+ self.assertNotIn('bar', bench2_foo)
+ self.assertNotIn('foo', bench2_bar)
+
+
+class PerfReportParserTest(unittest.TestCase):
+ """Tests for the perf report parser in results_report."""
+ @staticmethod
+ def _ReadRealPerfReport():
+ my_dir = os.path.dirname(os.path.realpath(__file__))
+ with open(os.path.join(my_dir, 'perf_files/perf.data.report.0')) as f:
+ return f.read()
+
+ def testParserParsesRealWorldPerfReport(self):
+ report = ParseStandardPerfReport(self._ReadRealPerfReport())
+ self.assertItemsEqual(['cycles', 'instructions'], report.keys())
+
+ # Arbitrarily selected known percentages from the perf report.
+ known_cycles_percentages = {
+ '0xffffffffa4a1f1c9': 0.66,
+ '0x0000115bb7ba9b54': 0.47,
+ '0x0000000000082e08': 0.00,
+ '0xffffffffa4a13e63': 0.00,
+ }
+ report_cycles = report['cycles']
+ self.assertEqual(len(report_cycles), 214)
+ for k, v in known_cycles_percentages.iteritems():
+ self.assertIn(k, report_cycles)
+ self.assertEqual(v, report_cycles[k])
+
+ known_instrunctions_percentages = {
+ '0x0000115bb6c35d7a': 1.65,
+ '0x0000115bb7ba9b54': 0.67,
+ '0x0000000000024f56': 0.00,
+ '0xffffffffa4a0ee03': 0.00,
+ }
+ report_instructions = report['instructions']
+ self.assertEqual(len(report_instructions), 492)
+ for k, v in known_instrunctions_percentages.iteritems():
+ self.assertIn(k, report_instructions)
+ self.assertEqual(v, report_instructions[k])
+
+
+if __name__ == '__main__':
+ test_flag.SetTestMode(True)
+ unittest.main()
diff --git a/crosperf/run_tests.sh b/crosperf/run_tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..78a2b9fdc416e677f4b7076b98a8f9e9cb50c9d6
--- /dev/null
+++ b/crosperf/run_tests.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Copyright 2011 Google Inc. All Rights Reserved.
+# Author: raymes@google.com (Raymes Khoury)
+
+# Make sure the base toolchain-utils directory is in our PYTHONPATH before
+# trying to run this script.
+export PYTHONPATH+=":.."
+
+num_tests=0
+num_failed=0
+
+for test in $(find -name \*test.py); do
+ echo RUNNING: ${test}
+ ((num_tests++))
+ if ! ./${test} ; then
+ echo
+ echo "*** Test Failed! (${test}) ***"
+ echo
+ ((num_failed++))
+ fi
+done
+
+echo
+
+if [ ${num_failed} -eq 0 ] ; then
+ echo "ALL TESTS PASSED (${num_tests} ran)"
+ exit 0
+fi
+
+echo "${num_failed} TESTS FAILED (out of ${num_tests})"
+exit 1
diff --git a/crosperf/schedv2.py b/crosperf/schedv2.py
new file mode 100644
index 0000000000000000000000000000000000000000..90fe83a31e206ec7211ba03029d949c5198e6f31
--- /dev/null
+++ b/crosperf/schedv2.py
@@ -0,0 +1,439 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Module to optimize the scheduling of benchmark_run tasks."""
+
+
+from __future__ import print_function
+
+import sys
+import test_flag
+import traceback
+
+from collections import defaultdict
+from machine_image_manager import MachineImageManager
+from threading import Lock
+from threading import Thread
+from cros_utils import command_executer
+from cros_utils import logger
+
+
+class DutWorker(Thread):
+ """Working thread for a dut."""
+
+ def __init__(self, dut, sched):
+ super(DutWorker, self).__init__(name='DutWorker-{}'.format(dut.name))
+ self._dut = dut
+ self._sched = sched
+ self._stat_num_br_run = 0
+ self._stat_num_reimage = 0
+ self._stat_annotation = ''
+ self._logger = logger.GetLogger(self._sched.get_experiment().log_dir)
+ self.daemon = True
+ self._terminated = False
+ self._active_br = None
+ # Race condition accessing _active_br between _execute_benchmark_run and
+ # _terminate, so lock it up.
+ self._active_br_lock = Lock()
+
+ def terminate(self):
+ self._terminated = True
+ with self._active_br_lock:
+ if self._active_br is not None:
+ # BenchmarkRun.Terminate() terminates any running testcase via
+ # suite_runner.Terminate and updates timeline.
+ self._active_br.Terminate()
+
+ def run(self):
+ """Do the "run-test->(optionally reimage)->run-test" chore.
+
+ Note - 'br' below means 'benchmark_run'.
+ """
+
+ # Firstly, handle benchmarkruns that have cache hit.
+ br = self._sched.get_cached_benchmark_run()
+ while br:
+ try:
+ self._stat_annotation = 'finishing cached {}'.format(br)
+ br.run()
+ except RuntimeError:
+ traceback.print_exc(file=sys.stdout)
+ br = self._sched.get_cached_benchmark_run()
+
+ # Secondly, handle benchmarkruns that needs to be run on dut.
+ self._setup_dut_label()
+ try:
+ self._logger.LogOutput('{} started.'.format(self))
+ while not self._terminated:
+ br = self._sched.get_benchmark_run(self._dut)
+ if br is None:
+ # No br left for this label. Considering reimaging.
+ label = self._sched.allocate_label(self._dut)
+ if label is None:
+ # No br even for other labels. We are done.
+ self._logger.LogOutput('ImageManager found no label '
+ 'for dut, stopping working '
+ 'thread {}.'.format(self))
+ break
+ if self._reimage(label):
+ # Reimage to run other br fails, dut is doomed, stop
+ # this thread.
+ self._logger.LogWarning('Re-image failed, dut '
+ 'in an unstable state, stopping '
+ 'working thread {}.'.format(self))
+ break
+ else:
+ # Execute the br.
+ self._execute_benchmark_run(br)
+ finally:
+ self._stat_annotation = 'finished'
+ # Thread finishes. Notify scheduler that I'm done.
+ self._sched.dut_worker_finished(self)
+
+ def _reimage(self, label):
+ """Reimage image to label.
+
+ Args:
+ label: the label to remimage onto dut.
+
+ Returns:
+ 0 if successful, otherwise 1.
+ """
+
+ # Termination could happen anywhere, check it.
+ if self._terminated:
+ return 1
+
+ self._logger.LogOutput('Reimaging {} using {}'.format(self, label))
+ self._stat_num_reimage += 1
+ self._stat_annotation = 'reimaging using "{}"'.format(label.name)
+ try:
+ # Note, only 1 reimage at any given time, this is guaranteed in
+ # ImageMachine, so no sync needed below.
+ retval = self._sched.get_experiment().machine_manager.ImageMachine(
+ self._dut,
+ label)
+
+ if retval:
+ return 1
+ except RuntimeError:
+ return 1
+
+ self._dut.label = label
+ return 0
+
+ def _execute_benchmark_run(self, br):
+ """Execute a single benchmark_run.
+
+ Note - this function never throws exceptions.
+ """
+
+ # Termination could happen anywhere, check it.
+ if self._terminated:
+ return
+
+ self._logger.LogOutput('{} started working on {}'.format(self, br))
+ self._stat_num_br_run += 1
+ self._stat_annotation = 'executing {}'.format(br)
+ # benchmark_run.run does not throws, but just play it safe here.
+ try:
+ assert br.owner_thread is None
+ br.owner_thread = self
+ with self._active_br_lock:
+ self._active_br = br
+ br.run()
+ finally:
+ self._sched.get_experiment().BenchmarkRunFinished(br)
+ with self._active_br_lock:
+ self._active_br = None
+
+ def _setup_dut_label(self):
+ """Try to match dut image with a certain experiment label.
+
+ If such match is found, we just skip doing reimage and jump to execute
+ some benchmark_runs.
+ """
+
+ checksum_file = '/usr/local/osimage_checksum_file'
+ try:
+ rv, checksum, _ = command_executer.GetCommandExecuter().\
+ CrosRunCommandWOutput(
+ 'cat ' + checksum_file,
+ chromeos_root=self._sched.get_labels(0).chromeos_root,
+ machine=self._dut.name,
+ print_to_console=False)
+ if rv == 0:
+ checksum = checksum.strip()
+ for l in self._sched.get_labels():
+ if l.checksum == checksum:
+ self._logger.LogOutput("Dut '{}' is pre-installed with '{}'".format(
+ self._dut.name, l))
+ self._dut.label = l
+ return
+ except RuntimeError:
+ traceback.print_exc(file=sys.stdout)
+ self._dut.label = None
+
+ def __str__(self):
+ return 'DutWorker[dut="{}", label="{}"]'.format(
+ self._dut.name, self._dut.label.name if self._dut.label else 'None')
+
+ def dut(self):
+ return self._dut
+
+ def status_str(self):
+ """Report thread status."""
+
+ return ('Worker thread "{}", label="{}", benchmark_run={}, '
+ 'reimage={}, now {}'.format(
+ self._dut.name, 'None' if self._dut.label is None else
+ self._dut.label.name, self._stat_num_br_run,
+ self._stat_num_reimage, self._stat_annotation))
+
+
+class BenchmarkRunCacheReader(Thread):
+ """The thread to read cache for a list of benchmark_runs.
+
+ On creation, each instance of this class is given a br_list, which is a
+ subset of experiment._benchmark_runs.
+ """
+
+ def __init__(self, schedv2, br_list):
+ super(BenchmarkRunCacheReader, self).__init__()
+ self._schedv2 = schedv2
+ self._br_list = br_list
+ self._logger = self._schedv2.get_logger()
+
+ def run(self):
+ for br in self._br_list:
+ try:
+ br.ReadCache()
+ if br.cache_hit:
+ self._logger.LogOutput('Cache hit - {}'.format(br))
+ with self._schedv2.lock_on('_cached_br_list'):
+ self._schedv2.get_cached_run_list().append(br)
+ else:
+ self._logger.LogOutput('Cache not hit - {}'.format(br))
+ except RuntimeError:
+ traceback.print_exc(file=sys.stderr)
+
+
+class Schedv2(object):
+ """New scheduler for crosperf."""
+
+ def __init__(self, experiment):
+ self._experiment = experiment
+ self._logger = logger.GetLogger(experiment.log_dir)
+
+ # Create shortcuts to nested data structure. "_duts" points to a list of
+ # locked machines. _labels points to a list of all labels.
+ self._duts = self._experiment.machine_manager.GetMachines()
+ self._labels = self._experiment.labels
+
+ # Bookkeeping for synchronization.
+ self._workers_lock = Lock()
+ # pylint: disable=unnecessary-lambda
+ self._lock_map = defaultdict(lambda: Lock())
+
+ # Test mode flag
+ self._in_test_mode = test_flag.GetTestMode()
+
+ # Read benchmarkrun cache.
+ self._read_br_cache()
+
+ # Mapping from label to a list of benchmark_runs.
+ self._label_brl_map = dict((l, []) for l in self._labels)
+ for br in self._experiment.benchmark_runs:
+ assert br.label in self._label_brl_map
+ # Only put no-cache-hit br into the map.
+ if br not in self._cached_br_list:
+ self._label_brl_map[br.label].append(br)
+
+ # Use machine image manager to calculate initial label allocation.
+ self._mim = MachineImageManager(self._labels, self._duts)
+ self._mim.compute_initial_allocation()
+
+ # Create worker thread, 1 per dut.
+ self._active_workers = [DutWorker(dut, self) for dut in self._duts]
+ self._finished_workers = []
+
+ # Termination flag.
+ self._terminated = False
+
+ def run_sched(self):
+ """Start all dut worker threads and return immediately."""
+
+ for w in self._active_workers:
+ w.start()
+
+ def _read_br_cache(self):
+ """Use multi-threading to read cache for all benchmarkruns.
+
+ We do this by firstly creating a few threads, and then assign each
+ thread a segment of all brs. Each thread will check cache status for
+ each br and put those with cache into '_cached_br_list'.
+ """
+
+ self._cached_br_list = []
+ n_benchmarkruns = len(self._experiment.benchmark_runs)
+ if n_benchmarkruns <= 4:
+ # Use single thread to read cache.
+ self._logger.LogOutput(('Starting to read cache status for '
+ '{} benchmark runs ...').format(n_benchmarkruns))
+ BenchmarkRunCacheReader(self, self._experiment.benchmark_runs).run()
+ return
+
+ # Split benchmarkruns set into segments. Each segment will be handled by
+ # a thread. Note, we use (x+3)/4 to mimic math.ceil(x/4).
+ n_threads = max(2, min(20, (n_benchmarkruns + 3) / 4))
+ self._logger.LogOutput(('Starting {} threads to read cache status for '
+ '{} benchmark runs ...').format(n_threads,
+ n_benchmarkruns))
+ benchmarkruns_per_thread = (n_benchmarkruns + n_threads - 1) / n_threads
+ benchmarkrun_segments = []
+ for i in range(n_threads - 1):
+ start = i * benchmarkruns_per_thread
+ end = (i + 1) * benchmarkruns_per_thread
+ benchmarkrun_segments.append(self._experiment.benchmark_runs[start:end])
+ benchmarkrun_segments.append(self._experiment.benchmark_runs[
+ (n_threads - 1) * benchmarkruns_per_thread:])
+
+ # Assert: aggregation of benchmarkrun_segments equals to benchmark_runs.
+ assert sum(len(x) for x in benchmarkrun_segments) == n_benchmarkruns
+
+ # Create and start all readers.
+ cache_readers = [
+ BenchmarkRunCacheReader(self, x) for x in benchmarkrun_segments
+ ]
+
+ for x in cache_readers:
+ x.start()
+
+ # Wait till all readers finish.
+ for x in cache_readers:
+ x.join()
+
+ # Summarize.
+ self._logger.LogOutput(
+ 'Total {} cache hit out of {} benchmark_runs.'.format(
+ len(self._cached_br_list), n_benchmarkruns))
+
+ def get_cached_run_list(self):
+ return self._cached_br_list
+
+ def get_label_map(self):
+ return self._label_brl_map
+
+ def get_experiment(self):
+ return self._experiment
+
+ def get_labels(self, i=None):
+ if i == None:
+ return self._labels
+ return self._labels[i]
+
+ def get_logger(self):
+ return self._logger
+
+ def get_cached_benchmark_run(self):
+ """Get a benchmark_run with 'cache hit'.
+
+ Returns:
+ The benchmark that has cache hit, if any. Otherwise none.
+ """
+
+ with self.lock_on('_cached_br_list'):
+ if self._cached_br_list:
+ return self._cached_br_list.pop()
+ return None
+
+ def get_benchmark_run(self, dut):
+ """Get a benchmark_run (br) object for a certain dut.
+
+ Args:
+ dut: the dut for which a br is returned.
+
+ Returns:
+ A br with its label matching that of the dut. If no such br could be
+ found, return None (this usually means a reimage is required for the
+ dut).
+ """
+
+ # If terminated, stop providing any br.
+ if self._terminated:
+ return None
+
+ # If dut bears an unrecognized label, return None.
+ if dut.label is None:
+ return None
+
+ # If br list for the dut's label is empty (that means all brs for this
+ # label have been done), return None.
+ with self.lock_on(dut.label):
+ brl = self._label_brl_map[dut.label]
+ if not brl:
+ return None
+ # Return the first br.
+ return brl.pop(0)
+
+ def allocate_label(self, dut):
+ """Allocate a label to a dut.
+
+ The work is delegated to MachineImageManager.
+
+ The dut_worker calling this method is responsible for reimage the dut to
+ this label.
+
+ Args:
+ dut: the new label that is to be reimaged onto the dut.
+
+ Returns:
+ The label or None.
+ """
+
+ if self._terminated:
+ return None
+
+ return self._mim.allocate(dut, self)
+
+ def dut_worker_finished(self, dut_worker):
+ """Notify schedv2 that the dut_worker thread finished.
+
+ Args:
+ dut_worker: the thread that is about to end.
+ """
+
+ self._logger.LogOutput('{} finished.'.format(dut_worker))
+ with self._workers_lock:
+ self._active_workers.remove(dut_worker)
+ self._finished_workers.append(dut_worker)
+
+ def is_complete(self):
+ return len(self._active_workers) == 0
+
+ def lock_on(self, my_object):
+ return self._lock_map[my_object]
+
+ def terminate(self):
+ """Mark flag so we stop providing br/reimages.
+
+ Also terminate each DutWorker, so they refuse to execute br or reimage.
+ """
+
+ self._terminated = True
+ for dut_worker in self._active_workers:
+ dut_worker.terminate()
+
+ def threads_status_as_string(self):
+ """Report the dut worker threads status."""
+
+ status = '{} active threads, {} finished threads.\n'.format(
+ len(self._active_workers), len(self._finished_workers))
+ status += ' Active threads:'
+ for dw in self._active_workers:
+ status += '\n ' + dw.status_str()
+ if self._finished_workers:
+ status += '\n Finished threads:'
+ for dw in self._finished_workers:
+ status += '\n ' + dw.status_str()
+ return status
diff --git a/crosperf/schedv2_unittest.py b/crosperf/schedv2_unittest.py
new file mode 100755
index 0000000000000000000000000000000000000000..be0fde4b859553d5a8323091a09e6bdd68263a41
--- /dev/null
+++ b/crosperf/schedv2_unittest.py
@@ -0,0 +1,221 @@
+#!/usr/bin/env python2
+
+# Copyright 2015 Google Inc. All Rights Reserved.
+"""This contains the unit tests for the new Crosperf task scheduler."""
+
+from __future__ import print_function
+
+import mock
+import unittest
+import StringIO
+
+import benchmark_run
+import test_flag
+from experiment_factory import ExperimentFactory
+from experiment_file import ExperimentFile
+from cros_utils.command_executer import CommandExecuter
+from experiment_runner_unittest import FakeLogger
+from schedv2 import Schedv2
+
+EXPERIMENT_FILE_1 = """\
+board: daisy
+remote: chromeos-daisy1.cros chromeos-daisy2.cros
+
+benchmark: kraken {
+ suite: telemetry_Crosperf
+ iterations: 3
+}
+
+image1 {
+ chromeos_image: /chromeos/src/build/images/daisy/latest/cros_image1.bin
+ remote: chromeos-daisy3.cros
+}
+
+image2 {
+ chromeos_image: /chromeos/src/build/imaages/daisy/latest/cros_image2.bin
+ remote: chromeos-daisy4.cros chromeos-daisy5.cros
+}
+"""
+
+EXPERIMENT_FILE_WITH_FORMAT = """\
+board: daisy
+remote: chromeos-daisy1.cros chromeos-daisy2.cros
+
+benchmark: kraken {{
+ suite: telemetry_Crosperf
+ iterations: {kraken_iterations}
+}}
+
+image1 {{
+ chromeos_image: /chromeos/src/build/images/daisy/latest/cros_image1.bin
+ remote: chromeos-daisy3.cros
+}}
+
+image2 {{
+ chromeos_image: /chromeos/src/build/imaages/daisy/latest/cros_image2.bin
+ remote: chromeos-daisy4.cros chromeos-daisy5.cros
+}}
+"""
+
+
+class Schedv2Test(unittest.TestCase):
+ """Class for setting up and running the unit tests."""
+
+ def setUp(self):
+ self.exp = None
+
+ mock_logger = FakeLogger()
+ mock_cmd_exec = mock.Mock(spec=CommandExecuter)
+
+ @mock.patch('benchmark_run.BenchmarkRun', new=benchmark_run.MockBenchmarkRun)
+ def _make_fake_experiment(self, expstr):
+ """Create fake experiment from string.
+
+ Note - we mock out BenchmarkRun in this step.
+ """
+ experiment_file = ExperimentFile(StringIO.StringIO(expstr))
+ experiment = ExperimentFactory().GetExperiment(experiment_file,
+ working_directory='',
+ log_dir='')
+ return experiment
+
+ def test_remote(self):
+ """Test that remotes in labels are aggregated into experiment.remote."""
+
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_1)
+ self.exp.log_level = 'verbose'
+ my_schedv2 = Schedv2(self.exp)
+ self.assertFalse(my_schedv2.is_complete())
+ self.assertIn('chromeos-daisy1.cros', self.exp.remote)
+ self.assertIn('chromeos-daisy2.cros', self.exp.remote)
+ self.assertIn('chromeos-daisy3.cros', self.exp.remote)
+ self.assertIn('chromeos-daisy4.cros', self.exp.remote)
+ self.assertIn('chromeos-daisy5.cros', self.exp.remote)
+
+ def test_unreachable_remote(self):
+ """Test unreachable remotes are removed from experiment and label."""
+
+ def MockIsReachable(cm):
+ return (cm.name != 'chromeos-daisy3.cros' and
+ cm.name != 'chromeos-daisy5.cros')
+
+ with mock.patch('machine_manager.MockCrosMachine.IsReachable',
+ new=MockIsReachable):
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_1)
+ self.assertIn('chromeos-daisy1.cros', self.exp.remote)
+ self.assertIn('chromeos-daisy2.cros', self.exp.remote)
+ self.assertNotIn('chromeos-daisy3.cros', self.exp.remote)
+ self.assertIn('chromeos-daisy4.cros', self.exp.remote)
+ self.assertNotIn('chromeos-daisy5.cros', self.exp.remote)
+
+ for l in self.exp.labels:
+ if l.name == 'image2':
+ self.assertNotIn('chromeos-daisy5.cros', l.remote)
+ self.assertIn('chromeos-daisy4.cros', l.remote)
+ elif l.name == 'image1':
+ self.assertNotIn('chromeos-daisy3.cros', l.remote)
+
+ @mock.patch('schedv2.BenchmarkRunCacheReader')
+ def test_BenchmarkRunCacheReader_1(self, reader):
+ """Test benchmarkrun set is split into 5 segments."""
+
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_WITH_FORMAT.format(
+ kraken_iterations=9))
+ my_schedv2 = Schedv2(self.exp)
+ self.assertFalse(my_schedv2.is_complete())
+ # We have 9 * 2 == 18 brs, we use 5 threads, each reading 4, 4, 4,
+ # 4, 2 brs respectively.
+ # Assert that BenchmarkRunCacheReader() is called 5 times.
+ self.assertEquals(reader.call_count, 5)
+ # reader.call_args_list[n] - nth call.
+ # reader.call_args_list[n][0] - positioned args in nth call.
+ # reader.call_args_list[n][0][1] - the 2nd arg in nth call,
+ # that is 'br_list' in 'schedv2.BenchmarkRunCacheReader'.
+ self.assertEquals(len(reader.call_args_list[0][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[1][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[2][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[3][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[4][0][1]), 2)
+
+ @mock.patch('schedv2.BenchmarkRunCacheReader')
+ def test_BenchmarkRunCacheReader_2(self, reader):
+ """Test benchmarkrun set is split into 4 segments."""
+
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_WITH_FORMAT.format(
+ kraken_iterations=8))
+ my_schedv2 = Schedv2(self.exp)
+ self.assertFalse(my_schedv2.is_complete())
+ # We have 8 * 2 == 16 brs, we use 4 threads, each reading 4 brs.
+ self.assertEquals(reader.call_count, 4)
+ self.assertEquals(len(reader.call_args_list[0][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[1][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[2][0][1]), 4)
+ self.assertEquals(len(reader.call_args_list[3][0][1]), 4)
+
+ @mock.patch('schedv2.BenchmarkRunCacheReader')
+ def test_BenchmarkRunCacheReader_3(self, reader):
+ """Test benchmarkrun set is split into 2 segments."""
+
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_WITH_FORMAT.format(
+ kraken_iterations=3))
+ my_schedv2 = Schedv2(self.exp)
+ self.assertFalse(my_schedv2.is_complete())
+ # We have 3 * 2 == 6 brs, we use 2 threads.
+ self.assertEquals(reader.call_count, 2)
+ self.assertEquals(len(reader.call_args_list[0][0][1]), 3)
+ self.assertEquals(len(reader.call_args_list[1][0][1]), 3)
+
+ @mock.patch('schedv2.BenchmarkRunCacheReader')
+ def test_BenchmarkRunCacheReader_4(self, reader):
+ """Test benchmarkrun set is not splitted."""
+
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_WITH_FORMAT.format(
+ kraken_iterations=1))
+ my_schedv2 = Schedv2(self.exp)
+ self.assertFalse(my_schedv2.is_complete())
+ # We have 1 * 2 == 2 br, so only 1 instance.
+ self.assertEquals(reader.call_count, 1)
+ self.assertEquals(len(reader.call_args_list[0][0][1]), 2)
+
+ def test_cachehit(self):
+ """Test cache-hit and none-cache-hit brs are properly organized."""
+
+ def MockReadCache(br):
+ br.cache_hit = (br.label.name == 'image2')
+
+ with mock.patch('benchmark_run.MockBenchmarkRun.ReadCache',
+ new=MockReadCache):
+ # We have 2 * 30 brs, half of which are put into _cached_br_list.
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_WITH_FORMAT.format(
+ kraken_iterations=30))
+ my_schedv2 = Schedv2(self.exp)
+ self.assertEquals(len(my_schedv2.get_cached_run_list()), 30)
+ # The non-cache-hit brs are put into Schedv2._label_brl_map.
+ self.assertEquals(
+ reduce(lambda a, x: a + len(x[1]),
+ my_schedv2.get_label_map().iteritems(),
+ 0), 30)
+
+ def test_nocachehit(self):
+ """Test no cache-hit."""
+
+ def MockReadCache(br):
+ br.cache_hit = False
+
+ with mock.patch('benchmark_run.MockBenchmarkRun.ReadCache',
+ new=MockReadCache):
+ # We have 2 * 30 brs, none of which are put into _cached_br_list.
+ self.exp = self._make_fake_experiment(EXPERIMENT_FILE_WITH_FORMAT.format(
+ kraken_iterations=30))
+ my_schedv2 = Schedv2(self.exp)
+ self.assertEquals(len(my_schedv2.get_cached_run_list()), 0)
+ # The non-cache-hit brs are put into Schedv2._label_brl_map.
+ self.assertEquals(
+ reduce(lambda a, x: a + len(x[1]),
+ my_schedv2.get_label_map().iteritems(),
+ 0), 60)
+
+
+if __name__ == '__main__':
+ test_flag.SetTestMode(True)
+ unittest.main()
diff --git a/crosperf/settings.py b/crosperf/settings.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d5a25fd5c096bd4ededbbe0f0bc551c6d7e0440
--- /dev/null
+++ b/crosperf/settings.py
@@ -0,0 +1,81 @@
+# Copyright 2011 Google Inc. All Rights Reserved.
+"""Module to get the settings from experiment file."""
+
+from __future__ import print_function
+
+from cros_utils import logger
+from cros_utils import misc
+from download_images import ImageDownloader
+
+
+class Settings(object):
+ """Class representing settings (a set of fields) from an experiment file."""
+
+ def __init__(self, name, settings_type):
+ self.name = name
+ self.settings_type = settings_type
+ self.fields = {}
+ self.parent = None
+
+ def SetParentSettings(self, settings):
+ """Set the parent settings which these settings can inherit from."""
+ self.parent = settings
+
+ def AddField(self, field):
+ name = field.name
+ if name in self.fields:
+ raise SyntaxError('Field %s defined previously.' % name)
+ self.fields[name] = field
+
+ def SetField(self, name, value, append=False):
+ if name not in self.fields:
+ raise SyntaxError("'%s' is not a valid field in '%s' settings" %
+ (name, self.settings_type))
+ if append:
+ self.fields[name].Append(value)
+ else:
+ self.fields[name].Set(value)
+
+ def GetField(self, name):
+ """Get the value of a field with a given name."""
+ if name not in self.fields:
+ raise SyntaxError("Field '%s' not a valid field in '%s' settings." %
+ (name, self.name))
+ field = self.fields[name]
+ if not field.assigned and field.required:
+ raise SyntaxError("Required field '%s' not defined in '%s' settings." %
+ (name, self.name))
+ return self.fields[name].Get()
+
+ def Inherit(self):
+ """Inherit any unset values from the parent settings."""
+ for name in self.fields:
+ if (not self.fields[name].assigned and self.parent and
+ name in self.parent.fields and self.parent.fields[name].assigned):
+ self.fields[name].Set(self.parent.GetField(name), parse=False)
+
+ def Override(self, settings):
+ """Override settings with settings from a different object."""
+ for name in settings.fields:
+ if name in self.fields and settings.fields[name].assigned:
+ self.fields[name].Set(settings.GetField(name), parse=False)
+
+ def Validate(self):
+ """Check that all required fields have been set."""
+ for name in self.fields:
+ if not self.fields[name].assigned and self.fields[name].required:
+ raise SyntaxError('Field %s is invalid.' % name)
+
+ def GetXbuddyPath(self, path_str, autotest_path, board, chromeos_root,
+ log_level):
+ prefix = 'remote'
+ l = logger.GetLogger()
+ if (path_str.find('trybot') < 0 and path_str.find('toolchain') < 0 and
+ path_str.find(board) < 0):
+ xbuddy_path = '%s/%s/%s' % (prefix, board, path_str)
+ else:
+ xbuddy_path = '%s/%s' % (prefix, path_str)
+ image_downloader = ImageDownloader(l, log_level)
+ image_and_autotest_path = image_downloader.Run(
+ misc.CanonicalizePath(chromeos_root), xbuddy_path, autotest_path)
+ return image_and_autotest_path
diff --git a/crosperf/settings_factory.py b/crosperf/settings_factory.py
new file mode 100644
index 0000000000000000000000000000000000000000..e42d82a921b56ac20b685d10236c0c5af8a05096
--- /dev/null
+++ b/crosperf/settings_factory.py
@@ -0,0 +1,304 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Setting files for global, benchmark and labels."""
+
+from __future__ import print_function
+
+from field import BooleanField
+from field import IntegerField
+from field import ListField
+from field import TextField
+from settings import Settings
+
+
+class BenchmarkSettings(Settings):
+ """Settings used to configure individual benchmarks."""
+
+ def __init__(self, name):
+ super(BenchmarkSettings, self).__init__(name, 'benchmark')
+ self.AddField(
+ TextField(
+ 'test_name',
+ description='The name of the test to run. '
+ 'Defaults to the name of the benchmark.'))
+ self.AddField(
+ TextField(
+ 'test_args', description='Arguments to be passed to the '
+ 'test.'))
+ self.AddField(
+ IntegerField(
+ 'iterations',
+ default=1,
+ description='Number of iterations to run the '
+ 'test.'))
+ self.AddField(
+ TextField(
+ 'suite', default='', description='The type of the benchmark.'))
+ self.AddField(
+ IntegerField(
+ 'retries',
+ default=0,
+ description='Number of times to retry a '
+ 'benchmark run.'))
+ self.AddField(
+ BooleanField(
+ 'run_local',
+ description='Run benchmark harness on the DUT. '
+ 'Currently only compatible with the suite: '
+ 'telemetry_Crosperf.',
+ required=False,
+ default=True))
+
+
+class LabelSettings(Settings):
+ """Settings for each label."""
+
+ def __init__(self, name):
+ super(LabelSettings, self).__init__(name, 'label')
+ self.AddField(
+ TextField(
+ 'chromeos_image',
+ required=False,
+ description='The path to the image to run tests '
+ 'on, for local/custom-built images. See the '
+ "'build' option for official or trybot images."))
+ self.AddField(
+ TextField(
+ 'autotest_path',
+ required=False,
+ description='Autotest directory path relative to chroot which '
+ 'has autotest files for the image to run tests requiring autotest files'
+ ))
+ self.AddField(
+ TextField(
+ 'chromeos_root',
+ description='The path to a chromeos checkout which '
+ 'contains a src/scripts directory. Defaults to '
+ 'the chromeos checkout which contains the '
+ 'chromeos_image.'))
+ self.AddField(
+ ListField(
+ 'remote',
+ description='A comma-separated list of IPs of chromeos'
+ 'devices to run experiments on.'))
+ self.AddField(
+ TextField(
+ 'image_args',
+ required=False,
+ default='',
+ description='Extra arguments to pass to '
+ 'image_chromeos.py.'))
+ self.AddField(
+ TextField(
+ 'cache_dir',
+ default='',
+ description='The cache dir for this image.'))
+ self.AddField(
+ TextField(
+ 'compiler',
+ default='gcc',
+ description='The compiler used to build the '
+ 'ChromeOS image (gcc or llvm).'))
+ self.AddField(
+ TextField(
+ 'chrome_src',
+ description='The path to the source of chrome. '
+ 'This is used to run telemetry benchmarks. '
+ 'The default one is the src inside chroot.',
+ required=False,
+ default=''))
+ self.AddField(
+ TextField(
+ 'build',
+ description='The xbuddy specification for an '
+ 'official or trybot image to use for tests. '
+ "'/remote' is assumed, and the board is given "
+ "elsewhere, so omit the '/remote/
/' xbuddy "
+ 'prefix.',
+ required=False,
+ default=''))
+
+
+class GlobalSettings(Settings):
+ """Settings that apply per-experiment."""
+
+ def __init__(self, name):
+ super(GlobalSettings, self).__init__(name, 'global')
+ self.AddField(
+ TextField(
+ 'name',
+ description='The name of the experiment. Just an '
+ 'identifier.'))
+ self.AddField(
+ TextField(
+ 'board',
+ description='The target board for running '
+ 'experiments on, e.g. x86-alex.'))
+ self.AddField(
+ ListField(
+ 'remote',
+ description='A comma-separated list of IPs of '
+ 'chromeos devices to run experiments on.'))
+ self.AddField(
+ BooleanField(
+ 'rerun_if_failed',
+ description='Whether to re-run failed test runs '
+ 'or not.',
+ default=False))
+ self.AddField(
+ BooleanField(
+ 'rm_chroot_tmp',
+ default=False,
+ description='Whether to remove the test_that '
+ 'result in the chroot.'))
+ self.AddField(
+ ListField(
+ 'email',
+ description='Space-separated list of email '
+ 'addresses to send email to.'))
+ self.AddField(
+ BooleanField(
+ 'rerun',
+ description='Whether to ignore the cache and '
+ 'for tests to be re-run.',
+ default=False))
+ self.AddField(
+ BooleanField(
+ 'same_specs',
+ default=True,
+ description='Ensure cached runs are run on the '
+ 'same kind of devices which are specified as a '
+ 'remote.'))
+ self.AddField(
+ BooleanField(
+ 'same_machine',
+ default=False,
+ description='Ensure cached runs are run on the '
+ 'same remote.'))
+ self.AddField(
+ BooleanField(
+ 'use_file_locks',
+ default=False,
+ description='Whether to use the file locks '
+ 'mechanism (deprecated) instead of the AFE '
+ 'server lock mechanism.'))
+ self.AddField(
+ IntegerField(
+ 'iterations',
+ default=1,
+ description='Number of iterations to run all '
+ 'tests.'))
+ self.AddField(
+ TextField(
+ 'chromeos_root',
+ description='The path to a chromeos checkout which '
+ 'contains a src/scripts directory. Defaults to '
+ 'the chromeos checkout which contains the '
+ 'chromeos_image.'))
+ self.AddField(
+ TextField(
+ 'logging_level',
+ default='average',
+ description='The level of logging desired. '
+ "Options are 'quiet', 'average', and 'verbose'."))
+ self.AddField(
+ IntegerField(
+ 'acquire_timeout',
+ default=0,
+ description='Number of seconds to wait for '
+ 'machine before exit if all the machines in '
+ 'the experiment file are busy. Default is 0.'))
+ self.AddField(
+ TextField(
+ 'perf_args',
+ default='',
+ description='The optional profile command. It '
+ 'enables perf commands to record perforamance '
+ 'related counters. It must start with perf '
+ 'command record or stat followed by arguments.'))
+ self.AddField(
+ TextField(
+ 'cache_dir',
+ default='',
+ description='The abs path of cache dir. '
+ 'Default is /home/$(whoami)/cros_scratch.'))
+ self.AddField(
+ BooleanField(
+ 'cache_only',
+ default=False,
+ description='Whether to use only cached '
+ 'results (do not rerun failed tests).'))
+ self.AddField(
+ BooleanField(
+ 'no_email',
+ default=False,
+ description='Whether to disable the email to '
+ 'user after crosperf finishes.'))
+ self.AddField(
+ BooleanField(
+ 'json_report',
+ default=False,
+ description='Whether to generate a json version '
+ 'of the report, for archiving.'))
+ self.AddField(
+ BooleanField(
+ 'show_all_results',
+ default=False,
+ description='When running Telemetry tests, '
+ 'whether to all the results, instead of just '
+ 'the default (summary) results.'))
+ self.AddField(
+ TextField(
+ 'share_cache',
+ default='',
+ description='Path to alternate cache whose data '
+ 'you want to use. It accepts multiple directories '
+ 'separated by a ",".'))
+ self.AddField(
+ TextField(
+ 'results_dir', default='', description='The results dir.'))
+ self.AddField(
+ TextField(
+ 'locks_dir',
+ default='',
+ description='An alternate directory to use for '
+ 'storing/checking machine locks. Using this field '
+ 'automatically sets use_file_locks to True.\n'
+ 'WARNING: If you use your own locks directory, '
+ 'there is no guarantee that someone else might not '
+ 'hold a lock on the same machine in a different '
+ 'locks directory.'))
+ self.AddField(
+ TextField(
+ 'chrome_src',
+ description='The path to the source of chrome. '
+ 'This is used to run telemetry benchmarks. '
+ 'The default one is the src inside chroot.',
+ required=False,
+ default=''))
+ self.AddField(
+ IntegerField(
+ 'retries',
+ default=0,
+ description='Number of times to retry a '
+ 'benchmark run.'))
+
+
+class SettingsFactory(object):
+ """Factory class for building different types of Settings objects.
+
+ This factory is currently hardcoded to produce settings for ChromeOS
+ experiment files. The idea is that in the future, other types
+ of settings could be produced.
+ """
+
+ def GetSettings(self, name, settings_type):
+ if settings_type == 'label' or not settings_type:
+ return LabelSettings(name)
+ if settings_type == 'global':
+ return GlobalSettings(name)
+ if settings_type == 'benchmark':
+ return BenchmarkSettings(name)
+
+ raise TypeError("Invalid settings type: '%s'." % settings_type)
diff --git a/crosperf/settings_factory_unittest.py b/crosperf/settings_factory_unittest.py
new file mode 100755
index 0000000000000000000000000000000000000000..127bfd3c1d827090fb55be3dc921eb5cf714c790
--- /dev/null
+++ b/crosperf/settings_factory_unittest.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python2
+#
+# Copyright 2014 Google Inc. All Rights Reserved.
+"""Unittest for crosperf."""
+
+from __future__ import print_function
+
+import unittest
+
+import settings_factory
+
+
+class BenchmarkSettingsTest(unittest.TestCase):
+ """Class to test benchmark settings."""
+
+ def test_init(self):
+ res = settings_factory.BenchmarkSettings('b_settings')
+ self.assertIsNotNone(res)
+ self.assertEqual(len(res.fields), 6)
+ self.assertEqual(res.GetField('test_name'), '')
+ self.assertEqual(res.GetField('test_args'), '')
+ self.assertEqual(res.GetField('iterations'), 1)
+ self.assertEqual(res.GetField('suite'), '')
+
+
+class LabelSettingsTest(unittest.TestCase):
+ """Class to test label settings."""
+
+ def test_init(self):
+ res = settings_factory.LabelSettings('l_settings')
+ self.assertIsNotNone(res)
+ self.assertEqual(len(res.fields), 9)
+ self.assertEqual(res.GetField('chromeos_image'), '')
+ self.assertEqual(res.GetField('autotest_path'), '')
+ self.assertEqual(res.GetField('chromeos_root'), '')
+ self.assertEqual(res.GetField('remote'), None)
+ self.assertEqual(res.GetField('image_args'), '')
+ self.assertEqual(res.GetField('cache_dir'), '')
+ self.assertEqual(res.GetField('chrome_src'), '')
+ self.assertEqual(res.GetField('build'), '')
+
+
+class GlobalSettingsTest(unittest.TestCase):
+ """Class to test global settings."""
+
+ def test_init(self):
+ res = settings_factory.GlobalSettings('g_settings')
+ self.assertIsNotNone(res)
+ self.assertEqual(len(res.fields), 25)
+ self.assertEqual(res.GetField('name'), '')
+ self.assertEqual(res.GetField('board'), '')
+ self.assertEqual(res.GetField('remote'), None)
+ self.assertEqual(res.GetField('rerun_if_failed'), False)
+ self.assertEqual(res.GetField('rm_chroot_tmp'), False)
+ self.assertEqual(res.GetField('email'), None)
+ self.assertEqual(res.GetField('rerun'), False)
+ self.assertEqual(res.GetField('same_specs'), True)
+ self.assertEqual(res.GetField('same_machine'), False)
+ self.assertEqual(res.GetField('iterations'), 1)
+ self.assertEqual(res.GetField('chromeos_root'), '')
+ self.assertEqual(res.GetField('logging_level'), 'average')
+ self.assertEqual(res.GetField('acquire_timeout'), 0)
+ self.assertEqual(res.GetField('perf_args'), '')
+ self.assertEqual(res.GetField('cache_dir'), '')
+ self.assertEqual(res.GetField('cache_only'), False)
+ self.assertEqual(res.GetField('no_email'), False)
+ self.assertEqual(res.GetField('show_all_results'), False)
+ self.assertEqual(res.GetField('share_cache'), '')
+ self.assertEqual(res.GetField('results_dir'), '')
+ self.assertEqual(res.GetField('chrome_src'), '')
+
+
+class SettingsFactoryTest(unittest.TestCase):
+ """Class to test SettingsFactory."""
+
+ def test_get_settings(self):
+ self.assertRaises(Exception, settings_factory.SettingsFactory.GetSettings,
+ 'global', 'bad_type')
+
+ l_settings = settings_factory.SettingsFactory().GetSettings('label',
+ 'label')
+ self.assertIsInstance(l_settings, settings_factory.LabelSettings)
+ self.assertEqual(len(l_settings.fields), 9)
+
+ b_settings = settings_factory.SettingsFactory().GetSettings('benchmark',
+ 'benchmark')
+ self.assertIsInstance(b_settings, settings_factory.BenchmarkSettings)
+ self.assertEqual(len(b_settings.fields), 6)
+
+ g_settings = settings_factory.SettingsFactory().GetSettings('global',
+ 'global')
+ self.assertIsInstance(g_settings, settings_factory.GlobalSettings)
+ self.assertEqual(len(g_settings.fields), 25)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/crosperf/settings_unittest.py b/crosperf/settings_unittest.py
new file mode 100755
index 0000000000000000000000000000000000000000..f1062f0d977d1a0539cdf1f0f5193aa44d232b41
--- /dev/null
+++ b/crosperf/settings_unittest.py
@@ -0,0 +1,229 @@
+#!/usr/bin/env python2
+#
+# Copyright 2014 Google Inc. All Rights Reserved.
+"""unittest for settings."""
+
+from __future__ import print_function
+
+import mock
+import unittest
+
+import settings
+import settings_factory
+
+from field import IntegerField
+from field import ListField
+import download_images
+
+from cros_utils import logger
+
+
+class TestSettings(unittest.TestCase):
+ """setting test class."""
+
+ def setUp(self):
+ self.settings = settings.Settings('global_name', 'global')
+
+ def test_init(self):
+ self.assertEqual(self.settings.name, 'global_name')
+ self.assertEqual(self.settings.settings_type, 'global')
+ self.assertIsNone(self.settings.parent)
+
+ def test_set_parent_settings(self):
+ self.assertIsNone(self.settings.parent)
+ settings_parent = {'fake_parent_entry': 0}
+ self.settings.SetParentSettings(settings_parent)
+ self.assertIsNotNone(self.settings.parent)
+ self.assertEqual(type(self.settings.parent), dict)
+ self.assertEqual(self.settings.parent, settings_parent)
+
+ def test_add_field(self):
+ self.assertEqual(self.settings.fields, {})
+ self.settings.AddField(
+ IntegerField(
+ 'iterations',
+ default=1,
+ required=False,
+ description='Number of iterations to '
+ 'run the test.'))
+ self.assertEqual(len(self.settings.fields), 1)
+ # Adding the same field twice raises an exception.
+ self.assertRaises(
+ Exception,
+ self.settings.AddField, (IntegerField(
+ 'iterations',
+ default=1,
+ required=False,
+ description='Number of iterations to run '
+ 'the test.')))
+ res = self.settings.fields['iterations']
+ self.assertIsInstance(res, IntegerField)
+ self.assertEqual(res.Get(), 1)
+
+ def test_set_field(self):
+ self.assertEqual(self.settings.fields, {})
+ self.settings.AddField(
+ IntegerField(
+ 'iterations',
+ default=1,
+ required=False,
+ description='Number of iterations to run the '
+ 'test.'))
+ res = self.settings.fields['iterations']
+ self.assertEqual(res.Get(), 1)
+
+ self.settings.SetField('iterations', 10)
+ res = self.settings.fields['iterations']
+ self.assertEqual(res.Get(), 10)
+
+ # Setting a field that's not there raises an exception.
+ self.assertRaises(Exception, self.settings.SetField, 'remote',
+ 'lumpy1.cros')
+
+ self.settings.AddField(
+ ListField(
+ 'remote',
+ default=[],
+ description="A comma-separated list of ip's of "
+ 'chromeos devices to run '
+ 'experiments on.'))
+ self.assertEqual(type(self.settings.fields), dict)
+ self.assertEqual(len(self.settings.fields), 2)
+ res = self.settings.fields['remote']
+ self.assertEqual(res.Get(), [])
+ self.settings.SetField('remote', 'lumpy1.cros', append=True)
+ self.settings.SetField('remote', 'lumpy2.cros', append=True)
+ res = self.settings.fields['remote']
+ self.assertEqual(res.Get(), ['lumpy1.cros', 'lumpy2.cros'])
+
+ def test_get_field(self):
+ # Getting a field that's not there raises an exception.
+ self.assertRaises(Exception, self.settings.GetField, 'iterations')
+
+ # Getting a required field that hasn't been assigned raises an exception.
+ self.settings.AddField(
+ IntegerField(
+ 'iterations',
+ required=True,
+ description='Number of iterations to '
+ 'run the test.'))
+ self.assertIsNotNone(self.settings.fields['iterations'])
+ self.assertRaises(Exception, self.settings.GetField, 'iterations')
+
+ # Set the value, then get it.
+ self.settings.SetField('iterations', 5)
+ res = self.settings.GetField('iterations')
+ self.assertEqual(res, 5)
+
+ def test_inherit(self):
+ parent_settings = settings_factory.SettingsFactory().GetSettings('global',
+ 'global')
+ label_settings = settings_factory.SettingsFactory().GetSettings('label',
+ 'label')
+ self.assertEqual(parent_settings.GetField('chromeos_root'), '')
+ self.assertEqual(label_settings.GetField('chromeos_root'), '')
+ self.assertIsNone(label_settings.parent)
+
+ parent_settings.SetField('chromeos_root', '/tmp/chromeos')
+ label_settings.SetParentSettings(parent_settings)
+ self.assertEqual(parent_settings.GetField('chromeos_root'), '/tmp/chromeos')
+ self.assertEqual(label_settings.GetField('chromeos_root'), '')
+ label_settings.Inherit()
+ self.assertEqual(label_settings.GetField('chromeos_root'), '/tmp/chromeos')
+
+ def test_override(self):
+ self.settings.AddField(
+ ListField(
+ 'email',
+ default=[],
+ description='Space-seperated'
+ 'list of email addresses to send '
+ 'email to.'))
+
+ global_settings = settings_factory.SettingsFactory().GetSettings('global',
+ 'global')
+
+ global_settings.SetField('email', 'john.doe@google.com', append=True)
+ global_settings.SetField('email', 'jane.smith@google.com', append=True)
+
+ res = self.settings.GetField('email')
+ self.assertEqual(res, [])
+
+ self.settings.Override(global_settings)
+ res = self.settings.GetField('email')
+ self.assertEqual(res, ['john.doe@google.com', 'jane.smith@google.com'])
+
+ def test_validate(self):
+
+ self.settings.AddField(
+ IntegerField(
+ 'iterations',
+ required=True,
+ description='Number of iterations '
+ 'to run the test.'))
+ self.settings.AddField(
+ ListField(
+ 'remote',
+ default=[],
+ required=True,
+ description='A comma-separated list '
+ "of ip's of chromeos "
+ 'devices to run experiments on.'))
+ self.settings.AddField(
+ ListField(
+ 'email',
+ default=[],
+ description='Space-seperated'
+ 'list of email addresses to '
+ 'send email to.'))
+
+ # 'required' fields have not been assigned; should raise an exception.
+ self.assertRaises(Exception, self.settings.Validate)
+ self.settings.SetField('iterations', 2)
+ self.settings.SetField('remote', 'x86-alex.cros', append=True)
+ # Should run without exception now.
+ self.settings.Validate()
+
+ @mock.patch.object(logger, 'GetLogger')
+ @mock.patch.object(download_images.ImageDownloader, 'Run')
+ @mock.patch.object(download_images, 'ImageDownloader')
+ def test_get_xbuddy_path(self, mock_downloader, mock_run, mock_logger):
+
+ mock_run.return_value = 'fake_xbuddy_translation'
+ mock_downloader.Run = mock_run
+ board = 'lumpy'
+ chromeos_root = '/tmp/chromeos'
+ log_level = 'average'
+
+ trybot_str = 'trybot-lumpy-paladin/R34-5417.0.0-b1506'
+ official_str = 'lumpy-release/R34-5417.0.0'
+ xbuddy_str = 'latest-dev'
+ autotest_path = ''
+
+ self.settings.GetXbuddyPath(trybot_str, autotest_path, board, chromeos_root,
+ log_level)
+ self.assertEqual(mock_run.call_count, 1)
+ self.assertEqual(mock_run.call_args_list[0][0],
+ ('/tmp/chromeos',
+ 'remote/trybot-lumpy-paladin/R34-5417.0.0-b1506', ''))
+
+ mock_run.reset_mock()
+ self.settings.GetXbuddyPath(official_str, autotest_path, board,
+ chromeos_root, log_level)
+ self.assertEqual(mock_run.call_count, 1)
+ self.assertEqual(mock_run.call_args_list[0][0],
+ ('/tmp/chromeos', 'remote/lumpy-release/R34-5417.0.0', ''))
+
+ mock_run.reset_mock()
+ self.settings.GetXbuddyPath(xbuddy_str, autotest_path, board, chromeos_root,
+ log_level)
+ self.assertEqual(mock_run.call_count, 1)
+ self.assertEqual(mock_run.call_args_list[0][0],
+ ('/tmp/chromeos', 'remote/lumpy/latest-dev', ''))
+
+ if mock_logger:
+ return
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/crosperf/suite_runner.py b/crosperf/suite_runner.py
new file mode 100644
index 0000000000000000000000000000000000000000..678113a74c3e3590d2aca1a827f142bea5f5379b
--- /dev/null
+++ b/crosperf/suite_runner.py
@@ -0,0 +1,297 @@
+# Copyright (c) 2013~2015 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""SuiteRunner defines the interface from crosperf to test script."""
+
+from __future__ import print_function
+
+import os
+import time
+import shlex
+
+from cros_utils import command_executer
+import test_flag
+
+TEST_THAT_PATH = '/usr/bin/test_that'
+AUTOTEST_DIR = '~/trunk/src/third_party/autotest/files'
+CHROME_MOUNT_DIR = '/tmp/chrome_root'
+
+
+def GetProfilerArgs(profiler_args):
+ # Remove "--" from in front of profiler args.
+ args_list = shlex.split(profiler_args)
+ new_list = []
+ for arg in args_list:
+ if arg[0:2] == '--':
+ arg = arg[2:]
+ new_list.append(arg)
+ args_list = new_list
+
+ # Remove "perf_options=" from middle of profiler args.
+ new_list = []
+ for arg in args_list:
+ idx = arg.find('perf_options=')
+ if idx != -1:
+ prefix = arg[0:idx]
+ suffix = arg[idx + len('perf_options=') + 1:-1]
+ new_arg = prefix + "'" + suffix + "'"
+ new_list.append(new_arg)
+ else:
+ new_list.append(arg)
+ args_list = new_list
+
+ return ' '.join(args_list)
+
+
+class SuiteRunner(object):
+ """This defines the interface from crosperf to test script."""
+
+ def __init__(self,
+ logger_to_use=None,
+ log_level='verbose',
+ cmd_exec=None,
+ cmd_term=None):
+ self.logger = logger_to_use
+ self.log_level = log_level
+ self._ce = cmd_exec or command_executer.GetCommandExecuter(
+ self.logger, log_level=self.log_level)
+ self._ct = cmd_term or command_executer.CommandTerminator()
+
+ def Run(self, machine, label, benchmark, test_args, profiler_args):
+ for i in range(0, benchmark.retries + 1):
+ self.PinGovernorExecutionFrequencies(machine, label.chromeos_root)
+ if benchmark.suite == 'telemetry':
+ self.DecreaseWaitTime(machine, label.chromeos_root)
+ ret_tup = self.Telemetry_Run(machine, label, benchmark, profiler_args)
+ elif benchmark.suite == 'telemetry_Crosperf':
+ self.DecreaseWaitTime(machine, label.chromeos_root)
+ ret_tup = self.Telemetry_Crosperf_Run(machine, label, benchmark,
+ test_args, profiler_args)
+ else:
+ ret_tup = self.Test_That_Run(machine, label, benchmark, test_args,
+ profiler_args)
+ if ret_tup[0] != 0:
+ self.logger.LogOutput('benchmark %s failed. Retries left: %s' %
+ (benchmark.name, benchmark.retries - i))
+ elif i > 0:
+ self.logger.LogOutput('benchmark %s succeded after %s retries' %
+ (benchmark.name, i))
+ break
+ else:
+ self.logger.LogOutput('benchmark %s succeded on first try' %
+ benchmark.name)
+ break
+ return ret_tup
+
+ def PinGovernorExecutionFrequencies(self, machine_name, chromeos_root):
+ """Set min and max frequencies to max static frequency."""
+ # pyformat: disable
+ set_cpu_freq = (
+ 'set -e && '
+ 'for f in /sys/devices/system/cpu/cpu*/cpufreq; do '
+ 'cd $f; '
+ 'val=0; '
+ 'if [[ -e scaling_available_frequencies ]]; then '
+ # pylint: disable=line-too-long
+ ' val=`cat scaling_available_frequencies | tr " " "\\n" | sort -n -b -r`; '
+ 'else '
+ ' val=`cat scaling_max_freq | tr " " "\\n" | sort -n -b -r`; fi ; '
+ 'set -- $val; '
+ 'highest=$1; '
+ 'if [[ $# -gt 1 ]]; then '
+ ' case $highest in *1000) highest=$2;; esac; '
+ 'fi ;'
+ 'echo $highest > scaling_max_freq; '
+ 'echo $highest > scaling_min_freq; '
+ 'echo performance > scaling_governor; '
+ 'done'
+ )
+ # pyformat: enable
+ if self.log_level == 'average':
+ self.logger.LogOutput('Pinning governor execution frequencies for %s' %
+ machine_name)
+ ret = self._ce.CrosRunCommand(
+ set_cpu_freq, machine=machine_name, chromeos_root=chromeos_root)
+ self.logger.LogFatalIf(ret, 'Could not pin frequencies on machine: %s' %
+ machine_name)
+
+ def DecreaseWaitTime(self, machine_name, chromeos_root):
+ """Change the ten seconds wait time for pagecycler to two seconds."""
+ FILE = '/usr/local/telemetry/src/tools/perf/page_sets/page_cycler_story.py'
+ ret = self._ce.CrosRunCommand(
+ 'ls ' + FILE, machine=machine_name, chromeos_root=chromeos_root)
+ self.logger.LogFatalIf(ret, 'Could not find {} on machine: {}'.format(
+ FILE, machine_name))
+
+ if not ret:
+ sed_command = 'sed -i "s/_TTI_WAIT_TIME = 10/_TTI_WAIT_TIME = 2/g" '
+ ret = self._ce.CrosRunCommand(
+ sed_command + FILE, machine=machine_name, chromeos_root=chromeos_root)
+ self.logger.LogFatalIf(ret, 'Could not modify {} on machine: {}'.format(
+ FILE, machine_name))
+
+ def RebootMachine(self, machine_name, chromeos_root):
+ command = 'reboot && exit'
+ self._ce.CrosRunCommand(
+ command, machine=machine_name, chromeos_root=chromeos_root)
+ time.sleep(60)
+ # Whenever we reboot the machine, we need to restore the governor settings.
+ self.PinGovernorExecutionFrequencies(machine_name, chromeos_root)
+
+ def Test_That_Run(self, machine, label, benchmark, test_args, profiler_args):
+ """Run the test_that test.."""
+ options = ''
+ if label.board:
+ options += ' --board=%s' % label.board
+ if test_args:
+ options += ' %s' % test_args
+ if profiler_args:
+ self.logger.LogFatal('test_that does not support profiler.')
+ command = 'rm -rf /usr/local/autotest/results/*'
+ self._ce.CrosRunCommand(
+ command, machine=machine, chromeos_root=label.chromeos_root)
+
+ # We do this because some tests leave the machine in weird states.
+ # Rebooting between iterations has proven to help with this.
+ self.RebootMachine(machine, label.chromeos_root)
+
+ autotest_dir = AUTOTEST_DIR
+ if label.autotest_path != '':
+ autotest_dir = label.autotest_path
+
+ autotest_dir_arg = '--autotest_dir %s' % autotest_dir
+ # For non-telemetry tests, specify an autotest directory only if the
+ # specified directory is different from default (crosbug.com/679001).
+ if autotest_dir == AUTOTEST_DIR:
+ autotest_dir_arg = ''
+
+ command = (('%s %s --fast '
+ '%s %s %s') % (TEST_THAT_PATH, autotest_dir_arg, options,
+ machine, benchmark.test_name))
+ if self.log_level != 'verbose':
+ self.logger.LogOutput('Running test.')
+ self.logger.LogOutput('CMD: %s' % command)
+ # Use --no-ns-pid so that cros_sdk does not create a different
+ # process namespace and we can kill process created easily by
+ # their process group.
+ return self._ce.ChrootRunCommandWOutput(
+ label.chromeos_root,
+ command,
+ command_terminator=self._ct,
+ cros_sdk_options='--no-ns-pid')
+
+ def RemoveTelemetryTempFile(self, machine, chromeos_root):
+ filename = 'telemetry@%s' % machine
+ fullname = os.path.join(chromeos_root, 'chroot', 'tmp', filename)
+ if os.path.exists(fullname):
+ os.remove(fullname)
+
+ def Telemetry_Crosperf_Run(self, machine, label, benchmark, test_args,
+ profiler_args):
+ if not os.path.isdir(label.chrome_src):
+ self.logger.LogFatal('Cannot find chrome src dir to'
+ ' run telemetry: %s' % label.chrome_src)
+
+ # Check for and remove temporary file that may have been left by
+ # previous telemetry runs (and which might prevent this run from
+ # working).
+ self.RemoveTelemetryTempFile(machine, label.chromeos_root)
+
+ # For telemetry runs, we can use the autotest copy from the source
+ # location. No need to have one under /build/.
+ autotest_dir_arg = '--autotest_dir %s' % AUTOTEST_DIR
+ if label.autotest_path != '':
+ autotest_dir_arg = '--autotest_dir %s' % label.autotest_path
+
+ profiler_args = GetProfilerArgs(profiler_args)
+ fast_arg = ''
+ if not profiler_args:
+ # --fast works unless we are doing profiling (autotest limitation).
+ # --fast avoids unnecessary copies of syslogs.
+ fast_arg = '--fast'
+ args_string = ''
+ if test_args:
+ # Strip double quotes off args (so we can wrap them in single
+ # quotes, to pass through to Telemetry).
+ if test_args[0] == '"' and test_args[-1] == '"':
+ test_args = test_args[1:-1]
+ args_string = "test_args='%s'" % test_args
+
+ cmd = ('{} {} {} --board={} --args="{} run_local={} test={} '
+ '{}" {} telemetry_Crosperf'.format(TEST_THAT_PATH, autotest_dir_arg,
+ fast_arg, label.board,
+ args_string, benchmark.run_local,
+ benchmark.test_name,
+ profiler_args, machine))
+
+ # Use --no-ns-pid so that cros_sdk does not create a different
+ # process namespace and we can kill process created easily by their
+ # process group.
+ chrome_root_options = ('--no-ns-pid '
+ '--chrome_root={} --chrome_root_mount={} '
+ "FEATURES=\"-usersandbox\" "
+ 'CHROME_ROOT={}'.format(label.chrome_src,
+ CHROME_MOUNT_DIR,
+ CHROME_MOUNT_DIR))
+ if self.log_level != 'verbose':
+ self.logger.LogOutput('Running test.')
+ self.logger.LogOutput('CMD: %s' % cmd)
+ return self._ce.ChrootRunCommandWOutput(
+ label.chromeos_root,
+ cmd,
+ command_terminator=self._ct,
+ cros_sdk_options=chrome_root_options)
+
+ def Telemetry_Run(self, machine, label, benchmark, profiler_args):
+ telemetry_run_path = ''
+ if not os.path.isdir(label.chrome_src):
+ self.logger.LogFatal('Cannot find chrome src dir to' ' run telemetry.')
+ else:
+ telemetry_run_path = os.path.join(label.chrome_src, 'src/tools/perf')
+ if not os.path.exists(telemetry_run_path):
+ self.logger.LogFatal('Cannot find %s directory.' % telemetry_run_path)
+
+ if profiler_args:
+ self.logger.LogFatal('Telemetry does not support the perf profiler.')
+
+ # Check for and remove temporary file that may have been left by
+ # previous telemetry runs (and which might prevent this run from
+ # working).
+ if not test_flag.GetTestMode():
+ self.RemoveTelemetryTempFile(machine, label.chromeos_root)
+
+ rsa_key = os.path.join(
+ label.chromeos_root,
+ 'src/scripts/mod_for_test_scripts/ssh_keys/testing_rsa')
+
+ cmd = ('cd {0} && '
+ './run_measurement '
+ '--browser=cros-chrome '
+ '--output-format=csv '
+ '--remote={1} '
+ '--identity {2} '
+ '{3} {4}'.format(telemetry_run_path, machine, rsa_key,
+ benchmark.test_name, benchmark.test_args))
+ if self.log_level != 'verbose':
+ self.logger.LogOutput('Running test.')
+ self.logger.LogOutput('CMD: %s' % cmd)
+ return self._ce.RunCommandWOutput(cmd, print_to_console=False)
+
+ def CommandTerminator(self):
+ return self._ct
+
+ def Terminate(self):
+ self._ct.Terminate()
+
+
+class MockSuiteRunner(object):
+ """Mock suite runner for test."""
+
+ def __init__(self):
+ self._true = True
+
+ def Run(self, *_args):
+ if self._true:
+ return [0, '', '']
+ else:
+ return [0, '', '']
diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py
new file mode 100755
index 0000000000000000000000000000000000000000..fd8de661595ab40fa01f71e02029cb4f5db75af2
--- /dev/null
+++ b/crosperf/suite_runner_unittest.py
@@ -0,0 +1,351 @@
+#!/usr/bin/env python2
+#
+# Copyright 2014 Google Inc. All Rights Reserved.
+"""Unittest for suite_runner."""
+
+from __future__ import print_function
+
+import os.path
+import time
+
+import mock
+import unittest
+
+import suite_runner
+import label
+import test_flag
+
+from benchmark import Benchmark
+
+from cros_utils import command_executer
+from cros_utils import logger
+
+
+class SuiteRunnerTest(unittest.TestCase):
+ """Class of SuiteRunner test."""
+ real_logger = logger.GetLogger()
+
+ mock_cmd_exec = mock.Mock(spec=command_executer.CommandExecuter)
+ mock_cmd_term = mock.Mock(spec=command_executer.CommandTerminator)
+ mock_logger = mock.Mock(spec=logger.Logger)
+ mock_label = label.MockLabel('lumpy', 'lumpy_chromeos_image', '',
+ '/tmp/chromeos', 'lumpy',
+ ['lumpy1.cros', 'lumpy.cros2'], '', '', False,
+ 'average', 'gcc', '')
+ telemetry_crosperf_bench = Benchmark(
+ 'b1_test', # name
+ 'octane', # test_name
+ '', # test_args
+ 3, # iterations
+ False, # rm_chroot_tmp
+ 'record -e cycles', # perf_args
+ 'telemetry_Crosperf', # suite
+ True) # show_all_results
+
+ test_that_bench = Benchmark(
+ 'b2_test', # name
+ 'octane', # test_name
+ '', # test_args
+ 3, # iterations
+ False, # rm_chroot_tmp
+ 'record -e cycles') # perf_args
+
+ telemetry_bench = Benchmark(
+ 'b3_test', # name
+ 'octane', # test_name
+ '', # test_args
+ 3, # iterations
+ False, # rm_chroot_tmp
+ 'record -e cycles', # perf_args
+ 'telemetry', # suite
+ False) # show_all_results
+
+ def __init__(self, *args, **kwargs):
+ super(SuiteRunnerTest, self).__init__(*args, **kwargs)
+ self.call_test_that_run = False
+ self.pin_governor_args = []
+ self.test_that_args = []
+ self.telemetry_run_args = []
+ self.telemetry_crosperf_args = []
+ self.call_telemetry_crosperf_run = False
+ self.call_pin_governor = False
+ self.call_telemetry_run = False
+
+ def setUp(self):
+ self.runner = suite_runner.SuiteRunner(self.mock_logger, 'verbose',
+ self.mock_cmd_exec,
+ self.mock_cmd_term)
+
+ def test_get_profiler_args(self):
+ input_str = ('--profiler=custom_perf --profiler_args=\'perf_options'
+ '="record -a -e cycles,instructions"\'')
+ output_str = ("profiler=custom_perf profiler_args='record -a -e "
+ "cycles,instructions'")
+ res = suite_runner.GetProfilerArgs(input_str)
+ self.assertEqual(res, output_str)
+
+ def test_run(self):
+
+ def reset():
+ self.call_pin_governor = False
+ self.call_test_that_run = False
+ self.call_telemetry_run = False
+ self.call_telemetry_crosperf_run = False
+ self.pin_governor_args = []
+ self.test_that_args = []
+ self.telemetry_run_args = []
+ self.telemetry_crosperf_args = []
+
+ def FakePinGovernor(machine, chroot):
+ self.call_pin_governor = True
+ self.pin_governor_args = [machine, chroot]
+
+ def FakeTelemetryRun(machine, test_label, benchmark, profiler_args):
+ self.telemetry_run_args = [machine, test_label, benchmark, profiler_args]
+ self.call_telemetry_run = True
+ return 'Ran FakeTelemetryRun'
+
+ def FakeTelemetryCrosperfRun(machine, test_label, benchmark, test_args,
+ profiler_args):
+ self.telemetry_crosperf_args = [
+ machine, test_label, benchmark, test_args, profiler_args
+ ]
+ self.call_telemetry_crosperf_run = True
+ return 'Ran FakeTelemetryCrosperfRun'
+
+ def FakeTestThatRun(machine, test_label, benchmark, test_args,
+ profiler_args):
+ self.test_that_args = [
+ machine, test_label, benchmark, test_args, profiler_args
+ ]
+ self.call_test_that_run = True
+ return 'Ran FakeTestThatRun'
+
+ self.runner.PinGovernorExecutionFrequencies = FakePinGovernor
+ self.runner.Telemetry_Run = FakeTelemetryRun
+ self.runner.Telemetry_Crosperf_Run = FakeTelemetryCrosperfRun
+ self.runner.Test_That_Run = FakeTestThatRun
+
+ machine = 'fake_machine'
+ test_args = ''
+ profiler_args = ''
+ reset()
+ self.runner.Run(machine, self.mock_label, self.telemetry_bench, test_args,
+ profiler_args)
+ self.assertTrue(self.call_pin_governor)
+ self.assertTrue(self.call_telemetry_run)
+ self.assertFalse(self.call_test_that_run)
+ self.assertFalse(self.call_telemetry_crosperf_run)
+ self.assertEqual(
+ self.telemetry_run_args,
+ ['fake_machine', self.mock_label, self.telemetry_bench, ''])
+
+ reset()
+ self.runner.Run(machine, self.mock_label, self.test_that_bench, test_args,
+ profiler_args)
+ self.assertTrue(self.call_pin_governor)
+ self.assertFalse(self.call_telemetry_run)
+ self.assertTrue(self.call_test_that_run)
+ self.assertFalse(self.call_telemetry_crosperf_run)
+ self.assertEqual(
+ self.test_that_args,
+ ['fake_machine', self.mock_label, self.test_that_bench, '', ''])
+
+ reset()
+ self.runner.Run(machine, self.mock_label, self.telemetry_crosperf_bench,
+ test_args, profiler_args)
+ self.assertTrue(self.call_pin_governor)
+ self.assertFalse(self.call_telemetry_run)
+ self.assertFalse(self.call_test_that_run)
+ self.assertTrue(self.call_telemetry_crosperf_run)
+ self.assertEqual(self.telemetry_crosperf_args, [
+ 'fake_machine', self.mock_label, self.telemetry_crosperf_bench, '', ''
+ ])
+
+ @mock.patch.object(command_executer.CommandExecuter, 'CrosRunCommand')
+ def test_pin_governor_execution_frequencies(self, mock_cros_runcmd):
+ self.mock_cmd_exec.CrosRunCommand = mock_cros_runcmd
+ self.runner.PinGovernorExecutionFrequencies('lumpy1.cros', '/tmp/chromeos')
+ self.assertEqual(mock_cros_runcmd.call_count, 1)
+ cmd = mock_cros_runcmd.call_args_list[0][0]
+ # pyformat: disable
+ set_cpu_cmd = (
+ 'set -e && '
+ 'for f in /sys/devices/system/cpu/cpu*/cpufreq; do '
+ 'cd $f; '
+ 'val=0; '
+ 'if [[ -e scaling_available_frequencies ]]; then '
+ # pylint: disable=line-too-long
+ ' val=`cat scaling_available_frequencies | tr " " "\\n" | sort -n -b -r`; '
+ 'else '
+ ' val=`cat scaling_max_freq | tr " " "\\n" | sort -n -b -r`; fi ; '
+ 'set -- $val; '
+ 'highest=$1; '
+ 'if [[ $# -gt 1 ]]; then '
+ ' case $highest in *1000) highest=$2;; esac; '
+ 'fi ;'
+ 'echo $highest > scaling_max_freq; '
+ 'echo $highest > scaling_min_freq; '
+ 'echo performance > scaling_governor; '
+ 'done'
+ )
+ # pyformat: enable
+ self.assertEqual(cmd, (set_cpu_cmd,))
+
+ @mock.patch.object(time, 'sleep')
+ @mock.patch.object(command_executer.CommandExecuter, 'CrosRunCommand')
+ def test_reboot_machine(self, mock_cros_runcmd, mock_sleep):
+
+ def FakePinGovernor(machine_name, chromeos_root):
+ if machine_name or chromeos_root:
+ pass
+
+ self.mock_cmd_exec.CrosRunCommand = mock_cros_runcmd
+ self.runner.PinGovernorExecutionFrequencies = FakePinGovernor
+ self.runner.RebootMachine('lumpy1.cros', '/tmp/chromeos')
+ self.assertEqual(mock_cros_runcmd.call_count, 1)
+ self.assertEqual(mock_cros_runcmd.call_args_list[0][0], ('reboot && exit',))
+ self.assertEqual(mock_sleep.call_count, 1)
+ self.assertEqual(mock_sleep.call_args_list[0][0], (60,))
+
+ @mock.patch.object(command_executer.CommandExecuter, 'CrosRunCommand')
+ @mock.patch.object(command_executer.CommandExecuter,
+ 'ChrootRunCommandWOutput')
+ def test_test_that_run(self, mock_chroot_runcmd, mock_cros_runcmd):
+
+ def FakeRebootMachine(machine, chroot):
+ if machine or chroot:
+ pass
+
+ def FakeLogMsg(fd, termfd, msg, flush=True):
+ if fd or termfd or msg or flush:
+ pass
+
+ save_log_msg = self.real_logger.LogMsg
+ self.real_logger.LogMsg = FakeLogMsg
+ self.runner.logger = self.real_logger
+ self.runner.RebootMachine = FakeRebootMachine
+
+ raised_exception = False
+ try:
+ self.runner.Test_That_Run('lumpy1.cros', self.mock_label,
+ self.test_that_bench, '', 'record -a -e cycles')
+ except SystemExit:
+ raised_exception = True
+ self.assertTrue(raised_exception)
+
+ mock_chroot_runcmd.return_value = 0
+ self.mock_cmd_exec.ChrootRunCommandWOutput = mock_chroot_runcmd
+ self.mock_cmd_exec.CrosRunCommand = mock_cros_runcmd
+ res = self.runner.Test_That_Run('lumpy1.cros', self.mock_label,
+ self.test_that_bench, '--iterations=2', '')
+ self.assertEqual(mock_cros_runcmd.call_count, 1)
+ self.assertEqual(mock_chroot_runcmd.call_count, 1)
+ self.assertEqual(res, 0)
+ self.assertEqual(mock_cros_runcmd.call_args_list[0][0],
+ ('rm -rf /usr/local/autotest/results/*',))
+ args_list = mock_chroot_runcmd.call_args_list[0][0]
+ args_dict = mock_chroot_runcmd.call_args_list[0][1]
+ self.assertEqual(len(args_list), 2)
+ self.assertEqual(args_list[0], '/tmp/chromeos')
+ self.assertEqual(args_list[1], ('/usr/bin/test_that '
+ '--fast --board=lumpy '
+ '--iterations=2 lumpy1.cros octane'))
+ self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term)
+ self.real_logger.LogMsg = save_log_msg
+
+ @mock.patch.object(os.path, 'isdir')
+ @mock.patch.object(command_executer.CommandExecuter,
+ 'ChrootRunCommandWOutput')
+ def test_telemetry_crosperf_run(self, mock_chroot_runcmd, mock_isdir):
+
+ mock_isdir.return_value = True
+ mock_chroot_runcmd.return_value = 0
+ self.mock_cmd_exec.ChrootRunCommandWOutput = mock_chroot_runcmd
+ profiler_args = ('--profiler=custom_perf --profiler_args=\'perf_options'
+ '="record -a -e cycles,instructions"\'')
+ res = self.runner.Telemetry_Crosperf_Run('lumpy1.cros', self.mock_label,
+ self.telemetry_crosperf_bench, '',
+ profiler_args)
+ self.assertEqual(res, 0)
+ self.assertEqual(mock_chroot_runcmd.call_count, 1)
+ args_list = mock_chroot_runcmd.call_args_list[0][0]
+ args_dict = mock_chroot_runcmd.call_args_list[0][1]
+ self.assertEqual(args_list[0], '/tmp/chromeos')
+ self.assertEqual(args_list[1],
+ ('/usr/bin/test_that --autotest_dir '
+ '~/trunk/src/third_party/autotest/files '
+ ' --board=lumpy --args=" run_local=False test=octane '
+ 'profiler=custom_perf profiler_args=\'record -a -e '
+ 'cycles,instructions\'" lumpy1.cros telemetry_Crosperf'))
+ self.assertEqual(args_dict['cros_sdk_options'],
+ ('--no-ns-pid --chrome_root= '
+ '--chrome_root_mount=/tmp/chrome_root '
+ 'FEATURES="-usersandbox" CHROME_ROOT=/tmp/chrome_root'))
+ self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term)
+ self.assertEqual(len(args_dict), 2)
+
+ @mock.patch.object(os.path, 'isdir')
+ @mock.patch.object(os.path, 'exists')
+ @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput')
+ def test_telemetry_run(self, mock_runcmd, mock_exists, mock_isdir):
+
+ def FakeLogMsg(fd, termfd, msg, flush=True):
+ if fd or termfd or msg or flush:
+ pass
+
+ save_log_msg = self.real_logger.LogMsg
+ self.real_logger.LogMsg = FakeLogMsg
+ mock_runcmd.return_value = 0
+
+ self.mock_cmd_exec.RunCommandWOutput = mock_runcmd
+ self.runner.logger = self.real_logger
+
+ profiler_args = ('--profiler=custom_perf --profiler_args=\'perf_options'
+ '="record -a -e cycles,instructions"\'')
+
+ raises_exception = False
+ mock_isdir.return_value = False
+ try:
+ self.runner.Telemetry_Run('lumpy1.cros', self.mock_label,
+ self.telemetry_bench, '')
+ except SystemExit:
+ raises_exception = True
+ self.assertTrue(raises_exception)
+
+ raises_exception = False
+ mock_isdir.return_value = True
+ mock_exists.return_value = False
+ try:
+ self.runner.Telemetry_Run('lumpy1.cros', self.mock_label,
+ self.telemetry_bench, '')
+ except SystemExit:
+ raises_exception = True
+ self.assertTrue(raises_exception)
+
+ raises_exception = False
+ mock_isdir.return_value = True
+ mock_exists.return_value = True
+ try:
+ self.runner.Telemetry_Run('lumpy1.cros', self.mock_label,
+ self.telemetry_bench, profiler_args)
+ except SystemExit:
+ raises_exception = True
+ self.assertTrue(raises_exception)
+
+ test_flag.SetTestMode(True)
+ res = self.runner.Telemetry_Run('lumpy1.cros', self.mock_label,
+ self.telemetry_bench, '')
+ self.assertEqual(res, 0)
+ self.assertEqual(mock_runcmd.call_count, 1)
+ self.assertEqual(mock_runcmd.call_args_list[0][0], (
+ ('cd src/tools/perf && ./run_measurement '
+ '--browser=cros-chrome --output-format=csv '
+ '--remote=lumpy1.cros --identity /tmp/chromeos/src/scripts'
+ '/mod_for_test_scripts/ssh_keys/testing_rsa octane '),))
+
+ self.real_logger.LogMsg = save_log_msg
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/crosperf/test_cache/compare_output/autotest.tbz2 b/crosperf/test_cache/compare_output/autotest.tbz2
new file mode 100644
index 0000000000000000000000000000000000000000..066dd9ac2617a2993703eba79162dac225f71e8b
Binary files /dev/null and b/crosperf/test_cache/compare_output/autotest.tbz2 differ
diff --git a/crosperf/test_cache/compare_output/machine.txt b/crosperf/test_cache/compare_output/machine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a82af3aae65cb5094b13e97fbe41b330a352917a
--- /dev/null
+++ b/crosperf/test_cache/compare_output/machine.txt
@@ -0,0 +1 @@
+fake_machine_checksum123
\ No newline at end of file
diff --git a/crosperf/test_cache/compare_output/results.txt b/crosperf/test_cache/compare_output/results.txt
new file mode 100644
index 0000000000000000000000000000000000000000..db6803ced01f910f1c14a71bb74ded3f97b7c50a
--- /dev/null
+++ b/crosperf/test_cache/compare_output/results.txt
@@ -0,0 +1,6 @@
+S"CMD (True): ./test_that.sh --remote=172.17.128.241 --board=lumpy LibCBench\nCMD (None): cd /usr/local/google/home/yunlian/gd/src/build/images/lumpy/latest/../../../../..; cros_sdk -- ./in_chroot_cmd6X7Cxu.sh\nIdentity added: /tmp/test_that.PO1234567/autotest_key (/tmp/test_that.PO1234567/autotest_key)\nINFO : Using emerged autotests already installed at /build/lumpy/usr/local/autotest.\n\nINFO : Running the following control files 1 times:\nINFO : * 'client/site_tests/platform_LibCBench/control'\n\nINFO : Running client test client/site_tests/platform_LibCBench/control\n./server/autoserv -m 172.17.128.241 --ssh-port 22 -c client/site_tests/platform_LibCBench/control -r /tmp/test_that.PO1234567/platform_LibCBench --test-retry=0 --args \nERROR:root:import statsd failed, no stats will be reported.\n14:20:22 INFO | Results placed in /tmp/test_that.PO1234567/platform_LibCBench\n14:20:22 INFO | Processing control file\n14:20:23 INFO | Starting master ssh connection '/usr/bin/ssh -a -x -N -o ControlMaster=yes -o ControlPath=/tmp/_autotmp_VIIP67ssh-master/socket -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o ConnectTimeout=30 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ConnectionAttempts=4 -o Protocol=2 -l root -p 22 172.17.128.241'\n14:20:23 ERROR| [stderr] Warning: Permanently added '172.17.128.241' (RSA) to the list of known hosts.\n14:20:23 INFO | INFO\t----\t----\tkernel=3.8.11\tlocaltime=May 22 14:20:23\ttimestamp=1369257623\t\n14:20:23 INFO | Installing autotest on 172.17.128.241\n14:20:23 INFO | Using installation dir /usr/local/autotest\n14:20:23 WARNI| No job_repo_url for \n14:20:23 INFO | Could not install autotest using the packaging system: No repos to install an autotest client from. Trying other methods\n14:20:23 INFO | Installation of autotest completed\n14:20:24 WARNI| No job_repo_url for \n14:20:24 INFO | Executing /usr/local/autotest/bin/autotest /usr/local/autotest/control phase 0\n14:20:24 INFO | Entered autotestd_monitor.\n14:20:24 INFO | Finished launching tail subprocesses.\n14:20:24 INFO | Finished waiting on autotestd to start.\n14:20:26 INFO | START\t----\t----\ttimestamp=1369257625\tlocaltime=May 22 14:20:25\t\n14:20:26 INFO | \tSTART\tplatform_LibCBench\tplatform_LibCBench\ttimestamp=1369257625\tlocaltime=May 22 14:20:25\t\n14:20:30 INFO | \t\tGOOD\tplatform_LibCBench\tplatform_LibCBench\ttimestamp=1369257630\tlocaltime=May 22 14:20:30\tcompleted successfully\n14:20:30 INFO | \tEND GOOD\tplatform_LibCBench\tplatform_LibCBench\ttimestamp=1369257630\tlocaltime=May 22 14:20:30\t\n14:20:31 INFO | END GOOD\t----\t----\ttimestamp=1369257630\tlocaltime=May 22 14:20:30\t\n14:20:31 INFO | Got lock of exit_code_file.\n14:20:31 INFO | Released lock of exit_code_file and closed it.\nOUTPUT: ==============================\nOUTPUT: Current time: 2013-05-22 14:20:32.818831 Elapsed: 0:01:30 ETA: Unknown\nDone: 0% [ ]\nOUTPUT: Thread Status:\nRUNNING: 1 ('ttt: LibCBench (1)' 0:01:21)\nMachine Status:\nMachine Thread Lock Status Checksum \n172.17.128.241 ttt: LibCBench (1) True RUNNING 3ba9f2ecbb222f20887daea5583d86ba\n\nOUTPUT: ==============================\n14:20:33 INFO | Killing child processes.\n14:20:33 INFO | Client complete\n14:20:33 INFO | Finished processing control file\n14:20:33 INFO | Starting master ssh connection '/usr/bin/ssh -a -x -N -o ControlMaster=yes -o ControlPath=/tmp/_autotmp_aVJUgmssh-master/socket -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o ConnectTimeout=30 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ConnectionAttempts=4 -o Protocol=2 -l root -p 22 172.17.128.241'\n14:20:33 ERROR| [stderr] Warning: Permanently added '172.17.128.241' (RSA) to the list of known hosts.\n\nINFO : Test results:\n-------------------------------------------------------------------\nplatform_LibCBench [ PASSED ]\nplatform_LibCBench/platform_LibCBench [ PASSED ]\nplatform_LibCBench/platform_LibCBench b_malloc_big1__0_ 0.00375231466667\nplatform_LibCBench/platform_LibCBench b_malloc_big2__0_ 0.002951359\nplatform_LibCBench/platform_LibCBench b_malloc_bubble__0_ 0.015066374\nplatform_LibCBench/platform_LibCBench b_malloc_sparse__0_ 0.015053784\nplatform_LibCBench/platform_LibCBench b_malloc_thread_local__0_ 0.01138439\nplatform_LibCBench/platform_LibCBench b_malloc_thread_stress__0_ 0.0367894733333\nplatform_LibCBench/platform_LibCBench b_malloc_tiny1__0_ 0.000768474333333\nplatform_LibCBench/platform_LibCBench b_malloc_tiny2__0_ 0.000581407333333\nplatform_LibCBench/platform_LibCBench b_pthread_create_serial1__0_ 0.0291785246667\nplatform_LibCBench/platform_LibCBench b_pthread_createjoin_serial1__0_ 0.031907936\nplatform_LibCBench/platform_LibCBench b_pthread_createjoin_serial2__0_ 0.043485347\nplatform_LibCBench/platform_LibCBench b_pthread_uselesslock__0_ 0.0294113346667\nplatform_LibCBench/platform_LibCBench b_regex_compile____a_b_c__d_b__ 0.00529833933333\nplatform_LibCBench/platform_LibCBench b_regex_search____a_b_c__d_b__ 0.00165455066667\nplatform_LibCBench/platform_LibCBench b_regex_search___a_25_b__ 0.0496191923333\nplatform_LibCBench/platform_LibCBench b_stdio_putcgetc__0_ 0.100005711667\nplatform_LibCBench/platform_LibCBench b_stdio_putcgetc_unlocked__0_ 0.0371443833333\nplatform_LibCBench/platform_LibCBench b_string_memset__0_ 0.00275405066667\nplatform_LibCBench/platform_LibCBench b_string_strchr__0_ 0.00456903\nplatform_LibCBench/platform_LibCBench b_string_strlen__0_ 0.044893587\nplatform_LibCBench/platform_LibCBench b_string_strstr___aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac__ 0.118360778\nplatform_LibCBench/platform_LibCBench b_string_strstr___aaaaaaaaaaaaaaaaaaaaaaaaac__ 0.068957325\nplatform_LibCBench/platform_LibCBench b_string_strstr___aaaaaaaaaaaaaacccccccccccc__ 0.0135694476667\nplatform_LibCBench/platform_LibCBench b_string_strstr___abcdefghijklmnopqrstuvwxyz__ 0.0134553343333\nplatform_LibCBench/platform_LibCBench b_string_strstr___azbycxdwevfugthsirjqkplomn__ 0.0133123556667\nplatform_LibCBench/platform_LibCBench b_utf8_bigbuf__0_ 0.0473772253333\nplatform_LibCBench/platform_LibCBench b_utf8_onebyone__0_ 0.130938538333\n-------------------------------------------------------------------\nTotal PASS: 2/2 (100%)\n\nINFO : Elapsed time: 0m16s \n"
+p0
+.S"\nERROR: Identity added: /tmp/test_that.Z4Ld/autotest_key (/tmp/test_that.Z4Ld/autotest_key)\nINFO : Using emerged autotests already installed at /build/lumpy/usr/local/autotest.\nINFO : Running the following control files 1 times:\nINFO : * 'client/site_tests/platform_LibCBench/control'\nINFO : Running client test client/site_tests/platform_LibCBench/control\nINFO : Test results:\nINFO : Elapsed time: 0m18s\n"
+p0
+.I0
+.
\ No newline at end of file
diff --git a/crosperf/test_cache/test_input/autotest.tbz2 b/crosperf/test_cache/test_input/autotest.tbz2
new file mode 100644
index 0000000000000000000000000000000000000000..6ddbc6bfcfdfa18d6236c5b1df30e982c0aabb67
Binary files /dev/null and b/crosperf/test_cache/test_input/autotest.tbz2 differ
diff --git a/crosperf/test_cache/test_input/machine.txt b/crosperf/test_cache/test_input/machine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9bd7843477ff9f94d4646af97cc10704a62fe6e7
--- /dev/null
+++ b/crosperf/test_cache/test_input/machine.txt
@@ -0,0 +1 @@
+processor : 0vendor_id : GenuineIntelcpu family : 6model : 42model name : Intel(R) Celeron(R) CPU 867 @ 1.30GHzstepping : 7microcode : 0x25cache size : 2048 KBphysical id : 0siblings : 2core id : 0cpu cores : 2apicid : 0initial apicid : 0fpu : yesfpu_exception : yescpuid level : 13wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpidclflush size : 64cache_alignment : 64address sizes : 36 bits physical, 48 bits virtualpower management:processor : 1vendor_id : GenuineIntelcpu family : 6model : 42model name : Intel(R) Celeron(R) CPU 867 @ 1.30GHzstepping : 7microcode : 0x25cache size : 2048 KBphysical id : 0siblings : 2core id : 1cpu cores : 2apicid : 2initial apicid : 2fpu : yesfpu_exception : yescpuid level : 13wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpidclflush size : 64cache_alignment : 64address sizes : 36 bits physical, 48 bits virtualpower management: 4194304
\ No newline at end of file
diff --git a/crosperf/test_cache/test_input/results.txt b/crosperf/test_cache/test_input/results.txt
new file mode 100644
index 0000000000000000000000000000000000000000..33ba6ab72190875ba4819cfd363269852c015507
--- /dev/null
+++ b/crosperf/test_cache/test_input/results.txt
@@ -0,0 +1,6 @@
+S"11:22:08 INFO | Running autotest_quickmerge step.\n11:22:08 INFO | quickmerge| 11:22:08: INFO: RunCommand: sudo -- /usr/bin/python2.7 /mnt/host/source/chromite/bin/autotest_quickmerge '--board=lumpy'\n11:22:08 INFO | quickmerge| 11:22:08: INFO: RunCommand: find /build/lumpy/usr/local/build/autotest/ -path /build/lumpy/usr/local/build/autotest/ExternalSource -prune -o -path /build/lumpy/usr/local/build/autotest/logs -prune -o -path /build/lumpy/usr/local/build/autotest/results -prune -o -path /build/lumpy/usr/local/build/autotest/site-packages -prune -o -printf '%T@\\n'\n11:22:22 INFO | quickmerge| 11:22:22: INFO: RunCommand: find /mnt/host/source/src/third_party/autotest/files/ -path /mnt/host/source/src/third_party/autotest/files/ExternalSource -prune -o -path /mnt/host/source/src/third_party/autotest/files/logs -prune -o -path /mnt/host/source/src/third_party/autotest/files/results -prune -o -path /mnt/host/source/src/third_party/autotest/files/site-packages -prune -o -printf '%T@\\n'\n11:22:32 INFO | quickmerge| 11:22:32: INFO: The sysroot appears to be newer than the source tree, doing nothing and exiting now.\n11:22:32 INFO | Re-running test_that script in /build/lumpy/usr/local/build/autotest copy of autotest.\n11:22:33 INFO | Began logging to /tmp/test_that_results_zZZfQa\nAdding labels [u'cros-version:ad_hoc_build', u'board:lumpy'] to host chromeos2-row2-rack4-host11.cros\n13:22:33 INFO | Fetching suite for job named telemetry_Crosperf...\n13:22:43 INFO | Scheduling suite for job named telemetry_Crosperf...\n13:22:43 INFO | ... scheduled 1 job(s).\n13:22:43 INFO | autoserv| DEBUG:root:import statsd failed, no stats will be reported.\n13:22:43 INFO | autoserv| Results placed in /tmp/test_that_results_zZZfQa/results-1-telemetry_Crosperf\n13:22:43 INFO | autoserv| Logged pid 25397 to /tmp/test_that_results_zZZfQa/results-1-telemetry_Crosperf/.autoserv_execute\n13:22:43 INFO | autoserv| I am PID 25397\n13:22:43 INFO | autoserv| Not checking if job_repo_url contains autotest packages on ['chromeos2-row2-rack4-host11.cros']\n13:22:43 INFO | autoserv| Processing control file\n13:22:44 INFO | autoserv| START\ttelemetry_Crosperf\ttelemetry_Crosperf\ttimestamp=1401301364\tlocaltime=May 28 11:22:44\n13:22:44 INFO | autoserv| Starting master ssh connection '/usr/bin/ssh -a -x -N -o ControlMaster=yes -o ControlPath=/tmp/_autotmp_HsB3vQssh-master/socket -o StrictHostKeyChecking=no -o UserKnownHostsFile=/tmp/tmpxFy6lj -o BatchMode=yes -o ConnectTimeout=30 -o ServerAliveInterval=300 -l root -p 22 chromeos2-row2-rack4-host11.cros'\n13:22:45 INFO | autoserv| Starting master ssh connection '/usr/bin/ssh -a -x -N -o ControlMaster=yes -o ControlPath=/tmp/_autotmp_YTu9wYssh-master/socket -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o ConnectTimeout=30 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ConnectionAttempts=4 -o Protocol=2 -l root -p 22 chromeos2-row2-rack4-host11.cros'\n13:22:45 INFO | autoserv| Installing autotest on chromeos2-row2-rack4-host11.cros\n13:22:45 INFO | autoserv| Using installation dir /tmp/sysinfo/autoserv-MxOMOw\n13:22:46 INFO | autoserv| No job_repo_url for \n13:22:46 INFO | autoserv| Could not install autotest using the packaging system: No repos to install an autotest client from. Trying other methods\n13:22:47 INFO | autoserv| Installation of autotest completed\n13:22:47 INFO | autoserv| Installing updated global_config.ini.\n13:22:48 INFO | autoserv| No job_repo_url for \n13:22:48 INFO | autoserv| Executing /tmp/sysinfo/autoserv-MxOMOw/bin/autotest /tmp/sysinfo/autoserv-MxOMOw/control phase 0\n13:22:48 INFO | autoserv| Entered autotestd_monitor.\n13:22:48 INFO | autoserv| Finished launching tail subprocesses.\n13:22:48 INFO | autoserv| Finished waiting on autotestd to start.\n13:22:48 INFO | autoserv| START\t----\t----\ttimestamp=1401301368\tlocaltime=May 28 11:22:48\n13:22:48 INFO | autoserv| GOOD\t----\tsysinfo.before\ttimestamp=1401301368\tlocaltime=May 28 11:22:48\n13:22:48 INFO | autoserv| END GOOD\t----\t----\ttimestamp=1401301368\tlocaltime=May 28 11:22:48\n13:22:48 INFO | autoserv| Got lock of exit_code_file.\n13:22:48 INFO | autoserv| Released lock of exit_code_file and closed it.\n13:22:50 INFO | autoserv| Killing child processes.\n13:22:50 INFO | autoserv| Client complete\n13:22:52 INFO | autoserv| No job_repo_url for \n13:22:52 INFO | autoserv| Executing /tmp/sysinfo/autoserv-MxOMOw/bin/autotest /tmp/sysinfo/autoserv-MxOMOw/control phase 0\n13:22:53 INFO | autoserv| Entered autotestd_monitor.\n13:22:53 INFO | autoserv| Finished launching tail subprocesses.\n13:22:53 INFO | autoserv| Finished waiting on autotestd to start.\n13:22:53 INFO | autoserv| START\t----\t----\ttimestamp=1401301373\tlocaltime=May 28 11:22:53\n13:22:53 INFO | autoserv| GOOD\t----\tsysinfo.iteration.before\ttimestamp=1401301373\tlocaltime=May 28 11:22:53\n13:22:53 INFO | autoserv| END GOOD\t----\t----\ttimestamp=1401301373\tlocaltime=May 28 11:22:53\n13:22:53 INFO | autoserv| Got lock of exit_code_file.\n13:22:53 INFO | autoserv| Released lock of exit_code_file and closed it.\n13:22:55 INFO | autoserv| Killing child processes.\n13:22:55 INFO | autoserv| Client complete\n13:22:55 INFO | autoserv| Using Chrome source tree at /tmp/chrome_root\n13:22:55 INFO | autoserv| CMD: /tmp/chrome_root/src/tools/perf/run_benchmark --browser=cros-chrome --remote=chromeos2-row2-rack4-host11.cros sunspider\n13:23:35 INFO | autoserv| Telemetry completed with exit code: 0.\n13:23:35 INFO | autoserv| stdout:Pages: [http___www.webkit.org_perf_sunspider-1.0.2_sunspider-1.0.2_driver.html]\n13:23:35 INFO | autoserv| RESULT 3d-cube: 3d-cube= [28,28,28,28,31,26,28,28,28,27] ms\n13:23:35 INFO | autoserv| Avg 3d-cube: 28.000000ms\n13:23:35 INFO | autoserv| Sd 3d-cube: 1.247219ms\n13:23:35 INFO | autoserv| RESULT 3d-morph: 3d-morph= [23,22,22,22,22,22,22,22,22,22] ms\n13:23:35 INFO | autoserv| Avg 3d-morph: 22.100000ms\n13:23:35 INFO | autoserv| Sd 3d-morph: 0.316228ms\n13:23:35 INFO | autoserv| RESULT 3d-raytrace: 3d-raytrace= [26,23,24,25,25,25,26,24,24,25] ms\n13:23:35 INFO | autoserv| Avg 3d-raytrace: 24.700000ms\n13:23:35 INFO | autoserv| Sd 3d-raytrace: 0.948683ms\n13:23:35 INFO | autoserv| *RESULT Total: Total= [443,440,440,447,451,435,441,449,449,445] ms\n13:23:35 INFO | autoserv| Avg Total: 444.000000ms\n13:23:35 INFO | autoserv| Sd Total: 5.077182ms\n13:23:35 INFO | autoserv| RESULT access-binary-trees: access-binary-trees= [4,3,5,6,5,5,3,5,5,4] ms\n13:23:35 INFO | autoserv| Avg access-binary-trees: 4.500000ms\n13:23:35 INFO | autoserv| Sd access-binary-trees: 0.971825ms\n13:23:35 INFO | autoserv| RESULT access-fannkuch: access-fannkuch= [19,18,17,18,17,18,18,18,17,18] ms\n13:23:35 INFO | autoserv| Avg access-fannkuch: 17.800000ms\n13:23:35 INFO | autoserv| Sd access-fannkuch: 0.632456ms\n13:23:35 INFO | autoserv| RESULT access-nbody: access-nbody= [7,9,8,7,12,8,9,10,8,7] ms\n13:23:35 INFO | autoserv| Avg access-nbody: 8.500000ms\n13:23:35 INFO | autoserv| Sd access-nbody: 1.581139ms\n13:23:35 INFO | autoserv| RESULT access-nsieve: access-nsieve= [9,8,8,8,8,7,8,7,8,8] ms\n13:23:35 INFO | autoserv| Avg access-nsieve: 7.900000ms\n13:23:35 INFO | autoserv| Sd access-nsieve: 0.567646ms\n13:23:35 INFO | autoserv| RESULT bitops-3bit-bits-in-byte: bitops-3bit-bits-in-byte= [3,3,3,3,3,3,3,4,4,3] ms\n13:23:35 INFO | autoserv| Avg bitops-3bit-bits-in-byte: 3.200000ms\n13:23:35 INFO | autoserv| Sd bitops-3bit-bits-in-byte: 0.421637ms\n13:23:35 INFO | autoserv| RESULT bitops-bits-in-byte: bitops-bits-in-byte= [9,9,9,9,9,9,9,9,9,10] ms\n13:23:35 INFO | autoserv| Avg bitops-bits-in-byte: 9.100000ms\n13:23:35 INFO | autoserv| Sd bitops-bits-in-byte: 0.316228ms\n13:23:35 INFO | autoserv| RESULT bitops-bitwise-and: bitops-bitwise-and= [8,8,7,9,8,9,8,8,9,10] ms\n13:23:35 INFO | autoserv| Avg bitops-bitwise-and: 8.400000ms\n13:23:35 INFO | autoserv| Sd bitops-bitwise-and: 0.843274ms\n13:23:35 INFO | autoserv| RESULT bitops-nsieve-bits: bitops-nsieve-bits= [9,9,9,9,9,9,9,11,11,9] ms\n13:23:35 INFO | autoserv| Avg bitops-nsieve-bits: 9.400000ms\n13:23:35 INFO | autoserv| Sd bitops-nsieve-bits: 0.843274ms\n13:23:35 INFO | autoserv| RESULT controlflow-recursive: controlflow-recursive= [5,5,5,4,4,4,5,4,4,4] ms\n13:23:35 INFO | autoserv| Avg controlflow-recursive: 4.400000ms\n13:23:35 INFO | autoserv| Sd controlflow-recursive: 0.516398ms\n13:23:35 INFO | autoserv| RESULT crypto-aes: crypto-aes= [14,16,15,16,15,14,17,14,15,16] ms\n13:23:35 INFO | autoserv| Avg crypto-aes: 15.200000ms\n13:23:35 INFO | autoserv| Sd crypto-aes: 1.032796ms\n13:23:35 INFO | autoserv| RESULT crypto-md5: crypto-md5= [10,11,11,11,10,10,11,10,10,11] ms\n13:23:35 INFO | autoserv| Avg crypto-md5: 10.500000ms\n13:23:35 INFO | autoserv| Sd crypto-md5: 0.527046ms\n13:23:35 INFO | autoserv| RESULT crypto-sha1: crypto-sha1= [11,11,12,12,12,12,12,10,13,11] ms\n13:23:35 INFO | autoserv| Avg crypto-sha1: 11.600000ms\n13:23:35 INFO | autoserv| Sd crypto-sha1: 0.843274ms\n13:23:35 INFO | autoserv| RESULT date-format-tofte: date-format-tofte= [28,25,25,26,26,27,26,28,27,25] ms\n13:23:35 INFO | autoserv| Avg date-format-tofte: 26.300000ms\n13:23:35 INFO | autoserv| Sd date-format-tofte: 1.159502ms\n13:23:35 INFO | autoserv| RESULT date-format-xparb: date-format-xparb= [21,22,21,21,21,20,20,20,21,22] ms\n13:23:35 INFO | autoserv| Avg date-format-xparb: 20.900000ms\n13:23:35 INFO | autoserv| Sd date-format-xparb: 0.737865ms\n13:23:35 INFO | autoserv| RESULT math-cordic: math-cordic= [8,8,8,9,9,9,9,9,9,9] ms\n13:23:35 INFO | autoserv| Avg math-cordic: 8.700000ms\n13:23:35 INFO | autoserv| Sd math-cordic: 0.483046ms\n13:23:35 INFO | autoserv| RESULT math-partial-sums: math-partial-sums= [22,22,22,21,23,20,20,23,25,22] ms\n13:23:35 INFO | autoserv| Avg math-partial-sums: 22.000000ms\n13:23:35 INFO | autoserv| Sd math-partial-sums: 1.490712ms\n13:23:35 INFO | autoserv| RESULT math-spectral-norm: math-spectral-norm= [6,7,6,7,7,6,7,6,7,7] ms\n13:23:35 INFO | autoserv| Avg math-spectral-norm: 6.600000ms\n13:23:35 INFO | autoserv| Sd math-spectral-norm: 0.516398ms\n13:23:35 INFO | autoserv| RESULT regexp-dna: regexp-dna= [16,16,17,16,16,16,16,16,17,16] ms\n13:23:35 INFO | autoserv| Avg regexp-dna: 16.200000ms\n13:23:35 INFO | autoserv| Sd regexp-dna: 0.421637ms\n13:23:35 INFO | autoserv| RESULT string-base64: string-base64= [17,16,16,16,17,16,16,16,14,16] ms\n13:23:35 INFO | autoserv| Avg string-base64: 16.000000ms\n13:23:35 INFO | autoserv| Sd string-base64: 0.816497ms\n13:23:35 INFO | autoserv| RESULT string-fasta: string-fasta= [23,22,23,24,23,23,23,25,23,23] ms\n13:23:35 INFO | autoserv| Avg string-fasta: 23.200000ms\n13:23:35 INFO | autoserv| Sd string-fasta: 0.788811ms\n13:23:35 INFO | autoserv| RESULT string-tagcloud: string-tagcloud= [53,52,54,53,53,52,51,54,53,53] ms\n13:23:35 INFO | autoserv| Avg string-tagcloud: 52.800000ms\n13:23:35 INFO | autoserv| Sd string-tagcloud: 0.918937ms\n13:23:35 INFO | autoserv| RESULT string-unpack-code: string-unpack-code= [46,47,46,48,47,46,46,47,47,47] ms\n13:23:35 INFO | autoserv| Avg string-unpack-code: 46.700000ms\n13:23:35 INFO | autoserv| Sd string-unpack-code: 0.674949ms\n13:23:35 INFO | autoserv| RESULT string-validate-input: string-validate-input= [18,20,19,19,19,19,19,21,19,20] ms\n13:23:35 INFO | autoserv| Avg string-validate-input: 19.300000ms\n13:23:35 INFO | autoserv| Sd string-validate-input: 0.823273ms\n13:23:35 INFO | autoserv| RESULT telemetry_page_measurement_results: num_failed= 0 count\n13:23:35 INFO | autoserv| RESULT telemetry_page_measurement_results: num_errored= 0 count\n13:23:35 INFO | autoserv| \n13:23:35 INFO | autoserv| View result at file:///tmp/chrome_root/src/tools/perf/results.html\n13:23:35 INFO | autoserv| \n13:23:35 INFO | autoserv| stderr:\n13:23:35 INFO | autoserv| No job_repo_url for \n13:23:35 INFO | autoserv| Executing /tmp/sysinfo/autoserv-MxOMOw/bin/autotest /tmp/sysinfo/autoserv-MxOMOw/control phase 0\n13:23:36 INFO | autoserv| Entered autotestd_monitor.\n13:23:36 INFO | autoserv| Finished launching tail subprocesses.\n13:23:36 INFO | autoserv| Finished waiting on autotestd to start.\n13:23:37 INFO | autoserv| START\t----\t----\ttimestamp=1401301417\tlocaltime=May 28 11:23:37\n13:23:37 INFO | autoserv| GOOD\t----\tsysinfo.iteration.after\ttimestamp=1401301417\tlocaltime=May 28 11:23:37\n13:23:37 INFO | autoserv| END GOOD\t----\t----\ttimestamp=1401301417\tlocaltime=May 28 11:23:37\n13:23:37 INFO | autoserv| Got lock of exit_code_file.\n13:23:37 INFO | autoserv| Released lock of exit_code_file and closed it.\n13:23:39 INFO | autoserv| Killing child processes.\n13:23:39 INFO | autoserv| Client complete\n13:23:39 INFO | autoserv| No job_repo_url for \n13:23:40 INFO | autoserv| Executing /tmp/sysinfo/autoserv-MxOMOw/bin/autotest /tmp/sysinfo/autoserv-MxOMOw/control phase 0\n13:23:40 INFO | autoserv| Entered autotestd_monitor.\n13:23:40 INFO | autoserv| Finished launching tail subprocesses.\n13:23:40 INFO | autoserv| Finished waiting on autotestd to start.\n13:23:40 INFO | autoserv| START\t----\t----\ttimestamp=1401301420\tlocaltime=May 28 11:23:40\n13:23:40 INFO | autoserv| GOOD\t----\tsysinfo.after\ttimestamp=1401301420\tlocaltime=May 28 11:23:40\n13:23:40 INFO | autoserv| END GOOD\t----\t----\ttimestamp=1401301420\tlocaltime=May 28 11:23:40\n13:23:40 INFO | autoserv| Got lock of exit_code_file.\n13:23:40 INFO | autoserv| Released lock of exit_code_file and closed it.\n13:23:42 INFO | autoserv| Killing child processes.\n13:23:42 INFO | autoserv| Client complete\n13:23:44 INFO | autoserv| GOOD\ttelemetry_Crosperf\ttelemetry_Crosperf\ttimestamp=1401301424\tlocaltime=May 28 11:23:44\tcompleted successfully\n13:23:44 INFO | autoserv| END GOOD\ttelemetry_Crosperf\ttelemetry_Crosperf\ttimestamp=1401301424\tlocaltime=May 28 11:23:44\n13:23:44 INFO | autoserv| Finished processing control file\n13:23:44 INFO | autoserv| Starting master ssh connection '/usr/bin/ssh -a -x -N -o ControlMaster=yes -o ControlPath=/tmp/_autotmp_UyjlWMssh-master/socket -o StrictHostKeyChecking=no -o UserKnownHostsFile=/tmp/tmpCvMigR -o BatchMode=yes -o ConnectTimeout=30 -o ServerAliveInterval=300 -l root -p 22 chromeos2-row2-rack4-host11.cros'\n13:23:45 INFO | autoserv| Starting master ssh connection '/usr/bin/ssh -a -x -N -o ControlMaster=yes -o ControlPath=/tmp/_autotmp_w_KGTassh-master/socket -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o ConnectTimeout=30 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ConnectionAttempts=4 -o Protocol=2 -l root -p 22 chromeos2-row2-rack4-host11.cros'\n-----------------------------------------------------------------------------------------\n/tmp/test_that_results_zZZfQa/results-1-telemetry_Crosperf [ PASSED ]\n/tmp/test_that_results_zZZfQa/results-1-telemetry_Crosperf/telemetry_Crosperf [ PASSED ]\n-----------------------------------------------------------------------------------------\nTotal PASS: 2/2 (100%)\n\n13:23:47 INFO | Finished running tests. Results can be found in /tmp/test_that_results_zZZfQa\n"
+p0
+.S'INFO:root:Identity added: /tmp/test_that_results_PPRMIh/testing_rsa (/tmp/test_that_results_PPRMIh/testing_rsa)\nINFO:root:Identity added: /tmp/test_that_results_zZZfQa/testing_rsa (/tmp/test_that_results_zZZfQa/testing_rsa)\n'
+p0
+.I0
+.
\ No newline at end of file
diff --git a/crosperf/test_cache/test_puretelemetry_input/machine.txt b/crosperf/test_cache/test_puretelemetry_input/machine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9bd7843477ff9f94d4646af97cc10704a62fe6e7
--- /dev/null
+++ b/crosperf/test_cache/test_puretelemetry_input/machine.txt
@@ -0,0 +1 @@
+processor : 0vendor_id : GenuineIntelcpu family : 6model : 42model name : Intel(R) Celeron(R) CPU 867 @ 1.30GHzstepping : 7microcode : 0x25cache size : 2048 KBphysical id : 0siblings : 2core id : 0cpu cores : 2apicid : 0initial apicid : 0fpu : yesfpu_exception : yescpuid level : 13wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpidclflush size : 64cache_alignment : 64address sizes : 36 bits physical, 48 bits virtualpower management:processor : 1vendor_id : GenuineIntelcpu family : 6model : 42model name : Intel(R) Celeron(R) CPU 867 @ 1.30GHzstepping : 7microcode : 0x25cache size : 2048 KBphysical id : 0siblings : 2core id : 1cpu cores : 2apicid : 2initial apicid : 2fpu : yesfpu_exception : yescpuid level : 13wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpidclflush size : 64cache_alignment : 64address sizes : 36 bits physical, 48 bits virtualpower management: 4194304
\ No newline at end of file
diff --git a/crosperf/test_cache/test_puretelemetry_input/results.txt b/crosperf/test_cache/test_puretelemetry_input/results.txt
new file mode 100644
index 0000000000000000000000000000000000000000..497d1cf3faa50c25ce37a1a5d8cdb424ce7c6f36
--- /dev/null
+++ b/crosperf/test_cache/test_puretelemetry_input/results.txt
@@ -0,0 +1,6 @@
+S'page_name,3d-cube (ms),3d-morph (ms),3d-raytrace (ms),Total (ms),access-binary-trees (ms),access-fannkuch (ms),access-nbody (ms),access-nsieve (ms),bitops-3bit-bits-in-byte (ms),bitops-bits-in-byte (ms),bitops-bitwise-and (ms),bitops-nsieve-bits (ms),controlflow-recursive (ms),crypto-aes (ms),crypto-md5 (ms),crypto-sha1 (ms),date-format-tofte (ms),date-format-xparb (ms),math-cordic (ms),math-partial-sums (ms),math-spectral-norm (ms),regexp-dna (ms),string-base64 (ms),string-fasta (ms),string-tagcloud (ms),string-unpack-code (ms),string-validate-input (ms)\r\nhttp://www.webkit.org/perf/sunspider-1.0.2/sunspider-1.0.2/driver.html,42.7,50.2,28.7,656.5,7.3,26.3,6.9,8.6,3.5,9.8,8.8,9.3,5.3,19.2,10.8,12.4,31.2,138.1,11.4,32.8,6.3,16.1,17.5,36.3,47.2,45.0,24.8\r\n'
+p0
+.S''
+p0
+.I0
+.
\ No newline at end of file
diff --git a/crosperf/test_flag.py b/crosperf/test_flag.py
new file mode 100644
index 0000000000000000000000000000000000000000..70918693ddd87afdc9ff27ee1b2244f7f06d223e
--- /dev/null
+++ b/crosperf/test_flag.py
@@ -0,0 +1,12 @@
+# Copyright 2011 Google Inc. All Rights Reserved.
+"""A global variable for testing."""
+
+is_test = [False]
+
+
+def SetTestMode(flag):
+ is_test[0] = flag
+
+
+def GetTestMode():
+ return is_test[0]
diff --git a/crosperf/translate_xbuddy.py b/crosperf/translate_xbuddy.py
new file mode 100644
index 0000000000000000000000000000000000000000..a32854e1988a5178e13e307245a641f909a21973
--- /dev/null
+++ b/crosperf/translate_xbuddy.py
@@ -0,0 +1,33 @@
+"""Module to translate the xbuddy config."""
+
+from __future__ import print_function
+
+import os
+import sys
+
+if '/mnt/host/source/src/third_party/toolchain-utils/crosperf' in sys.path:
+ dev_path = os.path.expanduser('~/trunk/src/platform/dev')
+ sys.path.append(dev_path)
+else:
+ print('This script can only be run from inside a ChromeOS chroot. Please '
+ 'enter your chroot, go to ~/src/third_party/toolchain-utils/crosperf'
+ ' and try again.')
+ sys.exit(0)
+
+#pylint: disable=import-error
+import xbuddy
+
+
+def Main(xbuddy_string):
+ if not os.path.exists('./xbuddy_config.ini'):
+ config_path = os.path.expanduser('~/trunk/src/platform/dev/'
+ 'xbuddy_config.ini')
+ os.symlink(config_path, './xbuddy_config.ini')
+ x = xbuddy.XBuddy(manage_builds=False, static_dir='/tmp/devserver/static')
+ build_id = x.Translate(os.path.split(xbuddy_string))
+ return build_id
+
+
+if __name__ == '__main__':
+ print(Main(sys.argv[1]))
+ sys.exit(0)
diff --git a/crosperf/unittest_keyval_file.txt b/crosperf/unittest_keyval_file.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc76398ee238744dc40b3aa4ddde0769e2d6cd15
--- /dev/null
+++ b/crosperf/unittest_keyval_file.txt
@@ -0,0 +1,20 @@
+{"description": "Box2D", "graph": "Box2D", "higher_is_better": true, "units": "score", "value": 4775}
+{"description": "CodeLoad", "graph": "CodeLoad", "higher_is_better": true, "units": "score", "value": 6271}
+{"description": "Crypto", "graph": "Crypto", "higher_is_better": true, "units": "score", "value": 8737}
+{"description": "DeltaBlue", "graph": "DeltaBlue", "higher_is_better": true, "units": "score", "value": 14401}
+{"description": "EarleyBoyer", "graph": "EarleyBoyer", "higher_is_better": true, "units": "score", "value": 14340}
+{"description": "Gameboy", "graph": "Gameboy", "higher_is_better": true, "units": "score", "value": 9901}
+{"description": "Mandreel", "graph": "Mandreel", "higher_is_better": true, "units": "score", "value": 6620}
+{"description": "MandreelLatency", "graph": "MandreelLatency", "higher_is_better": true, "units": "score", "value": 5188}
+{"description": "NavierStokes", "graph": "NavierStokes", "higher_is_better": true, "units": "score", "value": 9815}
+{"description": "PdfJS", "graph": "PdfJS", "higher_is_better": true, "units": "score", "value": 6455}
+{"description": "RayTrace", "graph": "RayTrace", "higher_is_better": true, "units": "score", "value": 16600}
+{"description": "RegExp", "graph": "RegExp", "higher_is_better": true, "units": "score", "value": 1765}
+{"description": "Richards", "graph": "Richards", "higher_is_better": true, "units": "score", "value": 10358}
+{"description": "Splay", "graph": "Splay", "higher_is_better": true, "units": "score", "value": 4425}
+{"description": "SplayLatency", "graph": "SplayLatency", "higher_is_better": true, "units": "score", "value": 7653}
+{"description": "Typescript", "graph": "Typescript", "higher_is_better": true, "units": "score", "value": 9815}
+{"description": "zlib", "graph": "zlib", "higher_is_better": true, "units": "score", "value": 16094}
+{"description": "Score", "graph": "Total", "higher_is_better": true, "units": "score", "value": 7918}
+{"description": "num_failed", "graph": "telemetry_page_measurement_results", "higher_is_better": true, "units": "count", "value": 0}
+{"description": "num_errored", "graph": "telemetry_page_measurement_results", "higher_is_better": true, "units": "count", "value": 0}
diff --git a/cwp/bartlett/app.yaml b/cwp/bartlett/app.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..60010f7018b6c4e854a9313184c14e56c36a6cf1
--- /dev/null
+++ b/cwp/bartlett/app.yaml
@@ -0,0 +1,22 @@
+application: chromeoswideprofiling
+version: 1
+runtime: python
+api_version: 1
+
+handlers:
+- url: /favicon.ico
+ static_files: static/favicon.ico
+ upload: static/favicon.ico
+- url: /remote_api
+ script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
+ login: admin
+- url: /
+ script: server.py
+- url: /upload
+ script: server.py
+- url: /serve
+ script: server.py
+- url: /serve/.*
+ script: server.py
+- url: /del/.*
+ script: server.py
diff --git a/cwp/bartlett/server.py b/cwp/bartlett/server.py
new file mode 100755
index 0000000000000000000000000000000000000000..f6b35361052b78ef5dd3d84ef3bd9adfcc4e4749
--- /dev/null
+++ b/cwp/bartlett/server.py
@@ -0,0 +1,153 @@
+#!/usr/bin/python
+# Copyright 2012 Google Inc. All Rights Reserved.
+# Author: mrdmnd@ (Matt Redmond)
+# Based off of code in //depot/google3/experimental/mobile_gwp
+"""Code to transport profile data between a user's machine and the CWP servers.
+ Pages:
+ "/": the main page for the app, left blank so that users cannot access
+ the file upload but left in the code for debugging purposes
+ "/upload": Updates the datastore with a new file. the upload depends on
+ the format which is templated on the main page ("/")
+ input includes:
+ profile_data: the zipped file containing profile data
+ board: the architecture we ran on
+ chromeos_version: the chromeos_version
+ "/serve": Lists all of the files in the datastore. Each line is a new entry
+ in the datastore. The format is key~date, where key is the entry's
+ key in the datastore and date is the file upload time and date.
+ (Authentication Required)
+ "/serve/([^/]+)?": For downloading a file of profile data, ([^/]+)? means
+ any character sequence so to download the file go to
+ '/serve/$key' where $key is the datastore key of the file
+ you want to download.
+ (Authentication Required)
+ "/del/([^/]+)?": For deleting an entry in the datastore. To use go to
+ '/del/$key' where $key is the datastore key of the entry
+ you want to be deleted form the datastore.
+ (Authentication Required)
+ TODO: Add more extensive logging"""
+
+import cgi
+import logging
+import md5
+import urllib
+
+from google.appengine.api import users
+from google.appengine.ext import db
+from google.appengine.ext import webapp
+from google.appengine.ext.webapp.util import run_wsgi_app
+
+logging.getLogger().setLevel(logging.DEBUG)
+
+
+class FileEntry(db.Model):
+ profile_data = db.BlobProperty() # The profile data
+ date = db.DateTimeProperty(auto_now_add=True) # Date it was uploaded
+ data_md5 = db.ByteStringProperty() # md5 of the profile data
+ board = db.StringProperty() # board arch
+ chromeos_version = db.StringProperty() # ChromeOS version
+
+
+class MainPage(webapp.RequestHandler):
+ """Main page only used as the form template, not actually displayed."""
+
+ def get(self, response=''): # pylint: disable-msg=C6409
+ if response:
+ self.response.out.write('')
+ self.response.out.write("""
+
+
+ """)
+
+
+class Upload(webapp.RequestHandler):
+ """Handler for uploading data to the datastore, accessible by anyone."""
+
+ def post(self): # pylint: disable-msg=C6409
+ """Takes input based on the main page's form."""
+ getfile = FileEntry()
+ f1 = self.request.get('profile_data')
+ getfile.profile_data = db.Blob(f1)
+ getfile.data_md5 = md5.new(f1).hexdigest()
+ getfile.board = self.request.get('board')
+ getfile.chromeos_version = self.request.get('chromeos_version')
+ getfile.put()
+ self.response.out.write(getfile.key())
+ #self.redirect('/')
+
+
+class ServeHandler(webapp.RequestHandler):
+ """Given the entry's key in the database, output the profile data file. Only
+ accessible from @google.com accounts."""
+
+ def get(self, resource): # pylint: disable-msg=C6409
+ if Authenticate(self):
+ file_key = str(urllib.unquote(resource))
+ request = db.get(file_key)
+ self.response.out.write(request.profile_data)
+
+
+class ListAll(webapp.RequestHandler):
+ """Displays all files uploaded. Only accessible by @google.com accounts."""
+
+ def get(self): # pylint: disable-msg=C6409
+ """Displays all information in FileEntry, ~ delimited."""
+ if Authenticate(self):
+ query_str = 'SELECT * FROM FileEntry ORDER BY date ASC'
+ query = db.GqlQuery(query_str)
+ delimiter = '~'
+
+ for item in query:
+ display_list = [item.key(), item.date, item.data_md5, item.board,
+ item.chromeos_version]
+ str_list = [cgi.escape(str(i)) for i in display_list]
+ self.response.out.write(delimiter.join(str_list) + '')
+
+
+class DelEntries(webapp.RequestHandler):
+ """Deletes entries. Only accessible from @google.com accounts."""
+
+ def get(self, resource): # pylint: disable-msg=C6409
+ """A specific entry is deleted, when the key is given."""
+ if Authenticate(self):
+ fkey = str(urllib.unquote(resource))
+ request = db.get(fkey)
+ if request:
+ db.delete(fkey)
+
+
+def Authenticate(webpage):
+ """Some urls are only accessible if logged in with a @google.com account."""
+ user = users.get_current_user()
+ if user is None:
+ webpage.redirect(users.create_login_url(webpage.request.uri))
+ elif user.email().endswith('@google.com'):
+ return True
+ else:
+ webpage.response.out.write('Not Authenticated')
+ return False
+
+
+def main():
+ application = webapp.WSGIApplication(
+ [
+ ('/', MainPage),
+ ('/upload', Upload),
+ ('/serve/([^/]+)?', ServeHandler),
+ ('/serve', ListAll),
+ ('/del/([^/]+)?', DelEntries),
+ ],
+ debug=False)
+ run_wsgi_app(application)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/cwp/bartlett/static/favicon.ico b/cwp/bartlett/static/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..19b58c2ee07cdc1910a9b01e07c573327743f736
Binary files /dev/null and b/cwp/bartlett/static/favicon.ico differ
diff --git a/cwp/bartlett/test/server_tester.py b/cwp/bartlett/test/server_tester.py
new file mode 100644
index 0000000000000000000000000000000000000000..585da43aec77d9f1416a3d019dad8680c9f7b1cf
--- /dev/null
+++ b/cwp/bartlett/test/server_tester.py
@@ -0,0 +1,101 @@
+# Copyright 2012 Google Inc. All Rights Reserved.
+# Author: mrdmnd@ (Matt Redmond)
+"""A unit test for sending data to Bartlett. Requires poster module."""
+
+import cookielib
+import os
+import signal
+import subprocess
+import tempfile
+import time
+import unittest
+import urllib2
+
+from poster.encode import multipart_encode
+from poster.streaminghttp import register_openers
+
+SERVER_DIR = '../.'
+SERVER_URL = 'http://localhost:8080/'
+GET = '_ah/login?email=googler@google.com&action=Login&continue=%s'
+AUTH_URL = SERVER_URL + GET
+
+
+class ServerTest(unittest.TestCase):
+ """A unit test for the bartlett server. Tests upload, serve, and delete."""
+
+ def setUp(self):
+ """Instantiate the files and server needed to test upload functionality."""
+ self._server_proc = LaunchLocalServer()
+ self._jar = cookielib.LWPCookieJar()
+ self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self._jar))
+
+ # We need these files to not delete when closed, because we have to reopen
+ # them in read mode after we write and close them.
+ self.profile_data = tempfile.NamedTemporaryFile(delete=False)
+
+ size = 16 * 1024
+ self.profile_data.write(os.urandom(size))
+
+ def tearDown(self):
+ self.profile_data.close()
+ os.remove(self.profile_data.name)
+ os.kill(self._server_proc.pid, signal.SIGINT)
+
+ def testIntegration(self): # pylint: disable-msg=C6409
+ key = self._testUpload()
+ self._testListAll()
+ self._testServeKey(key)
+ self._testDelKey(key)
+
+ def _testUpload(self): # pylint: disable-msg=C6409
+ register_openers()
+ data = {'profile_data': self.profile_data,
+ 'board': 'x86-zgb',
+ 'chromeos_version': '2409.0.2012_06_08_1114'}
+ datagen, headers = multipart_encode(data)
+ request = urllib2.Request(SERVER_URL + 'upload', datagen, headers)
+ response = urllib2.urlopen(request).read()
+ self.assertTrue(response)
+ return response
+
+ def _testListAll(self): # pylint: disable-msg=C6409
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'serve'))
+ response = self.opener.open(request).read()
+ self.assertTrue(response)
+
+ def _testServeKey(self, key): # pylint: disable-msg=C6409
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'serve/' + key))
+ response = self.opener.open(request).read()
+ self.assertTrue(response)
+
+ def _testDelKey(self, key): # pylint: disable-msg=C6409
+ # There is no response to a delete request.
+ # We will check the listAll page to ensure there is no data.
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'del/' + key))
+ response = self.opener.open(request).read()
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'serve'))
+ response = self.opener.open(request).read()
+ self.assertFalse(response)
+
+
+def LaunchLocalServer():
+ """Launch and store an authentication cookie with a local server."""
+ proc = subprocess.Popen(
+ ['dev_appserver.py', '--clear_datastore', SERVER_DIR],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ # Wait for server to come up
+ while True:
+ time.sleep(1)
+ try:
+ request = urllib2.Request(SERVER_URL + 'serve')
+ response = urllib2.urlopen(request).read()
+ if response:
+ break
+ except urllib2.URLError:
+ continue
+ return proc
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/cwp/bartlett/update_appengine_server b/cwp/bartlett/update_appengine_server
new file mode 100755
index 0000000000000000000000000000000000000000..f38120572ed2ceedf38ff28a2b51531cf11df4ad
--- /dev/null
+++ b/cwp/bartlett/update_appengine_server
@@ -0,0 +1 @@
+appcfg.py --oauth2 update .
diff --git a/cwp/demo_pipeline.sh b/cwp/demo_pipeline.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d45c5c4466ee9ddd1aa686ef170145521981e441
--- /dev/null
+++ b/cwp/demo_pipeline.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# These should be on the local filesystem. We'll be hitting it hard.
+DATA_DIR=/usr/local/google/home/${USER}/
+SYMBOL_CACHE=${DATA_DIR}cache/
+REPORT_DIR=${DATA_DIR}reports/
+SAMPLE_DIR=${DATA_DIR}samples/
+RECORD_FILE=/tmp/profiles.rio
+COLUMN_FILE=/tmp/profiles.cio
+mkdir -p ${SYMBOL_CACHE}
+mkdir -p ${REPORT_DIR}
+mkdir -p ${SAMPLE_DIR}
+
+# Directory that has the scripts app_engine_pull.py and symbolizer.py
+INTERPRETER_DIR=/google/src/files/p2/head/depot2/gcctools/chromeos/v14/cwp/interpreter/
+V14_DIR=$(dirname $(dirname ${INTERPRETER_DIR}))
+
+PYTHONPATH=$PYTHONPATH:$V14_DIR
+
+# Profile util binary
+PROFILE_UTIL_BINARY=/home/mrdmnd/${USER}-profiledb/google3/blaze-bin/perftools/gwp/chromeos/profile_util
+
+# mr-convert binary
+MR_CONVERT_BINARY=/home/build/static/projects/dremel/mr-convert
+
+CNS_LOC=/cns/ag-d/home/${USER}/profiledb/
+
+# Protofile location
+PROTO_LOC=${CNS_LOC}cwp_profile_db_entry.proto
+
+echo "0. Cleaning up old data."
+rm /tmp/profiles.*
+rm ${REPORT_DIR}*
+rm ${SAMPLE_DIR}*
+
+
+echo "Starting CWP Pipeline..."
+echo "1. Pulling samples to local filesystem from server."
+echo " For demo purposes, UN=${USER}@google.com, PW=xjpbmshkzefutlrm"
+python ${INTERPRETER_DIR}app_engine_pull.py --output_dir=${SAMPLE_DIR}
+echo "2. Symbolizing samples to perf reports. Hold on..."
+
+python ${INTERPRETER_DIR}symbolizer.py --in=${SAMPLE_DIR} --out=${REPORT_DIR} --cache=${SYMBOL_CACHE}
+echo "3. Loading reports into RecordIO format..."
+# Will need to make append_dir more clever / incremental
+${PROFILE_UTIL_BINARY} --record=${RECORD_FILE} --append_dir=${REPORT_DIR}
+echo "Done."
+echo "4. Converting records to columnio."
+${MR_CONVERT_BINARY} --mapreduce_input_map=recordio:${RECORD_FILE} --mapreduce_output_map=${COLUMN_FILE}@1 --columnio_mroutput_message_type=CwpProfileDbEntry --columnio_mroutput_protofiles=${PROTO_LOC}
+echo "5. Uploading columnio to colossus."
+fileutil cp -f /tmp/profiles.cio-* ${CNS_LOC}
+echo "6. Let's try some dremel queries..."
+echo " dremel> define table t /cns/ag-d/home/${USER}/profiledb/profiles.cio-*"
+echo " Like, say, dremel> select sum(frames.count) as count, left(frames.function_name, 80) as name from t group by name order by count desc limit 25;"
+
diff --git a/cwp/interpreter/app_engine_pull.py b/cwp/interpreter/app_engine_pull.py
new file mode 100644
index 0000000000000000000000000000000000000000..d092e2a391d2a789d558dc1225f1b8dab7a72522
--- /dev/null
+++ b/cwp/interpreter/app_engine_pull.py
@@ -0,0 +1,253 @@
+# Copyright 2012 Google Inc. All Rights Reserved.
+# Author: mrdmnd@ (Matt Redmond)
+"""A client to pull data from Bartlett.
+
+Inspired by //depot/google3/experimental/mobile_gwp/database/app_engine_pull.py
+
+The server houses perf.data.gz, board, chrome version for each upload.
+This script first authenticates with a proper @google.com account, then
+downloads a sample (if it's not already cached) and unzips perf.data
+
+ Authenticate(): Gets login info and returns an auth token
+ DownloadSamples(): Download and unzip samples.
+ _GetServePage(): Pulls /serve page from the app engine server
+ _DownloadSampleFromServer(): Downloads a local compressed copy of a sample
+ _UncompressSample(): Decompresses a sample, deleting the compressed version.
+"""
+import cookielib
+import getpass
+import gzip
+import optparse
+import os
+import urllib
+import urllib2
+
+SERVER_NAME = 'http://chromeoswideprofiling.appspot.com'
+APP_NAME = 'chromeoswideprofiling'
+DELIMITER = '~'
+
+
+def Authenticate(server_name):
+ """Gets credentials from user and attempts to retrieve auth token.
+ TODO: Accept OAuth2 instead of password.
+ Args:
+ server_name: (string) URL that the app engine code is living on.
+ Returns:
+ authtoken: (string) The authorization token that can be used
+ to grab other pages.
+ """
+
+ if server_name.endswith('/'):
+ server_name = server_name.rstrip('/')
+ # Grab username and password from user through stdin.
+ username = raw_input('Email (must be @google.com account): ')
+ password = getpass.getpass('Password: ')
+ # Use a cookie to authenticate with GAE.
+ cookiejar = cookielib.LWPCookieJar()
+ opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
+ urllib2.install_opener(opener)
+ # Get an AuthToken from Google accounts service.
+ auth_uri = 'https://www.google.com/accounts/ClientLogin'
+ authreq_data = urllib.urlencode({'Email': username,
+ 'Passwd': password,
+ 'service': 'ah',
+ 'source': APP_NAME,
+ 'accountType': 'HOSTED_OR_GOOGLE'})
+ auth_req = urllib2.Request(auth_uri, data=authreq_data)
+ try:
+ auth_resp = urllib2.urlopen(auth_req)
+ except urllib2.URLError:
+ print 'Error logging in to Google accounts service.'
+ return None
+ body = auth_resp.read()
+ # Auth response contains several fields.
+ # We care about the part after Auth=
+ auth_resp_dict = dict(x.split('=') for x in body.split('\n') if x)
+ authtoken = auth_resp_dict['Auth']
+ return authtoken
+
+
+def DownloadSamples(server_name, authtoken, output_dir, start, stop):
+ """Download every sample and write unzipped version
+ to output directory.
+ Args:
+ server_name: (string) URL that the app engine code is living on.
+ authtoken: (string) Authorization token.
+ output_dir (string) Filepath to write output to.
+ start: (int) Index to start downloading from, starting at top.
+ stop: (int) Index to stop downloading, non-inclusive. -1 for end.
+ Returns:
+ None
+ """
+
+ if server_name.endswith('/'):
+ server_name = server_name.rstrip('/')
+
+ serve_page_string = _GetServePage(server_name, authtoken)
+ if serve_page_string is None:
+ print 'Error getting /serve page.'
+ return
+
+ sample_list = serve_page_string.split('')
+ print 'Will download:'
+ sample_list_subset = sample_list[start:stop]
+ for sample in sample_list_subset:
+ print sample
+ for sample in sample_list_subset:
+ assert sample, 'Sample should be valid.'
+ sample_info = [s.strip() for s in sample.split(DELIMITER)]
+ key = sample_info[0]
+ time = sample_info[1]
+ time = time.replace(' ', '_') # No space between date and time.
+ # sample_md5 = sample_info[2]
+ board = sample_info[3]
+ version = sample_info[4]
+
+ # Put a compressed copy of the samples in output directory.
+ _DownloadSampleFromServer(server_name, authtoken, key, time, board, version,
+ output_dir)
+ _UncompressSample(key, time, board, version, output_dir)
+
+
+def _BuildFilenameFromParams(key, time, board, version):
+ """Return the filename for our sample.
+ Args:
+ key: (string) Key indexing our sample in the datastore.
+ time: (string) Date that the sample was uploaded.
+ board: (string) Board that the sample was taken on.
+ version: (string) Version string from /etc/lsb-release
+ Returns:
+ filename (string)
+ """
+ filename = DELIMITER.join([key, time, board, version])
+ return filename
+
+
+def _DownloadSampleFromServer(server_name, authtoken, key, time, board, version,
+ output_dir):
+ """Downloads sample_$(samplekey).gz to current dir.
+ Args:
+ server_name: (string) URL that the app engine code is living on.
+ authtoken: (string) Authorization token.
+ key: (string) Key indexing our sample in the datastore
+ time: (string) Date that the sample was uploaded.
+ board: (string) Board that the sample was taken on.
+ version: (string) Version string from /etc/lsb-release
+ output_dir: (string) Filepath to write to output to.
+ Returns:
+ None
+ """
+ filename = _BuildFilenameFromParams(key, time, board, version)
+ compressed_filename = filename + '.gz'
+
+ if os.path.exists(os.path.join(output_dir, filename)):
+ print 'Already downloaded %s, skipping.' % filename
+ return
+
+ serv_uri = server_name + '/serve/' + key
+ serv_args = {'continue': serv_uri, 'auth': authtoken}
+ full_serv_uri = server_name + '/_ah/login?%s' % urllib.urlencode(serv_args)
+ serv_req = urllib2.Request(full_serv_uri)
+ serv_resp = urllib2.urlopen(serv_req)
+ f = open(os.path.join(output_dir, compressed_filename), 'w+')
+ f.write(serv_resp.read())
+ f.close()
+
+
+def _UncompressSample(key, time, board, version, output_dir):
+ """Uncompresses a given sample.gz file and deletes the compressed version.
+ Args:
+ key: (string) Sample key to uncompress.
+ time: (string) Date that the sample was uploaded.
+ board: (string) Board that the sample was taken on.
+ version: (string) Version string from /etc/lsb-release
+ output_dir: (string) Filepath to find sample key in.
+ Returns:
+ None
+ """
+ filename = _BuildFilenameFromParams(key, time, board, version)
+ compressed_filename = filename + '.gz'
+
+ if os.path.exists(os.path.join(output_dir, filename)):
+ print 'Already decompressed %s, skipping.' % filename
+ return
+
+ out_file = open(os.path.join(output_dir, filename), 'wb')
+ in_file = gzip.open(os.path.join(output_dir, compressed_filename), 'rb')
+ out_file.write(in_file.read())
+ in_file.close()
+ out_file.close()
+ os.remove(os.path.join(output_dir, compressed_filename))
+
+
+def _DeleteSampleFromServer(server_name, authtoken, key):
+ """Opens the /delete page with the specified key
+ to delete the sample off the datastore.
+ Args:
+ server_name: (string) URL that the app engine code is living on.
+ authtoken: (string) Authorization token.
+ key: (string) Key to delete.
+ Returns:
+ None
+ """
+
+ serv_uri = server_name + '/del/' + key
+ serv_args = {'continue': serv_uri, 'auth': authtoken}
+ full_serv_uri = server_name + '/_ah/login?%s' % urllib.urlencode(serv_args)
+ serv_req = urllib2.Request(full_serv_uri)
+ urllib2.urlopen(serv_req)
+
+
+def _GetServePage(server_name, authtoken):
+ """Opens the /serve page and lists all keys.
+ Args:
+ server_name: (string) URL the app engine code is living on.
+ authtoken: (string) Authorization token.
+ Returns:
+ The text of the /serve page (including HTML tags)
+ """
+
+ serv_uri = server_name + '/serve'
+ serv_args = {'continue': serv_uri, 'auth': authtoken}
+ full_serv_uri = server_name + '/_ah/login?%s' % urllib.urlencode(serv_args)
+ serv_req = urllib2.Request(full_serv_uri)
+ serv_resp = urllib2.urlopen(serv_req)
+ return serv_resp.read()
+
+
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option('--output_dir',
+ dest='output_dir',
+ action='store',
+ help='Path to output perf data files.')
+ parser.add_option('--start',
+ dest='start_ind',
+ action='store',
+ default=0,
+ help='Start index.')
+ parser.add_option('--stop',
+ dest='stop_ind',
+ action='store',
+ default=-1,
+ help='Stop index.')
+ options = parser.parse_args()[0]
+ if not options.output_dir:
+ print 'Must specify --output_dir.'
+ return 1
+ if not os.path.exists(options.output_dir):
+ print 'Specified output_dir does not exist.'
+ return 1
+
+ authtoken = Authenticate(SERVER_NAME)
+ if not authtoken:
+ print 'Could not obtain authtoken, exiting.'
+ return 1
+ DownloadSamples(SERVER_NAME, authtoken, options.output_dir, options.start_ind,
+ options.stop_ind)
+ print 'Downloaded samples.'
+ return 0
+
+
+if __name__ == '__main__':
+ exit(main())
diff --git a/cwp/interpreter/symbolizer.py b/cwp/interpreter/symbolizer.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ece480d2ae64e5b18c14f3d6655c2c305593b9c
--- /dev/null
+++ b/cwp/interpreter/symbolizer.py
@@ -0,0 +1,129 @@
+# Copyright 2012 Google Inc. All Rights Reserved.
+"""A script that symbolizes perf.data files."""
+import optparse
+import os
+import shutil
+from subprocess import call
+from subprocess import PIPE
+from subprocess import Popen
+from cros_utils import misc
+
+GSUTIL_CMD = 'gsutil cp gs://chromeos-image-archive/%s-release/%s/debug.tgz %s'
+TAR_CMD = 'tar -zxvf %s -C %s'
+PERF_BINARY = '/google/data/ro/projects/perf/perf'
+VMLINUX_FLAG = ' --vmlinux=/usr/lib/debug/boot/vmlinux'
+PERF_CMD = PERF_BINARY + ' report -i %s -n --symfs=%s' + VMLINUX_FLAG
+
+
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option('--in', dest='in_dir')
+ parser.add_option('--out', dest='out_dir')
+ parser.add_option('--cache', dest='cache')
+ (opts, _) = parser.parse_args()
+ if not _ValidateOpts(opts):
+ return 1
+ else:
+ for filename in os.listdir(opts.in_dir):
+ try:
+ _DownloadSymbols(filename, opts.cache)
+ _PerfReport(filename, opts.in_dir, opts.out_dir, opts.cache)
+ except:
+ print 'Exception caught. Continuing...'
+ return 0
+
+
+def _ValidateOpts(opts):
+ """Ensures all directories exist, before attempting to populate."""
+ if not os.path.exists(opts.in_dir):
+ print "Input directory doesn't exist."
+ return False
+ if not os.path.exists(opts.out_dir):
+ print "Output directory doesn't exist. Creating it..."
+ os.makedirs(opts.out_dir)
+ if not os.path.exists(opts.cache):
+ print "Cache directory doesn't exist."
+ return False
+ return True
+
+
+def _ParseFilename(filename, canonical=False):
+ """Returns a tuple (key, time, board, lsb_version).
+ If canonical is True, instead returns (database_key, board, canonical_vers)
+ canonical_vers includes the revision string.
+ """
+ key, time, board, vers = filename.split('~')
+ if canonical:
+ vers = misc.GetChromeOSVersionFromLSBVersion(vers)
+ return (key, time, board, vers)
+
+
+def _FormReleaseDir(board, version):
+ return '%s-release~%s' % (board, version)
+
+
+def _DownloadSymbols(filename, cache):
+ """ Incrementally downloads appropriate symbols.
+ We store the downloads in cache, with each set of symbols in a TLD
+ named like cache/$board-release~$canonical_vers/usr/lib/debug
+ """
+ _, _, board, vers = _ParseFilename(filename, canonical=True)
+ tmp_suffix = '.tmp'
+
+ tarball_subdir = _FormReleaseDir(board, vers)
+ tarball_dir = os.path.join(cache, tarball_subdir)
+ tarball_path = os.path.join(tarball_dir, 'debug.tgz')
+
+ symbol_subdir = os.path.join('usr', 'lib')
+ symbol_dir = os.path.join(tarball_dir, symbol_subdir)
+
+ if os.path.isdir(symbol_dir):
+ print 'Symbol directory %s exists, skipping download.' % symbol_dir
+ return
+ else:
+ # First download using gsutil.
+ if not os.path.isfile(tarball_path):
+ download_cmd = GSUTIL_CMD % (board, vers, tarball_path + tmp_suffix)
+ print 'Downloading symbols for %s' % filename
+ print download_cmd
+ ret = call(download_cmd.split())
+ if ret != 0:
+ print 'gsutil returned non-zero error code: %s.' % ret
+ # Clean up the empty directory structures.
+ os.remove(tarball_path + tmp_suffix)
+ raise IOError
+
+ shutil.move(tarball_path + tmp_suffix, tarball_path)
+
+ # Next, untar the tarball.
+ os.makedirs(symbol_dir + tmp_suffix)
+ extract_cmd = TAR_CMD % (tarball_path, symbol_dir + tmp_suffix)
+ print 'Extracting symbols for %s' % filename
+ print extract_cmd
+ ret = call(extract_cmd.split())
+ if ret != 0:
+ print 'tar returned non-zero code: %s.' % ret
+ raise IOError
+ shutil.move(symbol_dir + tmp_suffix, symbol_dir)
+ os.remove(tarball_path)
+
+
+def _PerfReport(filename, in_dir, out_dir, cache):
+ """ Call perf report on the file, storing output to the output dir.
+ The output is currently stored as $out_dir/$filename
+ """
+ _, _, board, vers = _ParseFilename(filename, canonical=True)
+ symbol_cache_tld = _FormReleaseDir(board, vers)
+ input_file = os.path.join(in_dir, filename)
+ symfs = os.path.join(cache, symbol_cache_tld)
+ report_cmd = PERF_CMD % (input_file, symfs)
+ print 'Reporting.'
+ print report_cmd
+ report_proc = Popen(report_cmd.split(), stdout=PIPE)
+ outfile = open(os.path.join(out_dir, filename), 'w')
+ outfile.write(report_proc.stdout.read())
+ outfile.close()
+
+
+if __name__ == '__main__':
+ exit(main())
diff --git a/cwp/performance/experiment_gen.py b/cwp/performance/experiment_gen.py
new file mode 100644
index 0000000000000000000000000000000000000000..a12da2c5382ea10b04e16c236bfdd2c18fec1c7e
--- /dev/null
+++ b/cwp/performance/experiment_gen.py
@@ -0,0 +1,138 @@
+# Copyright 2012 Google Inc. All Rights Reserved.
+"""This script generates a crosperf overhead-testing experiment file for MoreJS.
+
+Use: experiment_gen.py --crosperf=/home/mrdmnd/depot2/crosperf --chromeos_root=
+/home/mrdmnd/chromiumos --remote-host=chromeos-zgb3.mtv --board=x86-zgb --event=
+cycles -F 10 -F 20 -c 10582 -c 10785211 --perf_options="-g"
+"""
+
+import optparse
+import subprocess
+import sys
+import time
+
+HEADER = """
+board: %s
+remote: %s
+benchmark: baseline {
+ iterations: %s
+ autotest_name: desktopui_PyAutoPerfTests
+ autotest_args: --args='--iterations=%s perf.PageCyclerTest.testMoreJSFile'
+}"""
+
+EXPERIMENT = """
+benchmark: %s {
+ iterations: %s
+ autotest_name: desktopui_PyAutoPerfTests
+ autotest_args: --args='--iterations=%s perf.PageCyclerTest.testMoreJSFile' --profiler=custom_perf --profiler_args='perf_options="record -a %s %s -e %s"' \n}""" # pylint: disable-msg=C6310
+
+DEFAULT_IMAGE = """
+default {
+ chromeos_image: %s/src/build/images/%s/latest/chromiumos_test_image.bin
+}"""
+
+
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option('--crosperf',
+ dest='crosperf_root',
+ action='store',
+ default='/home/mrdmnd/depot2/crosperf',
+ help='Crosperf root directory.')
+ parser.add_option('--chromeos_root',
+ dest='chromeos_root',
+ action='store',
+ default='/home/mrdmnd/chromiumos',
+ help='ChromiumOS root directory.')
+ parser.add_option('--remote',
+ dest='remote',
+ action='store',
+ help='Host to run test on. Required.')
+ parser.add_option('--board',
+ dest='board',
+ action='store',
+ help='Board architecture to run on. Required.')
+ parser.add_option('--event',
+ dest='event',
+ action='store',
+ help='Event to profile. Required.')
+ parser.add_option('-F',
+ dest='sampling_frequencies',
+ action='append',
+ help='A target frequency to sample at.')
+ parser.add_option('-c',
+ dest='sampling_periods',
+ action='append',
+ help='A target period to sample at. Event specific.')
+ parser.add_option('--benchmark-iterations',
+ dest='benchmark_iterations',
+ action='store',
+ default=4,
+ help='Number of benchmark iters')
+ parser.add_option('--test-iterations',
+ dest='test_iterations',
+ action='store',
+ default=10,
+ help='Number of test iters')
+ parser.add_option('-p',
+ dest='print_only',
+ action='store_true',
+ help='If enabled, will print experiment file and exit.')
+ parser.add_option('--perf_options',
+ dest='perf_options',
+ action='store',
+ help='Arbitrary flags to perf. Surround with dblquotes.')
+ options = parser.parse_args()[0]
+ if options.remote is None:
+ print '%s requires a remote hostname.' % sys.argv[0]
+ return 1
+ elif options.board is None:
+ print '%s requires a target board.' % sys.argv[0]
+ return 1
+ elif options.event is None:
+ print '%s requires an event to profile.' % sys.argv[0]
+ return 1
+ else:
+ crosperf_root = options.crosperf_root
+ chromeos_root = options.chromeos_root
+ remote = options.remote
+ board = options.board
+ event = options.event
+ bench_iters = options.benchmark_iterations
+ test_iters = options.test_iterations
+ perf_opts = options.perf_options
+ # Set up baseline test.
+ experiment_file = HEADER % (board, remote, bench_iters, test_iters)
+ # Set up experimental tests.
+ if options.sampling_frequencies:
+ for freq in options.sampling_frequencies:
+ test_string = str(freq) + 'Freq'
+ experiment_file += EXPERIMENT % (test_string, bench_iters, test_iters,
+ '-F %s' % freq, '' if perf_opts is None
+ else perf_opts, event)
+ if options.sampling_periods:
+ for period in options.sampling_periods:
+ test_string = str(period) + 'Period'
+ experiment_file += EXPERIMENT % (
+ test_string, bench_iters, test_iters, '-c %s' % period, '' if
+ perf_opts is None else perf_opts, event)
+ # Point to the target image.
+ experiment_file += DEFAULT_IMAGE % (chromeos_root, board)
+ if options.print_only:
+ print experiment_file
+ else:
+ current_time = int(round(time.time() * 1000))
+ file_name = 'perf_overhead_%s' % str(current_time)
+ with open(file_name, 'w') as f:
+ f.write(experiment_file)
+ try:
+ process = subprocess.Popen(['%s/crosperf' % crosperf_root, file_name])
+ process.communicate()
+ except OSError:
+ print 'Could not find crosperf, make sure --crosperf flag is set right.'
+ return 1
+ return 0
+
+
+if __name__ == '__main__':
+ exit(main())
diff --git a/dejagnu/__init__.py b/dejagnu/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/dejagnu/__init__.py
@@ -0,0 +1 @@
+
diff --git a/dejagnu/boards/chromeos-machine.exp b/dejagnu/boards/chromeos-machine.exp
new file mode 100644
index 0000000000000000000000000000000000000000..b168b677769ba2f7b9e6d9920f82d9c50022b537
--- /dev/null
+++ b/dejagnu/boards/chromeos-machine.exp
@@ -0,0 +1,13 @@
+# Base description of a unix machine. This includes remote execution logic
+# through SSH
+
+load_base_board_description "unix"
+
+# Set hostname and username. # Make sure SSH keys are set up prior to run.
+set_board_info hostname $env(DEJAGNU_HOSTNAME)
+set_board_info username root
+
+set_board_info shell_prompt "dejagnu>"
+set chromeos_ssh_opts "-t -o StrictHostKeyChecking=no -o UserKnownHostsFile=/tmp/chromeos-toolchain/known_hosts -o ControlPath=/tmp/chromeos-toolchain/%r@%h:%p -i /tmp/chromeos-toolchain/private_key"
+set_board_info rsh_prog "alarm 40 /usr/bin/ssh ${chromeos_ssh_opts}"
+set_board_info rcp_prog "alarm 40 /usr/bin/scp ${chromeos_ssh_opts}"
diff --git a/dejagnu/boards/gdb.exp.in b/dejagnu/boards/gdb.exp.in
new file mode 100644
index 0000000000000000000000000000000000000000..e4bbab39e75288fead258d66c9be55c5aaff3313
--- /dev/null
+++ b/dejagnu/boards/gdb.exp.in
@@ -0,0 +1,133 @@
+# Copyright 2011-2012 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 .
+
+# This file is a dejagnu "board file" and is used to run the testsuite
+# natively with gdbserver.
+#
+# To use this file:
+# bash$ touch ${my_dejagnu_dir}/my-dejagnu.exp
+# bash$ export DEJAGNU=${my_dejagnu_dir}/my-dejagnu.exp
+# bash$ mkdir ${my_dejagnu_dir}/boards
+# bash$ cp ${src_dir}/gdb/testsuite/boards/native-gdbserver.exp \
+# ${my_dejagnu_dir}/boards
+# bash$ cd ${build_dir}/gdb
+# bash$ make check RUNTESTFLAGS="--target_board=native-gdbserver"
+
+load_generic_config "gdbserver"
+process_multilib_options ""
+
+# The default compiler for this target.
+set_board_info compiler "[find_gcc]"
+
+set_board_info cflags "-fno-stack-protector"
+set_board_info cxxflags "-fno-stack-protector"
+
+set remote_directory "/tmp"
+set chrome_device_ip __board_hostname__
+
+# This gdbserver can only run a process once per session.
+set_board_info gdb,do_reload_on_run 1
+
+# There's no support for argument-passing (yet).
+set_board_info noargs 1
+
+# Can't do input (or output) in the current gdbserver.
+set_board_info gdb,noinferiorio 1
+
+# gdbserver does not intercept target file operations and perform them
+# on the host.
+set_board_info gdb,nofileio 1
+
+#set_board_info sockethost "localhost:"
+set_board_info use_gdb_stub 1
+
+# We will be using the standard GDB remote protocol.
+set_board_info gdb_protocol "remote"
+
+# Test the copy of gdbserver in the build directory.
+# set_board_info gdb_server_prog "../gdbserver/gdbserver"
+
+# Can't do hardware watchpoints, in general (it depends on gdbserver support for your target arch)
+set_board_info gdb,no_hardware_watchpoints 1
+
+#Can't do record
+set_board_info gdb,use_precord 0
+set_board_info gdb,can_reverse 0
+
+
+set gdb_test_timeout 100
+set_board_info timeout 100
+
+set_board_info ssh,options "-i __tmp_testing_rsa__ -o ControlMaster=auto -o ControlPath=__tmp_dir__/%r@%h:%p -o StrictHostKeyChecking=no"
+
+set_board_info gdb_server_prog "__tmp_dir__/boards/gdbserver.sh "
+set_board_info sockethost "__board_hostname__:"
+set_board_info protocol standard
+set_board_info gdb,socketport "1234"
+
+
+proc ${board}_spawn { board cmd } {
+ global board_info
+
+ set baseboard [lindex [split $board "/"] 0]
+
+ set board_info($baseboard,isremote) 0
+ set result [remote_spawn $board $cmd]
+ set board_info($baseboard,isremote) 1
+
+ return $result
+}
+
+proc ${board}_exec { hostname program args } {
+ global board_info
+ verbose -log "$hostname $program $args"
+ set baseboard [lindex [split $hostname "/"] 0]
+
+ set board_info($baseboard,isremote) 0
+ set result [remote_exec $hostname $program $args]
+ set board_info($baseboard,isremote) 1
+
+ return $result
+}
+
+proc ${board}_download { board host dest } {
+ verbose -log "chrome_download $board $host $dest"
+ global board_info
+ set ssh_options [board_info $board ssh,options]
+
+ global chrome_device_ip remote_directory remote_file
+
+ verbose -log "scp -q $ssh_options $host root@$chrome_device_ip:$remote_directory/$dest"
+ set status [catch "exec scp -q $ssh_options $host root@$chrome_device_ip:$remote_directory/$dest" output]
+
+ if { $status == 0 } {
+ verbose -log "Copied $host to $remote_directory/$dest" 2
+ return "$remote_directory/$dest"
+ } else{
+ verbose -log "Download to $dest failed, $output." 2
+ return ""
+ }
+}
+
+proc ${board}_file { dest op args } {
+ if { $op == "delete" } {
+ return 0
+ }
+ return [eval [list standard_file $dest $op] $args]
+}
+
+proc skip_shlid_tests {} {
+ return 1
+}
diff --git a/dejagnu/boards/gdbserver.sh.in b/dejagnu/boards/gdbserver.sh.in
new file mode 100644
index 0000000000000000000000000000000000000000..b74c685c67d226227944d53795d05a6deeef6384
--- /dev/null
+++ b/dejagnu/boards/gdbserver.sh.in
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+REMOTE_SSH_FLAGS="-i __tmp_testing_rsa__ -o StrictHostKeyChecking=no -o CheckHostIP=no -o BatchMode=yes -o ControlMaster=auto -o ControlPath=__tmp_dir__/%r@%h:%p"
+FLAGS_remote=__board_hostname__
+
+gdbserver_cmd="/usr/local/bin/gdbserver $1 $2 $3"
+ssh_cmd="nohup ${gdbserver_cmd} "
+
+echo "Executing: ssh ${RSA_FILE} ${REMOTE_SSH_FLAGS} root@${FLAGS_remote} \"${ssh_cmd}\"" >&2
+
+ssh ${REMOTE_SSH_FLAGS} root@${FLAGS_remote} "killall -9 gdbserver; ${ssh_cmd}"
+
diff --git a/dejagnu/chromeos.exp.in b/dejagnu/chromeos.exp.in
new file mode 100644
index 0000000000000000000000000000000000000000..02fc3af2de4d04fad02a53828414a3d054a40adf
--- /dev/null
+++ b/dejagnu/chromeos.exp.in
@@ -0,0 +1,175 @@
+#
+# Initialize the board. The function is executed before any test.
+#
+proc __boardname___init { board } {
+ set hostname [board_info $board hostname]
+ set timeout [board_info $board timeout]
+ set ssh_options [board_info $board ssh,options]
+ set runtimes [board_info $board runtimes]
+ set tmpdir [board_info $board tmpdir]
+ verbose -log "Opening persistent connection ..." 1
+ eval "exec ssh -N -f $ssh_options root@$hostname &"
+ local_exec "ssh -n $ssh_options root@$hostname sh -c 'mkdir -p $tmpdir'" \
+ {} {} $timeout
+}
+
+#
+# Remove test run by-products. The function is executed at DejaGNU exit.
+#
+proc __boardname___exit {} {
+ set board "__boardname__"
+ set hostname [board_info $board hostname]
+ set ssh_options [board_info $board ssh,options]
+ set tmpdir [board_info $board tmpdir]
+ verbose -log "Closing persistent connection ..." 1
+ local_exec "ssh $ssh_options -O exit root@$hostname" {} {} 10
+ verbose -log "Cleaning up - executing on board 'rm -fr $tmpdir' ..." 1
+ local_exec "ssh -n $ssh_options root@$hostname sh -c 'rm -fr $tmpdir'" \
+ {} {} 10
+}
+
+#
+# Upload a file to the board. Uses scp over persistent SSH connection.
+#
+proc __boardname___download { board file args } {
+ set hostname [board_info $board hostname]
+ set tmpdir [board_info $board tmpdir]
+ set timeout [board_info $board timeout]
+ set ssh_options [board_info $board ssh,options]
+ set destfile [lindex [file split $file] end]
+ verbose -log "scp -q $ssh_options $file root@$hostname:$tmpdir/"
+ set result [local_exec "scp -q $ssh_options $file root@$hostname:$tmpdir/" \
+ {} {} $timeout]
+ if { [lindex $result 0] != 0 } {
+ verbose -log "failed to upload \'$file\' to \'$tmpdir/$destfile\'"
+ } else {
+ verbose -log "uploaded \"$file\' to remote board@\'$tmpdir/$destfile\'"
+ return "$tmpdir/$destfile"
+ }
+}
+
+#
+# Download a file to the host machine. Uses scp over persistent SSH connection.
+#
+proc __boardname___upload { board file args } {
+ set hostname [board_info $board hostname]
+ set tmpdir [board_info $board tmpdir]
+ set timeout [board_info $board timeout]
+ set ssh_options [board_info $board ssh,options]
+ set filen [file tail $file]
+ verbose -log "scp -q $ssh_options \"root@$hostname:$tmpdir/$filen\" ."
+ set result [local_exec \
+ "scp -q $ssh_options \"root@$hostname:$tmpdir/$filen\" ." \
+ {} {} $timeout]
+ if { [lindex $result 0] != 0 } {
+ verbose -log \
+ "failed to transfer \"root@$hostname:$tmpdir/$filen\" to \".\""
+ } else {
+ verbose -log "transferred \"root@$hostname:$tmpdir/$filen\" to \".\""
+ # In case of success, always return the original file.
+ return "$file"
+ }
+}
+
+#
+# Cache program output within different invoking of __boardname___exec.
+# For example, the following command sequence will be executed
+# > cd /tmp/dejagnu_xxxx/ && ./xxx.x0
+#
+# return [0, ] (a)
+# > rm /tmp/dejagnu_xxxx/xxxx.x0
+#
+# return [0, ] (b)
+# We need , not . What we do here is to keep in
+# $program_output and in (b) we return [0, ].
+#
+set program_output ""
+
+#
+# Execute a test on remote machine. Log into the target machine using
+# persistent SSH connection and run a command in modified environment.
+#
+proc __boardname___exec { board program args } {
+ global program_output
+ if { [llength $args] > 0 } {
+ set pargs [lindex $args 0]
+ } else {
+ set pargs ""
+ }
+
+ if { [llength $args] > 1 } {
+ set inp "[lindex $args 1]"
+ } else {
+ set inp ""
+ }
+
+ if { [llength $args] > 2 } {
+ set outp "[lindex $args 2]"
+ } else {
+ set outp ""
+ }
+
+ if { [llength $args] > 3 } {
+ set timeout "[lindex $args 3]"
+ } else {
+ set timeout [board_info $board timeout]
+ }
+
+ set hostname [board_info $board hostname]
+ set tmpdir [board_info $board tmpdir]
+ set other_file ""
+
+ # Check if a file to be executed was copied from host machine. If so, we
+ # need to run it in copied runtimes.
+ set is_program "0"
+ if { [string match "$tmpdir/*" $program] } {
+ set path [file dirname $program]
+ # "$program" would usually be like "/x/y/z.out", set command to be "z.out".
+ set command [file tail $program]
+ set rootname [file rootname $command]
+ # TODO(shenhan): using rsync to copy all test case relatd stuff to host
+ # machine in case ".o" files are different from the exe files.
+ set other_file [file join $path "${rootname}.*"]
+ # Change directory to "/x/y", then execute "./z.out" - we want the working
+ # directory to be "/x/y". Setting GCOV_PREFIX_STRIP and GCOV_PREFIX is to
+ # force generating ".gcda" file under "/x/y" instead of some host path.
+ set program "cd $path && GCOV_PREFIX_STRIP=999 GCOV_PREFIX=$tmpdir/ \
+ [file join "." $command]"
+ set is_program "1"
+ }
+ verbose -log "Exec: $program"
+ set ssh_options [board_info $board ssh,options]
+ set retv [local_exec \
+ "ssh -n $ssh_options root@$hostname sh -c '$program $pargs'" \
+ $inp $outp $timeout]
+ set status [lindex $retv 0]
+ if { $is_program == "1" } {
+ set program_output [lindex $retv 1]
+ }
+
+ # Before returning the execution status, we try to transfer the ".gcda"
+ # (and/or other files that have the same base name as the program) file to
+ # host, though for every program that runs, there is no corresponding "other"
+ # file. We have no idea when such an other file will be generated for the
+ # program, so every time, we assume there is an "other" file and try to do the
+ # transfer.
+ if { $status == 0 && $other_file != "" } {
+ set upv [${board}_upload $board $other_file ""]
+ if { $upv == "" } {
+ verbose -log "Safely ignored - \"$other_file\" does not exist."
+ }
+ }
+
+ return [list $status $program_output]
+}
+
+load_generic_config "unix"
+load_base_board_description "linux-libremote"
+
+set_board_info hostname "__board_hostname__"
+set_board_info tmpdir "__tmp_dir__"
+
+set_board_info isremote 1
+set_board_info timeout 60
+set_board_info ssh,options "-i __tmp_testing_rsa__ -o ControlMaster=auto \
+-o ControlPath=__tmp_dir__/%r@%h:%p -o StrictHostKeyChecking=no "
diff --git a/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi b/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi
new file mode 100644
index 0000000000000000000000000000000000000000..e94a790565865a360f0f6e52df0927675e4b3812
--- /dev/null
+++ b/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi
@@ -0,0 +1,19079 @@
+Test Run By yunlian on Mon Dec 30 11:13:13 2013
+Target is armv7a-cros-linux-gnueabi
+
+ === gdb tests ===
+
+Schedule of variations:
+ daisy
+
+Running target daisy
+Running ./gdb.ada/aliased_array.exp ...
+UNSUPPORTED: gdb.ada/aliased_array.exp: compilation foo.adb
+Running ./gdb.ada/array_bounds.exp ...
+UNSUPPORTED: gdb.ada/array_bounds.exp: compilation bar.adb
+Running ./gdb.ada/arrayidx.exp ...
+UNSUPPORTED: gdb.ada/arrayidx.exp: compilation p.adb
+Running ./gdb.ada/arrayparam.exp ...
+UNSUPPORTED: gdb.ada/arrayparam.exp: compilation foo.adb
+Running ./gdb.ada/arrayptr.exp ...
+UNSUPPORTED: gdb.ada/arrayptr.exp: compilation foo.adb
+Running ./gdb.ada/array_return.exp ...
+UNSUPPORTED: gdb.ada/array_return.exp: compilation p.adb
+Running ./gdb.ada/array_subscript_addr.exp ...
+UNSUPPORTED: gdb.ada/array_subscript_addr.exp: compilation p.adb
+Running ./gdb.ada/assign_1.exp ...
+PASS: gdb.ada/assign_1.exp: Changing the language to ada
+PASS: gdb.ada/assign_1.exp: set convenience variable $xxx to 1
+Running ./gdb.ada/atomic_enum.exp ...
+UNSUPPORTED: gdb.ada/atomic_enum.exp: compilation foo.adb
+Running ./gdb.ada/bad-task-bp-keyword.exp ...
+UNSUPPORTED: gdb.ada/bad-task-bp-keyword.exp: compilation foo.adb
+Running ./gdb.ada/boolean_expr.exp ...
+PASS: gdb.ada/boolean_expr.exp: Changing the language to ada
+PASS: gdb.ada/boolean_expr.exp: print 1 = 2
+PASS: gdb.ada/boolean_expr.exp: print 3 = 3
+Running ./gdb.ada/bp_enum_homonym.exp ...
+UNSUPPORTED: gdb.ada/bp_enum_homonym.exp: compilation p.adb
+Running ./gdb.ada/bp_on_var.exp ...
+UNSUPPORTED: gdb.ada/bp_on_var.exp: compilation foo.adb
+Running ./gdb.ada/bp_range_type.exp ...
+UNSUPPORTED: gdb.ada/bp_range_type.exp: compilation foo.adb
+Running ./gdb.ada/bp_reset.exp ...
+UNSUPPORTED: gdb.ada/bp_reset.exp: compilation foo.adb
+Running ./gdb.ada/call_pn.exp ...
+UNSUPPORTED: gdb.ada/call_pn.exp: compilation foo.adb
+Running ./gdb.ada/catch_ex.exp ...
+UNSUPPORTED: gdb.ada/catch_ex.exp: compilation foo.adb
+Running ./gdb.ada/char_enum.exp ...
+UNSUPPORTED: gdb.ada/char_enum.exp: compilation foo.adb
+Running ./gdb.ada/char_param.exp ...
+UNSUPPORTED: gdb.ada/char_param.exp: compilation foo.adb
+Running ./gdb.ada/complete.exp ...
+UNSUPPORTED: gdb.ada/complete.exp: compilation foo.adb
+Running ./gdb.ada/cond_lang.exp ...
+UNSUPPORTED: gdb.ada/cond_lang.exp: compilation a.adb
+Running ./gdb.ada/dyn_loc.exp ...
+UNSUPPORTED: gdb.ada/dyn_loc.exp: compilation p.adb
+Running ./gdb.ada/enum_idx_packed.exp ...
+UNSUPPORTED: gdb.ada/enum_idx_packed.exp: compilation foo.adb
+Running ./gdb.ada/exec_changed.exp ...
+UNTESTED: gdb.ada/exec_changed.exp: exec_changed.exp
+Running ./gdb.ada/expr_delims.exp ...
+UNSUPPORTED: gdb.ada/expr_delims.exp: compilation foo.adb
+Running ./gdb.ada/exprs.exp ...
+UNSUPPORTED: gdb.ada/exprs.exp: compilation p.adb
+Running ./gdb.ada/fixed_cmp.exp ...
+UNSUPPORTED: gdb.ada/fixed_cmp.exp: compilation fixed.adb
+Running ./gdb.ada/fixed_points.exp ...
+UNSUPPORTED: gdb.ada/fixed_points.exp: compilation fixed_points.adb
+Running ./gdb.ada/formatted_ref.exp ...
+UNSUPPORTED: gdb.ada/formatted_ref.exp: compilation formatted_ref.adb
+UNTESTED: gdb.ada/formatted_ref.exp: formatted-ref.exp
+Running ./gdb.ada/frame_args.exp ...
+UNSUPPORTED: gdb.ada/frame_args.exp: compilation foo.adb
+Running ./gdb.ada/fullname_bp.exp ...
+UNSUPPORTED: gdb.ada/fullname_bp.exp: compilation foo.adb
+Running ./gdb.ada/fun_addr.exp ...
+UNSUPPORTED: gdb.ada/fun_addr.exp: compilation foo.adb
+Running ./gdb.ada/funcall_param.exp ...
+UNSUPPORTED: gdb.ada/funcall_param.exp: compilation foo.adb
+Running ./gdb.ada/fun_in_declare.exp ...
+UNSUPPORTED: gdb.ada/fun_in_declare.exp: compilation foo.adb
+Running ./gdb.ada/homonym.exp ...
+UNSUPPORTED: gdb.ada/homonym.exp: compilation homonym_main.adb
+Running ./gdb.ada/info_locals_renaming.exp ...
+UNSUPPORTED: gdb.ada/info_locals_renaming.exp: compilation foo.adb
+Running ./gdb.ada/info_types.exp ...
+PASS: gdb.ada/info_types.exp: set lang ada
+PASS: gdb.ada/info_types.exp: info types new_integer_type
+Running ./gdb.ada/int_deref.exp ...
+UNSUPPORTED: gdb.ada/int_deref.exp: compilation foo.adb
+Running ./gdb.ada/interface.exp ...
+UNSUPPORTED: gdb.ada/interface.exp: compilation foo.adb
+Running ./gdb.ada/iwide.exp ...
+UNSUPPORTED: gdb.ada/iwide.exp: compilation p.adb
+Running ./gdb.ada/lang_switch.exp ...
+UNSUPPORTED: gdb.ada/lang_switch.exp: compilation lang_switch.adb
+Running ./gdb.ada/mi_catch_ex.exp ...
+UNSUPPORTED: gdb.ada/mi_catch_ex.exp: compilation foo.adb
+Running ./gdb.ada/mi_task_arg.exp ...
+UNSUPPORTED: gdb.ada/mi_task_arg.exp: compilation task_switch.adb
+Running ./gdb.ada/mi_task_info.exp ...
+UNSUPPORTED: gdb.ada/mi_task_info.exp: compilation task_switch.adb
+Running ./gdb.ada/mod_from_name.exp ...
+UNSUPPORTED: gdb.ada/mod_from_name.exp: compilation foo.adb
+Running ./gdb.ada/nested.exp ...
+UNSUPPORTED: gdb.ada/nested.exp: compilation hello.adb
+Running ./gdb.ada/null_array.exp ...
+UNSUPPORTED: gdb.ada/null_array.exp: compilation foo.adb
+Running ./gdb.ada/null_record.exp ...
+UNSUPPORTED: gdb.ada/null_record.exp: compilation null_record.adb
+Running ./gdb.ada/operator_bp.exp ...
+UNSUPPORTED: gdb.ada/operator_bp.exp: compilation ops_test.adb
+Running ./gdb.ada/optim_drec.exp ...
+UNSUPPORTED: gdb.ada/optim_drec.exp: compilation foo.adb
+Running ./gdb.ada/packed_array.exp ...
+UNSUPPORTED: gdb.ada/packed_array.exp: compilation pa.adb
+Running ./gdb.ada/packed_tagged.exp ...
+UNSUPPORTED: gdb.ada/packed_tagged.exp: compilation comp_bug.adb
+Running ./gdb.ada/print_chars.exp ...
+UNSUPPORTED: gdb.ada/print_chars.exp: compilation foo.adb
+Running ./gdb.ada/print_pc.exp ...
+UNSUPPORTED: gdb.ada/print_pc.exp: compilation dummy.adb
+Running ./gdb.ada/ptr_typedef.exp ...
+UNSUPPORTED: gdb.ada/ptr_typedef.exp: compilation foo.adb
+Running ./gdb.ada/ptype_arith_binop.exp ...
+PASS: gdb.ada/ptype_arith_binop.exp: set lang ada
+PASS: gdb.ada/ptype_arith_binop.exp: ptype 3 * 2.0
+PASS: gdb.ada/ptype_arith_binop.exp: ptype 3 / 2.0
+Running ./gdb.ada/ptype_field.exp ...
+UNSUPPORTED: gdb.ada/ptype_field.exp: compilation foo.adb
+Running ./gdb.ada/ptype_tagged_param.exp ...
+UNSUPPORTED: gdb.ada/ptype_tagged_param.exp: compilation foo.adb
+Running ./gdb.ada/rdv_wait.exp ...
+UNSUPPORTED: gdb.ada/rdv_wait.exp: compilation foo.adb
+Running ./gdb.ada/rec_return.exp ...
+UNSUPPORTED: gdb.ada/rec_return.exp: compilation foo.adb
+Running ./gdb.ada/ref_param.exp ...
+UNSUPPORTED: gdb.ada/ref_param.exp: compilation foo.adb
+Running ./gdb.ada/ref_tick_size.exp ...
+UNSUPPORTED: gdb.ada/ref_tick_size.exp: compilation p.adb
+Running ./gdb.ada/same_enum.exp ...
+UNSUPPORTED: gdb.ada/same_enum.exp: compilation a.adb
+Running ./gdb.ada/set_pckd_arr_elt.exp ...
+UNSUPPORTED: gdb.ada/set_pckd_arr_elt.exp: compilation foo.adb
+Running ./gdb.ada/set_wstr.exp ...
+UNSUPPORTED: gdb.ada/set_wstr.exp: compilation a.adb
+Running ./gdb.ada/small_reg_param.exp ...
+UNSUPPORTED: gdb.ada/small_reg_param.exp: compilation foo.adb
+Running ./gdb.ada/start.exp ...
+UNTESTED: gdb.ada/start.exp: start.exp
+Running ./gdb.ada/str_ref_cmp.exp ...
+UNSUPPORTED: gdb.ada/str_ref_cmp.exp: compilation foo.adb
+Running ./gdb.ada/sym_print_name.exp ...
+UNSUPPORTED: gdb.ada/sym_print_name.exp: compilation foo.adb
+Running ./gdb.ada/taft_type.exp ...
+UNSUPPORTED: gdb.ada/taft_type.exp: compilation p.adb
+Running ./gdb.ada/tagged.exp ...
+UNSUPPORTED: gdb.ada/tagged.exp: compilation foo.adb
+Running ./gdb.ada/tagged_not_init.exp ...
+UNSUPPORTED: gdb.ada/tagged_not_init.exp: compilation foo.adb
+Running ./gdb.ada/task_bp.exp ...
+UNSUPPORTED: gdb.ada/task_bp.exp: compilation foo.adb
+Running ./gdb.ada/tasks.exp ...
+UNSUPPORTED: gdb.ada/tasks.exp: compilation foo.adb
+Running ./gdb.ada/tick_last_segv.exp ...
+UNSUPPORTED: gdb.ada/tick_last_segv.exp: compilation foo.adb
+Running ./gdb.ada/type_coercion.exp ...
+UNSUPPORTED: gdb.ada/type_coercion.exp: compilation assign.adb
+Running ./gdb.ada/unc_arr_ptr_in_var_rec.exp ...
+UNSUPPORTED: gdb.ada/unc_arr_ptr_in_var_rec.exp: compilation foo.adb
+Running ./gdb.ada/uninitialized_vars.exp ...
+UNSUPPORTED: gdb.ada/uninitialized_vars.exp: compilation parse.adb
+Running ./gdb.ada/variant_record_packed_array.exp ...
+UNSUPPORTED: gdb.ada/variant_record_packed_array.exp: compilation foo.adb
+Running ./gdb.ada/watch_arg.exp ...
+UNSUPPORTED: gdb.ada/watch_arg.exp: compilation watch.adb
+Running ./gdb.ada/whatis_array_val.exp ...
+UNSUPPORTED: gdb.ada/whatis_array_val.exp: compilation foo.adb
+Running ./gdb.ada/widewide.exp ...
+UNSUPPORTED: gdb.ada/widewide.exp: compilation foo.adb
+Running ./gdb.arch/alpha-step.exp ...
+Running ./gdb.arch/altivec-abi.exp ...
+Running ./gdb.arch/altivec-regs.exp ...
+Running ./gdb.arch/amd64-byte.exp ...
+Running ./gdb.arch/amd64-disp-step.exp ...
+Running ./gdb.arch/amd64-dword.exp ...
+Running ./gdb.arch/amd64-entry-value.exp ...
+Running ./gdb.arch/amd64-entry-value-inline.exp ...
+Running ./gdb.arch/amd64-entry-value-param.exp ...
+Running ./gdb.arch/amd64-i386-address.exp ...
+Running ./gdb.arch/amd64-prologue-xmm.exp ...
+Running ./gdb.arch/amd64-tailcall-cxx.exp ...
+Running ./gdb.arch/amd64-tailcall-noret.exp ...
+Running ./gdb.arch/amd64-tailcall-ret.exp ...
+Running ./gdb.arch/amd64-word.exp ...
+Running ./gdb.arch/arm-bl-branch-dest.exp ...
+ERROR: tcl error sourcing ./gdb.arch/arm-bl-branch-dest.exp.
+ERROR: : spawn id exp7 not open
+ while executing
+"expect_background {
+ -i $server_spawn_id
+ full_buffer { }
+ eof {
+ # The spawn ID is already closed now (but not yet waited for).
+ wait -i $exp..."
+ (procedure "gdbserver_start" line 85)
+ invoked from within
+"gdbserver_start "" $arguments"
+ (procedure "gdbserver_spawn" line 11)
+ invoked from within
+"gdbserver_spawn $child_args"
+ (procedure "gdbserver_run" line 20)
+ invoked from within
+"gdbserver_run """
+ (procedure "gdb_reload" line 2)
+ invoked from within
+"gdb_reload"
+ invoked from within
+"if [target_info exists gdb,do_reload_on_run] {
+ if { [gdb_reload] != 0 } {
+ return;
+ }
+ send_gdb "continue\n";
+ gdb_expect 60 {
+ -re..."
+ invoked from within
+"if $use_gdb_stub {
+ if [target_info exists gdb,do_reload_on_run] {
+ if { [gdb_reload] != 0 } {
+ return;
+ }
+ send_gdb "continue\n";
+ g..."
+ (procedure "gdb_run_cmd" line 15)
+ invoked from within
+"gdb_run_cmd"
+ (procedure "runto" line 32)
+ invoked from within
+"runto main no-message"
+ (procedure "runto_main" line 2)
+ invoked from within
+"runto_main"
+ invoked from within
+"if { ![runto_main] } {
+ return -1
+}"
+ (file "./gdb.arch/arm-bl-branch-dest.exp" line 33)
+ invoked from within
+"source ./gdb.arch/arm-bl-branch-dest.exp"
+ ("uplevel" body line 1)
+ invoked from within
+"uplevel #0 source ./gdb.arch/arm-bl-branch-dest.exp"
+ invoked from within
+"catch "uplevel #0 source $test_file_name""
+Running ./gdb.arch/arm-disp-step.exp ...
+PASS: gdb.arch/arm-disp-step.exp: set displaced-stepping off
+PASS: gdb.arch/arm-disp-step.exp: set displaced-stepping on
+PASS: gdb.arch/arm-disp-step.exp: show displaced-stepping
+PASS: gdb.arch/arm-disp-step.exp: break test_call
+PASS: gdb.arch/arm-disp-step.exp: break test_call_end
+PASS: gdb.arch/arm-disp-step.exp: break test_ret
+PASS: gdb.arch/arm-disp-step.exp: break test_ret_end
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_call
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_call_end
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_ret
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ret_end
+PASS: gdb.arch/arm-disp-step.exp: break test_branch
+PASS: gdb.arch/arm-disp-step.exp: break Lbranch
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_branch
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to Lbranch
+PASS: gdb.arch/arm-disp-step.exp: break test_ldr_pc
+PASS: gdb.arch/arm-disp-step.exp: break test_ldr_pc_ret
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldr_pc
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldr_pc_ret
+PASS: gdb.arch/arm-disp-step.exp: break test_ldm_stm_pc
+PASS: gdb.arch/arm-disp-step.exp: break test_ldr_literal
+PASS: gdb.arch/arm-disp-step.exp: break test_ldrsb_literal
+PASS: gdb.arch/arm-disp-step.exp: break test_ldrsh_literal
+PASS: gdb.arch/arm-disp-step.exp: break test_test_ldr_literal_end
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldr_literal
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldrsb_literal
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldrsh_literal
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldr_literal_ret
+PASS: gdb.arch/arm-disp-step.exp: break test_ldr_literal
+PASS: gdb.arch/arm-disp-step.exp: break test_ldr_literal_16_end
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldr_literal_16
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_ldr_literal_16_end
+PASS: gdb.arch/arm-disp-step.exp: break test_ldr_literal
+PASS: gdb.arch/arm-disp-step.exp: break test_zero_cbz
+PASS: gdb.arch/arm-disp-step.exp: break test_non_zero_cbnz
+PASS: gdb.arch/arm-disp-step.exp: break test_non_zero_cbz
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_zero_cbnz
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_zero_cbz
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_non_zero_cbz
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_non_zero_cbnz
+PASS: gdb.arch/arm-disp-step.exp: break test_adr
+PASS: gdb.arch/arm-disp-step.exp: break test_adr_end
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_adr
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_adr_end
+PASS: gdb.arch/arm-disp-step.exp: break test_adr
+PASS: gdb.arch/arm-disp-step.exp: break test_adr_32bit_after
+PASS: gdb.arch/arm-disp-step.exp: break test_adr_32bit_end
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_adr_32bit
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_adr_32bit_after
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: test_adr_32bit_end
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_1
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_2
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_3
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_ret
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_1_right
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_1_wrong
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_2_right
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_2_wrong
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_3_right
+PASS: gdb.arch/arm-disp-step.exp: break test_pop_pc_1_wrong
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_1
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_1_check
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_2
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_2_check
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_3
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_3_check
+PASS: gdb.arch/arm-disp-step.exp: continue to breakpoint: continue to test_pop_pc_ret
+PASS: gdb.arch/arm-disp-step.exp: break test_str_pc
+FAIL: gdb.arch/arm-disp-step.exp: setting breakpoint at exit
+Running ./gdb.arch/e500-abi.exp ...
+Running ./gdb.arch/e500-prologue.exp ...
+Running ./gdb.arch/e500-regs.exp ...
+Running ./gdb.arch/gdb1291.exp ...
+Running ./gdb.arch/gdb1431.exp ...
+Running ./gdb.arch/gdb1558.exp ...
+Running ./gdb.arch/i386-avx.exp ...
+Running ./gdb.arch/i386-bp_permanent.exp ...
+Running ./gdb.arch/i386-byte.exp ...
+Running ./gdb.arch/i386-cfi-notcurrent.exp ...
+Running ./gdb.arch/i386-disp-step.exp ...
+Running ./gdb.arch/i386-dr3-watch.exp ...
+Running ./gdb.arch/i386-float.exp ...
+Running ./gdb.arch/i386-gnu-cfi.exp ...
+Running ./gdb.arch/i386-permbkpt.exp ...
+Running ./gdb.arch/i386-prologue.exp ...
+Running ./gdb.arch/i386-signal.exp ...
+Running ./gdb.arch/i386-size.exp ...
+Running ./gdb.arch/i386-size-overlap.exp ...
+Running ./gdb.arch/i386-sse.exp ...
+Running ./gdb.arch/i386-sse-stack-align.exp ...
+Running ./gdb.arch/i386-unwind.exp ...
+Running ./gdb.arch/i386-word.exp ...
+Running ./gdb.arch/ia64-breakpoint-shadow.exp ...
+Running ./gdb.arch/iwmmxt-regs.exp ...
+Running ./gdb.arch/mips16-thunks.exp ...
+Running ./gdb.arch/mips-octeon-bbit.exp ...
+Running ./gdb.arch/pa-nullify.exp ...
+Running ./gdb.arch/powerpc-aix-prologue.exp ...
+Running ./gdb.arch/powerpc-d128-regs.exp ...
+Running ./gdb.arch/powerpc-prologue.exp ...
+Running ./gdb.arch/ppc64-atomic-inst.exp ...
+Running ./gdb.arch/ppc-dfp.exp ...
+Running ./gdb.arch/ppc-fp.exp ...
+Running ./gdb.arch/spu-info.exp ...
+Running ./gdb.arch/spu-ls.exp ...
+Running ./gdb.arch/system-gcore.exp ...
+Running ./gdb.arch/thumb2-it.exp ...
+PASS: gdb.arch/thumb2-it.exp: list main
+PASS: gdb.arch/thumb2-it.exp: it_1, call
+PASS: gdb.arch/thumb2-it.exp: it_1, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_1, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_1, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_1, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_1, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_1, continue
+PASS: gdb.arch/thumb2-it.exp: it_2, call
+PASS: gdb.arch/thumb2-it.exp: it_2, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_2, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_2, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_2, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_2, $r0 == 0
+PASS: gdb.arch/thumb2-it.exp: it_2, continue
+PASS: gdb.arch/thumb2-it.exp: it_3, call
+PASS: gdb.arch/thumb2-it.exp: it_3, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_3, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_3, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_3, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_3, stepi 4
+PASS: gdb.arch/thumb2-it.exp: it_3, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_3, $r0 == 5
+PASS: gdb.arch/thumb2-it.exp: it_3, continue
+PASS: gdb.arch/thumb2-it.exp: it_4, call
+PASS: gdb.arch/thumb2-it.exp: it_4, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_4, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_4, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_4, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_4, stepi 4
+PASS: gdb.arch/thumb2-it.exp: it_4, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_4, $r0 == 1
+PASS: gdb.arch/thumb2-it.exp: it_4, continue
+PASS: gdb.arch/thumb2-it.exp: it_5, call
+PASS: gdb.arch/thumb2-it.exp: it_5, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_5, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_5, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_5, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_5, stepi 4
+PASS: gdb.arch/thumb2-it.exp: it_5, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_5, $r0 == 1
+PASS: gdb.arch/thumb2-it.exp: it_5, continue
+PASS: gdb.arch/thumb2-it.exp: it_6, call
+PASS: gdb.arch/thumb2-it.exp: it_6, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_6, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_6, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_6, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_6, stepi 4
+PASS: gdb.arch/thumb2-it.exp: it_6, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_6, $r0 == 3
+PASS: gdb.arch/thumb2-it.exp: it_6, continue
+PASS: gdb.arch/thumb2-it.exp: it_7, call
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 4
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 5
+PASS: gdb.arch/thumb2-it.exp: it_7, stepi 6
+PASS: gdb.arch/thumb2-it.exp: it_7, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_7, $r0 == 15
+PASS: gdb.arch/thumb2-it.exp: it_7, continue
+PASS: gdb.arch/thumb2-it.exp: it_8, call
+PASS: gdb.arch/thumb2-it.exp: it_8, stepi 0
+PASS: gdb.arch/thumb2-it.exp: it_8, stepi 1
+PASS: gdb.arch/thumb2-it.exp: it_8, stepi 2
+PASS: gdb.arch/thumb2-it.exp: it_8, stepi 3
+PASS: gdb.arch/thumb2-it.exp: it_8, correct instructions reached
+PASS: gdb.arch/thumb2-it.exp: it_8, $r0 == 1
+PASS: gdb.arch/thumb2-it.exp: it_8, continue
+PASS: gdb.arch/thumb2-it.exp: call it_breakpoints()
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 1
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 2
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 3
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 4
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 5
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 6
+PASS: gdb.arch/thumb2-it.exp: continue to breakpoint: test 7
+Running ./gdb.arch/thumb-bx-pc.exp ...
+PASS: gdb.arch/thumb-bx-pc.exp: stepi for bx pc
+PASS: gdb.arch/thumb-bx-pc.exp: stepi reached correct instruction
+Running ./gdb.arch/thumb-prologue.exp ...
+PASS: gdb.arch/thumb-prologue.exp: continue to TPCS
+PASS: gdb.arch/thumb-prologue.exp: backtrace in TPCS
+PASS: gdb.arch/thumb-prologue.exp: saved registers in TPCS
+PASS: gdb.arch/thumb-prologue.exp: continue to switch_stack_to_same
+PASS: gdb.arch/thumb-prologue.exp: stepi over mov sp, sp
+PASS: gdb.arch/thumb-prologue.exp: backtrace in write_sp
+PASS: gdb.arch/thumb-prologue.exp: continue to switch_stack_to_other
+PASS: gdb.arch/thumb-prologue.exp: stepi over mov sp, 128
+PASS: gdb.arch/thumb-prologue.exp: backtrace in write_sp
+Running ./gdb.arch/thumb-singlestep.exp ...
+PASS: gdb.arch/thumb-singlestep.exp: step into foo
+Running ./gdb.arch/vsx-regs.exp ...
+Running ./gdb.asm/asm-source.exp ...
+PASS: gdb.asm/asm-source.exp: f at main
+PASS: gdb.asm/asm-source.exp: next over macro
+PASS: gdb.asm/asm-source.exp: step into foo2
+PASS: gdb.asm/asm-source.exp: info target
+PASS: gdb.asm/asm-source.exp: info symbol
+PASS: gdb.asm/asm-source.exp: list
+PASS: gdb.asm/asm-source.exp: search
+PASS: gdb.asm/asm-source.exp: f in foo2
+PASS: gdb.asm/asm-source.exp: n in foo2
+PASS: gdb.asm/asm-source.exp: bt ALL in foo2
+PASS: gdb.asm/asm-source.exp: bt 2 in foo2
+PASS: gdb.asm/asm-source.exp: s 2
+PASS: gdb.asm/asm-source.exp: n 2
+PASS: gdb.asm/asm-source.exp: bt 3 in foo3
+PASS: gdb.asm/asm-source.exp: info source asmsrc1.s
+PASS: gdb.asm/asm-source.exp: finish from foo3
+PASS: gdb.asm/asm-source.exp: info source asmsrc2.s
+PASS: gdb.asm/asm-source.exp: info sources
+PASS: gdb.asm/asm-source.exp: info line
+PASS: gdb.asm/asm-source.exp: next over foo3
+PASS: gdb.asm/asm-source.exp: return from foo2
+PASS: gdb.asm/asm-source.exp: look at global variable
+PASS: gdb.asm/asm-source.exp: x/i &globalvar
+PASS: gdb.asm/asm-source.exp: disassem &globalvar, &globalvar+1
+PASS: gdb.asm/asm-source.exp: look at static variable
+PASS: gdb.asm/asm-source.exp: x/i &staticvar
+PASS: gdb.asm/asm-source.exp: disassem &staticvar, &staticvar+1
+PASS: gdb.asm/asm-source.exp: look at static function
+Running ./gdb.base/a2-run.exp ...
+Running ./gdb.base/advance.exp ...
+PASS: gdb.base/advance.exp: advance line number
+PASS: gdb.base/advance.exp: malformed advance
+PASS: gdb.base/advance.exp: advance func
+PASS: gdb.base/advance.exp: advance function not called by current frame
+PASS: gdb.base/advance.exp: set breakpoint at call to func3
+PASS: gdb.base/advance.exp: continue to call to func3 in main
+PASS: gdb.base/advance.exp: advance function called as param
+PASS: gdb.base/advance.exp: advance with no argument
+Running ./gdb.base/alias.exp ...
+PASS: gdb.base/alias.exp: alias -a set2=set
+PASS: gdb.base/alias.exp: set2 print elements 42
+PASS: gdb.base/alias.exp: verify set2
+PASS: gdb.base/alias.exp: abbrev set2 not present in help command list
+PASS: gdb.base/alias.exp: alias -a set3= set
+PASS: gdb.base/alias.exp: set3 print elements 43
+PASS: gdb.base/alias.exp: verify set3
+PASS: gdb.base/alias.exp: abbrev set3 not present in help command list
+PASS: gdb.base/alias.exp: alias -a set4 =set
+PASS: gdb.base/alias.exp: set4 print elements 44
+PASS: gdb.base/alias.exp: verify set4
+PASS: gdb.base/alias.exp: abbrev set4 not present in help command list
+PASS: gdb.base/alias.exp: alias -a set5 = set
+PASS: gdb.base/alias.exp: set5 print elements 45
+PASS: gdb.base/alias.exp: verify set5
+PASS: gdb.base/alias.exp: abbrev set5 not present in help command list
+PASS: gdb.base/alias.exp: alias -a -- set6 = set
+PASS: gdb.base/alias.exp: set6 print elements 46
+PASS: gdb.base/alias.exp: verify set6
+PASS: gdb.base/alias.exp: abbrev set6 not present in help command list
+PASS: gdb.base/alias.exp: alias -a -- -a = set
+PASS: gdb.base/alias.exp: -a print elements 47
+PASS: gdb.base/alias.exp: verify -a
+PASS: gdb.base/alias.exp: abbrev -a not present in help command list
+PASS: gdb.base/alias.exp: alias set2=set
+PASS: gdb.base/alias.exp: alias foo=bar
+PASS: gdb.base/alias.exp: alias spe = set p elem
+PASS: gdb.base/alias.exp: spe 50
+PASS: gdb.base/alias.exp: verify spe
+PASS: gdb.base/alias.exp: alias set pr elms = set p elem
+PASS: gdb.base/alias.exp: set pr elms 51
+PASS: gdb.base/alias.exp: verify set pr elms
+PASS: gdb.base/alias.exp: help set print
+Running ./gdb.base/all-bin.exp ...
+PASS: gdb.base/all-bin.exp: continuing after dummy()
+PASS: gdb.base/all-bin.exp: print value of v_int+v_char
+PASS: gdb.base/all-bin.exp: print value of v_int+v_short
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_char
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_char
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_short
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_short
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_int
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_int
+PASS: gdb.base/all-bin.exp: print value of v_int+v_long
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_long
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_long
+PASS: gdb.base/all-bin.exp: print value of v_int+v_float
+PASS: gdb.base/all-bin.exp: print value of v_int+v_double
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_char
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_short
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_char
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_char
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_short
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_short
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_int
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_int
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_long
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_long
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_long
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_float
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_double
+PASS: gdb.base/all-bin.exp: set v_char=0
+PASS: gdb.base/all-bin.exp: set v_double=0
+PASS: gdb.base/all-bin.exp: set v_unsigned_long=0
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_char
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_short
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_char
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_char
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_short
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_short
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_int
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_int
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_long
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_long
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_long
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_float
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_double
+Running ./gdb.base/annota1.exp ...
+Running ./gdb.base/annota3.exp ...
+Running ./gdb.base/anon.exp ...
+PASS: gdb.base/anon.exp: set breakpoint in anon.c
+PASS: gdb.base/anon.exp: continue to breakpoint: continue to breakpoint in anon.c
+PASS: gdb.base/anon.exp: print val.data.six
+Running ./gdb.base/args.exp ...
+Running ./gdb.base/argv0-symlink.exp ...
+PASS: gdb.base/argv0-symlink.exp: kept file symbolic link name
+FAIL: gdb.base/argv0-symlink.exp: kept directory symbolic link name
+Running ./gdb.base/arithmet.exp ...
+PASS: gdb.base/arithmet.exp: set variable x=14
+PASS: gdb.base/arithmet.exp: set variable y=2
+PASS: gdb.base/arithmet.exp: set variable z=2
+PASS: gdb.base/arithmet.exp: set variable w=3
+PASS: gdb.base/arithmet.exp: print x
+PASS: gdb.base/arithmet.exp: print y
+PASS: gdb.base/arithmet.exp: print z
+PASS: gdb.base/arithmet.exp: print w
+PASS: gdb.base/arithmet.exp: print x+y
+PASS: gdb.base/arithmet.exp: print x-y
+PASS: gdb.base/arithmet.exp: print x*y
+PASS: gdb.base/arithmet.exp: print x/y
+PASS: gdb.base/arithmet.exp: print x%y
+PASS: gdb.base/arithmet.exp: print x+y+z
+PASS: gdb.base/arithmet.exp: print x-y-z
+PASS: gdb.base/arithmet.exp: print x*y*z
+PASS: gdb.base/arithmet.exp: print x/y/z
+PASS: gdb.base/arithmet.exp: print x%y%z
+PASS: gdb.base/arithmet.exp: set variable x=10
+PASS: gdb.base/arithmet.exp: set variable y=4
+PASS: gdb.base/arithmet.exp: print x+y-z
+PASS: gdb.base/arithmet.exp: print x+y*z
+PASS: gdb.base/arithmet.exp: print x+y%w
+PASS: gdb.base/arithmet.exp: print x+y/w
+PASS: gdb.base/arithmet.exp: print x-y*z
+PASS: gdb.base/arithmet.exp: print x-y%z
+PASS: gdb.base/arithmet.exp: print x-y/z
+PASS: gdb.base/arithmet.exp: print x*y/z
+PASS: gdb.base/arithmet.exp: print x*y%w
+PASS: gdb.base/arithmet.exp: print x/y%w
+PASS: gdb.base/arithmet.exp: print x-(y+w)
+PASS: gdb.base/arithmet.exp: print x/(y*w)
+PASS: gdb.base/arithmet.exp: print x-(y/w)
+PASS: gdb.base/arithmet.exp: print (x+y)*w
+Running ./gdb.base/arrayidx.exp ...
+PASS: gdb.base/arrayidx.exp: Set print array-indexes to off
+PASS: gdb.base/arrayidx.exp: Print array with array-indexes off
+PASS: gdb.base/arrayidx.exp: Set print array-indexes to on
+PASS: gdb.base/arrayidx.exp: Print array with array-indexes on
+Running ./gdb.base/assign.exp ...
+PASS: gdb.base/assign.exp: continuing after dummy()
+PASS: gdb.base/assign.exp: v_int=57
+PASS: gdb.base/assign.exp: set v_int to 6
+PASS: gdb.base/assign.exp: v_int+=57
+PASS: gdb.base/assign.exp: set v_int to 6 (2)
+PASS: gdb.base/assign.exp: v_int-=57
+PASS: gdb.base/assign.exp: set v_int to 6 (3)
+PASS: gdb.base/assign.exp: v_int*=5
+PASS: gdb.base/assign.exp: set v_int to 6 (4)
+PASS: gdb.base/assign.exp: v_int/=4
+PASS: gdb.base/assign.exp: set v_int to 6 (5)
+PASS: gdb.base/assign.exp: v_int%=4
+PASS: gdb.base/assign.exp: set v_int to 6 (6)
+PASS: gdb.base/assign.exp: v_int+=char
+PASS: gdb.base/assign.exp: set v_int to 6 (7)
+PASS: gdb.base/assign.exp: v_int+=signed_char
+PASS: gdb.base/assign.exp: set v_int to 6 (8)
+PASS: gdb.base/assign.exp: v_int+=unsigned_char
+PASS: gdb.base/assign.exp: set v_int to 6 (9)
+PASS: gdb.base/assign.exp: v_int+=short
+PASS: gdb.base/assign.exp: set v_int to 6 (10)
+PASS: gdb.base/assign.exp: v_int+=signed_short
+PASS: gdb.base/assign.exp: set v_int to 6 (11)
+PASS: gdb.base/assign.exp: v_int=+unsigned_short
+PASS: gdb.base/assign.exp: set v_int to 6 (12)
+PASS: gdb.base/assign.exp: v_int+=signed_int
+PASS: gdb.base/assign.exp: set v_int to 6 (13)
+PASS: gdb.base/assign.exp: v_int+=unsigned_int
+PASS: gdb.base/assign.exp: set v_int to 6 (14)
+PASS: gdb.base/assign.exp: v_int+=long
+PASS: gdb.base/assign.exp: set v_int to 6 (15)
+PASS: gdb.base/assign.exp: v_int+=signed_long
+PASS: gdb.base/assign.exp: set v_int to 6 (16)
+PASS: gdb.base/assign.exp: v_int+=unsigned_long
+PASS: gdb.base/assign.exp: set v_int to 6 (17)
+PASS: gdb.base/assign.exp: v_int+=v_float
+PASS: gdb.base/assign.exp: set v_int to 6 (18)
+PASS: gdb.base/assign.exp: v_int+=double
+Running ./gdb.base/async.exp ...
+Running ./gdb.base/async-shell.exp ...
+Running ./gdb.base/attach.exp ...
+Running ./gdb.base/attach-pie-misread.exp ...
+Running ./gdb.base/attach-pie-noexec.exp ...
+Running ./gdb.base/attach-twice.exp ...
+Running ./gdb.base/auxv.exp ...
+PASS: gdb.base/auxv.exp: set print sevenbit-strings
+PASS: gdb.base/auxv.exp: set width 0
+PASS: gdb.base/auxv.exp: tbreak 78
+PASS: gdb.base/auxv.exp: continue
+PASS: gdb.base/auxv.exp: info auxv on live process
+PASS: gdb.base/auxv.exp: gcore
+PASS: gdb.base/auxv.exp: continue
+PASS: gdb.base/auxv.exp: continue
+UNSUPPORTED: gdb.base/auxv.exp: generate native core dump
+UNSUPPORTED: gdb.base/auxv.exp: info auxv on native core dump
+UNSUPPORTED: gdb.base/auxv.exp: matching auxv data from live and core
+PASS: gdb.base/auxv.exp: load core file for info auxv on gcore-created dump
+PASS: gdb.base/auxv.exp: info auxv on gcore-created dump
+PASS: gdb.base/auxv.exp: matching auxv data from live and gcore
+Running ./gdb.base/bang.exp ...
+PASS: gdb.base/bang.exp: run program
+Running ./gdb.base/bfp-test.exp ...
+PASS: gdb.base/bfp-test.exp: continue to breakpoint: return
+PASS: gdb.base/bfp-test.exp: The original value of b32 is 1.5
+PASS: gdb.base/bfp-test.exp: The original value of b64 is 2.25
+PASS: gdb.base/bfp-test.exp: The original value of b128 is 3.375
+PASS: gdb.base/bfp-test.exp: Try to change b32 to -1.5 with 'print b32=-1.5f'
+PASS: gdb.base/bfp-test.exp: Try to change b64 to -2.25 with 'print b64=-2.25f'
+PASS: gdb.base/bfp-test.exp: Try to change b128 to -3.375 with 'print b128=-3.375l'
+PASS: gdb.base/bfp-test.exp: set variable b32 = 10.5f
+PASS: gdb.base/bfp-test.exp: set variable b64 = 20.25f
+PASS: gdb.base/bfp-test.exp: set variable b128 = 30.375l
+PASS: gdb.base/bfp-test.exp: The value of b32 is changed to 10.5
+PASS: gdb.base/bfp-test.exp: The value of b64 is changed to 20.25
+PASS: gdb.base/bfp-test.exp: The value of b128 is changed to 30.375
+PASS: gdb.base/bfp-test.exp: set variable b32 = 100.5a
+PASS: gdb.base/bfp-test.exp: set variable b64 = 200.25x
+PASS: gdb.base/bfp-test.exp: set variable b128 = 300.375fl
+PASS: gdb.base/bfp-test.exp: set variable b128 = 300.375fff
+Running ./gdb.base/bigcore.exp ...
+UNTESTED: gdb.base/bigcore.exp: Remote system
+Running ./gdb.base/bitfields2.exp ...
+PASS: gdb.base/bitfields2.exp: set print sevenbit-strings
+PASS: gdb.base/bitfields2.exp: break tester prior to break1
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #0
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.s1 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #1
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.u1 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #2
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.s2 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #3
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.u2 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #4
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.s3 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #5
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.u3 = 1
+PASS: gdb.base/bitfields2.exp: break tester prior to break2
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break2
+PASS: gdb.base/bitfields2.exp: continuing to break2 #0
+PASS: gdb.base/bitfields2.exp: bitfield containment; flags.u1, flags.u3, and flags.s3 to all 1s
+PASS: gdb.base/bitfields2.exp: continuing to break2 #1
+PASS: gdb.base/bitfields2.exp: bitfield containment; flags.u2, flags.s1, flags.s2 to all 1s
+PASS: gdb.base/bitfields2.exp: break tester prior to break3
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break3
+PASS: gdb.base/bitfields2.exp: continuing to break3 #0
+PASS: gdb.base/bitfields2.exp: maximum unsigned bitfield values
+PASS: gdb.base/bitfields2.exp: break tester prior to break4
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break4
+PASS: gdb.base/bitfields2.exp: continuing to break4 #0
+PASS: gdb.base/bitfields2.exp: maximum signed bitfield values
+PASS: gdb.base/bitfields2.exp: continuing to break4 #1
+PASS: gdb.base/bitfields2.exp: determining signed-ness of bitfields
+PASS: gdb.base/bitfields2.exp: most negative signed bitfield values
+PASS: gdb.base/bitfields2.exp: continuing to break4 #2
+PASS: gdb.base/bitfields2.exp: signed bitfields containing -1
+PASS: gdb.base/bitfields2.exp: break tester prior to break5
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break5
+PASS: gdb.base/bitfields2.exp: continuing to break5 #0
+PASS: gdb.base/bitfields2.exp: set long long unsigned bitfield
+PASS: gdb.base/bitfields2.exp: set long long signed bitfield positive
+PASS: gdb.base/bitfields2.exp: long long bitfield values after set
+PASS: gdb.base/bitfields2.exp: set long long signed bitfield negative
+PASS: gdb.base/bitfields2.exp: long long bitfield values after set negative
+Running ./gdb.base/bitfields.exp ...
+PASS: gdb.base/bitfields.exp: set print sevenbit-strings
+PASS: gdb.base/bitfields.exp: print flags
+PASS: gdb.base/bitfields.exp: continuing to break1 #1
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s1)
+PASS: gdb.base/bitfields.exp: continuing to break1 #2
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u1)
+PASS: gdb.base/bitfields.exp: continuing to break1 #3
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s2)
+PASS: gdb.base/bitfields.exp: continuing to break1 #4
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u2)
+PASS: gdb.base/bitfields.exp: continuing to break1 #5
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s3)
+PASS: gdb.base/bitfields.exp: continuing to break1 #6
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u3)
+PASS: gdb.base/bitfields.exp: continuing to break1 #7
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s9)
+PASS: gdb.base/bitfields.exp: continuing to break1 #8
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u9)
+PASS: gdb.base/bitfields.exp: continuing to break1 #9
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (sc)
+PASS: gdb.base/bitfields.exp: bitfield containment #1
+PASS: gdb.base/bitfields.exp: continuing to break2
+PASS: gdb.base/bitfields.exp: bitfield containment #2
+PASS: gdb.base/bitfields.exp: unsigned bitfield ranges
+PASS: gdb.base/bitfields.exp: signed bitfields, max positive values
+PASS: gdb.base/bitfields.exp: continuing to break4 #1
+PASS: gdb.base/bitfields.exp: determining signed-ness of bitfields
+PASS: gdb.base/bitfields.exp: signed bitfields, max negative values
+PASS: gdb.base/bitfields.exp: continuing to break4 #2
+PASS: gdb.base/bitfields.exp: signed bitfields with -1
+PASS: gdb.base/bitfields.exp: continuing to break5
+PASS: gdb.base/bitfields.exp: distinct bitfields in container
+PASS: gdb.base/bitfields.exp: print container.one.u3
+PASS: gdb.base/bitfields.exp: print container.two.u3
+PASS: gdb.base/bitfields.exp: set internal var
+PASS: gdb.base/bitfields.exp: set $myvar.a = 0
+PASS: gdb.base/bitfields.exp: set $myvar.inner.b = 1
+PASS: gdb.base/bitfields.exp: set $myvar.inner.deep.c = 0
+PASS: gdb.base/bitfields.exp: set $myvar.inner.deep.d = -1
+PASS: gdb.base/bitfields.exp: set $myvar.inner.e = 1
+PASS: gdb.base/bitfields.exp: set $myvar.f = 1
+PASS: gdb.base/bitfields.exp: print $myvar.a
+PASS: gdb.base/bitfields.exp: print $myvar.inner.b
+PASS: gdb.base/bitfields.exp: print $myvar.inner.deep.c
+PASS: gdb.base/bitfields.exp: print $myvar.inner.deep.d
+PASS: gdb.base/bitfields.exp: print $myvar.inner.e
+PASS: gdb.base/bitfields.exp: print $myvar.f
+Running ./gdb.base/bitops.exp ...
+PASS: gdb.base/bitops.exp: print value of !1
+PASS: gdb.base/bitops.exp: print value of !0
+PASS: gdb.base/bitops.exp: print value of !100
+PASS: gdb.base/bitops.exp: print value of !1000
+PASS: gdb.base/bitops.exp: print value of !10
+PASS: gdb.base/bitops.exp: print value of !2
+PASS: gdb.base/bitops.exp: print value of 10 | 5
+PASS: gdb.base/bitops.exp: print value of 10 & 5
+PASS: gdb.base/bitops.exp: print value of 10 ^ 5
+PASS: gdb.base/bitops.exp: print value of -!0
+PASS: gdb.base/bitops.exp: print value of ~-!0
+PASS: gdb.base/bitops.exp: print value of 3 * 2 / 4.0 * 2.0
+PASS: gdb.base/bitops.exp: print value of 8 << 2 >> 4
+PASS: gdb.base/bitops.exp: print value of -1 < 0 > 1
+PASS: gdb.base/bitops.exp: print value of 15 ^ 10 ^ 5 ^ 7
+PASS: gdb.base/bitops.exp: print value of 3.5 < 4.0
+PASS: gdb.base/bitops.exp: print value of 3.5 < -4.0
+PASS: gdb.base/bitops.exp: print value of 2 > -3
+PASS: gdb.base/bitops.exp: print value of -3>4
+PASS: gdb.base/bitops.exp: print value of (-3 > 4)
+PASS: gdb.base/bitops.exp: print value of 3>=2.5
+PASS: gdb.base/bitops.exp: print value of 3>=4.5
+PASS: gdb.base/bitops.exp: print value of 3==3.0
+PASS: gdb.base/bitops.exp: print value of 3==4.0
+PASS: gdb.base/bitops.exp: print value of 3!=3.0
+PASS: gdb.base/bitops.exp: print value of 3!=5.0
+PASS: gdb.base/bitops.exp: print value of 0 || 1 && 0 | 0 ^ 0 == 8 > 128 >>1 +2 *2
+PASS: gdb.base/bitops.exp: print value of 1.0 || 0
+PASS: gdb.base/bitops.exp: print value of 0.0 || 1.0
+PASS: gdb.base/bitops.exp: print value of 0.0 || 0
+PASS: gdb.base/bitops.exp: print value of 0 || 1 && 0 | 0 ^ 0 == 8
+PASS: gdb.base/bitops.exp: print value of 0 == 8 > 128 >> 1 + 2 * 2
+Running ./gdb.base/break-always.exp ...
+PASS: gdb.base/break-always.exp: set breakpoint always-inserted on
+PASS: gdb.base/break-always.exp: confirm breakpoint always-inserted
+PASS: gdb.base/break-always.exp: set breakpoint on bar
+PASS: gdb.base/break-always.exp: set 2nd breakpoint on bar
+PASS: gdb.base/break-always.exp: set 3rd breakpoint on bar
+PASS: gdb.base/break-always.exp: set 4th breakpoint on bar
+PASS: gdb.base/break-always.exp: initial check breakpoint state
+PASS: gdb.base/break-always.exp: initial disable all breakpoints
+PASS: gdb.base/break-always.exp: initial enable all breakpoints
+PASS: gdb.base/break-always.exp: re-disable all breakpoints
+PASS: gdb.base/break-always.exp: enable 3.A
+PASS: gdb.base/break-always.exp: disable 3.B
+PASS: gdb.base/break-always.exp: enable 3.C
+PASS: gdb.base/break-always.exp: enable 2.D
+PASS: gdb.base/break-always.exp: disable 2.E
+PASS: gdb.base/break-always.exp: disable 3.F
+PASS: gdb.base/break-always.exp: enable 3.G
+PASS: gdb.base/break-always.exp: enable 2.H
+PASS: gdb.base/break-always.exp: disable 2.I
+PASS: gdb.base/break-always.exp: before re-enable check breakpoint state
+PASS: gdb.base/break-always.exp: re-enable all breakpoints
+PASS: gdb.base/break-always.exp: set breakpoint on bar 2
+PASS: gdb.base/break-always.exp: save shadow
+PASS: gdb.base/break-always.exp: write 0 to breakpoint's address
+PASS: gdb.base/break-always.exp: read back 0 from the breakpoint's address
+PASS: gdb.base/break-always.exp: write 1 to breakpoint's address
+PASS: gdb.base/break-always.exp: read back 1 from the breakpoint's address
+PASS: gdb.base/break-always.exp: p /x *(char *) 0x54aaa69c = $shadow
+PASS: gdb.base/break-always.exp: continue to breakpoint: bar
+Running ./gdb.base/break-caller-line.exp ...
+PASS: gdb.base/break-caller-line.exp: up
+PASS: gdb.base/break-caller-line.exp: info line *$pc
+PASS: gdb.base/break-caller-line.exp: break
+Running ./gdb.base/break-entry.exp ...
+UNTESTED: gdb.base/break-entry.exp: break-entry.exp
+Running ./gdb.base/break.exp ...
+PASS: gdb.base/break.exp: Delete all breakpoints when none
+PASS: gdb.base/break.exp: breakpoint function
+PASS: gdb.base/break.exp: breakpoint quoted function
+PASS: gdb.base/break.exp: breakpoint function in file
+PASS: gdb.base/break.exp: use `list' to establish default source file
+PASS: gdb.base/break.exp: breakpoint line number
+PASS: gdb.base/break.exp: breakpoint duplicate
+PASS: gdb.base/break.exp: breakpoint line number in file
+PASS: gdb.base/break.exp: breakpoint at start of multi line if conditional
+PASS: gdb.base/break.exp: breakpoint at start of multi line while conditional
+FAIL: gdb.base/break.exp: breakpoint info
+PASS: gdb.base/break.exp: info break 2 4 6
+PASS: gdb.base/break.exp: info break 3-5
+PASS: gdb.base/break.exp: disable using history values
+FAIL: gdb.base/break.exp: check disable with history values
+PASS: gdb.base/break.exp: disable with convenience values
+FAIL: gdb.base/break.exp: check disable with convenience values
+PASS: gdb.base/break.exp: disable non-existent breakpoint 10
+PASS: gdb.base/break.exp: set $baz 1.234
+PASS: gdb.base/break.exp: disable with non-integer convenience var
+PASS: gdb.base/break.exp: disable with non-existent convenience var
+PASS: gdb.base/break.exp: disable with non-existent history value
+PASS: gdb.base/break.exp: disable with badly formed history value
+FAIL: gdb.base/break.exp: run until function breakpoint
+PASS: gdb.base/break.exp: list marker1
+PASS: gdb.base/break.exp: break lineno
+PASS: gdb.base/break.exp: delete $bpnum
+PASS: gdb.base/break.exp: run until breakpoint set at a line number
+PASS: gdb.base/break.exp: run until file:function(6) breakpoint
+PASS: gdb.base/break.exp: run until file:function(5) breakpoint
+PASS: gdb.base/break.exp: run until file:function(4) breakpoint
+PASS: gdb.base/break.exp: run until file:function(3) breakpoint
+PASS: gdb.base/break.exp: run until file:function(2) breakpoint
+PASS: gdb.base/break.exp: run until file:function(1) breakpoint
+PASS: gdb.base/break.exp: run until quoted breakpoint
+PASS: gdb.base/break.exp: run until file:linenum breakpoint
+PASS: gdb.base/break.exp: breakpoint offset +1
+PASS: gdb.base/break.exp: step onto breakpoint
+PASS: gdb.base/break.exp: setting breakpoint at }
+PASS: gdb.base/break.exp: continue to breakpoint at }
+PASS: gdb.base/break.exp: Temporary breakpoint function
+PASS: gdb.base/break.exp: Temporary breakpoint function in file
+PASS: gdb.base/break.exp: Temporary breakpoint line number #1
+PASS: gdb.base/break.exp: Temporary breakpoint line number #2
+PASS: gdb.base/break.exp: Temporary breakpoint line number in file #1
+PASS: gdb.base/break.exp: Temporary breakpoint line number in file #2
+FAIL: gdb.base/break.exp: Temporary breakpoint info
+PASS: gdb.base/break.exp: catch requires an event name
+PASS: gdb.base/break.exp: set catch fork, never expected to trigger
+PASS: gdb.base/break.exp: set catch vfork, never expected to trigger
+PASS: gdb.base/break.exp: set catch exec, never expected to trigger
+PASS: gdb.base/break.exp: set breakpoint pending off
+PASS: gdb.base/break.exp: break on non-existent source line
+PASS: gdb.base/break.exp: until bp_location1
+PASS: gdb.base/break.exp: break on default location, 1st time
+PASS: gdb.base/break.exp: break on default location, 2nd time
+PASS: gdb.base/break.exp: break on default location, 3rd time
+PASS: gdb.base/break.exp: break on default location, 4th time
+PASS: gdb.base/break.exp: set to-be-silent break bp_location1
+PASS: gdb.base/break.exp: set silent break bp_location1
+PASS: gdb.base/break.exp: info silent break bp_location1
+PASS: gdb.base/break.exp: hit silent break bp_location1
+PASS: gdb.base/break.exp: stopped for silent break bp_location1
+PASS: gdb.base/break.exp: thread-specific breakpoint on non-existent thread disallowed
+PASS: gdb.base/break.exp: thread-specific breakpoint on bogus thread ID disallowed
+PASS: gdb.base/break.exp: breakpoint with trailing garbage disallowed
+PASS: gdb.base/break.exp: step over breakpoint
+PASS: gdb.base/break.exp: clear line has no breakpoint disallowed
+PASS: gdb.base/break.exp: clear current line has no breakpoint disallowed
+PASS: gdb.base/break.exp: break marker3 #1
+PASS: gdb.base/break.exp: break marker3 #2
+PASS: gdb.base/break.exp: clear marker3
+PASS: gdb.base/break.exp: set convenience variable $foo to bp_location11
+PASS: gdb.base/break.exp: set breakpoint via convenience variable
+PASS: gdb.base/break.exp: set convenience variable $foo to 81.5
+PASS: gdb.base/break.exp: set breakpoint via non-integer convenience variable disallowed
+PASS: gdb.base/break.exp: set breakpoint on to-be-called function
+PASS: gdb.base/break.exp: hit breakpoint on called function
+PASS: gdb.base/break.exp: backtrace while in called function
+PASS: gdb.base/break.exp: finish from called function
+PASS: gdb.base/break.exp: finish with arguments disallowed
+PASS: gdb.base/break.exp: finish from outermost frame disallowed
+PASS: gdb.base/break.exp: kill program
+PASS: gdb.base/break.exp: break at factorial
+PASS: gdb.base/break.exp: continue to factorial(5)
+PASS: gdb.base/break.exp: backtrace from factorial(5)
+PASS: gdb.base/break.exp: next to recursive call
+PASS: gdb.base/break.exp: next over recursive call
+PASS: gdb.base/break.exp: backtrace from factorial(5.1)
+FAIL: gdb.base/break.exp: setting breakpoint at exit
+PASS: gdb.base/break.exp: breakpoint function, optimized file
+PASS: gdb.base/break.exp: breakpoint small function, optimized file
+PASS: gdb.base/break.exp: run until function breakpoint, optimized file (code motion)
+PASS: gdb.base/break.exp: run until breakpoint set at small function, optimized file
+PASS: gdb.base/break.exp: rbreak junk pending setup
+PASS: gdb.base/break.exp: rbreak junk set breakpoint
+PASS: gdb.base/break.exp: rbreak junk
+Running ./gdb.base/break-inline.exp ...
+PASS: gdb.base/break-inline.exp: break
+Running ./gdb.base/break-interp.exp ...
+Running ./gdb.base/break-on-linker-gcd-function.exp ...
+PASS: gdb.base/break-on-linker-gcd-function.exp: b 25
+Running ./gdb.base/breakpoint-shadow.exp ...
+PASS: gdb.base/breakpoint-shadow.exp: set breakpoint always-inserted on
+PASS: gdb.base/breakpoint-shadow.exp: show breakpoint always-inserted
+PASS: gdb.base/breakpoint-shadow.exp: disassembly without breakpoints
+PASS: gdb.base/breakpoint-shadow.exp: First breakpoint placed
+PASS: gdb.base/breakpoint-shadow.exp: Second breakpoint placed
+PASS: gdb.base/breakpoint-shadow.exp: disassembly with breakpoints
+Running ./gdb.base/call-ar-st.exp ...
+PASS: gdb.base/call-ar-st.exp: set print sevenbit-strings
+PASS: gdb.base/call-ar-st.exp: set print address off
+PASS: gdb.base/call-ar-st.exp: set width 0
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1209
+PASS: gdb.base/call-ar-st.exp: run until breakpoint set at a line
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1216
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1220
+PASS: gdb.base/call-ar-st.exp: step inside print_all_arrays
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1236
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1241
+PASS: gdb.base/call-ar-st.exp: continue to 1241
+PASS: gdb.base/call-ar-st.exp: set breakpoint in sum_array_print
+PASS: gdb.base/call-ar-st.exp: set print frame-arguments all
+PASS: gdb.base/call-ar-st.exp: check args of sum_array_print
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1281
+PASS: gdb.base/call-ar-st.exp: print compute_with_small_structs(20)
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1286
+PASS: gdb.base/call-ar-st.exp: continue to 1286
+PASS: gdb.base/call-ar-st.exp: tbreak in print_long_arg_list after stepping into memcpy
+PASS: gdb.base/call-ar-st.exp: step into print_long_arg_list
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1300
+PASS: gdb.base/call-ar-st.exp: step into init_bit_flags_combo
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1305
+PASS: gdb.base/call-ar-st.exp: continue to 1305
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1311
+PASS: gdb.base/call-ar-st.exp: continue to 1311
+Running ./gdb.base/callexit.exp ...
+PASS: gdb.base/callexit.exp: inferior function call terminated program
+Running ./gdb.base/callfuncs.exp ...
+PASS: gdb.base/callfuncs.exp: set print sevenbit-strings
+PASS: gdb.base/callfuncs.exp: set print address off
+PASS: gdb.base/callfuncs.exp: set width 0
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: set unwindonsignal on
+PASS: gdb.base/callfuncs.exp: p t_char_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_char_values('a','b')
+PASS: gdb.base/callfuncs.exp: p t_char_values(char_val1,char_val2)
+PASS: gdb.base/callfuncs.exp: p t_char_values('a',char_val2)
+PASS: gdb.base/callfuncs.exp: p t_char_values(char_val1,'b')
+PASS: gdb.base/callfuncs.exp: p t_short_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_short_values(10,-23)
+PASS: gdb.base/callfuncs.exp: p t_short_values(short_val1,short_val2)
+PASS: gdb.base/callfuncs.exp: p t_short_values(10,short_val2)
+PASS: gdb.base/callfuncs.exp: p t_short_values(short_val1,-23)
+PASS: gdb.base/callfuncs.exp: p t_int_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_int_values(87,-26)
+PASS: gdb.base/callfuncs.exp: p t_int_values(int_val1,int_val2)
+PASS: gdb.base/callfuncs.exp: p t_int_values(87,int_val2)
+PASS: gdb.base/callfuncs.exp: p t_int_values(int_val1,-26)
+PASS: gdb.base/callfuncs.exp: p t_long_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_long_values(789,-321)
+PASS: gdb.base/callfuncs.exp: p t_long_values(long_val1,long_val2)
+PASS: gdb.base/callfuncs.exp: p t_long_values(789,long_val2)
+PASS: gdb.base/callfuncs.exp: p t_long_values(long_val1,-321)
+PASS: gdb.base/callfuncs.exp: p t_float_values(0.0,0.0)
+FAIL: gdb.base/callfuncs.exp: p t_float_values(3.14159,-2.3765)
+FAIL: gdb.base/callfuncs.exp: p t_float_values(float_val1,float_val2)
+FAIL: gdb.base/callfuncs.exp: p t_float_values(3.14159,float_val2)
+FAIL: gdb.base/callfuncs.exp: p t_float_values(float_val1,-2.3765)
+PASS: gdb.base/callfuncs.exp: p t_float_values2(0.0,0.0)
+FAIL: gdb.base/callfuncs.exp: p t_float_values2(3.14159,float_val2)
+FAIL: gdb.base/callfuncs.exp: Call function with many float arguments.
+PASS: gdb.base/callfuncs.exp: p t_small_values(1,2,3,4,5,6,7,8,9,10)
+PASS: gdb.base/callfuncs.exp: p t_double_values(0.0,0.0)
+FAIL: gdb.base/callfuncs.exp: p t_double_values(45.654,-67.66)
+FAIL: gdb.base/callfuncs.exp: p t_double_values(double_val1,double_val2)
+FAIL: gdb.base/callfuncs.exp: p t_double_values(45.654,double_val2)
+FAIL: gdb.base/callfuncs.exp: p t_double_values(double_val1,-67.66)
+FAIL: gdb.base/callfuncs.exp: Call function with many double arguments.
+FAIL: gdb.base/callfuncs.exp: p t_double_int(99.0, 1)
+FAIL: gdb.base/callfuncs.exp: p t_double_int(99.0, 99)
+FAIL: gdb.base/callfuncs.exp: p t_int_double(99, 1.0)
+FAIL: gdb.base/callfuncs.exp: p t_int_double(99, 99.0)
+FAIL: gdb.base/callfuncs.exp: p t_float_complex_values(fc1, fc2)
+PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc3, fc4)
+FAIL: gdb.base/callfuncs.exp: p t_float_complex_many_args(fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4)
+PASS: gdb.base/callfuncs.exp: p t_float_complex_many_args(fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1)
+FAIL: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2)
+PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc3, dc4)
+FAIL: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4)
+PASS: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1)
+FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc1, ldc2)
+PASS: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc3, ldc4)
+FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4)
+PASS: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1,ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1)
+PASS: gdb.base/callfuncs.exp: p t_string_values(string_val2,string_val1)
+PASS: gdb.base/callfuncs.exp: p t_string_values(string_val1,string_val2)
+FAIL: gdb.base/callfuncs.exp: p t_string_values("string 1","string 2")
+FAIL: gdb.base/callfuncs.exp: p t_string_values("string 1",string_val2)
+FAIL: gdb.base/callfuncs.exp: p t_string_values(string_val1,"string 2")
+PASS: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val2,char_array_val1)
+PASS: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val1,char_array_val2)
+FAIL: gdb.base/callfuncs.exp: p t_char_array_values("carray 1","carray 2")
+FAIL: gdb.base/callfuncs.exp: p t_char_array_values("carray 1",char_array_val2)
+FAIL: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val1,"carray 2")
+PASS: gdb.base/callfuncs.exp: p doubleit(4)
+PASS: gdb.base/callfuncs.exp: p add(4,5)
+PASS: gdb.base/callfuncs.exp: p t_func_values(func_val2,func_val1)
+PASS: gdb.base/callfuncs.exp: p t_func_values(func_val1,func_val2)
+PASS: gdb.base/callfuncs.exp: p function_struct.func(5)
+PASS: gdb.base/callfuncs.exp: p function_struct_ptr->func(10)
+PASS: gdb.base/callfuncs.exp: p t_func_values(add,func_val2)
+PASS: gdb.base/callfuncs.exp: p t_func_values(func_val1,doubleit)
+PASS: gdb.base/callfuncs.exp: p t_call_add(add,3,4)
+PASS: gdb.base/callfuncs.exp: p t_call_add(func_val1,3,4)
+PASS: gdb.base/callfuncs.exp: p t_enum_value1(enumval1)
+PASS: gdb.base/callfuncs.exp: p t_enum_value1(enum_val1)
+PASS: gdb.base/callfuncs.exp: p t_enum_value1(enum_val2)
+PASS: gdb.base/callfuncs.exp: p t_enum_value2(enumval2)
+PASS: gdb.base/callfuncs.exp: p t_enum_value2(enum_val2)
+PASS: gdb.base/callfuncs.exp: p t_enum_value2(enum_val1)
+FAIL: gdb.base/callfuncs.exp: p sum_args(1,{2})
+FAIL: gdb.base/callfuncs.exp: p sum_args(2,{2,3})
+FAIL: gdb.base/callfuncs.exp: p sum_args(3,{2,3,4})
+FAIL: gdb.base/callfuncs.exp: p sum_args(4,{2,3,4,5})
+PASS: gdb.base/callfuncs.exp: p sum10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
+PASS: gdb.base/callfuncs.exp: p cmp10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns char
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns short
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns int
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns long
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns float
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns double
+FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex
+FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns long double _Complex
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns char *
+PASS: gdb.base/callfuncs.exp: set unwindonsignal off
+PASS: gdb.base/callfuncs.exp: register contents after gdb function calls
+PASS: gdb.base/callfuncs.exp: gdb function calls preserve register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: stop at breakpoint in call dummy function
+PASS: gdb.base/callfuncs.exp: continue from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: bt after continuing from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: register contents after stop in call dummy
+PASS: gdb.base/callfuncs.exp: continue after stop in call dummy preserves register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: call function causing a breakpoint then do a finish
+PASS: gdb.base/callfuncs.exp: finish from call dummy breakpoint returns correct value
+PASS: gdb.base/callfuncs.exp: bt after finishing from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: register contents after finish in call dummy
+PASS: gdb.base/callfuncs.exp: finish after stop in call dummy preserves register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: call function causing a breakpoint and then do a return
+PASS: gdb.base/callfuncs.exp: back at main after return from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: register contents after return in call dummy
+PASS: gdb.base/callfuncs.exp: return after stop in call dummy preserves register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: stop at nested call level 1
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 1
+PASS: gdb.base/callfuncs.exp: stop at nested call level 2
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 2
+PASS: gdb.base/callfuncs.exp: stop at nested call level 3
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 3
+PASS: gdb.base/callfuncs.exp: stop at nested call level 4
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 4
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 4
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 4
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 3
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 3
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 2
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 2
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 1
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 1
+PASS: gdb.base/callfuncs.exp: register contents after nested call dummies
+PASS: gdb.base/callfuncs.exp: nested call dummies preserve register contents
+PASS: gdb.base/callfuncs.exp: set $old_sp = $sp
+PASS: gdb.base/callfuncs.exp: set $sp = 0
+PASS: gdb.base/callfuncs.exp: sp == 0: call doubleit (1)
+PASS: gdb.base/callfuncs.exp: set $sp = -1
+PASS: gdb.base/callfuncs.exp: sp == -1: call doubleit (1)
+PASS: gdb.base/callfuncs.exp: set $sp = $old_sp
+PASS: gdb.base/callfuncs.exp: print callfunc (Lcallfunc, 5)
+PASS: gdb.base/callfuncs.exp: print *((int *(*) (void)) voidfunc)()
+Running ./gdb.base/call-rt-st.exp ...
+PASS: gdb.base/call-rt-st.exp: set print sevenbit-strings
+PASS: gdb.base/call-rt-st.exp: set print address off
+PASS: gdb.base/call-rt-st.exp: set width 0
+PASS: gdb.base/call-rt-st.exp: breakpoint loop_count
+PASS: gdb.base/call-rt-st.exp: continue to loop_count
+PASS: gdb.base/call-rt-st.exp: finish out from loop_count (line 777)
+Running ./gdb.base/call-sc.exp ...
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tc (char)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tc char
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tc
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tc
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tc
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tc
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tc
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tc
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tc
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tc
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tc
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tc
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tc
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tc
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-ts (short int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ts short int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-ts
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ts
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-ts
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ts
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ts
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-ts
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-ts
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ts
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ts
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-ts
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-ts
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-ts
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-ti (int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ti int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-ti
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ti
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-ti
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ti
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ti
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-ti
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-ti
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ti
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ti
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-ti
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-ti
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-ti
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tl (long int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tl long int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tl
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tl
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tl
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tl
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tl
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tl
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tl
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tl
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tl
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tl
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tl
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tl
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tll (long long int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tll long long int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tll
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tll
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tll
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tll
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tll
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tll
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tll
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tll
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tll
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tll
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tll
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tll
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tf (float)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tf float
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tf
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tf
+FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tf
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tf
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tf
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tf
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tf
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tf
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tf
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tf
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tf
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tf
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-td (double)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-td double
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-td
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-td
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-td
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-td
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-td
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-td
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-td
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-td
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-td
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-td
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-td
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-td
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tld (long double)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tld long double
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tld
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tld
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tld
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tld
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tld
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tld
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tld
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tld
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tld
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tld
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tld
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tld
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-te (enum {e = 49})
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-te enum {e = 49}
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-te
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-te
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-te
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-te
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-te
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-te
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-te
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-te
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-te
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-te
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-te
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-te
+Running ./gdb.base/call-signal-resume.exp ...
+Running ./gdb.base/call-strs.exp ...
+PASS: gdb.base/call-strs.exp: set print sevenbit-strings
+PASS: gdb.base/call-strs.exp: set print address off
+PASS: gdb.base/call-strs.exp: set print symbol off
+PASS: gdb.base/call-strs.exp: set width 0
+FAIL: gdb.base/call-strs.exp: step after assignment to s
+FAIL: gdb.base/call-strs.exp: next over strcpy
+FAIL: gdb.base/call-strs.exp: print buf
+FAIL: gdb.base/call-strs.exp: print s
+Running ./gdb.base/catch-load.exp ...
+FAIL: gdb.base/catch-load.exp: plain load: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: plain load: set stop-on-solib-events 0
+PASS: gdb.base/catch-load.exp: plain load: catch load
+FAIL: gdb.base/catch-load.exp: plain load: continue
+FAIL: gdb.base/catch-load.exp: plain load with stop-on-solib-events: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: plain load with stop-on-solib-events: set stop-on-solib-events 1
+PASS: gdb.base/catch-load.exp: plain load with stop-on-solib-events: catch load
+FAIL: gdb.base/catch-load.exp: plain load with stop-on-solib-events: continue
+FAIL: gdb.base/catch-load.exp: rx load: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: rx load: set stop-on-solib-events 0
+PASS: gdb.base/catch-load.exp: rx load: catch load catch-load-so
+FAIL: gdb.base/catch-load.exp: rx load: continue
+FAIL: gdb.base/catch-load.exp: rx load with stop-on-solib-events: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: rx load with stop-on-solib-events: set stop-on-solib-events 1
+PASS: gdb.base/catch-load.exp: rx load with stop-on-solib-events: catch load catch-load-so
+FAIL: gdb.base/catch-load.exp: rx load with stop-on-solib-events: continue
+FAIL: gdb.base/catch-load.exp: non-matching load: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: non-matching load: set stop-on-solib-events 0
+PASS: gdb.base/catch-load.exp: non-matching load: catch load zardoz
+FAIL: gdb.base/catch-load.exp: non-matching load: continue
+FAIL: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: set stop-on-solib-events 1
+PASS: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: catch load zardoz
+FAIL: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: continue
+FAIL: gdb.base/catch-load.exp: plain unload: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: plain unload: set stop-on-solib-events 0
+PASS: gdb.base/catch-load.exp: plain unload: catch unload
+FAIL: gdb.base/catch-load.exp: plain unload: continue
+FAIL: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: set stop-on-solib-events 1
+PASS: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: catch unload
+FAIL: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: continue
+FAIL: gdb.base/catch-load.exp: rx unload: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: rx unload: set stop-on-solib-events 0
+PASS: gdb.base/catch-load.exp: rx unload: catch unload catch-load-so
+FAIL: gdb.base/catch-load.exp: rx unload: continue
+FAIL: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: set stop-on-solib-events 1
+PASS: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: catch unload catch-load-so
+FAIL: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: continue
+FAIL: gdb.base/catch-load.exp: non-matching unload: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: non-matching unload: set stop-on-solib-events 0
+PASS: gdb.base/catch-load.exp: non-matching unload: catch unload zardoz
+FAIL: gdb.base/catch-load.exp: non-matching unload: continue
+FAIL: gdb.base/catch-load.exp: non-matching unload with stop-on-solib-events: set var libname = "catch-load-so.so"
+PASS: gdb.base/catch-load.exp: non-matching unload with stop-on-solib-events: set stop-on-solib-events 1
+PASS: gdb.base/catch-load.exp: non-matching unload with stop-on-solib-events: catch unload zardoz
+FAIL: gdb.base/catch-load.exp: non-matching unload with stop-on-solib-events: continue
+Running ./gdb.base/catch-signal.exp ...
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue to breakpoint: first HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP: handle SIGHUP nostop noprint pass
+PASS: gdb.base/catch-signal.exp: SIGHUP: catch signal
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue to breakpoint: handle marker
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue to breakpoint: second HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP: catch signal SIGHUP
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue to breakpoint: third HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP: handle SIGUSR1 nostop noprint pass
+PASS: gdb.base/catch-signal.exp: SIGHUP: catch signal SIGUSR1
+PASS: gdb.base/catch-signal.exp: SIGHUP: handle SIGHUP nostop noprint nopass
+PASS: gdb.base/catch-signal.exp: SIGHUP: continue to breakpoint: fourth HUP
+PASS: gdb.base/catch-signal.exp: 1: continue to breakpoint: first HUP
+PASS: gdb.base/catch-signal.exp: 1: handle SIGHUP nostop noprint pass
+PASS: gdb.base/catch-signal.exp: 1: catch signal
+PASS: gdb.base/catch-signal.exp: 1: continue
+PASS: gdb.base/catch-signal.exp: 1: continue to breakpoint: handle marker
+PASS: gdb.base/catch-signal.exp: 1: continue to breakpoint: second HUP
+PASS: gdb.base/catch-signal.exp: 1: catch signal 1
+PASS: gdb.base/catch-signal.exp: 1: continue
+PASS: gdb.base/catch-signal.exp: 1: continue to breakpoint: third HUP
+PASS: gdb.base/catch-signal.exp: 1: handle SIGUSR1 nostop noprint pass
+PASS: gdb.base/catch-signal.exp: 1: catch signal SIGUSR1
+PASS: gdb.base/catch-signal.exp: 1: handle SIGHUP nostop noprint nopass
+PASS: gdb.base/catch-signal.exp: 1: continue to breakpoint: fourth HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue to breakpoint: first HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: handle SIGHUP nostop noprint pass
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: catch signal
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue to breakpoint: handle marker
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue to breakpoint: second HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: catch signal SIGHUP SIGUSR2
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue to breakpoint: third HUP
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: handle SIGUSR1 nostop noprint pass
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: catch signal SIGUSR1
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: handle SIGHUP nostop noprint nopass
+PASS: gdb.base/catch-signal.exp: SIGHUP SIGUSR2: continue to breakpoint: fourth HUP
+PASS: gdb.base/catch-signal.exp: catch signal SIGZARDOZ
+PASS: gdb.base/catch-signal.exp: catch signal all
+PASS: gdb.base/catch-signal.exp: catch signal all SIGHUP
+PASS: gdb.base/catch-signal.exp: catch signal SIGHUP all
+PASS: gdb.base/catch-signal.exp: set catchpoint '' for printing
+PASS: gdb.base/catch-signal.exp: info break for ''
+PASS: gdb.base/catch-signal.exp: save breakpoints for ''
+PASS: gdb.base/catch-signal.exp: results of save breakpoints for ''
+PASS: gdb.base/catch-signal.exp: set catchpoint 'SIGHUP' for printing
+PASS: gdb.base/catch-signal.exp: info break for 'SIGHUP'
+PASS: gdb.base/catch-signal.exp: save breakpoints for 'SIGHUP'
+PASS: gdb.base/catch-signal.exp: results of save breakpoints for 'SIGHUP'
+PASS: gdb.base/catch-signal.exp: set catchpoint 'SIGHUP SIGUSR2' for printing
+PASS: gdb.base/catch-signal.exp: info break for 'SIGHUP SIGUSR2'
+PASS: gdb.base/catch-signal.exp: save breakpoints for 'SIGHUP SIGUSR2'
+PASS: gdb.base/catch-signal.exp: results of save breakpoints for 'SIGHUP SIGUSR2'
+PASS: gdb.base/catch-signal.exp: set catchpoint 'all' for printing
+PASS: gdb.base/catch-signal.exp: info break for 'all'
+PASS: gdb.base/catch-signal.exp: save breakpoints for 'all'
+PASS: gdb.base/catch-signal.exp: results of save breakpoints for 'all'
+Running ./gdb.base/catch-syscall.exp ...
+Running ./gdb.base/charset.exp ...
+PASS: gdb.base/charset.exp: show charset
+PASS: gdb.base/charset.exp: show target-charset
+PASS: gdb.base/charset.exp: check `show target-charset' against `show charset'
+PASS: gdb.base/charset.exp: show host-charset
+PASS: gdb.base/charset.exp: check `show host-charset' against `show charset'
+PASS: gdb.base/charset.exp: try malformed `set charset'
+PASS: gdb.base/charset.exp: try `set host-charset' with invalid charset
+PASS: gdb.base/charset.exp: try `set target-charset' with invalid charset
+PASS: gdb.base/charset.exp: capture valid host charsets
+PASS: gdb.base/charset.exp: capture valid target charsets
+PASS: gdb.base/charset.exp: try `set host-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set host-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set host-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set host-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set host-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set host-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set host-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set host-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: set breakpoint after all strings have been initialized
+PASS: gdb.base/charset.exp: run until all strings have been initialized
+PASS: gdb.base/charset.exp: get integer valueof "sizeof (wchar_t)" (4)
+PASS: gdb.base/charset.exp: set host-charset ASCII
+PASS: gdb.base/charset.exp: set target-charset ASCII
+PASS: gdb.base/charset.exp: print the null character in ASCII
+PASS: gdb.base/charset.exp: print string in ASCII
+PASS: gdb.base/charset.exp: parse character literal in ASCII
+PASS: gdb.base/charset.exp: check value of parsed character literal in ASCII
+PASS: gdb.base/charset.exp: parse string literal in ASCII
+PASS: gdb.base/charset.exp: check value of parsed string literal in ASCII
+PASS: gdb.base/charset.exp: try printing '\a' in ASCII
+PASS: gdb.base/charset.exp: check value of '\a' in ASCII
+PASS: gdb.base/charset.exp: check value of "\a" in ASCII
+PASS: gdb.base/charset.exp: try printing '\b' in ASCII
+PASS: gdb.base/charset.exp: check value of '\b' in ASCII
+PASS: gdb.base/charset.exp: check value of "\b" in ASCII
+PASS: gdb.base/charset.exp: try printing '\f' in ASCII
+PASS: gdb.base/charset.exp: check value of '\f' in ASCII
+PASS: gdb.base/charset.exp: check value of "\f" in ASCII
+PASS: gdb.base/charset.exp: try printing '\n' in ASCII
+PASS: gdb.base/charset.exp: check value of '\n' in ASCII
+PASS: gdb.base/charset.exp: check value of "\n" in ASCII
+PASS: gdb.base/charset.exp: try printing '\r' in ASCII
+PASS: gdb.base/charset.exp: check value of '\r' in ASCII
+PASS: gdb.base/charset.exp: check value of "\r" in ASCII
+PASS: gdb.base/charset.exp: try printing '\t' in ASCII
+PASS: gdb.base/charset.exp: check value of '\t' in ASCII
+PASS: gdb.base/charset.exp: check value of "\t" in ASCII
+PASS: gdb.base/charset.exp: try printing '\v' in ASCII
+PASS: gdb.base/charset.exp: check value of '\v' in ASCII
+PASS: gdb.base/charset.exp: check value of "\v" in ASCII
+PASS: gdb.base/charset.exp: print escape that doesn't exist in ASCII
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in ASCII
+PASS: gdb.base/charset.exp: set target-charset ISO-8859-1
+PASS: gdb.base/charset.exp: print the null character in ISO-8859-1
+PASS: gdb.base/charset.exp: print string in ISO-8859-1
+PASS: gdb.base/charset.exp: parse character literal in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of parsed character literal in ISO-8859-1
+PASS: gdb.base/charset.exp: parse string literal in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of parsed string literal in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\a' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\a' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\a" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\b' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\b' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\b" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\f' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\f' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\f" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\n' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\n' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\n" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\r' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\r' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\r" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\t' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\t' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\t" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\v' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\v' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\v" in ISO-8859-1
+PASS: gdb.base/charset.exp: print escape that doesn't exist in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in ISO-8859-1
+PASS: gdb.base/charset.exp: set target-charset EBCDIC-US
+PASS: gdb.base/charset.exp: print the null character in EBCDIC-US
+PASS: gdb.base/charset.exp: print string in EBCDIC-US
+PASS: gdb.base/charset.exp: parse character literal in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of parsed character literal in EBCDIC-US
+PASS: gdb.base/charset.exp: parse string literal in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of parsed string literal in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\a' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\a' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\a" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\b' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\b' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\b" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\f' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\f' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\f" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\n' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\n' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\n" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\r' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\r' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\r" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\t' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\t' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\t" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\v' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\v' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\v" in EBCDIC-US
+PASS: gdb.base/charset.exp: print escape that doesn't exist in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in EBCDIC-US
+PASS: gdb.base/charset.exp: set target-charset IBM1047
+PASS: gdb.base/charset.exp: print the null character in IBM1047
+PASS: gdb.base/charset.exp: print string in IBM1047
+PASS: gdb.base/charset.exp: parse character literal in IBM1047
+PASS: gdb.base/charset.exp: check value of parsed character literal in IBM1047
+PASS: gdb.base/charset.exp: parse string literal in IBM1047
+PASS: gdb.base/charset.exp: check value of parsed string literal in IBM1047
+PASS: gdb.base/charset.exp: try printing '\a' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\a' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\a" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\b' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\b' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\b" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\f' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\f' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\f" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\n' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\n' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\n" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\r' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\r' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\r" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\t' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\t' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\t" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\v' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\v' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\v" in IBM1047
+PASS: gdb.base/charset.exp: print escape that doesn't exist in IBM1047
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in IBM1047
+PASS: gdb.base/charset.exp: set target-wide-charset UTF-32
+PASS: gdb.base/charset.exp: print the null character in UTF-32
+PASS: gdb.base/charset.exp: print string in UTF-32
+PASS: gdb.base/charset.exp: parse character literal in UTF-32
+PASS: gdb.base/charset.exp: check value of parsed character literal in UTF-32
+PASS: gdb.base/charset.exp: parse string literal in UTF-32
+PASS: gdb.base/charset.exp: check value of parsed string literal in UTF-32
+PASS: gdb.base/charset.exp: try printing '\a' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\a' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\a" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\b' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\b' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\b" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\f' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\f' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\f" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\n' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\n' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\n" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\r' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\r' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\r" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\t' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\t' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\t" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\v' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\v' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\v" in UTF-32
+PASS: gdb.base/charset.exp: print escape that doesn't exist in UTF-32
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in UTF-32
+PASS: gdb.base/charset.exp: set target-charset UTF-8
+PASS: gdb.base/charset.exp: non-representable target character
+PASS: gdb.base/charset.exp: print '\x'
+PASS: gdb.base/charset.exp: print '\u'
+PASS: gdb.base/charset.exp: print '\9'
+PASS: gdb.base/charset.exp: print "\1011"
+PASS: gdb.base/charset.exp: basic wide string concatenation
+PASS: gdb.base/charset.exp: narrow and wide string concatenation
+PASS: gdb.base/charset.exp: wide and narrow string concatenation
+PASS: gdb.base/charset.exp: wide string concatenation with escape
+PASS: gdb.base/charset.exp: concatenate three strings with empty wide string
+PASS: gdb.base/charset.exp: basic wide character
+PASS: gdb.base/charset.exp: get integer valueof "sizeof (char16_t)" (2)
+PASS: gdb.base/charset.exp: basic UTF-16 string concatenation
+PASS: gdb.base/charset.exp: narrow and UTF-16 string concatenation
+PASS: gdb.base/charset.exp: UTF-16 and narrow string concatenation
+PASS: gdb.base/charset.exp: UTF-16 string concatenation with escape
+PASS: gdb.base/charset.exp: concatenate three strings with empty UTF-16 string
+PASS: gdb.base/charset.exp: basic UTF-16 character
+PASS: gdb.base/charset.exp: get integer valueof "sizeof (char32_t)" (4)
+PASS: gdb.base/charset.exp: basic UTF-32 string concatenation
+PASS: gdb.base/charset.exp: narrow and UTF-32 string concatenation
+PASS: gdb.base/charset.exp: UTF-32 and narrow string concatenation
+PASS: gdb.base/charset.exp: UTF-32 string concatenation with escape
+PASS: gdb.base/charset.exp: concatenate three strings with empty UTF-32 string
+PASS: gdb.base/charset.exp: basic UTF-32 character
+PASS: gdb.base/charset.exp: undefined concatenation of wide and UTF-16
+PASS: gdb.base/charset.exp: undefined concatenation of wide and UTF-32
+PASS: gdb.base/charset.exp: typedef to wchar_t
+PASS: gdb.base/charset.exp: undefined concatenation of UTF-16 and UTF-32
+PASS: gdb.base/charset.exp: set up for python printing of utf-16 string
+PASS: gdb.base/charset.exp: extract utf-16 string using python
+PASS: gdb.base/charset.exp: EVAL_SKIP cleanup handling regression test
+FAIL: gdb.base/charset.exp: Assign String16 with prefix u
+FAIL: gdb.base/charset.exp: Display String String16 with x/hs
+FAIL: gdb.base/charset.exp: Assign String32 with prefix U
+FAIL: gdb.base/charset.exp: Display String String32 with x/ws
+FAIL: gdb.base/charset.exp: Assign String32 with prefix L
+FAIL: gdb.base/charset.exp: Display String String32 with x/ws
+PASS: gdb.base/charset.exp: assign string to short array
+PASS: gdb.base/charset.exp: assign string to int array
+PASS: gdb.base/charset.exp: assign string to long array
+Running ./gdb.base/checkpoint.exp ...
+Running ./gdb.base/chng-syms.exp ...
+PASS: gdb.base/chng-syms.exp: setting conditional breakpoint on function
+FAIL: gdb.base/chng-syms.exp: setting breakpoint at exit
+PASS: gdb.base/chng-syms.exp: running with invalidated bpt condition after executable changes
+Running ./gdb.base/code_elim.exp ...
+PASS: gdb.base/code_elim.exp: symbol-file code_elim1
+PASS: gdb.base/code_elim.exp: single psymtabs: test eliminated var my_global_symbol
+PASS: gdb.base/code_elim.exp: single psymtabs: test eliminated var my_static_symbol
+PASS: gdb.base/code_elim.exp: single psymtabs: test eliminated var my_global_func
+PASS: gdb.base/code_elim.exp: single psymtabs: get address of main
+PASS: gdb.base/code_elim.exp: single symtabs: test eliminated var my_global_symbol
+PASS: gdb.base/code_elim.exp: single symtabs: test eliminated var my_static_symbol
+PASS: gdb.base/code_elim.exp: single symtabs: test eliminated var my_global_func
+PASS: gdb.base/code_elim.exp: single symtabs: get address of main
+PASS: gdb.base/code_elim.exp: order1: add-symbol-file code_elim1 0x100000
+PASS: gdb.base/code_elim.exp: order1: add-symbol-file code_elim2 0x200000
+PASS: gdb.base/code_elim.exp: order1: get address of my_global_symbol
+PASS: gdb.base/code_elim.exp: order1: get address of my_static_symbol
+PASS: gdb.base/code_elim.exp: order1: get address of my_global_func
+PASS: gdb.base/code_elim.exp: order1: get address of main
+PASS: gdb.base/code_elim.exp: order2: add-symbol-file code_elim2 0x200000
+PASS: gdb.base/code_elim.exp: order2: add-symbol-file code_elim1 0x100000
+PASS: gdb.base/code_elim.exp: order2: get address of my_global_symbol
+PASS: gdb.base/code_elim.exp: order2: get address of my_static_symbol
+PASS: gdb.base/code_elim.exp: order2: get address of my_global_func
+PASS: gdb.base/code_elim.exp: order2: get address of main
+Running ./gdb.base/code-expr.exp ...
+PASS: gdb.base/code-expr.exp: set print sevenbit-strings
+PASS: gdb.base/code-expr.exp: set print address off
+PASS: gdb.base/code-expr.exp: set width 0
+PASS: gdb.base/code-expr.exp: (@code char)
+PASS: gdb.base/code-expr.exp: (@code signed char)
+PASS: gdb.base/code-expr.exp: (@code unsigned char)
+PASS: gdb.base/code-expr.exp: (@code short)
+PASS: gdb.base/code-expr.exp: (@code signed short)
+PASS: gdb.base/code-expr.exp: (@code unsigned short)
+PASS: gdb.base/code-expr.exp: (@code int)
+PASS: gdb.base/code-expr.exp: (@code signed int)
+PASS: gdb.base/code-expr.exp: (@code unsigned int)
+PASS: gdb.base/code-expr.exp: (@code long)
+PASS: gdb.base/code-expr.exp: (@code signed long)
+PASS: gdb.base/code-expr.exp: (@code unsigned long)
+PASS: gdb.base/code-expr.exp: (@code long long)
+PASS: gdb.base/code-expr.exp: (@code signed long long)
+PASS: gdb.base/code-expr.exp: (@code unsigned long long)
+PASS: gdb.base/code-expr.exp: (@code float)
+PASS: gdb.base/code-expr.exp: (@code double)
+PASS: gdb.base/code-expr.exp: (@data char)
+PASS: gdb.base/code-expr.exp: (@data signed char)
+PASS: gdb.base/code-expr.exp: (@data unsigned char)
+PASS: gdb.base/code-expr.exp: (@data short)
+PASS: gdb.base/code-expr.exp: (@data signed short)
+PASS: gdb.base/code-expr.exp: (@data unsigned short)
+PASS: gdb.base/code-expr.exp: (@data int)
+PASS: gdb.base/code-expr.exp: (@data signed int)
+PASS: gdb.base/code-expr.exp: (@data unsigned int)
+PASS: gdb.base/code-expr.exp: (@data long)
+PASS: gdb.base/code-expr.exp: (@data signed long)
+PASS: gdb.base/code-expr.exp: (@data unsigned long)
+PASS: gdb.base/code-expr.exp: (@data long long)
+PASS: gdb.base/code-expr.exp: (@data signed long long)
+PASS: gdb.base/code-expr.exp: (@data unsigned long long)
+PASS: gdb.base/code-expr.exp: (@data float)
+PASS: gdb.base/code-expr.exp: (@data double)
+PASS: gdb.base/code-expr.exp: (char @code)
+PASS: gdb.base/code-expr.exp: (signed char @code)
+PASS: gdb.base/code-expr.exp: (unsigned char @code)
+PASS: gdb.base/code-expr.exp: (short @code)
+PASS: gdb.base/code-expr.exp: (signed short @code)
+PASS: gdb.base/code-expr.exp: (unsigned short @code)
+PASS: gdb.base/code-expr.exp: (int @code)
+PASS: gdb.base/code-expr.exp: (signed int @code)
+PASS: gdb.base/code-expr.exp: (unsigned int @code)
+PASS: gdb.base/code-expr.exp: (long @code)
+PASS: gdb.base/code-expr.exp: (signed long @code)
+PASS: gdb.base/code-expr.exp: (unsigned long @code)
+PASS: gdb.base/code-expr.exp: (long long @code)
+PASS: gdb.base/code-expr.exp: (signed long long @code)
+PASS: gdb.base/code-expr.exp: (unsigned long long @code)
+PASS: gdb.base/code-expr.exp: (float @code)
+PASS: gdb.base/code-expr.exp: (double @code)
+PASS: gdb.base/code-expr.exp: (char @data)
+PASS: gdb.base/code-expr.exp: (signed char @data)
+PASS: gdb.base/code-expr.exp: (unsigned char @data)
+PASS: gdb.base/code-expr.exp: (short @data)
+PASS: gdb.base/code-expr.exp: (signed short @data)
+PASS: gdb.base/code-expr.exp: (unsigned short @data)
+PASS: gdb.base/code-expr.exp: (int @data)
+PASS: gdb.base/code-expr.exp: (signed int @data)
+PASS: gdb.base/code-expr.exp: (unsigned int @data)
+PASS: gdb.base/code-expr.exp: (long @data)
+PASS: gdb.base/code-expr.exp: (signed long @data)
+PASS: gdb.base/code-expr.exp: (unsigned long @data)
+PASS: gdb.base/code-expr.exp: (long long @data)
+PASS: gdb.base/code-expr.exp: (signed long long @data)
+PASS: gdb.base/code-expr.exp: (unsigned long long @data)
+PASS: gdb.base/code-expr.exp: (float @data)
+PASS: gdb.base/code-expr.exp: (double @data)
+PASS: gdb.base/code-expr.exp: (@code enum misordered)
+PASS: gdb.base/code-expr.exp: (enum misordered @code)
+PASS: gdb.base/code-expr.exp: (@data enum misordered)
+PASS: gdb.base/code-expr.exp: (enum misordered @data)
+PASS: gdb.base/code-expr.exp: (@code int *)
+PASS: gdb.base/code-expr.exp: (int @code *)
+PASS: gdb.base/code-expr.exp: (int * @code)
+PASS: gdb.base/code-expr.exp: (@code int * @code)
+PASS: gdb.base/code-expr.exp: (int @code * @code)
+PASS: gdb.base/code-expr.exp: (@code int **)
+PASS: gdb.base/code-expr.exp: (int @code **)
+PASS: gdb.base/code-expr.exp: (int ** @code)
+PASS: gdb.base/code-expr.exp: (@code int * @code *)
+PASS: gdb.base/code-expr.exp: (int @code * @code *)
+PASS: gdb.base/code-expr.exp: (@code int * @code * @code)
+PASS: gdb.base/code-expr.exp: (int @code * @code * @code)
+PASS: gdb.base/code-expr.exp: (@code struct t_struct)
+PASS: gdb.base/code-expr.exp: (@code union t_union)
+PASS: gdb.base/code-expr.exp: (struct t_struct @code)
+PASS: gdb.base/code-expr.exp: (union t_union @code)
+PASS: gdb.base/code-expr.exp: (@code struct t_struct *)
+PASS: gdb.base/code-expr.exp: (@code union t_union *)
+PASS: gdb.base/code-expr.exp: (struct t_struct @code *)
+PASS: gdb.base/code-expr.exp: (union t_union @code *)
+PASS: gdb.base/code-expr.exp: (struct t_struct * @code)
+PASS: gdb.base/code-expr.exp: (union t_union * @code)
+PASS: gdb.base/code-expr.exp: (@code struct t_struct * @code)
+PASS: gdb.base/code-expr.exp: (@code union t_union * @code)
+PASS: gdb.base/code-expr.exp: (struct t_struct @code * @code)
+PASS: gdb.base/code-expr.exp: (union t_union @code * @code)
+Running ./gdb.base/commands.exp ...
+PASS: gdb.base/commands.exp: set foo in gdbvar_simple_if_test
+PASS: gdb.base/commands.exp: gdbvar_simple_if_test #1
+PASS: gdb.base/commands.exp: gdbvar_simple_if_test #2
+PASS: gdb.base/commands.exp: set foo in gdbvar_simple_while_test
+PASS: gdb.base/commands.exp: gdbvar_simple_while_test #1
+PASS: gdb.base/commands.exp: set foo in gdbvar complex_if_while_test
+PASS: gdb.base/commands.exp: gdbvar_complex_if_while_test #1
+PASS: gdb.base/commands.exp: set foo in user_defined_command_test
+PASS: gdb.base/commands.exp: define mycommand in user_defined_command_test
+PASS: gdb.base/commands.exp: enter commands in user_defined_command_test
+PASS: gdb.base/commands.exp: execute user defined command in user_defined_command_test
+PASS: gdb.base/commands.exp: display user command in user_defined_command_test
+PASS: gdb.base/commands.exp: tried to deprecate non-existing command
+PASS: gdb.base/commands.exp: maintenance deprecate p "new_p" /1/
+PASS: gdb.base/commands.exp: p deprecated warning, with replacement
+PASS: gdb.base/commands.exp: Deprecated warning goes away /1/
+PASS: gdb.base/commands.exp: maintenance deprecate p "new_p" /2/
+PASS: gdb.base/commands.exp: maintenance deprecate print "new_print"
+PASS: gdb.base/commands.exp: both alias and command are deprecated
+PASS: gdb.base/commands.exp: Deprecated warning goes away /2/
+PASS: gdb.base/commands.exp: deprecate long command /1/
+PASS: gdb.base/commands.exp: long command deprecated /1/
+PASS: gdb.base/commands.exp: deprecate long command /2/
+PASS: gdb.base/commands.exp: long command deprecated with no alternative /2/
+PASS: gdb.base/commands.exp: deprecate with no arguments
+PASS: gdb.base/commands.exp: stray_arg0_test #1
+PASS: gdb.base/commands.exp: stray_arg0_test #2
+PASS: gdb.base/commands.exp: stray_arg0_test #3
+PASS: gdb.base/commands.exp: stray_arg0_test #4
+PASS: gdb.base/commands.exp: source file with indented comment
+PASS: gdb.base/commands.exp: recursive source test
+PASS: gdb.base/commands.exp: set $tem in if_commands_test
+PASS: gdb.base/commands.exp: if $tem == 2 - if_commands_test 1
+PASS: gdb.base/commands.exp: break main - if_commands_test 1
+PASS: gdb.base/commands.exp: else - if_commands_test 1
+PASS: gdb.base/commands.exp: break factorial - if_commands_test 1
+PASS: gdb.base/commands.exp: commands - if_commands_test 1
+PASS: gdb.base/commands.exp: silent - if_commands_test 1
+PASS: gdb.base/commands.exp: set $tem = 3 - if_commands_test 1
+PASS: gdb.base/commands.exp: continue - if_commands_test 1
+PASS: gdb.base/commands.exp: first end - if_commands_test 1
+PASS: gdb.base/commands.exp: second end - if_commands_test 1
+PASS: gdb.base/commands.exp: if $tem == 1 - if_commands_test 2
+PASS: gdb.base/commands.exp: break main - if_commands_test 2
+PASS: gdb.base/commands.exp: else - if_commands_test 2
+PASS: gdb.base/commands.exp: break factorial - if_commands_test 2
+PASS: gdb.base/commands.exp: commands - if_commands_test 2
+PASS: gdb.base/commands.exp: silent - if_commands_test 2
+PASS: gdb.base/commands.exp: set $tem = 3 - if_commands_test 2
+PASS: gdb.base/commands.exp: continue - if_commands_test 2
+PASS: gdb.base/commands.exp: first end - if_commands_test 2
+PASS: gdb.base/commands.exp: second end - if_commands_test 2
+PASS: gdb.base/commands.exp: hook-stop 1
+PASS: gdb.base/commands.exp: hook-stop 1a
+PASS: gdb.base/commands.exp: hook-stop 1b
+PASS: gdb.base/commands.exp: main commands 1
+PASS: gdb.base/commands.exp: main commands 1a
+PASS: gdb.base/commands.exp: main commands 1b
+PASS: gdb.base/commands.exp: main commands 1c
+PASS: gdb.base/commands.exp: main commands 2
+PASS: gdb.base/commands.exp: main commands 2a
+PASS: gdb.base/commands.exp: main commands 2b
+PASS: gdb.base/commands.exp: main commands 2c
+PASS: gdb.base/commands.exp: cmd1 error
+PASS: gdb.base/commands.exp: no cmd2
+PASS: gdb.base/commands.exp: define one
+PASS: gdb.base/commands.exp: define hook-one
+PASS: gdb.base/commands.exp: define one in redefine_hook_test
+PASS: gdb.base/commands.exp: enter commands for one redefinition in redefine_hook_test
+PASS: gdb.base/commands.exp: execute one command in redefine_hook_test
+PASS: gdb.base/commands.exp: define backtrace
+PASS: gdb.base/commands.exp: expect response to define backtrace
+PASS: gdb.base/commands.exp: enter commands in redefine_backtrace_test
+PASS: gdb.base/commands.exp: execute backtrace command in redefine_backtrace_test
+PASS: gdb.base/commands.exp: execute bt command in redefine_backtrace_test
+Running ./gdb.base/completion.exp ...
+PASS: gdb.base/completion.exp: complete 'hfgfh'
+PASS: gdb.base/completion.exp: complete 'show output'
+PASS: gdb.base/completion.exp: complete 'show output-'
+PASS: gdb.base/completion.exp: complete 'p'
+PASS: gdb.base/completion.exp: complete 'p '
+PASS: gdb.base/completion.exp: complete 'info t foo'
+PASS: gdb.base/completion.exp: complete 'info t'
+PASS: gdb.base/completion.exp: complete 'info t '
+PASS: gdb.base/completion.exp: complete 'info asdfgh'
+PASS: gdb.base/completion.exp: complete 'info asdfgh '
+PASS: gdb.base/completion.exp: complete 'info'
+PASS: gdb.base/completion.exp: complete 'info '
+PASS: gdb.base/completion.exp: complete (2) 'info '
+PASS: gdb.base/completion.exp: complete 'help info wat'
+PASS: gdb.base/completion.exp: complete 'p "break1'
+XFAIL: gdb.base/completion.exp: complete 'p "break1.'
+PASS: gdb.base/completion.exp: complete 'p 'arg'
+PASS: gdb.base/completion.exp: complete (2) 'p 'arg'
+PASS: gdb.base/completion.exp: complete 'handle signal'
+PASS: gdb.base/completion.exp: complete 'handle keyword'
+PASS: gdb.base/completion.exp: complete help aliases
+PASS: gdb.base/completion.exp: complete 'p no_var_named_this-arg'
+PASS: gdb.base/completion.exp: complete (2) 'p no_var_named_this-arg'
+FAIL: gdb.base/completion.exp: complete (2) 'p no_var_named_this-' (timeout)
+FAIL: gdb.base/completion.exp: complete 'p values[0].a' (timeout)
+FAIL: gdb.base/completion.exp: complete 'p values[0] . a' (timeout)
+FAIL: gdb.base/completion.exp: complete 'p &values[0] -> a' (timeout)
+FAIL: gdb.base/completion.exp: completion of field in anonymous union
+FAIL: gdb.base/completion.exp: ptype completion of field in anonymous union
+PASS: gdb.base/completion.exp: whatis completion of field in anonymous union
+PASS: gdb.base/completion.exp: cd to ${srcdir}
+PASS: gdb.base/completion.exp: directory completion
+PASS: gdb.base/completion.exp: directory completion 2
+PASS: gdb.base/completion.exp: Glob remaining of directory test
+PASS: gdb.base/completion.exp: complete-command 'file ./gdb.base/compl'
+PASS: gdb.base/completion.exp: complete 'file ./gdb.base/complet'
+PASS: gdb.base/completion.exp: complete 'info func marke'
+PASS: gdb.base/completion.exp: complete 'set follow-fork-mode'
+PASS: gdb.base/completion.exp: field completion with invalid field
+PASS: gdb.base/completion.exp: test non-deprecated completion
+PASS: gdb.base/completion.exp: test deprecated completion
+PASS: gdb.base/completion.exp: complete ptype struct some_
+PASS: gdb.base/completion.exp: complete ptype enum some_
+PASS: gdb.base/completion.exp: complete ptype union some_
+PASS: gdb.base/completion.exp: complete set gnutarget aut
+PASS: gdb.base/completion.exp: complete set cp-abi aut
+Running ./gdb.base/complex.exp ...
+PASS: gdb.base/complex.exp: print complex packed value in C
+PASS: gdb.base/complex.exp: print complex value in C
+Running ./gdb.base/comprdebug.exp ...
+PASS: gdb.base/comprdebug.exp: file comprdebug0.o
+Running ./gdb.base/condbreak.exp ...
+PASS: gdb.base/condbreak.exp: breakpoint function
+PASS: gdb.base/condbreak.exp: break marker1 if 1==1
+PASS: gdb.base/condbreak.exp: delete 2
+PASS: gdb.base/condbreak.exp: break break.c:92 if 1==1
+PASS: gdb.base/condbreak.exp: delete 3
+PASS: gdb.base/condbreak.exp: break marker1 if (1==1)
+PASS: gdb.base/condbreak.exp: break break.c:92 if (1==1)
+PASS: gdb.base/condbreak.exp: break marker2 if (a==43)
+PASS: gdb.base/condbreak.exp: break marker3 if (multi_line_if_conditional(1,1,1)==0)
+PASS: gdb.base/condbreak.exp: break marker4
+FAIL: gdb.base/condbreak.exp: breakpoint info
+PASS: gdb.base/condbreak.exp: rerun to main
+PASS: gdb.base/condbreak.exp: run until breakpoint set at a line number
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker1
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker2
+PASS: gdb.base/condbreak.exp: break main if (1==1) thread 999
+PASS: gdb.base/condbreak.exp: break main thread 999 if (1==1)
+PASS: gdb.base/condbreak.exp: break *main if (1==1) thread 999
+PASS: gdb.base/condbreak.exp: break *main thread 999 if (1==1)
+PASS: gdb.base/condbreak.exp: break *main if (1==1) task 999
+PASS: gdb.base/condbreak.exp: break *main task 999 if (1==1)
+PASS: gdb.base/condbreak.exp: break *main if (1==1) t 999
+PASS: gdb.base/condbreak.exp: break *main if (1==1) th 999
+PASS: gdb.base/condbreak.exp: break *main if (1==1) ta 999
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker3
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker4
+PASS: gdb.base/condbreak.exp: complete cond 1
+PASS: gdb.base/condbreak.exp: set variable $var = 1
+PASS: gdb.base/condbreak.exp: complete cond $v
+PASS: gdb.base/condbreak.exp: complete cond 1 values[0].a
+Running ./gdb.base/cond-eval-mode.exp ...
+PASS: gdb.base/cond-eval-mode.exp: set breakpoint condition-evaluation host
+PASS: gdb.base/cond-eval-mode.exp: set breakpoint condition-evaluation auto
+PASS: gdb.base/cond-eval-mode.exp: set breakpoint condition-evaluation target
+Running ./gdb.base/cond-expr.exp ...
+PASS: gdb.base/cond-expr.exp: print value of cond expr (const true)
+PASS: gdb.base/cond-expr.exp: print value of cond expr (const false)
+PASS: gdb.base/cond-expr.exp: set variable x=14
+PASS: gdb.base/cond-expr.exp: set variable y=2
+PASS: gdb.base/cond-expr.exp: set variable z=3
+PASS: gdb.base/cond-expr.exp: print value of cond expr (var true)
+PASS: gdb.base/cond-expr.exp: set variable x=0
+PASS: gdb.base/cond-expr.exp: print value of cond expr (var false)
+PASS: gdb.base/cond-expr.exp: print whatis of cond expr
+Running ./gdb.base/consecutive.exp ...
+PASS: gdb.base/consecutive.exp: continue to breakpoint in foo
+PASS: gdb.base/consecutive.exp: get breakpoint address for foo
+PASS: gdb.base/consecutive.exp: set bp, 2nd instr
+PASS: gdb.base/consecutive.exp: stopped at bp, 2nd instr
+Running ./gdb.base/constvars.exp ...
+PASS: gdb.base/constvars.exp: break marker1
+PASS: gdb.base/constvars.exp: continue to marker1
+PASS: gdb.base/constvars.exp: up from marker1
+PASS: gdb.base/constvars.exp: ptype qux1
+PASS: gdb.base/constvars.exp: print lave
+PASS: gdb.base/constvars.exp: ptype lave
+PASS: gdb.base/constvars.exp: print lavish
+PASS: gdb.base/constvars.exp: ptype lavish
+PASS: gdb.base/constvars.exp: print lax
+PASS: gdb.base/constvars.exp: ptype lax
+PASS: gdb.base/constvars.exp: print lecherous
+PASS: gdb.base/constvars.exp: ptype lecherous
+PASS: gdb.base/constvars.exp: print lechery
+PASS: gdb.base/constvars.exp: ptype lechery
+PASS: gdb.base/constvars.exp: print lectern
+PASS: gdb.base/constvars.exp: ptype lectern
+PASS: gdb.base/constvars.exp: print leeway
+PASS: gdb.base/constvars.exp: ptype leeway
+PASS: gdb.base/constvars.exp: print legacy
+PASS: gdb.base/constvars.exp: ptype legacy
+PASS: gdb.base/constvars.exp: print laconic
+PASS: gdb.base/constvars.exp: ptype laconic
+PASS: gdb.base/constvars.exp: print laggard
+PASS: gdb.base/constvars.exp: ptype laggard
+PASS: gdb.base/constvars.exp: print lagoon
+PASS: gdb.base/constvars.exp: ptype lagoon
+PASS: gdb.base/constvars.exp: print laity
+PASS: gdb.base/constvars.exp: ptype laity
+PASS: gdb.base/constvars.exp: print lambent
+PASS: gdb.base/constvars.exp: ptype lambent
+PASS: gdb.base/constvars.exp: print laminated
+PASS: gdb.base/constvars.exp: ptype laminated
+PASS: gdb.base/constvars.exp: print lampoon
+PASS: gdb.base/constvars.exp: ptype lampoon
+PASS: gdb.base/constvars.exp: print languid
+PASS: gdb.base/constvars.exp: ptype languid
+PASS: gdb.base/constvars.exp: print *legend
+PASS: gdb.base/constvars.exp: ptype legend
+PASS: gdb.base/constvars.exp: print *legerdemain
+PASS: gdb.base/constvars.exp: ptype legerdemain
+PASS: gdb.base/constvars.exp: print *leniency
+PASS: gdb.base/constvars.exp: ptype leniency
+PASS: gdb.base/constvars.exp: print *leonine
+PASS: gdb.base/constvars.exp: ptype leonine
+PASS: gdb.base/constvars.exp: print *lesion
+PASS: gdb.base/constvars.exp: ptype lesion
+PASS: gdb.base/constvars.exp: print *lethal
+PASS: gdb.base/constvars.exp: ptype lethal
+PASS: gdb.base/constvars.exp: print *lethargic
+PASS: gdb.base/constvars.exp: ptype lethargic
+PASS: gdb.base/constvars.exp: print *levity
+PASS: gdb.base/constvars.exp: ptype levity
+PASS: gdb.base/constvars.exp: print *lewd
+PASS: gdb.base/constvars.exp: ptype lewd
+PASS: gdb.base/constvars.exp: print *lexicographer
+PASS: gdb.base/constvars.exp: ptype lexicographer
+PASS: gdb.base/constvars.exp: print *lexicon
+PASS: gdb.base/constvars.exp: ptype lexicon
+PASS: gdb.base/constvars.exp: print *liaison
+PASS: gdb.base/constvars.exp: ptype liaison
+PASS: gdb.base/constvars.exp: print *libation
+PASS: gdb.base/constvars.exp: ptype libation
+PASS: gdb.base/constvars.exp: print *libelous
+PASS: gdb.base/constvars.exp: ptype libelous
+PASS: gdb.base/constvars.exp: print *libertine
+PASS: gdb.base/constvars.exp: ptype libertine
+PASS: gdb.base/constvars.exp: print *libidinous
+PASS: gdb.base/constvars.exp: ptype libidinous
+PASS: gdb.base/constvars.exp: print *languish
+PASS: gdb.base/constvars.exp: ptype languish
+PASS: gdb.base/constvars.exp: print *languor
+PASS: gdb.base/constvars.exp: ptype languor
+PASS: gdb.base/constvars.exp: print *lank
+PASS: gdb.base/constvars.exp: ptype lank
+PASS: gdb.base/constvars.exp: print *lapidary
+PASS: gdb.base/constvars.exp: ptype lapidary
+PASS: gdb.base/constvars.exp: print *larceny
+PASS: gdb.base/constvars.exp: ptype larceny
+PASS: gdb.base/constvars.exp: print *largess
+PASS: gdb.base/constvars.exp: ptype largess
+PASS: gdb.base/constvars.exp: print *lascivious
+PASS: gdb.base/constvars.exp: ptype lascivious
+PASS: gdb.base/constvars.exp: print *lassitude
+PASS: gdb.base/constvars.exp: ptype lassitude
+PASS: gdb.base/constvars.exp: print *lamprey
+PASS: gdb.base/constvars.exp: ptype lamprey
+PASS: gdb.base/constvars.exp: print *lariat
+PASS: gdb.base/constvars.exp: ptype lariat
+PASS: gdb.base/constvars.exp: print *laudanum
+PASS: gdb.base/constvars.exp: ptype laudanum
+PASS: gdb.base/constvars.exp: print *lecithin
+PASS: gdb.base/constvars.exp: ptype lecithin
+PASS: gdb.base/constvars.exp: print *leviathan
+PASS: gdb.base/constvars.exp: ptype leviathan
+PASS: gdb.base/constvars.exp: print *libretto
+PASS: gdb.base/constvars.exp: ptype libretto
+PASS: gdb.base/constvars.exp: print *lissome
+PASS: gdb.base/constvars.exp: ptype lissome
+PASS: gdb.base/constvars.exp: print *locust
+PASS: gdb.base/constvars.exp: ptype locust
+PASS: gdb.base/constvars.exp: ptype logical
+PASS: gdb.base/constvars.exp: ptype lugged
+PASS: gdb.base/constvars.exp: ptype luck
+PASS: gdb.base/constvars.exp: ptype lunar
+PASS: gdb.base/constvars.exp: ptype lumen
+PASS: gdb.base/constvars.exp: ptype lurk
+PASS: gdb.base/constvars.exp: ptype lush
+PASS: gdb.base/constvars.exp: ptype lynx
+PASS: gdb.base/constvars.exp: ptype crass
+PASS: gdb.base/constvars.exp: ptype crisp
+Running ./gdb.base/corefile.exp ...
+Running ./gdb.base/ctxobj.exp ...
+FAIL: gdb.base/ctxobj.exp: break in get_version functions (got interactive prompt)
+FAIL: gdb.base/ctxobj.exp: continue to get_version_1 (the program exited)
+FAIL: gdb.base/ctxobj.exp: print libctxobj1's this_version_num from partial symtab
+FAIL: gdb.base/ctxobj.exp: print libctxobj1's this_version_num from symtab
+FAIL: gdb.base/ctxobj.exp: continue to get_version_2 (the program is no longer running)
+FAIL: gdb.base/ctxobj.exp: print libctxobj2's this_version_num from partial symtab
+FAIL: gdb.base/ctxobj.exp: print libctxobj2's this_version_num from symtab
+Running ./gdb.base/cursal.exp ...
+PASS: gdb.base/cursal.exp: set listsize 1
+PASS: gdb.base/cursal.exp: list before run
+PASS: gdb.base/cursal.exp: list in main
+PASS: gdb.base/cursal.exp: list in func2
+PASS: gdb.base/cursal.exp: backtrace
+PASS: gdb.base/cursal.exp: list after backtrace
+PASS: gdb.base/cursal.exp: set listsize 3
+PASS: gdb.base/cursal.exp: list size 3
+Running ./gdb.base/cvexpr.exp ...
+PASS: gdb.base/cvexpr.exp: set print sevenbit-strings
+PASS: gdb.base/cvexpr.exp: set print address off
+PASS: gdb.base/cvexpr.exp: set width 0
+PASS: gdb.base/cvexpr.exp: (const char)
+PASS: gdb.base/cvexpr.exp: (const signed char)
+PASS: gdb.base/cvexpr.exp: (const unsigned char)
+PASS: gdb.base/cvexpr.exp: (const short)
+PASS: gdb.base/cvexpr.exp: (const signed short)
+PASS: gdb.base/cvexpr.exp: (const unsigned short)
+PASS: gdb.base/cvexpr.exp: (const int)
+PASS: gdb.base/cvexpr.exp: (const signed int)
+PASS: gdb.base/cvexpr.exp: (const unsigned int)
+PASS: gdb.base/cvexpr.exp: (const long)
+PASS: gdb.base/cvexpr.exp: (const signed long)
+PASS: gdb.base/cvexpr.exp: (const unsigned long)
+PASS: gdb.base/cvexpr.exp: (const long long)
+PASS: gdb.base/cvexpr.exp: (const signed long long)
+PASS: gdb.base/cvexpr.exp: (const unsigned long long)
+PASS: gdb.base/cvexpr.exp: (const float)
+PASS: gdb.base/cvexpr.exp: (const double)
+PASS: gdb.base/cvexpr.exp: (volatile char)
+PASS: gdb.base/cvexpr.exp: (volatile signed char)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned char)
+PASS: gdb.base/cvexpr.exp: (volatile short)
+PASS: gdb.base/cvexpr.exp: (volatile signed short)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned short)
+PASS: gdb.base/cvexpr.exp: (volatile int)
+PASS: gdb.base/cvexpr.exp: (volatile signed int)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned int)
+PASS: gdb.base/cvexpr.exp: (volatile long)
+PASS: gdb.base/cvexpr.exp: (volatile signed long)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned long)
+PASS: gdb.base/cvexpr.exp: (volatile long long)
+PASS: gdb.base/cvexpr.exp: (volatile signed long long)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned long long)
+PASS: gdb.base/cvexpr.exp: (volatile float)
+PASS: gdb.base/cvexpr.exp: (volatile double)
+PASS: gdb.base/cvexpr.exp: (const volatile int)
+PASS: gdb.base/cvexpr.exp: (volatile const int)
+PASS: gdb.base/cvexpr.exp: (const int volatile)
+PASS: gdb.base/cvexpr.exp: (volatile int const)
+PASS: gdb.base/cvexpr.exp: (int const volatile)
+PASS: gdb.base/cvexpr.exp: (int volatile const)
+PASS: gdb.base/cvexpr.exp: (const volatile int *)
+PASS: gdb.base/cvexpr.exp: (volatile const int *)
+PASS: gdb.base/cvexpr.exp: (const int volatile)
+PASS: gdb.base/cvexpr.exp: (volatile int const *)
+PASS: gdb.base/cvexpr.exp: (int const volatile *)
+PASS: gdb.base/cvexpr.exp: (int volatile const *)
+PASS: gdb.base/cvexpr.exp: (int * const volatile)
+PASS: gdb.base/cvexpr.exp: (int * volatile const)
+PASS: gdb.base/cvexpr.exp: (char const)
+PASS: gdb.base/cvexpr.exp: (signed char const)
+PASS: gdb.base/cvexpr.exp: (unsigned char const)
+PASS: gdb.base/cvexpr.exp: (short const)
+PASS: gdb.base/cvexpr.exp: (signed short const)
+PASS: gdb.base/cvexpr.exp: (unsigned short const)
+PASS: gdb.base/cvexpr.exp: (int const)
+PASS: gdb.base/cvexpr.exp: (signed int const)
+PASS: gdb.base/cvexpr.exp: (unsigned int const)
+PASS: gdb.base/cvexpr.exp: (long const)
+PASS: gdb.base/cvexpr.exp: (signed long const)
+PASS: gdb.base/cvexpr.exp: (unsigned long const)
+PASS: gdb.base/cvexpr.exp: (long long const)
+PASS: gdb.base/cvexpr.exp: (signed long long const)
+PASS: gdb.base/cvexpr.exp: (unsigned long long const)
+PASS: gdb.base/cvexpr.exp: (float const)
+PASS: gdb.base/cvexpr.exp: (double const)
+PASS: gdb.base/cvexpr.exp: (char volatile)
+PASS: gdb.base/cvexpr.exp: (signed char volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned char volatile)
+PASS: gdb.base/cvexpr.exp: (short volatile)
+PASS: gdb.base/cvexpr.exp: (signed short volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned short volatile)
+PASS: gdb.base/cvexpr.exp: (int volatile)
+PASS: gdb.base/cvexpr.exp: (signed int volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned int volatile)
+PASS: gdb.base/cvexpr.exp: (long volatile)
+PASS: gdb.base/cvexpr.exp: (signed long volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned long volatile)
+PASS: gdb.base/cvexpr.exp: (long long volatile)
+PASS: gdb.base/cvexpr.exp: (signed long long volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned long long volatile)
+PASS: gdb.base/cvexpr.exp: (float volatile)
+PASS: gdb.base/cvexpr.exp: (double volatile)
+PASS: gdb.base/cvexpr.exp: (const enum misordered)
+PASS: gdb.base/cvexpr.exp: (enum misordered const)
+PASS: gdb.base/cvexpr.exp: (volatile enum misordered)
+PASS: gdb.base/cvexpr.exp: (enum misordered volatile)
+PASS: gdb.base/cvexpr.exp: (const int *)
+PASS: gdb.base/cvexpr.exp: (int const *)
+PASS: gdb.base/cvexpr.exp: (int * const)
+PASS: gdb.base/cvexpr.exp: (const int * const)
+PASS: gdb.base/cvexpr.exp: (int const * const)
+PASS: gdb.base/cvexpr.exp: (const int **)
+PASS: gdb.base/cvexpr.exp: (int const **)
+PASS: gdb.base/cvexpr.exp: (int ** const)
+PASS: gdb.base/cvexpr.exp: (const int * const *)
+PASS: gdb.base/cvexpr.exp: (int const * const *)
+PASS: gdb.base/cvexpr.exp: (const int * const * const)
+PASS: gdb.base/cvexpr.exp: (int const * const * const)
+PASS: gdb.base/cvexpr.exp: (const struct t_struct)
+PASS: gdb.base/cvexpr.exp: (const union t_union)
+PASS: gdb.base/cvexpr.exp: (struct t_struct const)
+PASS: gdb.base/cvexpr.exp: (union t_union const)
+PASS: gdb.base/cvexpr.exp: (const struct t_struct *)
+PASS: gdb.base/cvexpr.exp: (const union t_union *)
+PASS: gdb.base/cvexpr.exp: (struct t_struct const *)
+PASS: gdb.base/cvexpr.exp: (union t_union const *)
+PASS: gdb.base/cvexpr.exp: (struct t_struct * const)
+PASS: gdb.base/cvexpr.exp: (union t_union * const)
+PASS: gdb.base/cvexpr.exp: (const struct t_struct * const)
+PASS: gdb.base/cvexpr.exp: (const union t_union * const)
+PASS: gdb.base/cvexpr.exp: (struct t_struct const * const)
+PASS: gdb.base/cvexpr.exp: (union t_union const * const)
+Running ./gdb.base/dbx.exp ...
+PASS: gdb.base/dbx.exp: stop in main
+PASS: gdb.base/dbx.exp: status
+PASS: gdb.base/dbx.exp: stop at average.c:43
+PASS: gdb.base/dbx.exp: stop in average.c:43
+PASS: gdb.base/dbx.exp: stop at main
+PASS: gdb.base/dbx.exp: running to main
+PASS: gdb.base/dbx.exp: assign first
+PASS: gdb.base/dbx.exp: print first
+PASS: gdb.base/dbx.exp: whereis my_list
+PASS: gdb.base/dbx.exp: file average.c:1
+PASS: gdb.base/dbx.exp: cont 1
+PASS: gdb.base/dbx.exp: step
+XFAIL: gdb.base/dbx.exp: func sum
+PASS: gdb.base/dbx.exp: stop in sum
+PASS: gdb.base/dbx.exp: cont 2
+XFAIL: gdb.base/dbx.exp: func print_average
+Running ./gdb.base/debug-expr.exp ...
+PASS: gdb.base/debug-expr.exp: set variable array[0] = 0
+PASS: gdb.base/debug-expr.exp: set variable array[1] = 1
+PASS: gdb.base/debug-expr.exp: set variable array[2] = 2
+PASS: gdb.base/debug-expr.exp: set variable array[3] = 3
+PASS: gdb.base/debug-expr.exp: set debug expression 1
+PASS: gdb.base/debug-expr.exp: print /x {char[4]} array
+Running ./gdb.base/default.exp ...
+PASS: gdb.base/default.exp: add-symbol-file
+PASS: gdb.base/default.exp: append
+PASS: gdb.base/default.exp: append binary
+PASS: gdb.base/default.exp: append memory
+PASS: gdb.base/default.exp: append value
+PASS: gdb.base/default.exp: append binary memory
+PASS: gdb.base/default.exp: append binary value
+WARNING: Skipping backtrace and break tests because of GDB stub.
+PASS: gdb.base/default.exp: continue
+PASS: gdb.base/default.exp: continue "c" abbreviation
+PASS: gdb.base/default.exp: call
+PASS: gdb.base/default.exp: catch
+PASS: gdb.base/default.exp: cd
+PASS: gdb.base/default.exp: clear
+PASS: gdb.base/default.exp: commands
+PASS: gdb.base/default.exp: condition
+PASS: gdb.base/default.exp: core-file
+PASS: gdb.base/default.exp: delete "d" abbreviation
+PASS: gdb.base/default.exp: delete
+PASS: gdb.base/default.exp: define
+PASS: gdb.base/default.exp: delete breakpoints
+PASS: gdb.base/default.exp: delete display prompt
+PASS: gdb.base/default.exp: detach
+PASS: gdb.base/default.exp: directory prompt
+PASS: gdb.base/default.exp: disable "dis" abbreviation
+PASS: gdb.base/default.exp: disable "disa" abbreviation
+PASS: gdb.base/default.exp: disable
+PASS: gdb.base/default.exp: disable breakpoints
+PASS: gdb.base/default.exp: disable display
+PASS: gdb.base/default.exp: disassemble
+PASS: gdb.base/default.exp: display
+PASS: gdb.base/default.exp: do
+PASS: gdb.base/default.exp: document
+PASS: gdb.base/default.exp: down
+PASS: gdb.base/default.exp: down-silently
+PASS: gdb.base/default.exp: dump
+PASS: gdb.base/default.exp: dump binary
+PASS: gdb.base/default.exp: dump ihex
+PASS: gdb.base/default.exp: dump memory
+PASS: gdb.base/default.exp: dump srec
+PASS: gdb.base/default.exp: dump tekhex
+PASS: gdb.base/default.exp: dump value
+PASS: gdb.base/default.exp: dump binary memory
+PASS: gdb.base/default.exp: dump binary value
+PASS: gdb.base/default.exp: dump ihex memory
+PASS: gdb.base/default.exp: dump ihex value
+PASS: gdb.base/default.exp: dump srec memory
+PASS: gdb.base/default.exp: dump srec value
+PASS: gdb.base/default.exp: dump tekhex memory
+PASS: gdb.base/default.exp: dump tekhex value
+PASS: gdb.base/default.exp: echo
+PASS: gdb.base/default.exp: enable breakpoints delete
+PASS: gdb.base/default.exp: enable breakpoints once
+PASS: gdb.base/default.exp: enable breakpoints
+PASS: gdb.base/default.exp: enable delete
+PASS: gdb.base/default.exp: enable display
+PASS: gdb.base/default.exp: enable once
+PASS: gdb.base/default.exp: enable
+PASS: gdb.base/default.exp: exec-file
+PASS: gdb.base/default.exp: frame "f" abbreviation
+PASS: gdb.base/default.exp: frame
+PASS: gdb.base/default.exp: fg
+PASS: gdb.base/default.exp: file
+PASS: gdb.base/default.exp: finish
+PASS: gdb.base/default.exp: forward-search
+PASS: gdb.base/default.exp: gcore
+PASS: gdb.base/default.exp: generate-core-file
+PASS: gdb.base/default.exp: help "h" abbreviation
+PASS: gdb.base/default.exp: help
+PASS: gdb.base/default.exp: handle
+PASS: gdb.base/default.exp: info "i" abbreviation
+PASS: gdb.base/default.exp: info
+PASS: gdb.base/default.exp: ignore
+PASS: gdb.base/default.exp: info address
+PASS: gdb.base/default.exp: info all-registers
+PASS: gdb.base/default.exp: info args
+PASS: gdb.base/default.exp: info bogus-gdb-command
+PASS: gdb.base/default.exp: info breakpoints
+PASS: gdb.base/default.exp: info copying
+PASS: gdb.base/default.exp: info display
+PASS: gdb.base/default.exp: info frame "f" abbreviation
+PASS: gdb.base/default.exp: info frame
+PASS: gdb.base/default.exp: info files
+PASS: gdb.base/default.exp: info float
+PASS: gdb.base/default.exp: info functions
+PASS: gdb.base/default.exp: info locals
+PASS: gdb.base/default.exp: info program
+PASS: gdb.base/default.exp: info registers
+PASS: gdb.base/default.exp: info stack "s" abbreviation
+PASS: gdb.base/default.exp: info stack
+PASS: gdb.base/default.exp: info set
+PASS: gdb.base/default.exp: info symbol
+PASS: gdb.base/default.exp: info source
+PASS: gdb.base/default.exp: info sources
+PASS: gdb.base/default.exp: info target
+PASS: gdb.base/default.exp: info terminal
+PASS: gdb.base/default.exp: info threads
+PASS: gdb.base/default.exp: info types
+PASS: gdb.base/default.exp: info variables
+PASS: gdb.base/default.exp: info vector
+PASS: gdb.base/default.exp: info warranty
+PASS: gdb.base/default.exp: info watchpoints
+PASS: gdb.base/default.exp: inspect
+PASS: gdb.base/default.exp: jump
+PASS: gdb.base/default.exp: kill
+PASS: gdb.base/default.exp: list "l" abbreviation
+PASS: gdb.base/default.exp: list
+PASS: gdb.base/default.exp: load
+PASS: gdb.base/default.exp: next "n" abbreviation
+PASS: gdb.base/default.exp: next
+PASS: gdb.base/default.exp: nexti "ni" abbreviation
+PASS: gdb.base/default.exp: nexti
+PASS: gdb.base/default.exp: output
+PASS: gdb.base/default.exp: overlay
+PASS: gdb.base/default.exp: overlay on
+PASS: gdb.base/default.exp: overlay manual #1
+PASS: gdb.base/default.exp: overlay auto
+PASS: gdb.base/default.exp: overlay off
+PASS: gdb.base/default.exp: overlay list
+PASS: gdb.base/default.exp: overlay map #1
+PASS: gdb.base/default.exp: overlay unmap #1
+PASS: gdb.base/default.exp: overlay manual #2
+PASS: gdb.base/default.exp: overlay map #2
+PASS: gdb.base/default.exp: overlay unmap #2
+PASS: gdb.base/default.exp: print "p" abbreviation
+PASS: gdb.base/default.exp: print
+PASS: gdb.base/default.exp: printf
+PASS: gdb.base/default.exp: ptype
+PASS: gdb.base/default.exp: pwd
+PASS: gdb.base/default.exp: rbreak
+PASS: gdb.base/default.exp: restore
+PASS: gdb.base/default.exp: return
+PASS: gdb.base/default.exp: reverse-search
+PASS: gdb.base/default.exp: step "s" abbreviation #1
+PASS: gdb.base/default.exp: step #1
+PASS: gdb.base/default.exp: search
+PASS: gdb.base/default.exp: section
+PASS: gdb.base/default.exp: set annotate
+PASS: gdb.base/default.exp: set args
+PASS: gdb.base/default.exp: set check "c" abbreviation
+PASS: gdb.base/default.exp: set check "ch" abbreviation
+PASS: gdb.base/default.exp: set check "check" abbreviation
+PASS: gdb.base/default.exp: set check range
+PASS: gdb.base/default.exp: set check type
+PASS: gdb.base/default.exp: set complaints
+PASS: gdb.base/default.exp: set confirm
+PASS: gdb.base/default.exp: set environment
+PASS: gdb.base/default.exp: set height
+PASS: gdb.base/default.exp: set history expansion
+PASS: gdb.base/default.exp: set history filename
+PASS: gdb.base/default.exp: set history save
+PASS: gdb.base/default.exp: set history size
+PASS: gdb.base/default.exp: set history
+PASS: gdb.base/default.exp: set language
+PASS: gdb.base/default.exp: set listsize
+PASS: gdb.base/default.exp: set print "p" abbreviation
+PASS: gdb.base/default.exp: set print "pr" abbreviation
+PASS: gdb.base/default.exp: set print
+PASS: gdb.base/default.exp: set print address
+PASS: gdb.base/default.exp: set print array
+PASS: gdb.base/default.exp: set print asm-demangle
+PASS: gdb.base/default.exp: set print demangle
+PASS: gdb.base/default.exp: set print elements
+PASS: gdb.base/default.exp: set print object
+PASS: gdb.base/default.exp: set print pretty
+PASS: gdb.base/default.exp: set print sevenbit-strings
+PASS: gdb.base/default.exp: set print union
+PASS: gdb.base/default.exp: set print vtbl
+PASS: gdb.base/default.exp: set radix
+PASS: gdb.base/default.exp: set variable
+PASS: gdb.base/default.exp: set verbose
+PASS: gdb.base/default.exp: set width
+PASS: gdb.base/default.exp: set write
+PASS: gdb.base/default.exp: set
+PASS: gdb.base/default.exp: shell echo Hi dad!
+PASS: gdb.base/default.exp: show annotate
+PASS: gdb.base/default.exp: show args
+PASS: gdb.base/default.exp: show check "c" abbreviation
+PASS: gdb.base/default.exp: show check "ch" abbreviation
+PASS: gdb.base/default.exp: show check "check" abbreviation
+PASS: gdb.base/default.exp: show check range
+PASS: gdb.base/default.exp: show check type
+PASS: gdb.base/default.exp: show commands
+PASS: gdb.base/default.exp: show complaints
+PASS: gdb.base/default.exp: show confirm
+PASS: gdb.base/default.exp: show convenience
+PASS: gdb.base/default.exp: show directories
+PASS: gdb.base/default.exp: show editing
+PASS: gdb.base/default.exp: show height
+PASS: gdb.base/default.exp: show history expansion
+PASS: gdb.base/default.exp: show history filename
+PASS: gdb.base/default.exp: show history save
+PASS: gdb.base/default.exp: show history size
+PASS: gdb.base/default.exp: show history
+PASS: gdb.base/default.exp: show language
+PASS: gdb.base/default.exp: show listsize
+PASS: gdb.base/default.exp: show p
+PASS: gdb.base/default.exp: show pr
+PASS: gdb.base/default.exp: show print
+PASS: gdb.base/default.exp: show paths
+PASS: gdb.base/default.exp: show print address
+PASS: gdb.base/default.exp: show print array
+PASS: gdb.base/default.exp: show print asm-demangle
+PASS: gdb.base/default.exp: show print demangle
+PASS: gdb.base/default.exp: show print elements
+PASS: gdb.base/default.exp: show print object
+PASS: gdb.base/default.exp: show print pretty
+PASS: gdb.base/default.exp: show print sevenbit-strings
+PASS: gdb.base/default.exp: show print union
+PASS: gdb.base/default.exp: show print vtbl
+PASS: gdb.base/default.exp: show prompt
+PASS: gdb.base/default.exp: show radix
+PASS: gdb.base/default.exp: show user
+PASS: gdb.base/default.exp: show values
+PASS: gdb.base/default.exp: show verbose
+PASS: gdb.base/default.exp: show version
+PASS: gdb.base/default.exp: show width
+PASS: gdb.base/default.exp: show write
+PASS: gdb.base/default.exp: show
+PASS: gdb.base/default.exp: stepi "si" abbreviation
+PASS: gdb.base/default.exp: stepi
+PASS: gdb.base/default.exp: signal
+PASS: gdb.base/default.exp: source
+PASS: gdb.base/default.exp: step "s" abbreviation #2
+PASS: gdb.base/default.exp: step #2
+PASS: gdb.base/default.exp: symbol-file
+PASS: gdb.base/default.exp: target child
+PASS: gdb.base/default.exp: target procfs
+PASS: gdb.base/default.exp: target core
+PASS: gdb.base/default.exp: target exec
+PASS: gdb.base/default.exp: target remote
+PASS: gdb.base/default.exp: target
+PASS: gdb.base/default.exp: tbreak
+PASS: gdb.base/default.exp: thread
+PASS: gdb.base/default.exp: thread apply
+PASS: gdb.base/default.exp: thread find
+PASS: gdb.base/default.exp: thread name
+PASS: gdb.base/default.exp: tty
+PASS: gdb.base/default.exp: until "u" abbreviation
+PASS: gdb.base/default.exp: until
+PASS: gdb.base/default.exp: undisplay prompt
+PASS: gdb.base/default.exp: unset environment prompt
+PASS: gdb.base/default.exp: unset
+PASS: gdb.base/default.exp: up-silently
+PASS: gdb.base/default.exp: watch
+PASS: gdb.base/default.exp: whatis
+PASS: gdb.base/default.exp: where
+PASS: gdb.base/default.exp: x
+Running ./gdb.base/define.exp ...
+PASS: gdb.base/define.exp: define user command: nextwhere
+FAIL: gdb.base/define.exp: use user command: nextwhere
+PASS: gdb.base/define.exp: define user command: nextwh
+PASS: gdb.base/define.exp: redefine user command aborted: nextwhere
+PASS: gdb.base/define.exp: redefine user command: nextwhere
+PASS: gdb.base/define.exp: redocumenting builtin command disallowed
+PASS: gdb.base/define.exp: document user command: nextwhere
+PASS: gdb.base/define.exp: re-document user command: nextwhere
+PASS: gdb.base/define.exp: help user command: nextwhere
+PASS: gdb.base/define.exp: set up whitespace in help string
+PASS: gdb.base/define.exp: preserve whitespace in help string
+PASS: gdb.base/define.exp: define user command: ifnospace
+PASS: gdb.base/define.exp: test ifnospace is parsed correctly
+PASS: gdb.base/define.exp: define user command: whilenospace
+PASS: gdb.base/define.exp: test whilenospace is parsed correctly
+PASS: gdb.base/define.exp: define user command: user-bt
+PASS: gdb.base/define.exp: define hook-stop command
+FAIL: gdb.base/define.exp: use hook-stop command
+PASS: gdb.base/define.exp: define hook undefined command aborted: bar
+PASS: gdb.base/define.exp: define hook undefined command: bar
+PASS: gdb.base/define.exp: define target testsuite
+PASS: gdb.base/define.exp: document target testsuite
+PASS: gdb.base/define.exp: help target
+PASS: gdb.base/define.exp: target testsuite
+PASS: gdb.base/define.exp: show user target testsuite
+PASS: gdb.base/define.exp: define target hook-testsuite
+PASS: gdb.base/define.exp: define target hookpost-testsuite
+PASS: gdb.base/define.exp: target testsuite with hooks
+PASS: gdb.base/define.exp: set gdb_prompt
+PASS: gdb.base/define.exp: reset gdb_prompt
+Running ./gdb.base/del.exp ...
+PASS: gdb.base/del.exp: Remove all breakpoints (del)
+PASS: gdb.base/del.exp: info break after removing break on main
+PASS: gdb.base/del.exp: breakpoint insertion (del)
+PASS: gdb.base/del.exp: Remove last breakpoint (del)
+PASS: gdb.base/del.exp: info break after removing break on main (del)
+PASS: gdb.base/del.exp: Remove all breakpoints (d)
+PASS: gdb.base/del.exp: info break after removing break on main
+PASS: gdb.base/del.exp: breakpoint insertion (d)
+PASS: gdb.base/del.exp: Remove last breakpoint (d)
+PASS: gdb.base/del.exp: info break after removing break on main (d)
+Running ./gdb.base/detach.exp ...
+Running ./gdb.base/dfp-exprs.exp ...
+PASS: gdb.base/dfp-exprs.exp: p 1.2df
+PASS: gdb.base/dfp-exprs.exp: p -1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.234567df
+PASS: gdb.base/dfp-exprs.exp: p -1.234567df
+PASS: gdb.base/dfp-exprs.exp: p 1234567.df
+PASS: gdb.base/dfp-exprs.exp: p -1234567.df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E1df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E10df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E-10df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E96df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p -1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.234567890123456dd
+PASS: gdb.base/dfp-exprs.exp: p -1.234567890123456dd
+PASS: gdb.base/dfp-exprs.exp: p 1234567890123456.dd
+PASS: gdb.base/dfp-exprs.exp: p -1234567890123456.dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E1dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E10dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E-10dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E384dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p -1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.234567890123456789012345678901234dl
+PASS: gdb.base/dfp-exprs.exp: p -1.234567890123456789012345678901234dl
+PASS: gdb.base/dfp-exprs.exp: p 1234567890123456789012345678901234.dl
+PASS: gdb.base/dfp-exprs.exp: p -1234567890123456789012345678901234.dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E1dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E10dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E-10dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E6144dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4df + 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4df - 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4df * 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4df / 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd + 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd - 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd * 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd / 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl + 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl - 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl * 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl / 1.2dl
+PASS: gdb.base/dfp-exprs.exp: ptype 2.df + 2.df
+PASS: gdb.base/dfp-exprs.exp: ptype 2.dd + 2.dd
+PASS: gdb.base/dfp-exprs.exp: ptype 2.dl + 2.dl
+PASS: gdb.base/dfp-exprs.exp: p 2.1df + 2.7dd
+PASS: gdb.base/dfp-exprs.exp: p 2.1dd + 2.7df
+PASS: gdb.base/dfp-exprs.exp: p 2.6df + 2.7dl
+PASS: gdb.base/dfp-exprs.exp: p 2.6dl + 2.7df
+PASS: gdb.base/dfp-exprs.exp: p 2.3dd + 2.2dl
+PASS: gdb.base/dfp-exprs.exp: p 2.3dl + 2.2dd
+PASS: gdb.base/dfp-exprs.exp: ptype 2.df + 2.dd
+PASS: gdb.base/dfp-exprs.exp: ptype 2.df + 2.dl
+PASS: gdb.base/dfp-exprs.exp: ptype 2.dd + 2.dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df + 1
+PASS: gdb.base/dfp-exprs.exp: p 2 + 1.7dd
+PASS: gdb.base/dfp-exprs.exp: p 3 + 2.1dl
+PASS: gdb.base/dfp-exprs.exp: ptype 1.2df + 1
+PASS: gdb.base/dfp-exprs.exp: ptype 2 + 1.7dd
+PASS: gdb.base/dfp-exprs.exp: ptype 3 + 2.1dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df + 2ll
+PASS: gdb.base/dfp-exprs.exp: p 1.2df + 1.2f
+PASS: gdb.base/dfp-exprs.exp: p !0.df
+PASS: gdb.base/dfp-exprs.exp: p !0.dd
+PASS: gdb.base/dfp-exprs.exp: p !0.dl
+PASS: gdb.base/dfp-exprs.exp: p !0.5df
+PASS: gdb.base/dfp-exprs.exp: p !0.5dd
+PASS: gdb.base/dfp-exprs.exp: p !0.5dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p +1.2df
+PASS: gdb.base/dfp-exprs.exp: p +1.2dd
+PASS: gdb.base/dfp-exprs.exp: p +1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df < 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df < 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd < 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd < 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df > 1
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl > 2
+PASS: gdb.base/dfp-exprs.exp: p 2 > 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 2 > 3.1dl
+PASS: gdb.base/dfp-exprs.exp: p (float) -0.1df
+PASS: gdb.base/dfp-exprs.exp: p (int) 8.3dd
+PASS: gdb.base/dfp-exprs.exp: p (_Decimal64) 3.1
+PASS: gdb.base/dfp-exprs.exp: p (_Decimal128) 3.7df
+PASS: gdb.base/dfp-exprs.exp: p (_Decimal32) 4
+Running ./gdb.base/dfp-test.exp ...
+Running ./gdb.base/disabled-location.exp ...
+PASS: gdb.base/disabled-location.exp: setting breakpoint on function
+PASS: gdb.base/disabled-location.exp: disable location
+PASS: gdb.base/disabled-location.exp: step doesn't trip on disabled location
+Running ./gdb.base/disasm-end-cu.exp ...
+PASS: gdb.base/disasm-end-cu.exp: get hexadecimal valueof "&main"
+PASS: gdb.base/disasm-end-cu.exp: get hexadecimal valueof "&dummy_3"
+PASS: gdb.base/disasm-end-cu.exp: disassemble command returned some output
+Running ./gdb.base/display.exp ...
+PASS: gdb.base/display.exp: break do_loops
+PASS: gdb.base/display.exp: get to do_loops
+PASS: gdb.base/display.exp: set watch
+PASS: gdb.base/display.exp: break loop end
+PASS: gdb.base/display.exp: inf disp
+PASS: gdb.base/display.exp: display i
+PASS: gdb.base/display.exp: display j
+PASS: gdb.base/display.exp: display &k
+PASS: gdb.base/display.exp: display/f f
+PASS: gdb.base/display.exp: display/s &sum
+PASS: gdb.base/display.exp: first disp
+PASS: gdb.base/display.exp: second disp
+PASS: gdb.base/display.exp: catch err
+PASS: gdb.base/display.exp: disab disp 1
+PASS: gdb.base/display.exp: disab disp 2
+PASS: gdb.base/display.exp: re-enab
+PASS: gdb.base/display.exp: re-enab of enab
+PASS: gdb.base/display.exp: undisp
+PASS: gdb.base/display.exp: info disp
+PASS: gdb.base/display.exp: next hit
+PASS: gdb.base/display.exp: undisp all
+PASS: gdb.base/display.exp: disp *p_i
+PASS: gdb.base/display.exp: p p_i = 0x0
+PASS: gdb.base/display.exp: display bad address
+PASS: gdb.base/display.exp: p p_i = &i
+PASS: gdb.base/display.exp: display good address
+PASS: gdb.base/display.exp: undisp all again
+PASS: gdb.base/display.exp: disab 3
+PASS: gdb.base/display.exp: watch off
+PASS: gdb.base/display.exp: finish
+PASS: gdb.base/display.exp: step
+PASS: gdb.base/display.exp: tbreak in do_vars
+PASS: gdb.base/display.exp: cont
+PASS: gdb.base/display.exp: printf
+PASS: gdb.base/display.exp: printf %d
+PASS: gdb.base/display.exp: printf "%d
+PASS: gdb.base/display.exp: printf "%d%d",i
+PASS: gdb.base/display.exp: printf "\\!\a\f\r\t\v\b\n"
+PASS: gdb.base/display.exp: re-set term
+PASS: gdb.base/display.exp: printf "\w"
+PASS: gdb.base/display.exp: printf "%d" j
+PASS: gdb.base/display.exp: printf "%p\n", 0
+PASS: gdb.base/display.exp: printf "%p\n", 1
+PASS: gdb.base/display.exp: print/z j
+PASS: gdb.base/display.exp: debug test output 1
+PASS: gdb.base/display.exp: debug test output 1a
+PASS: gdb.base/display.exp: debug test output 2
+PASS: gdb.base/display.exp: debug test output 2a
+PASS: gdb.base/display.exp: debug test output 3
+PASS: gdb.base/display.exp: x/0 j
+PASS: gdb.base/display.exp: print/0 j
+PASS: gdb.base/display.exp: ignored s
+PASS: gdb.base/display.exp: no i
+PASS: gdb.base/display.exp: print/a &sum
+PASS: gdb.base/display.exp: print/a main+4
+PASS: gdb.base/display.exp: print/a $pc
+PASS: gdb.base/display.exp: print/a &&j
+Running ./gdb.base/disp-step-syscall.exp ...
+Running ./gdb.base/dmsym.exp ...
+PASS: gdb.base/dmsym.exp: set lang ada
+PASS: gdb.base/dmsym.exp: break pck__foo__bar__minsym
+PASS: gdb.base/dmsym.exp: info line pck__foo__bar__minsym
+PASS: gdb.base/dmsym.exp: set lang auto
+PASS: gdb.base/dmsym.exp: Run until breakpoint at BREAK
+PASS: gdb.base/dmsym.exp: continue
+PASS: gdb.base/dmsym.exp: print val
+Running ./gdb.base/dprintf.exp ...
+PASS: gdb.base/dprintf.exp: dprintf
+PASS: gdb.base/dprintf.exp: dprintf foo
+PASS: gdb.base/dprintf.exp: dprintf 29
+PASS: gdb.base/dprintf.exp: dprintf foo,"At foo entry\n"
+PASS: gdb.base/dprintf.exp: ignore $bpnum 1
+PASS: gdb.base/dprintf.exp: dprintf 26,"arg=%d, g=%d\n", arg, g
+PASS: gdb.base/dprintf.exp: dprintf info 1
+PASS: gdb.base/dprintf.exp: break 27
+PASS: gdb.base/dprintf.exp: 1st dprintf, gdb
+PASS: gdb.base/dprintf.exp: 2nd dprintf, gdb
+PASS: gdb.base/dprintf.exp: Set dprintf style to agent - can do
+FAIL: gdb.base/dprintf.exp: 1st dprintf, agent
+FAIL: gdb.base/dprintf.exp: 2nd dprintf, agent
+FAIL: gdb.base/dprintf.exp: dprintf info 2 (pattern 6)
+PASS: gdb.base/dprintf.exp: Set dprintf style to an unrecognized type
+Running ./gdb.base/dprintf-next.exp ...
+PASS: gdb.base/dprintf-next.exp: dprintf 24, "%d\n", x
+PASS: gdb.base/dprintf-next.exp: next 1
+PASS: gdb.base/dprintf-next.exp: next 2
+Running ./gdb.base/dprintf-non-stop.exp ...
+UNSUPPORTED: gdb.base/dprintf-non-stop.exp: Testing dprintf with remote/non-stop is not supported.
+Running ./gdb.base/dprintf-pending.exp ...
+PASS: gdb.base/dprintf-pending.exp: without format: set pending dprintf
+FAIL: gdb.base/dprintf-pending.exp: without format: resolved dprintf fails to be re-set
+PASS: gdb.base/dprintf-pending.exp: without symbols: set pending dprintf
+PASS: gdb.base/dprintf-pending.exp: without symbols: single pending dprintf info
+FAIL: gdb.base/dprintf-pending.exp: without symbols: run to resolved dprintf (the program exited)
+PASS: gdb.base/dprintf-pending.exp: set pending dprintf
+PASS: gdb.base/dprintf-pending.exp: single pending dprintf info
+FAIL: gdb.base/dprintf-pending.exp: run to resolved dprintf (the program exited)
+Running ./gdb.base/dump.exp ...
+PASS: gdb.base/dump.exp: inaccessible memory is reported
+PASS: gdb.base/dump.exp: endianness: little
+PASS: gdb.base/dump.exp: dump array as value, default
+PASS: gdb.base/dump.exp: dump struct as value, default
+PASS: gdb.base/dump.exp: dump array as value, binary
+PASS: gdb.base/dump.exp: dump struct as value, binary
+PASS: gdb.base/dump.exp: dump array as value, srec
+PASS: gdb.base/dump.exp: dump struct as value, srec
+PASS: gdb.base/dump.exp: dump array as value, intel hex
+PASS: gdb.base/dump.exp: dump struct as value, intel hex
+PASS: gdb.base/dump.exp: dump array as value, tekhex
+PASS: gdb.base/dump.exp: dump struct as value, tekhex
+PASS: gdb.base/dump.exp: capture /x &intarray[0]
+PASS: gdb.base/dump.exp: capture /x &intarray[32]
+PASS: gdb.base/dump.exp: capture /x &intstruct
+PASS: gdb.base/dump.exp: capture /x &intstruct + 1
+PASS: gdb.base/dump.exp: capture intarray
+PASS: gdb.base/dump.exp: capture intstruct
+PASS: gdb.base/dump.exp: capture type of pointer &intarray
+PASS: gdb.base/dump.exp: capture type of pointer &intstruct
+PASS: gdb.base/dump.exp: dump array as memory, default
+PASS: gdb.base/dump.exp: dump struct as memory, default
+PASS: gdb.base/dump.exp: dump array as memory, binary
+PASS: gdb.base/dump.exp: dump struct as memory, binary
+PASS: gdb.base/dump.exp: dump array as memory, srec
+PASS: gdb.base/dump.exp: dump struct as memory, srec
+PASS: gdb.base/dump.exp: dump array as memory, ihex
+PASS: gdb.base/dump.exp: dump struct as memory, ihex
+PASS: gdb.base/dump.exp: dump array as memory, tekhex
+PASS: gdb.base/dump.exp: dump struct as memory, tekhex
+PASS: gdb.base/dump.exp: dump array as mem, srec, expressions
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, srec; file restored ok
+PASS: gdb.base/dump.exp: array as value, srec; capture intarray
+PASS: gdb.base/dump.exp: array as value, srec; value restored ok
+PASS: gdb.base/dump.exp: struct as value, srec; file restored ok
+PASS: gdb.base/dump.exp: struct as value, srec; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, srec; value restored ok
+PASS: gdb.base/dump.exp: zero all
+PASS: gdb.base/dump.exp: array as memory, srec; file restored ok
+PASS: gdb.base/dump.exp: array as memory, srec; capture intarray
+PASS: gdb.base/dump.exp: array as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, srec; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, srec; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, ihex; file restored ok
+PASS: gdb.base/dump.exp: array as value, ihex; capture intarray
+PASS: gdb.base/dump.exp: array as value, ihex; value restored ok
+PASS: gdb.base/dump.exp: struct as value, ihex; file restored ok
+PASS: gdb.base/dump.exp: struct as value, ihex; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, ihex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as memory, ihex; file restored ok
+PASS: gdb.base/dump.exp: array as memory, ihex; capture intarray
+PASS: gdb.base/dump.exp: array as memory, ihex; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, ihex; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, ihex; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, ihex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array as value, tekhex; capture intarray
+PASS: gdb.base/dump.exp: array as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: struct as value, tekhex; file restored ok
+PASS: gdb.base/dump.exp: struct as value, tekhex; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as memory, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array as memory, tekhex; capture intarray
+PASS: gdb.base/dump.exp: array as memory, tekhex; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, tekhex; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, tekhex; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, tekhex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, binary; file restored ok
+PASS: gdb.base/dump.exp: array as value, binary; capture intarray
+PASS: gdb.base/dump.exp: array as value, binary; value restored ok
+PASS: gdb.base/dump.exp: struct as value, binary; file restored ok
+PASS: gdb.base/dump.exp: struct as value, binary; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, binary; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as memory, binary; file restored ok
+PASS: gdb.base/dump.exp: array as memory, binary; capture intarray
+PASS: gdb.base/dump.exp: array as memory, binary; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, binary; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, binary; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, binary; value restored ok
+PASS: gdb.base/dump.exp: capture /x &intarray2[0]
+PASS: gdb.base/dump.exp: capture /x &intstruct2
+PASS: gdb.base/dump.exp: capture (char *) &intarray2 - (char *) &intarray
+PASS: gdb.base/dump.exp: capture (char *) &intstruct2 - (char *) &intstruct
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, srec; file restored ok
+PASS: gdb.base/dump.exp: array copy, srec; capture intarray2
+PASS: gdb.base/dump.exp: array copy, srec; value restored ok
+PASS: gdb.base/dump.exp: struct copy, srec; file restored ok
+PASS: gdb.base/dump.exp: struct copy, srec; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, srec; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, ihex; file restored ok
+PASS: gdb.base/dump.exp: array copy, ihex; capture intarray2
+PASS: gdb.base/dump.exp: array copy, ihex; value restored ok
+PASS: gdb.base/dump.exp: struct copy, ihex; file restored ok
+PASS: gdb.base/dump.exp: struct copy, ihex; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, ihex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array copy, tekhex; capture intarray2
+PASS: gdb.base/dump.exp: array copy, tekhex; value restored ok
+PASS: gdb.base/dump.exp: struct copy, tekhex; file restored ok
+PASS: gdb.base/dump.exp: struct copy, tekhex; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, tekhex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, binary; file restored ok
+PASS: gdb.base/dump.exp: array copy, binary; capture intarray2
+PASS: gdb.base/dump.exp: array copy, binary; value restored ok
+PASS: gdb.base/dump.exp: struct copy, binary; file restored ok
+PASS: gdb.base/dump.exp: struct copy, binary; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, binary; value restored ok
+PASS: gdb.base/dump.exp: capture /x &intarray[3]
+PASS: gdb.base/dump.exp: capture /x &intarray[4]
+PASS: gdb.base/dump.exp: capture /x (char *) &intarray[3] - (char *) &intarray[0]
+PASS: gdb.base/dump.exp: capture /x (char *) &intarray[4] - (char *) &intarray[0]
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, srec; file restored ok
+PASS: gdb.base/dump.exp: array partial, srec; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, srec; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 1
+PASS: gdb.base/dump.exp: element 4 not changed - 1
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, ihex; file restored ok
+PASS: gdb.base/dump.exp: array partial, ihex; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, ihex; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 2
+PASS: gdb.base/dump.exp: element 4 not changed - 2
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array partial, tekhex; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, tekhex; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 3
+PASS: gdb.base/dump.exp: element 4 not changed - 3
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, binary; file restored ok
+PASS: gdb.base/dump.exp: array partial, binary; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, binary; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 4
+PASS: gdb.base/dump.exp: element 4 not changed - 4
+PASS: gdb.base/dump.exp: array partial with expressions; file restored ok
+PASS: gdb.base/dump.exp: array partial with expressions; capture intarray2[3]
+PASS: gdb.base/dump.exp: array partial with expressions; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed, == 4
+PASS: gdb.base/dump.exp: element 4 not changed, == 4
+PASS: gdb.base/dump.exp: setting little endianness
+PASS: gdb.base/dump.exp: file binfile; capture intarray
+PASS: gdb.base/dump.exp: start with intarray un-initialized
+PASS: gdb.base/dump.exp: file binfile; capture intstruct
+PASS: gdb.base/dump.exp: start with intstruct un-initialized
+PASS: gdb.base/dump.exp: reload array as value, srec; capture * (int (*)[32]) 0x54ab30c4
+PASS: gdb.base/dump.exp: reload array as value, srec; value restored ok
+PASS: gdb.base/dump.exp: reload struct as value, srec; capture * (struct teststruct *) 0x54ab300c
+PASS: gdb.base/dump.exp: reload struct as value, srec; value restored ok
+PASS: gdb.base/dump.exp: reload array as memory, srec; capture * (int (*)[32]) 0x54ab30c4
+PASS: gdb.base/dump.exp: reload array as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: reload struct as memory, srec; capture * (struct teststruct *) 0x54ab300c
+PASS: gdb.base/dump.exp: reload struct as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: reload array as value, intel hex; capture * (int (*)[32]) 0x54ab30c4
+PASS: gdb.base/dump.exp: reload array as value, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as value, intel hex; capture * (struct teststruct *) 0x54ab300c
+PASS: gdb.base/dump.exp: reload struct as value, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload array as memory, intel hex; capture * (int (*)[32]) 0x54ab30c4
+PASS: gdb.base/dump.exp: reload array as memory, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as memory, intel hex; capture * (struct teststruct *) 0x54ab300c
+PASS: gdb.base/dump.exp: reload struct as memory, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload array as value, tekhex; capture * (int (*)[32]) 0x54ab30c4
+PASS: gdb.base/dump.exp: reload array as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as value, tekhex; capture * (struct teststruct *) 0x54ab300c
+PASS: gdb.base/dump.exp: reload struct as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: reload array as memory, tekhex; capture * (int (*)[32]) 0x54ab30c4
+PASS: gdb.base/dump.exp: reload array as memory, tekhex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as memory, tekhex; capture * (struct teststruct *) 0x54ab300c
+PASS: gdb.base/dump.exp: reload struct as memory, tekhex; value restored ok
+Running ./gdb.base/duplicate-bp.exp ...
+PASS: gdb.base/duplicate-bp.exp: del_1_stop_2: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: del_1_stop_2: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: del_1_stop_2: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: del_1_stop_2: delete $bp_num_1
+PASS: gdb.base/duplicate-bp.exp: del_1_stop_2: delete #1, stop at #2
+PASS: gdb.base/duplicate-bp.exp: del_2_stop_1: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: del_2_stop_1: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: del_2_stop_1: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: del_2_stop_1: delete $bp_num_2
+PASS: gdb.base/duplicate-bp.exp: del_2_stop_1: delete #2, stop at #1
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: set $bp_num_3 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: disable $bp_num_1
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: step
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: delete $bp_num_2
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_2_stop_3: disable #1, delete #2, stop at #3
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: set $bp_num_3 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: disable $bp_num_2
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: step
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: delete $bp_num_1
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_1_stop_3: disable #2, delete #1, stop at #3
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: set $bp_num_3 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: disable $bp_num_1
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: step
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: delete $bp_num_3
+PASS: gdb.base/duplicate-bp.exp: dis_1_del_3_stop_1: disable #1, delete #3, stop at #2
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: set $bp_num_3 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: disable $bp_num_3
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: step
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: delete $bp_num_1
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_1_stop_2: disable #3, delete #1, stop at #2
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: set $bp_num_3 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: disable $bp_num_2
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: step
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: delete $bp_num_3
+PASS: gdb.base/duplicate-bp.exp: dis_2_del_3_stop_1: disable #2, delete #3, stop at #1
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: set $bp_num_1 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: set $bp_num_2 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: set $bp_num_3 = $bpnum
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: step to place breakpoints
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: disable $bp_num_3
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: step
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: delete $bp_num_2
+PASS: gdb.base/duplicate-bp.exp: dis_3_del_2_stop_1: disable #3, delete #2, stop at #1
+Running ./gdb.base/dup-sect.exp ...
+PASS: gdb.base/dup-sect.exp: rename section
+PASS: gdb.base/dup-sect.exp: split
+PASS: gdb.base/dup-sect.exp: strip
+PASS: gdb.base/dup-sect.exp: var1 after strip
+PASS: gdb.base/dup-sect.exp: var2 after strip
+Running ./gdb.base/echo.exp ...
+PASS: gdb.base/echo.exp: Echo test
+Running ./gdb.base/empty_exe.exp ...
+PASS: gdb.base/empty_exe.exp: file ''
+PASS: gdb.base/empty_exe.exp: print 1
+Running ./gdb.base/ena-dis-br.exp ...
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: enable break marker1
+PASS: gdb.base/ena-dis-br.exp: info break marker1
+PASS: gdb.base/ena-dis-br.exp: continue to break marker1
+PASS: gdb.base/ena-dis-br.exp: delete break marker1
+PASS: gdb.base/ena-dis-br.exp: break marker2
+PASS: gdb.base/ena-dis-br.exp: enable once break marker2
+PASS: gdb.base/ena-dis-br.exp: info auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: continue to auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: info auto-disabled break marker2
+FAIL: gdb.base/ena-dis-br.exp: setting breakpoint at exit
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+FAIL: gdb.base/ena-dis-br.exp: setting breakpoint at exit
+PASS: gdb.base/ena-dis-br.exp: break marker3
+PASS: gdb.base/ena-dis-br.exp: enable del break marker3
+PASS: gdb.base/ena-dis-br.exp: info auto-deleted break marker2
+PASS: gdb.base/ena-dis-br.exp: continue to auto-deleted break marker3
+PASS: gdb.base/ena-dis-br.exp: info auto-deleted break marker3
+PASS: gdb.base/ena-dis-br.exp: break marker4
+PASS: gdb.base/ena-dis-br.exp: disable break marker4
+PASS: gdb.base/ena-dis-br.exp: info break marker4
+PASS: gdb.base/ena-dis-br.exp: break 113
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: disable break with count
+PASS: gdb.base/ena-dis-br.exp: continue from enable count, first time
+PASS: gdb.base/ena-dis-br.exp: continue from enable count, second time
+PASS: gdb.base/ena-dis-br.exp: continue through enable count, now disabled
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: ignore non-existent break
+PASS: gdb.base/ena-dis-br.exp: ignore break with missing ignore count
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1 -1
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1 0
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1
+PASS: gdb.base/ena-dis-br.exp: info ignored break marker1
+FAIL: gdb.base/ena-dis-br.exp: setting breakpoint at exit
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+FAIL: gdb.base/ena-dis-br.exp: continue to break marker1, 2nd time (the program exited)
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1
+PASS: gdb.base/ena-dis-br.exp: enable del break marker1
+PASS: gdb.base/ena-dis-br.exp: info break marker1
+FAIL: gdb.base/ena-dis-br.exp: setting breakpoint at exit
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+FAIL: gdb.base/ena-dis-br.exp: continue to ignored & auto-deleted break marker1 (the program exited)
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1
+PASS: gdb.base/ena-dis-br.exp: disable break marker1
+FAIL: gdb.base/ena-dis-br.exp: setting breakpoint at exit
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+PASS: gdb.base/ena-dis-br.exp: info ignored & disabled break marker1
+PASS: gdb.base/ena-dis-br.exp: prepare to continue with ignore count
+PASS: gdb.base/ena-dis-br.exp: continue with ignore count
+PASS: gdb.base/ena-dis-br.exp: step
+PASS: gdb.base/ena-dis-br.exp: continue with ignore count, not stopped at bpt
+Running ./gdb.base/ending-run.exp ...
+PASS: gdb.base/ending-run.exp: bpt at line before routine
+PASS: gdb.base/ending-run.exp: b ending-run.c:14, one
+PASS: gdb.base/ending-run.exp: b ending-run.c:31
+PASS: gdb.base/ending-run.exp: run
+PASS: gdb.base/ending-run.exp: clear worked
+PASS: gdb.base/ending-run.exp: cleared bp at line before routine
+PASS: gdb.base/ending-run.exp: b ending-run.c:1
+PASS: gdb.base/ending-run.exp: b ending-run.c:14, two
+PASS: gdb.base/ending-run.exp: Cleared 2 by line
+PASS: gdb.base/ending-run.exp: b ending-run.c:14
+PASS: gdb.base/ending-run.exp: Breakpoint 7 at *ending-run.c:14
+PASS: gdb.base/ending-run.exp: Clear 2 by default
+PASS: gdb.base/ending-run.exp: all set to continue
+PASS: gdb.base/ending-run.exp: cont
+FAIL: gdb.base/ending-run.exp: step out of main
+Running ./gdb.base/enum_cond.exp ...
+gdb compile failed, /usr/x86_64-pc-linux-gnu/armv7a-cros-linux-gnueabi/binutils-bin/2.22/ld.bfd.real: warning: /tmp/ccoeaZYK.o uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail
+UNTESTED: gdb.base/enum_cond.exp: Could not compile enum_cond.c
+Running ./gdb.base/enumval.exp ...
+PASS: gdb.base/enumval.exp: print e
+PASS: gdb.base/enumval.exp: print f
+PASS: gdb.base/enumval.exp: print J
+PASS: gdb.base/enumval.exp: print K
+Running ./gdb.base/environ.exp ...
+Running ./gdb.base/eu-strip-infcall.exp ...
+PASS: gdb.base/eu-strip-infcall.exp: infcall
+Running ./gdb.base/eval.exp ...
+PASS: gdb.base/eval.exp: Initialize $a.
+PASS: gdb.base/eval.exp: First eval.
+PASS: gdb.base/eval.exp: Second eval.
+Running ./gdb.base/eval-skip.exp ...
+PASS: gdb.base/eval-skip.exp: set variable x=14
+PASS: gdb.base/eval-skip.exp: set variable y=2
+PASS: gdb.base/eval-skip.exp: set variable z=2
+PASS: gdb.base/eval-skip.exp: set variable w=3
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x+y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x-y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x*y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x/y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x%y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x&&y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x||y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x&y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x|y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x^y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x < y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x <= y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x>y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x>=y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x==y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x!=y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x<<31))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x>>31))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (!x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (~x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (-x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x++))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (++x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x--))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (--x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x+=7))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x=y))
+Running ./gdb.base/exe-lock.exp ...
+FAIL: gdb.base/exe-lock.exp: setting breakpoint at exit
+Running ./gdb.base/expand-psymtabs.exp ...
+PASS: gdb.base/expand-psymtabs.exp: Expand psymtabs
+Running ./gdb.base/exprs.exp ...
+PASS: gdb.base/exprs.exp: print char == (setup)
+PASS: gdb.base/exprs.exp: print char == (print v_char == 0)
+PASS: gdb.base/exprs.exp: print char == (print v_char == 127)
+PASS: gdb.base/exprs.exp: print char != (setup)
+PASS: gdb.base/exprs.exp: print char != (print v_char != 0)
+PASS: gdb.base/exprs.exp: print char != (print v_char != 127)
+PASS: gdb.base/exprs.exp: print char < (setup)
+PASS: gdb.base/exprs.exp: print char < (print v_char < 0)
+PASS: gdb.base/exprs.exp: print char < (print v_char < 127)
+PASS: gdb.base/exprs.exp: print char > (setup)
+PASS: gdb.base/exprs.exp: print char > (print v_char > 0)
+PASS: gdb.base/exprs.exp: print char > (print v_char > 127)
+PASS: gdb.base/exprs.exp: print signed char == (setup)
+PASS: gdb.base/exprs.exp: print signed char == (print v_signed_char == 0)
+PASS: gdb.base/exprs.exp: print signed char == (print v_signed_char == 127)
+PASS: gdb.base/exprs.exp: print signed char != (setup)
+PASS: gdb.base/exprs.exp: print signed char != (print v_signed_char != 0)
+PASS: gdb.base/exprs.exp: print signed char != (print v_signed_char != 127)
+PASS: gdb.base/exprs.exp: print signed char < (setup)
+PASS: gdb.base/exprs.exp: print signed char < (print v_signed_char < 0)
+PASS: gdb.base/exprs.exp: print signed char < (print v_signed_char < 127)
+PASS: gdb.base/exprs.exp: print signed char > (setup)
+PASS: gdb.base/exprs.exp: print signed char > (print v_signed_char > 0)
+PASS: gdb.base/exprs.exp: print signed char > (print v_signed_char > 127)
+PASS: gdb.base/exprs.exp: print signed char == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char == (minus) (print v_signed_char == 0)
+PASS: gdb.base/exprs.exp: print signed char == (minus) (print v_signed_char == -1)
+PASS: gdb.base/exprs.exp: print signed char != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char != (minus) (print v_signed_char != 0)
+PASS: gdb.base/exprs.exp: print signed char != (minus) (print v_signed_char != -1)
+PASS: gdb.base/exprs.exp: print signed char < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char < (minus) (print v_signed_char < 0)
+PASS: gdb.base/exprs.exp: print signed char < (minus) (print v_signed_char < 127)
+PASS: gdb.base/exprs.exp: print signed char > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char > (minus) (print v_signed_char > 0)
+PASS: gdb.base/exprs.exp: print signed char > (minus) (print v_signed_char > 127)
+PASS: gdb.base/exprs.exp: print unsigned char == (setup)
+PASS: gdb.base/exprs.exp: print unsigned char == (print v_unsigned_char == 0)
+PASS: gdb.base/exprs.exp: print unsigned char == (print v_unsigned_char == 127)
+PASS: gdb.base/exprs.exp: print unsigned char != (setup)
+PASS: gdb.base/exprs.exp: print unsigned char != (print v_unsigned_char != 0)
+PASS: gdb.base/exprs.exp: print unsigned char != (print v_unsigned_char != 127)
+PASS: gdb.base/exprs.exp: print unsigned char < (setup)
+PASS: gdb.base/exprs.exp: print unsigned char < (print v_unsigned_char < 0)
+PASS: gdb.base/exprs.exp: print unsigned char < (print v_unsigned_char < 127)
+PASS: gdb.base/exprs.exp: print unsigned char > (setup)
+PASS: gdb.base/exprs.exp: print unsigned char > (print v_unsigned_char > 0)
+PASS: gdb.base/exprs.exp: print unsigned char > (print v_unsigned_char > 127)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (print v_unsigned_char == 0)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (print v_unsigned_char == ~0)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (print v_unsigned_char == (unsigned char)~0)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (print v_unsigned_char != 0)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (print v_unsigned_char != (unsigned char)~0)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (print v_unsigned_char != ~0)
+PASS: gdb.base/exprs.exp: print unsigned char < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char < (~0) (print v_unsigned_char < 0)
+PASS: gdb.base/exprs.exp: print unsigned char < (~0) (print v_unsigned_char < 127)
+PASS: gdb.base/exprs.exp: print unsigned char > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char > (~0) (print v_unsigned_char > 0)
+PASS: gdb.base/exprs.exp: print unsigned char > (~0) (print v_unsigned_char > 127)
+PASS: gdb.base/exprs.exp: print signed short == (setup)
+PASS: gdb.base/exprs.exp: print signed short == (print v_short == 0)
+PASS: gdb.base/exprs.exp: print signed short == (print v_short == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short != (setup)
+PASS: gdb.base/exprs.exp: print signed short != (print v_short != 0)
+PASS: gdb.base/exprs.exp: print signed short != (print v_short != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short < (setup)
+PASS: gdb.base/exprs.exp: print signed short < (print v_short < 0)
+PASS: gdb.base/exprs.exp: print signed short < (print v_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short > (setup)
+PASS: gdb.base/exprs.exp: print signed short > (print v_short > 0)
+PASS: gdb.base/exprs.exp: print signed short > (print v_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short == (minus) (print v_short == 0)
+PASS: gdb.base/exprs.exp: print signed short == (minus) (print v_short == -1)
+PASS: gdb.base/exprs.exp: print signed short != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short != (minus) (print v_short != 0)
+PASS: gdb.base/exprs.exp: print signed short != (minus) (print v_short != -1)
+PASS: gdb.base/exprs.exp: print signed short < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short < (minus) (print v_short < 0)
+PASS: gdb.base/exprs.exp: print signed short < (minus) (print v_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short > (minus) (print v_short > 0)
+PASS: gdb.base/exprs.exp: print signed short > (minus) (print v_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short == (setup)
+PASS: gdb.base/exprs.exp: print signed signed short == (print v_signed_short == 0)
+PASS: gdb.base/exprs.exp: print signed signed short == (print v_signed_short == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short != (setup)
+PASS: gdb.base/exprs.exp: print signed signed short != (print v_signed_short != 0)
+PASS: gdb.base/exprs.exp: print signed signed short != (print v_signed_short != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short < (setup)
+PASS: gdb.base/exprs.exp: print signed signed short < (print v_signed_short < 0)
+PASS: gdb.base/exprs.exp: print signed signed short < (print v_signed_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short > (setup)
+PASS: gdb.base/exprs.exp: print signed signed short > (print v_signed_short > 0)
+PASS: gdb.base/exprs.exp: print signed signed short > (print v_signed_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short == (minus) (print v_signed_short == 0)
+PASS: gdb.base/exprs.exp: print signed signed short == (minus) (print v_signed_short == -1)
+PASS: gdb.base/exprs.exp: print signed signed short != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short != (minus) (print v_signed_short != 0)
+PASS: gdb.base/exprs.exp: print signed signed short != (minus) (print v_signed_short != -1)
+PASS: gdb.base/exprs.exp: print signed signed short < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short < (minus) (print v_signed_short < 0)
+PASS: gdb.base/exprs.exp: print signed signed short < (minus) (print v_signed_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short > (minus) (print v_signed_short > 0)
+PASS: gdb.base/exprs.exp: print signed signed short > (minus) (print v_signed_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short == (setup)
+PASS: gdb.base/exprs.exp: print unsigned short == (print v_unsigned_short == 0)
+PASS: gdb.base/exprs.exp: print unsigned short == (print v_unsigned_short == 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short != (setup)
+PASS: gdb.base/exprs.exp: print unsigned short != (print v_unsigned_short != 0)
+PASS: gdb.base/exprs.exp: print unsigned short != (print v_unsigned_short != 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short < (setup)
+PASS: gdb.base/exprs.exp: print unsigned short < (print v_unsigned_short < 0)
+PASS: gdb.base/exprs.exp: print unsigned short < (print v_unsigned_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short > (setup)
+PASS: gdb.base/exprs.exp: print unsigned short > (print v_unsigned_short > 0)
+PASS: gdb.base/exprs.exp: print unsigned short > (print v_unsigned_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (print v_unsigned_short == 0)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (print sizeof (v_unsigned_short) < sizeof (~0) && v_unsigned_short == ~0)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (print v_unsigned_short == (unsigned short)~0)
+PASS: gdb.base/exprs.exp: print unsigned short != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short != (~0) (print v_unsigned_short != 0)
+PASS: gdb.base/exprs.exp: print unsigned short != (~0) (print v_unsigned_short != (unsigned short)~0)
+PASS: gdb.base/exprs.exp: print unsigned short < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short < (~0) (print v_unsigned_short < 0)
+PASS: gdb.base/exprs.exp: print unsigned short < (~0) (print v_unsigned_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short > (~0) (print v_unsigned_short > 0)
+PASS: gdb.base/exprs.exp: print unsigned short > (~0) (print v_unsigned_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int == (setup)
+PASS: gdb.base/exprs.exp: print signed int == (print v_int == 0)
+PASS: gdb.base/exprs.exp: print signed int == (print v_int == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int != (setup)
+PASS: gdb.base/exprs.exp: print signed int != (print v_int != 0)
+PASS: gdb.base/exprs.exp: print signed int != (print v_int != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int < (setup)
+PASS: gdb.base/exprs.exp: print signed int < (print v_int < 0)
+PASS: gdb.base/exprs.exp: print signed int < (print v_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int > (setup)
+PASS: gdb.base/exprs.exp: print signed int > (print v_int > 0)
+PASS: gdb.base/exprs.exp: print signed int > (print v_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int == (minus) (print v_int == 0)
+PASS: gdb.base/exprs.exp: print signed int == (minus) (print v_int == -1)
+PASS: gdb.base/exprs.exp: print signed int != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int != (minus) (print v_int != 0)
+PASS: gdb.base/exprs.exp: print signed int != (minus) (print v_int != -1)
+PASS: gdb.base/exprs.exp: print signed int < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int < (minus) (print v_int < 0)
+PASS: gdb.base/exprs.exp: print signed int < (minus) (print v_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int > (minus) (print v_int > 0)
+PASS: gdb.base/exprs.exp: print signed int > (minus) (print v_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int == (setup)
+PASS: gdb.base/exprs.exp: print signed signed int == (print v_signed_int == 0)
+PASS: gdb.base/exprs.exp: print signed signed int == (print v_signed_int == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int != (setup)
+PASS: gdb.base/exprs.exp: print signed signed int != (print v_signed_int != 0)
+PASS: gdb.base/exprs.exp: print signed signed int != (print v_signed_int != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int < (setup)
+PASS: gdb.base/exprs.exp: print signed signed int < (print v_signed_int < 0)
+PASS: gdb.base/exprs.exp: print signed signed int < (print v_signed_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int > (setup)
+PASS: gdb.base/exprs.exp: print signed signed int > (print v_signed_int > 0)
+PASS: gdb.base/exprs.exp: print signed signed int > (print v_signed_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int == (minus) (print v_signed_int == 0)
+PASS: gdb.base/exprs.exp: print signed signed int == (minus) (print v_signed_int == -1)
+PASS: gdb.base/exprs.exp: print signed signed int != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int != (minus) (print v_signed_int != 0)
+PASS: gdb.base/exprs.exp: print signed signed int != (minus) (print v_signed_int != -1)
+PASS: gdb.base/exprs.exp: print signed signed int < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int < (minus) (print v_signed_int < 0)
+PASS: gdb.base/exprs.exp: print signed signed int < (minus) (print v_signed_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int > (minus) (print v_signed_int > 0)
+PASS: gdb.base/exprs.exp: print signed signed int > (minus) (print v_signed_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int == (setup)
+PASS: gdb.base/exprs.exp: print unsigned int == (print v_unsigned_int == 0)
+PASS: gdb.base/exprs.exp: print unsigned int == (print v_unsigned_int == 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int != (setup)
+PASS: gdb.base/exprs.exp: print unsigned int != (print v_unsigned_int != 0)
+PASS: gdb.base/exprs.exp: print unsigned int != (print v_unsigned_int != 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int < (setup)
+PASS: gdb.base/exprs.exp: print unsigned int < (print v_unsigned_int < 0)
+PASS: gdb.base/exprs.exp: print unsigned int < (print v_unsigned_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int > (setup)
+PASS: gdb.base/exprs.exp: print unsigned int > (print v_unsigned_int > 0)
+PASS: gdb.base/exprs.exp: print unsigned int > (print v_unsigned_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (print v_unsigned_int == 0)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (print v_unsigned_int == ~0)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (print v_unsigned_int == (unsigned int)~0)
+PASS: gdb.base/exprs.exp: print unsigned int != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int != (~0) (print v_unsigned_int != 0)
+PASS: gdb.base/exprs.exp: print unsigned int != (~0) (print v_unsigned_int != (unsigned int)~0)
+PASS: gdb.base/exprs.exp: print unsigned int < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int < (~0) (print v_unsigned_int < 0)
+PASS: gdb.base/exprs.exp: print unsigned int < (~0) (print v_unsigned_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int > (~0) (print v_unsigned_int > 0)
+PASS: gdb.base/exprs.exp: print unsigned int > (~0) (print v_unsigned_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long == (setup)
+PASS: gdb.base/exprs.exp: print signed long == (print v_long == 0)
+PASS: gdb.base/exprs.exp: print signed long == (print v_long == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long != (setup)
+PASS: gdb.base/exprs.exp: print signed long != (print v_long != 0)
+PASS: gdb.base/exprs.exp: print signed long != (print v_long != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long < (setup)
+PASS: gdb.base/exprs.exp: print signed long < (print v_long < 0)
+PASS: gdb.base/exprs.exp: print signed long < (print v_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long > (setup)
+PASS: gdb.base/exprs.exp: print signed long > (print v_long > 0)
+PASS: gdb.base/exprs.exp: print signed long > (print v_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long == (minus) (print v_long == 0)
+PASS: gdb.base/exprs.exp: print signed long == (minus) (print v_long == -1)
+PASS: gdb.base/exprs.exp: print signed long != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long != (minus) (print v_long != 0)
+PASS: gdb.base/exprs.exp: print signed long != (minus) (print v_long != -1)
+PASS: gdb.base/exprs.exp: print signed long < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long < (minus) (print v_long < 0)
+PASS: gdb.base/exprs.exp: print signed long < (minus) (print v_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long > (minus) (print v_long > 0)
+PASS: gdb.base/exprs.exp: print signed long > (minus) (print v_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long == (setup)
+PASS: gdb.base/exprs.exp: print signed signed long == (print v_signed_long == 0)
+PASS: gdb.base/exprs.exp: print signed signed long == (print v_signed_long == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long != (setup)
+PASS: gdb.base/exprs.exp: print signed signed long != (print v_signed_long != 0)
+PASS: gdb.base/exprs.exp: print signed signed long != (print v_signed_long != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long < (setup)
+PASS: gdb.base/exprs.exp: print signed signed long < (print v_signed_long < 0)
+PASS: gdb.base/exprs.exp: print signed signed long < (print v_signed_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long > (setup)
+PASS: gdb.base/exprs.exp: print signed signed long > (print v_signed_long > 0)
+PASS: gdb.base/exprs.exp: print signed signed long > (print v_signed_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long == (minus) (print v_signed_long == 0)
+PASS: gdb.base/exprs.exp: print signed signed long == (minus) (print v_signed_long == -1)
+PASS: gdb.base/exprs.exp: print signed signed long != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long != (minus) (print v_signed_long != 0)
+PASS: gdb.base/exprs.exp: print signed signed long != (minus) (print v_signed_long != -1)
+PASS: gdb.base/exprs.exp: print signed signed long < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long < (minus) (print v_signed_long < 0)
+PASS: gdb.base/exprs.exp: print signed signed long < (minus) (print v_signed_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long > (minus) (print v_signed_long > 0)
+PASS: gdb.base/exprs.exp: print signed signed long > (minus) (print v_signed_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long == (setup)
+PASS: gdb.base/exprs.exp: print unsigned long == (print v_unsigned_long == 0)
+PASS: gdb.base/exprs.exp: print unsigned long == (print v_unsigned_long == 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long != (setup)
+PASS: gdb.base/exprs.exp: print unsigned long != (print v_unsigned_long != 0)
+PASS: gdb.base/exprs.exp: print unsigned long != (print v_unsigned_long != 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long < (setup)
+PASS: gdb.base/exprs.exp: print unsigned long < (print v_unsigned_long < 0)
+PASS: gdb.base/exprs.exp: print unsigned long < (print v_unsigned_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long > (setup)
+PASS: gdb.base/exprs.exp: print unsigned long > (print v_unsigned_long > 0)
+PASS: gdb.base/exprs.exp: print unsigned long > (print v_unsigned_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (print v_unsigned_long == 0)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (print v_unsigned_long == ~0)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (print v_unsigned_long == (unsigned long)~0)
+PASS: gdb.base/exprs.exp: print unsigned long != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long != (~0) (print v_unsigned_long != 0)
+PASS: gdb.base/exprs.exp: print unsigned long != (~0) (print v_unsigned_long != (unsigned long)~0)
+PASS: gdb.base/exprs.exp: print unsigned long < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long < (~0) (print v_unsigned_long < 0)
+PASS: gdb.base/exprs.exp: print unsigned long < (~0) (print v_unsigned_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long > (~0) (print v_unsigned_long > 0)
+PASS: gdb.base/exprs.exp: print unsigned long > (~0) (print v_unsigned_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_char (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_char (print (void*)v_signed_char)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_short (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_short (print (void*)v_signed_short)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_int (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_int (print (void*)v_signed_int)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_long (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_long (print (void*)v_signed_long)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_char (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_char (print (void*)v_unsigned_char)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_short (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_short (print (void*)v_unsigned_short)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_int (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_int (print (void*)v_unsigned_int)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_long (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_long (print (void*)v_unsigned_long)
+PASS: gdb.base/exprs.exp: sizeof (long long) > sizeof (long) (true)
+PASS: gdb.base/exprs.exp: truncate (void*) 0x00000000ffffffff + 1
+PASS: gdb.base/exprs.exp: truncate (void*) 0xffffffff00000000 - 1
+PASS: gdb.base/exprs.exp: \$[0-9]* = "xy" (setup)
+PASS: gdb.base/exprs.exp: \$[0-9]* = "xyz" (setup)
+PASS: gdb.base/exprs.exp: \$[0-9]* = red (setup)
+PASS: gdb.base/exprs.exp: set output-radix 8
+PASS: gdb.base/exprs.exp: \$[0-9]* = red (setup)
+PASS: gdb.base/exprs.exp: \$[0-9]* = 0 (setup)
+PASS: gdb.base/exprs.exp: set output-radix 10
+PASS: gdb.base/exprs.exp: set variable v_int = 1
+PASS: gdb.base/exprs.exp: print v_int++
+PASS: gdb.base/exprs.exp: print ++v_int
+PASS: gdb.base/exprs.exp: print v_int--
+PASS: gdb.base/exprs.exp: print --v_int
+PASS: gdb.base/exprs.exp: print v_int++ = 5
+PASS: gdb.base/exprs.exp: print v_int-- = 5
+PASS: gdb.base/exprs.exp: print v_int_array_init
+PASS: gdb.base/exprs.exp: print *v_int_array_init@1
+PASS: gdb.base/exprs.exp: print *v_int_array_init@2
+PASS: gdb.base/exprs.exp: print v_int_array_init[0]@1
+PASS: gdb.base/exprs.exp: print v_int_array_init[0]@2
+PASS: gdb.base/exprs.exp: print v_int_array_init[1]@1
+PASS: gdb.base/exprs.exp: set variable v_short_array[0] = 42
+PASS: gdb.base/exprs.exp: print {short} v_short_array
+PASS: gdb.base/exprs.exp: print (void) v_int_pointer
+PASS: gdb.base/exprs.exp: print & (void) v_char
+Running ./gdb.base/fileio.exp ...
+Running ./gdb.base/find.exp ...
+PASS: gdb.base/find.exp: breakpoint function in file
+PASS: gdb.base/find.exp: run until function breakpoint
+PASS: gdb.base/find.exp: find string pattern
+PASS: gdb.base/find.exp: pattern not found at end of range
+PASS: gdb.base/find.exp: pattern found at end of range
+PASS: gdb.base/find.exp: max-count
+PASS: gdb.base/find.exp: $_
+PASS: gdb.base/find.exp: $numfound
+PASS: gdb.base/find.exp: size,max-count, /1b
+PASS: gdb.base/find.exp: size,max-count, /b1
+PASS: gdb.base/find.exp: size,max-count, /b/1
+PASS: gdb.base/find.exp: size,max-count, /1/b
+PASS: gdb.base/find.exp: find byte pattern with end address
+PASS: gdb.base/find.exp: find 16-bit pattern
+PASS: gdb.base/find.exp: find 16-bit pattern
+PASS: gdb.base/find.exp: find 32-bit pattern
+PASS: gdb.base/find.exp: find 32-bit pattern
+PASS: gdb.base/find.exp: find 64-bit pattern
+PASS: gdb.base/find.exp: find 64-bit pattern
+PASS: gdb.base/find.exp: find mixed-sized pattern
+PASS: gdb.base/find.exp: search spanning large range
+PASS: gdb.base/find.exp: find int64_search_buf, +64/8*100, int64_search_buf
+Running ./gdb.base/find-unmapped.exp ...
+Running ./gdb.base/finish.exp ...
+PASS: gdb.base/finish.exp: set break on void_func
+PASS: gdb.base/finish.exp: continue to void_func
+PASS: gdb.base/finish.exp: finish from void_func
+PASS: gdb.base/finish.exp: set break on char_func
+PASS: gdb.base/finish.exp: continue to char_func
+PASS: gdb.base/finish.exp: finish from char_func
+PASS: gdb.base/finish.exp: set break on short_func
+PASS: gdb.base/finish.exp: continue to short_func
+PASS: gdb.base/finish.exp: finish from short_func
+PASS: gdb.base/finish.exp: set break on int_func
+PASS: gdb.base/finish.exp: continue to int_func
+PASS: gdb.base/finish.exp: finish from int_func
+PASS: gdb.base/finish.exp: set break on long_func
+PASS: gdb.base/finish.exp: continue to long_func
+PASS: gdb.base/finish.exp: finish from long_func
+PASS: gdb.base/finish.exp: set break on long_long_func
+PASS: gdb.base/finish.exp: continue to long_long_func
+PASS: gdb.base/finish.exp: finish from long_long_func
+PASS: gdb.base/finish.exp: set break on float_func
+PASS: gdb.base/finish.exp: continue to float_func
+PASS: gdb.base/finish.exp: finish from float_func
+PASS: gdb.base/finish.exp: set break on double_func
+PASS: gdb.base/finish.exp: continue to double_func
+PASS: gdb.base/finish.exp: finish from double_func
+PASS: gdb.base/finish.exp: Testing the "fin" abbreviation for "finish"
+Running ./gdb.base/fixsection.exp ...
+PASS: gdb.base/fixsection.exp: breakpoint at static_fun
+Running ./gdb.base/float.exp ...
+PASS: gdb.base/float.exp: info float (VFP)
+PASS: gdb.base/float.exp: step
+PASS: gdb.base/float.exp: finish
+Running ./gdb.base/foll-exec.exp ...
+Running ./gdb.base/foll-fork.exp ...
+Running ./gdb.base/foll-vfork.exp ...
+Running ./gdb.base/fortran-sym-case.exp ...
+PASS: gdb.base/fortran-sym-case.exp: set language fortran
+PASS: gdb.base/fortran-sym-case.exp: frame
+Running ./gdb.base/frame-args.exp ...
+PASS: gdb.base/frame-args.exp: set print frame-arguments all
+PASS: gdb.base/frame-args.exp: frame 1 with print frame-arguments set to all
+PASS: gdb.base/frame-args.exp: set print frame-arguments scalars
+PASS: gdb.base/frame-args.exp: frame 1 with print frame-arguments set to scalars
+PASS: gdb.base/frame-args.exp: set print frame-arguments none
+PASS: gdb.base/frame-args.exp: frame 1 with print frame-arguments set to none
+Running ./gdb.base/freebpcmd.exp ...
+PASS: gdb.base/freebpcmd.exp: set breakpoint
+PASS: gdb.base/freebpcmd.exp: send breakpoint commands
+PASS: gdb.base/freebpcmd.exp: run program with breakpoint commands
+Running ./gdb.base/fullname.exp ...
+PASS: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built absolute
+PASS: gdb.base/fullname.exp: set breakpoint at main - built absolute
+PASS: gdb.base/fullname.exp: set breakpoint by full path after loading symbols - built absolute
+PASS: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built relative
+PASS: gdb.base/fullname.exp: set breakpoint at main - built relative
+PASS: gdb.base/fullname.exp: set breakpoint by full path after loading symbols - built relative
+PASS: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built other
+PASS: gdb.base/fullname.exp: set breakpoint at main - built other
+PASS: gdb.base/fullname.exp: set breakpoint by full path after loading symbols - built other
+Running ./gdb.base/fullpath-expand.exp ...
+PASS: gdb.base/fullpath-expand.exp: rbreak XXX/fullpath-expand-func.c:func
+PASS: gdb.base/fullpath-expand.exp: list func
+PASS: gdb.base/fullpath-expand.exp: info source
+Running ./gdb.base/funcargs.exp ...
+PASS: gdb.base/funcargs.exp: set print frame-arguments all
+PASS: gdb.base/funcargs.exp: run to call0a
+PASS: gdb.base/funcargs.exp: print c after run to call0a
+PASS: gdb.base/funcargs.exp: print s after run to call0a
+PASS: gdb.base/funcargs.exp: print i after run to call0a
+PASS: gdb.base/funcargs.exp: print l after run to call0a
+PASS: gdb.base/funcargs.exp: continue to call0b
+PASS: gdb.base/funcargs.exp: continue to call0c
+PASS: gdb.base/funcargs.exp: continue to call0d
+PASS: gdb.base/funcargs.exp: continue to call0e
+PASS: gdb.base/funcargs.exp: run to call1a
+PASS: gdb.base/funcargs.exp: print uc
+PASS: gdb.base/funcargs.exp: print us
+PASS: gdb.base/funcargs.exp: print ui
+PASS: gdb.base/funcargs.exp: print ul
+PASS: gdb.base/funcargs.exp: continue to call1b
+PASS: gdb.base/funcargs.exp: continue to call1c
+PASS: gdb.base/funcargs.exp: continue to call1d
+PASS: gdb.base/funcargs.exp: continue to call1e
+PASS: gdb.base/funcargs.exp: run to call2a
+PASS: gdb.base/funcargs.exp: print c after run to call2a
+PASS: gdb.base/funcargs.exp: print f1 after run to call2a
+PASS: gdb.base/funcargs.exp: print s after run to call2a
+PASS: gdb.base/funcargs.exp: print d1 after run to call2a
+PASS: gdb.base/funcargs.exp: print i after run to call2a
+PASS: gdb.base/funcargs.exp: print f2 after run to call2a
+PASS: gdb.base/funcargs.exp: print l after run to call2a
+PASS: gdb.base/funcargs.exp: print d2 after run to call2a
+PASS: gdb.base/funcargs.exp: continue to call2b
+PASS: gdb.base/funcargs.exp: continue to call2c
+PASS: gdb.base/funcargs.exp: continue to call2d
+PASS: gdb.base/funcargs.exp: continue to call2e
+PASS: gdb.base/funcargs.exp: continue to call2f
+PASS: gdb.base/funcargs.exp: continue to call2g
+PASS: gdb.base/funcargs.exp: continue to call2h
+PASS: gdb.base/funcargs.exp: continue to call2i
+PASS: gdb.base/funcargs.exp: run to call2a
+PASS: gdb.base/funcargs.exp: continue to callcb
+PASS: gdb.base/funcargs.exp: continue to callcc
+PASS: gdb.base/funcargs.exp: continue to callcd
+PASS: gdb.base/funcargs.exp: continue to callce
+PASS: gdb.base/funcargs.exp: continue to callcf
+PASS: gdb.base/funcargs.exp: run to callc1a
+PASS: gdb.base/funcargs.exp: continue to callc1b
+PASS: gdb.base/funcargs.exp: run to callc2a
+PASS: gdb.base/funcargs.exp: continue to callc2b
+PASS: gdb.base/funcargs.exp: run to call3a
+PASS: gdb.base/funcargs.exp: print *cp
+PASS: gdb.base/funcargs.exp: print *sp
+PASS: gdb.base/funcargs.exp: print *ip
+PASS: gdb.base/funcargs.exp: print *lp
+PASS: gdb.base/funcargs.exp: continue to call3b
+PASS: gdb.base/funcargs.exp: print *ucp
+PASS: gdb.base/funcargs.exp: print *usp
+PASS: gdb.base/funcargs.exp: print *uip
+PASS: gdb.base/funcargs.exp: print *ulp
+PASS: gdb.base/funcargs.exp: continue to call3c
+PASS: gdb.base/funcargs.exp: print *fp
+PASS: gdb.base/funcargs.exp: print *dp
+PASS: gdb.base/funcargs.exp: run to call4a
+PASS: gdb.base/funcargs.exp: print *stp
+PASS: gdb.base/funcargs.exp: continue to call4b
+PASS: gdb.base/funcargs.exp: print *unp (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: locate actual args, structs/unions passed by reference
+PASS: gdb.base/funcargs.exp: run to call5a
+PASS: gdb.base/funcargs.exp: print st
+PASS: gdb.base/funcargs.exp: continue to call5b (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: print un (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: run to call6a
+PASS: gdb.base/funcargs.exp: backtrace from call6a
+PASS: gdb.base/funcargs.exp: continue to call6b
+PASS: gdb.base/funcargs.exp: backtrace from call6b
+PASS: gdb.base/funcargs.exp: continue to call6c
+PASS: gdb.base/funcargs.exp: backtrace from call6c
+PASS: gdb.base/funcargs.exp: continue to call6d
+PASS: gdb.base/funcargs.exp: backtrace from call6d
+PASS: gdb.base/funcargs.exp: continue to call6e
+PASS: gdb.base/funcargs.exp: backtrace from call6e
+PASS: gdb.base/funcargs.exp: continue to call6f
+PASS: gdb.base/funcargs.exp: backtrace from call6f
+PASS: gdb.base/funcargs.exp: continue to call6g
+PASS: gdb.base/funcargs.exp: backtrace from call6g
+PASS: gdb.base/funcargs.exp: continue to call6h
+PASS: gdb.base/funcargs.exp: backtrace from call6h
+PASS: gdb.base/funcargs.exp: continue to call6i
+PASS: gdb.base/funcargs.exp: backtrace from call6i
+PASS: gdb.base/funcargs.exp: continue to call6j
+PASS: gdb.base/funcargs.exp: backtrace from call6j
+PASS: gdb.base/funcargs.exp: continue to call6k
+PASS: gdb.base/funcargs.exp: backtrace from call6k
+PASS: gdb.base/funcargs.exp: run to call7a
+PASS: gdb.base/funcargs.exp: backtrace from call7a
+PASS: gdb.base/funcargs.exp: continue to call7b
+PASS: gdb.base/funcargs.exp: backtrace from call7b
+PASS: gdb.base/funcargs.exp: continue to call7c
+PASS: gdb.base/funcargs.exp: backtrace from call7c
+PASS: gdb.base/funcargs.exp: continue to call7d
+PASS: gdb.base/funcargs.exp: backtrace from call7d
+PASS: gdb.base/funcargs.exp: continue to call7e
+PASS: gdb.base/funcargs.exp: backtrace from call7e
+PASS: gdb.base/funcargs.exp: continue to call7f
+PASS: gdb.base/funcargs.exp: backtrace from call7f
+PASS: gdb.base/funcargs.exp: continue to call7g
+PASS: gdb.base/funcargs.exp: backtrace from call7g
+PASS: gdb.base/funcargs.exp: continue to call7h
+PASS: gdb.base/funcargs.exp: backtrace from call7h
+PASS: gdb.base/funcargs.exp: continue to call7i
+PASS: gdb.base/funcargs.exp: backtrace from call7i
+PASS: gdb.base/funcargs.exp: continue to call7j
+PASS: gdb.base/funcargs.exp: backtrace from call7j
+PASS: gdb.base/funcargs.exp: continue to call7k
+PASS: gdb.base/funcargs.exp: backtrace from call7k
+PASS: gdb.base/funcargs.exp: run to hitbottom
+PASS: gdb.base/funcargs.exp: recursive passing of structs by value
+PASS: gdb.base/funcargs.exp: print c after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print s after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print i after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print l after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: next in localvars_after_alloca()
+PASS: gdb.base/funcargs.exp: print c in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print s in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print i in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print l in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: backtrace after alloca
+PASS: gdb.base/funcargs.exp: print c in call_after_alloca
+PASS: gdb.base/funcargs.exp: print s in call_after_alloca
+PASS: gdb.base/funcargs.exp: print i in call_after_alloca
+PASS: gdb.base/funcargs.exp: print l in call_after_alloca
+PASS: gdb.base/funcargs.exp: backtrace from call_after_alloca_subr
+PASS: gdb.base/funcargs.exp: continue to call0a
+PASS: gdb.base/funcargs.exp: print c in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: print s in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: print i in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: print l in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: backtrace in indirectly called function
+PASS: gdb.base/funcargs.exp: finish from indirectly called function
+PASS: gdb.base/funcargs.exp: stepping into indirectly called function
+PASS: gdb.base/funcargs.exp: finish from marker_call_with_trampolines
+PASS: gdb.base/funcargs.exp: stepping into function called with trampolines
+PASS: gdb.base/funcargs.exp: backtrace through call with trampolines
+PASS: gdb.base/funcargs.exp: stepping back to main from function called with trampolines
+Running ./gdb.base/gcore-buffer-overflow.exp ...
+PASS: gdb.base/gcore-buffer-overflow.exp: help gcore
+PASS: gdb.base/gcore-buffer-overflow.exp: Set buffer exceeding arguments
+PASS: gdb.base/gcore-buffer-overflow.exp: save a corefile
+Running ./gdb.base/gcore.exp ...
+PASS: gdb.base/gcore.exp: help gcore
+PASS: gdb.base/gcore.exp: set breakpoint at terminal_func
+PASS: gdb.base/gcore.exp: continue to terminal_func
+PASS: gdb.base/gcore.exp: save a corefile
+PASS: gdb.base/gcore.exp: re-load generated corefile
+PASS: gdb.base/gcore.exp: where in corefile
+PASS: gdb.base/gcore.exp: corefile restored general registers
+PASS: gdb.base/gcore.exp: corefile restored all registers
+PASS: gdb.base/gcore.exp: corefile restored extern array
+PASS: gdb.base/gcore.exp: corefile restored static array
+PASS: gdb.base/gcore.exp: corefile restored un-initialized array
+PASS: gdb.base/gcore.exp: corefile restored heap array
+PASS: gdb.base/gcore.exp: corefile restored stack array
+PASS: gdb.base/gcore.exp: corefile restored backtrace
+Running ./gdb.base/gcore-relro.exp ...
+PASS: gdb.base/gcore-relro.exp: help gcore
+Running ./gdb.base/gdb1056.exp ...
+PASS: gdb.base/gdb1056.exp: print 1/0
+PASS: gdb.base/gdb1056.exp: Test unsigned division by zero
+Running ./gdb.base/gdb1090.exp ...
+PASS: gdb.base/gdb1090.exp: continue to breakpoint: break-here
+PASS: gdb.base/gdb1090.exp: print s24
+Running ./gdb.base/gdb11530.exp ...
+PASS: gdb.base/gdb11530.exp: print a.i
+PASS: gdb.base/gdb11530.exp: print sizeof (a.i)
+PASS: gdb.base/gdb11530.exp: print sizeof (a.i) == sizeof (int)
+Running ./gdb.base/gdb11531.exp ...
+PASS: gdb.base/gdb11531.exp: Set watchpoint
+PASS: gdb.base/gdb11531.exp: watchpoint variable triggers at next
+PASS: gdb.base/gdb11531.exp: watchpoint variable triggers at continue
+Running ./gdb.base/gdb1250.exp ...
+Running ./gdb.base/gdb1555.exp ...
+FAIL: gdb.base/gdb1555.exp: Step into shared lib function
+FAIL: gdb.base/gdb1555.exp: Next while in a shared lib function
+Running ./gdb.base/gdb1821.exp ...
+PASS: gdb.base/gdb1821.exp: print /x bar
+Running ./gdb.base/gdbindex-stabs.exp ...
+PASS: gdb.base/gdbindex-stabs.exp: list stabs_function
+Running ./gdb.base/gdbvars.exp ...
+PASS: gdb.base/gdbvars.exp: set print sevenbit-strings
+PASS: gdb.base/gdbvars.exp: Set value-history[1] using $1
+PASS: gdb.base/gdbvars.exp: Set value-history[2] using $2
+PASS: gdb.base/gdbvars.exp: Set value-history[3] using $3
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX-1] using inplicit index $$
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX-1] again using implicit index $$
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX] using implicit index $
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX-2] using explicit index $$2
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX] using explicit index $0
+PASS: gdb.base/gdbvars.exp: print 108
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX] using explicit index $$0
+PASS: gdb.base/gdbvars.exp: Print value-history[1] using explicit index $1
+PASS: gdb.base/gdbvars.exp: Print value-history[2] using explicit index $2
+PASS: gdb.base/gdbvars.exp: Print value-history[3] using explicit index $3
+PASS: gdb.base/gdbvars.exp: Print (value-history[MAX] - 3) using implicit index $
+PASS: gdb.base/gdbvars.exp: Use value-history element in arithmetic expression
+PASS: gdb.base/gdbvars.exp: Set a new convenience variable
+PASS: gdb.base/gdbvars.exp: Print contents of new convenience variable
+PASS: gdb.base/gdbvars.exp: Set convenience variable to a new value
+PASS: gdb.base/gdbvars.exp: Print new contents of convenience variable
+PASS: gdb.base/gdbvars.exp: Set convenience variable $_
+PASS: gdb.base/gdbvars.exp: Print contents of convenience variable $_
+PASS: gdb.base/gdbvars.exp: Use convenience variable in arithmetic expression
+PASS: gdb.base/gdbvars.exp: Use convenience variable assignment in arithmetic expression
+PASS: gdb.base/gdbvars.exp: Print contents of uninitialized convenience variable
+PASS: gdb.base/gdbvars.exp: Set a new convenience variable to a program variable
+PASS: gdb.base/gdbvars.exp: Print contents of new convenience variable of program variable
+Running ./gdb.base/gnu-debugdata.exp ...
+PASS: gdb.base/gnu-debugdata.exp: nm -D - invoke armv7a-cros-linux-gnueabi-nm
+PASS: gdb.base/gnu-debugdata.exp: nm -D - invoke awk
+PASS: gdb.base/gnu-debugdata.exp: nm -D - invoke sort
+PASS: gdb.base/gnu-debugdata.exp: nm - invoke armv7a-cros-linux-gnueabi-nm
+PASS: gdb.base/gnu-debugdata.exp: nm - invoke awk
+PASS: gdb.base/gnu-debugdata.exp: nm - invoke sort
+PASS: gdb.base/gnu-debugdata.exp: comm
+PASS: gdb.base/gnu-debugdata.exp: objcopy 1
+PASS: gdb.base/gnu-debugdata.exp: strip
+PASS: gdb.base/gnu-debugdata.exp: copydebug
+PASS: gdb.base/gnu-debugdata.exp: addlink
+PASS: gdb.base/gnu-debugdata.exp: xz
+PASS: gdb.base/gnu-debugdata.exp: objcopy 2
+PASS: gdb.base/gnu-debugdata.exp: no symtab
+PASS: gdb.base/gnu-debugdata.exp: have symtab
+PASS: gdb.base/gnu-debugdata.exp: unload MiniDebugInfo
+Running ./gdb.base/gnu-ifunc.exp ...
+gdb compile failed, /tmp/cctHw26J.s: Assembler messages:
+/tmp/cctHw26J.s:42: Error: unrecognized symbol type ""
+UNTESTED: gdb.base/gnu-ifunc.exp: Could not compile dynamic executable /var/tmp/portage/cross-armv7a-cros-linux-gnueabi/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.base/gnu-ifunc.
+Running ./gdb.base/gnu_vector.exp ...
+PASS: gdb.base/gnu_vector.exp: print c4
+PASS: gdb.base/gnu_vector.exp: print c4[2]
+PASS: gdb.base/gnu_vector.exp: print i4a
+PASS: gdb.base/gnu_vector.exp: print i4b
+PASS: gdb.base/gnu_vector.exp: print i4a + i4b
+PASS: gdb.base/gnu_vector.exp: print i4a - i4b
+PASS: gdb.base/gnu_vector.exp: print i4a * i4b
+PASS: gdb.base/gnu_vector.exp: print i4a / i4b
+PASS: gdb.base/gnu_vector.exp: print i4a % i4b
+PASS: gdb.base/gnu_vector.exp: print i4a++
+PASS: gdb.base/gnu_vector.exp: print ++i4a
+PASS: gdb.base/gnu_vector.exp: print i4a--
+PASS: gdb.base/gnu_vector.exp: print --i4a
+PASS: gdb.base/gnu_vector.exp: print +i4a
+PASS: gdb.base/gnu_vector.exp: print -i4a
+PASS: gdb.base/gnu_vector.exp: print i4a & i4b
+PASS: gdb.base/gnu_vector.exp: print i4a | i4b
+PASS: gdb.base/gnu_vector.exp: print i4a ^ i4b
+PASS: gdb.base/gnu_vector.exp: print ~i4a
+PASS: gdb.base/gnu_vector.exp: print i4a << i4b
+PASS: gdb.base/gnu_vector.exp: print i4a >> i4b
+PASS: gdb.base/gnu_vector.exp: print f4a
+PASS: gdb.base/gnu_vector.exp: print f4b
+PASS: gdb.base/gnu_vector.exp: print f4a + f4b
+PASS: gdb.base/gnu_vector.exp: print f4a - f4b
+PASS: gdb.base/gnu_vector.exp: print f4a * f4b
+PASS: gdb.base/gnu_vector.exp: print f4a / f4b
+PASS: gdb.base/gnu_vector.exp: print +f4a
+PASS: gdb.base/gnu_vector.exp: print -f4a
+PASS: gdb.base/gnu_vector.exp: print (char4) 0x01010101
+PASS: gdb.base/gnu_vector.exp: print (char4) ia
+PASS: gdb.base/gnu_vector.exp: print (int2) lla
+PASS: gdb.base/gnu_vector.exp: print (int2) 1
+PASS: gdb.base/gnu_vector.exp: print (longlong2) 2
+PASS: gdb.base/gnu_vector.exp: print (float2) 3
+PASS: gdb.base/gnu_vector.exp: print (double2) 4
+PASS: gdb.base/gnu_vector.exp: print (uint4) ia
+PASS: gdb.base/gnu_vector.exp: print (int4) -3
+PASS: gdb.base/gnu_vector.exp: print (float4) 4
+PASS: gdb.base/gnu_vector.exp: print i4b = ia
+PASS: gdb.base/gnu_vector.exp: print i4a = 3
+PASS: gdb.base/gnu_vector.exp: print f4a = fb
+PASS: gdb.base/gnu_vector.exp: print f4b = 2
+PASS: gdb.base/gnu_vector.exp: print c4 + lla
+PASS: gdb.base/gnu_vector.exp: print i4a + lla
+PASS: gdb.base/gnu_vector.exp: print lla + c4
+PASS: gdb.base/gnu_vector.exp: print lla + i4a
+PASS: gdb.base/gnu_vector.exp: print c4 + ib
+PASS: gdb.base/gnu_vector.exp: print i4a + ib
+PASS: gdb.base/gnu_vector.exp: print i4a + 1
+PASS: gdb.base/gnu_vector.exp: print 1 + i4a
+PASS: gdb.base/gnu_vector.exp: print fa - f4b
+PASS: gdb.base/gnu_vector.exp: print 2 - f4b
+PASS: gdb.base/gnu_vector.exp: print f4a * fb
+PASS: gdb.base/gnu_vector.exp: print f4a * 1
+PASS: gdb.base/gnu_vector.exp: print ia / i4b
+PASS: gdb.base/gnu_vector.exp: print 2 / i4b
+PASS: gdb.base/gnu_vector.exp: print i4a % ib
+PASS: gdb.base/gnu_vector.exp: print i4a % 1
+PASS: gdb.base/gnu_vector.exp: print ia & i4b
+PASS: gdb.base/gnu_vector.exp: print 2 & i4b
+PASS: gdb.base/gnu_vector.exp: print i4a | ib
+PASS: gdb.base/gnu_vector.exp: print i4a | 1
+PASS: gdb.base/gnu_vector.exp: print ia ^ i4b
+PASS: gdb.base/gnu_vector.exp: print 2 ^ i4b
+PASS: gdb.base/gnu_vector.exp: print i4a << ib
+PASS: gdb.base/gnu_vector.exp: print i4a << 1
+PASS: gdb.base/gnu_vector.exp: print i4a >> ib
+PASS: gdb.base/gnu_vector.exp: print i4a >> 1
+PASS: gdb.base/gnu_vector.exp: print i4a = {2, 4, 8, 16}
+PASS: gdb.base/gnu_vector.exp: print i4a <<= ib
+PASS: gdb.base/gnu_vector.exp: print i4a + d2
+PASS: gdb.base/gnu_vector.exp: print d2 + i4a
+PASS: gdb.base/gnu_vector.exp: print f4a + ll2
+PASS: gdb.base/gnu_vector.exp: print ll2 + f4a
+PASS: gdb.base/gnu_vector.exp: print i2 + ll2
+PASS: gdb.base/gnu_vector.exp: print ll2 + i2
+PASS: gdb.base/gnu_vector.exp: print i4a + ll2
+PASS: gdb.base/gnu_vector.exp: print ll2 + i4a
+PASS: gdb.base/gnu_vector.exp: print f4a + d2
+PASS: gdb.base/gnu_vector.exp: print d2 + f4a
+PASS: gdb.base/gnu_vector.exp: print ui4 + i4a
+PASS: gdb.base/gnu_vector.exp: print i4a + ui4
+PASS: gdb.base/gnu_vector.exp: print i4a + i2
+PASS: gdb.base/gnu_vector.exp: print i2 + i4a
+PASS: gdb.base/gnu_vector.exp: print f4a + f2
+PASS: gdb.base/gnu_vector.exp: print f2 + f4a
+PASS: gdb.base/gnu_vector.exp: print (double2) f2
+PASS: gdb.base/gnu_vector.exp: print (int4) c4
+PASS: gdb.base/gnu_vector.exp: print (char4) i4a
+PASS: gdb.base/gnu_vector.exp: ptype c4
+PASS: gdb.base/gnu_vector.exp: ptype char4
+PASS: gdb.base/gnu_vector.exp: ptype i4a
+PASS: gdb.base/gnu_vector.exp: ptype int4
+PASS: gdb.base/gnu_vector.exp: ptype f4b
+PASS: gdb.base/gnu_vector.exp: ptype float4
+PASS: gdb.base/gnu_vector.exp: ptype union_with_vector_1
+PASS: gdb.base/gnu_vector.exp: ptype struct_with_vector_1
+Running ./gdb.base/hashline1.exp ...
+PASS: gdb.base/hashline1.exp: set breakpoint
+Running ./gdb.base/hashline2.exp ...
+PASS: gdb.base/hashline2.exp: set breakpoint
+Running ./gdb.base/hashline3.exp ...
+PASS: gdb.base/hashline3.exp: set breakpoint
+Running ./gdb.base/hbreak2.exp ...
+PASS: gdb.base/hbreak2.exp: hardware breakpoint support
+FAIL: gdb.base/hbreak2.exp: hardware breakpoint insertion
+PASS: gdb.base/hbreak2.exp: hardware breakpoint function
+PASS: gdb.base/hbreak2.exp: hardware breakpoint quoted function
+PASS: gdb.base/hbreak2.exp: hardware breakpoint function in file
+PASS: gdb.base/hbreak2.exp: use `list' to establish default source file
+PASS: gdb.base/hbreak2.exp: hardware breakpoint line number
+PASS: gdb.base/hbreak2.exp: hardware breakpoint line number in file
+PASS: gdb.base/hbreak2.exp: hardware breakpoint at start of multi line if conditional
+PASS: gdb.base/hbreak2.exp: hardware breakpoint at start of multi line while conditional
+PASS: gdb.base/hbreak2.exp: hardware breakpoint info
+PASS: gdb.base/hbreak2.exp: hardware breakpoint function (2)
+FAIL: gdb.base/hbreak2.exp: run until function breakpoint
+PASS: gdb.base/hbreak2.exp: hardware breakpoint line number (2)
+PASS: gdb.base/hbreak2.exp: run until breakpoint set at a line number
+PASS: gdb.base/hbreak2.exp: hardware breakpoint function in file (2)
+PASS: gdb.base/hbreak2.exp: run until file:function(6) breakpoint
+PASS: gdb.base/hbreak2.exp: run until file:function(5) breakpoint
+PASS: gdb.base/hbreak2.exp: run until file:function(4) breakpoint
+PASS: gdb.base/hbreak2.exp: run until file:function(3) breakpoint
+PASS: gdb.base/hbreak2.exp: run until file:function(2) breakpoint
+PASS: gdb.base/hbreak2.exp: run until file:function(1) breakpoint
+PASS: gdb.base/hbreak2.exp: hardware breakpoint quoted function (2)
+PASS: gdb.base/hbreak2.exp: run until quoted breakpoint
+PASS: gdb.base/hbreak2.exp: hardware breakpoint line number in file (2)
+PASS: gdb.base/hbreak2.exp: run until file:linenum breakpoint
+PASS: gdb.base/hbreak2.exp: hardware breakpoint offset +1
+PASS: gdb.base/hbreak2.exp: step onto hardware breakpoint
+PASS: gdb.base/hbreak2.exp: setting hardware breakpoint at }
+PASS: gdb.base/hbreak2.exp: continue to hardware breakpoint at }
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint function
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint function in file
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint line number #1
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint line number #2
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint line number in file #1
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint line number in file #2
+PASS: gdb.base/hbreak2.exp: temporary hardware breakpoint info
+PASS: gdb.base/hbreak2.exp: set breakpoint pending off
+PASS: gdb.base/hbreak2.exp: hardware break on non-existent source line
+PASS: gdb.base/hbreak2.exp: until bp_location1
+PASS: gdb.base/hbreak2.exp: hardware break on default location
+PASS: gdb.base/hbreak2.exp: set to-be-silent hardware break bp_location1
+PASS: gdb.base/hbreak2.exp: set silent break bp_location1
+PASS: gdb.base/hbreak2.exp: info silent hardware break bp_location1
+PASS: gdb.base/hbreak2.exp: hit silent hardware break bp_location1
+PASS: gdb.base/hbreak2.exp: stopped for silent hardware break bp_location1
+PASS: gdb.base/hbreak2.exp: thread-specific hardware breakpoint on non-existent thread disallowed
+PASS: gdb.base/hbreak2.exp: thread-specific hardware breakpoint on bogus thread ID disallowed
+PASS: gdb.base/hbreak2.exp: hardware breakpoint with trailing garbage disallowed
+PASS: gdb.base/hbreak2.exp: step over hardware breakpoint
+PASS: gdb.base/hbreak2.exp: clear line has no breakpoint disallowed
+PASS: gdb.base/hbreak2.exp: clear current line has no breakpoint disallowed
+PASS: gdb.base/hbreak2.exp: set convenience variable $foo to bp_location11
+PASS: gdb.base/hbreak2.exp: set hardware breakpoint via convenience variable
+PASS: gdb.base/hbreak2.exp: set convenience variable $foo to 81.5
+PASS: gdb.base/hbreak2.exp: set hardware breakpoint via non-integer convenience variable disallowed
+PASS: gdb.base/hbreak2.exp: set hardware breakpoint on to-be-called function
+PASS: gdb.base/hbreak2.exp: hit hardware breakpoint on called function
+PASS: gdb.base/hbreak2.exp: backtrace while in called function
+PASS: gdb.base/hbreak2.exp: finish from called function
+PASS: gdb.base/hbreak2.exp: hardware break at factorial
+PASS: gdb.base/hbreak2.exp: kill program
+PASS: gdb.base/hbreak2.exp: run to factorial(6)
+PASS: gdb.base/hbreak2.exp: continue to factorial(5)
+PASS: gdb.base/hbreak2.exp: backtrace from factorial(5)
+PASS: gdb.base/hbreak2.exp: next to recursive call
+PASS: gdb.base/hbreak2.exp: next over recursive call
+PASS: gdb.base/hbreak2.exp: backtrace from factorial(5.1)
+FAIL: gdb.base/hbreak2.exp: setting breakpoint at exit
+PASS: gdb.base/hbreak2.exp: hardware breakpoint function, optimized file
+PASS: gdb.base/hbreak2.exp: run until hardware function breakpoint, optimized file (code motion)
+PASS: gdb.base/hbreak2.exp: hardware breakpoint small function, optimized file
+PASS: gdb.base/hbreak2.exp: run until hardware breakpoint set at small function, optimized file
+Running ./gdb.base/hbreak.exp ...
+Running ./gdb.base/help.exp ...
+PASS: gdb.base/help.exp: disable pagination
+PASS: gdb.base/help.exp: help aliases
+PASS: gdb.base/help.exp: help breakpoints
+PASS: gdb.base/help.exp: help data
+PASS: gdb.base/help.exp: help files
+PASS: gdb.base/help.exp: help internals
+PASS: gdb.base/help.exp: help obscure
+PASS: gdb.base/help.exp: help running
+PASS: gdb.base/help.exp: help stack
+PASS: gdb.base/help.exp: help status
+PASS: gdb.base/help.exp: help support
+PASS: gdb.base/help.exp: help tracepoints
+PASS: gdb.base/help.exp: help user-defined
+PASS: gdb.base/help.exp: help breakpoint "b" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "br" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "bre" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "brea" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "break" abbreviation
+PASS: gdb.base/help.exp: help backtrace "bt" abbreviation
+PASS: gdb.base/help.exp: help backtrace
+PASS: gdb.base/help.exp: help commands
+PASS: gdb.base/help.exp: help delete "d" abbreviation
+PASS: gdb.base/help.exp: help delete
+PASS: gdb.base/help.exp: help help "h" abbreviation
+PASS: gdb.base/help.exp: help help
+PASS: gdb.base/help.exp: help show copying
+PASS: gdb.base/help.exp: help show warranty
+PASS: gdb.base/help.exp: help show commands
+PASS: gdb.base/help.exp: help show confirm
+PASS: gdb.base/help.exp: help info bogus-gdb-command
+PASS: gdb.base/help.exp: help gotcha
+PASS: gdb.base/help.exp: apropos \(print[^ bsiedf\".-]\)
+PASS: gdb.base/help.exp: apropos handle signal
+PASS: gdb.base/help.exp: apropos apropos
+Running ./gdb.base/hook-stop-continue.exp ...
+PASS: gdb.base/hook-stop-continue.exp: breakpoint line number
+PASS: gdb.base/hook-stop-continue.exp: print $do_continue = 1
+PASS: gdb.base/hook-stop-continue.exp: define hook-stop command
+PASS: gdb.base/hook-stop-continue.exp: next triggering hook-stop
+PASS: gdb.base/hook-stop-continue.exp: next no hook-stop
+Running ./gdb.base/hook-stop-frame.exp ...
+PASS: gdb.base/hook-stop-frame.exp: breakpoint line number
+PASS: gdb.base/hook-stop-frame.exp: define hook-stop command
+PASS: gdb.base/hook-stop-frame.exp: hook-stop runs before frame print
+Running ./gdb.base/huge.exp ...
+PASS: gdb.base/huge.exp: print a very large data object
+Running ./gdb.base/ifelse.exp ...
+PASS: gdb.base/ifelse.exp: if 1 with empty body
+PASS: gdb.base/ifelse.exp: if 0 with empty body
+PASS: gdb.base/ifelse.exp: if true else false #1
+PASS: gdb.base/ifelse.exp: if 1 .. else with empty body
+PASS: gdb.base/ifelse.exp: if true else false #2
+PASS: gdb.base/ifelse.exp: if 0 .. else with empty body
+PASS: gdb.base/ifelse.exp: if true else false #3
+PASS: gdb.base/ifelse.exp: create define with empty else
+PASS: gdb.base/ifelse.exp: call original define
+PASS: gdb.base/ifelse.exp: replace define with if .. else with empty body
+PASS: gdb.base/ifelse.exp: call replacement define
+Running ./gdb.base/included.exp ...
+PASS: gdb.base/included.exp: set listsize 1
+PASS: gdb.base/included.exp: list main
+PASS: gdb.base/included.exp: list integer
+PASS: gdb.base/included.exp: ptype integer
+PASS: gdb.base/included.exp: info variables integer
+Running ./gdb.base/inferior-died.exp ...
+UNSUPPORTED: gdb.base/inferior-died.exp: inferior-died.exp
+Running ./gdb.base/infnan.exp ...
+PASS: gdb.base/infnan.exp: print a
+PASS: gdb.base/infnan.exp: print b
+Running ./gdb.base/info-fun.exp ...
+Running ./gdb.base/infoline.exp ...
+PASS: gdb.base/infoline.exp: info line infoline.c:18
+Running ./gdb.base/info-macros.exp ...
+FAIL: gdb.base/info-macros.exp: info macro -- -all
+FAIL: gdb.base/info-macros.exp: info macro -- -all
+PASS: gdb.base/info-macros.exp: info macro -all --
+PASS: gdb.base/info-macros.exp: info macro -all --
+PASS: gdb.base/info-macros.exp: info macro -all --
+PASS: gdb.base/info-macros.exp: info macro --
+PASS: gdb.base/info-macros.exp: 'info macro -- '
+PASS: gdb.base/info-macros.exp: 'info macro -- '
+PASS: gdb.base/info-macros.exp: info macro -invalid-option 1
+PASS: gdb.base/info-macros.exp: info macro -invalid-option
+PASS: gdb.base/info-macros.exp: info macro -invalid-option FOO
+PASS: gdb.base/info-macros.exp: info macro -invalid-option FOO
+FAIL: gdb.base/info-macros.exp: info macro -- FOO
+FAIL: gdb.base/info-macros.exp: info macro -- FOO
+FAIL: gdb.base/info-macros.exp: info macro -- FOO
+FAIL: gdb.base/info-macros.exp: info macro FOO
+FAIL: gdb.base/info-macros.exp: info macro FOO
+FAIL: gdb.base/info-macros.exp: info macro -a FOO 1
+FAIL: gdb.base/info-macros.exp: info macro -a -- FOO 1
+FAIL: gdb.base/info-macros.exp: info macro -all -- FOO 1
+FAIL: gdb.base/info-macros.exp: info macro -a -- FOO
+FAIL: gdb.base/info-macros.exp: info macro -a -- FOO
+FAIL: gdb.base/info-macros.exp: info macros 2
+FAIL: gdb.base/info-macros.exp: info macros 3
+FAIL: gdb.base/info-macros.exp: info macros 4
+FAIL: gdb.base/info-macros.exp: info macros *$pc
+FAIL: gdb.base/info-macros.exp: info macros
+FAIL: gdb.base/info-macros.exp: info macros 6
+FAIL: gdb.base/info-macros.exp: info macros 7
+KFAIL: gdb.base/info-macros.exp: info macros info-macros.c:42 (PRMS: gdb/NNNN)
+Running ./gdb.base/info-os.exp ...
+PASS: gdb.base/info-os.exp: get inferior process ID
+PASS: gdb.base/info-os.exp: continue to breakpoint: Set breakpoint here
+PASS: gdb.base/info-os.exp: get shared memory key
+PASS: gdb.base/info-os.exp: get shared memory ID
+PASS: gdb.base/info-os.exp: get semaphore key
+PASS: gdb.base/info-os.exp: get semaphore ID
+PASS: gdb.base/info-os.exp: get message queue key
+PASS: gdb.base/info-os.exp: get message queue ID
+PASS: gdb.base/info-os.exp: get socket port number
+PASS: gdb.base/info-os.exp: get process list
+PASS: gdb.base/info-os.exp: get process groups
+PASS: gdb.base/info-os.exp: get threads
+PASS: gdb.base/info-os.exp: get threads
+PASS: gdb.base/info-os.exp: get file descriptors
+PASS: gdb.base/info-os.exp: get internet-domain sockets
+PASS: gdb.base/info-os.exp: get shared-memory regions
+PASS: gdb.base/info-os.exp: get semaphores
+PASS: gdb.base/info-os.exp: get message queues
+PASS: gdb.base/info-os.exp: continue
+Running ./gdb.base/info-proc.exp ...
+PASS: gdb.base/info-proc.exp: help info proc
+PASS: gdb.base/info-proc.exp: info proc without a process
+PASS: gdb.base/info-proc.exp: info proc with process
+PASS: gdb.base/info-proc.exp: info proc mapping
+PASS: gdb.base/info-proc.exp: save a core file
+PASS: gdb.base/info-proc.exp: core break.gcore
+PASS: gdb.base/info-proc.exp: info proc mapping with core file
+Running ./gdb.base/info-target.exp ...
+PASS: gdb.base/info-target.exp: info target
+Running ./gdb.base/interact.exp ...
+PASS: gdb.base/interact.exp: set interactive-mode auto
+PASS: gdb.base/interact.exp: source script with interactive-mode auto
+PASS: gdb.base/interact.exp: sanity check with interactive-mode auto
+PASS: gdb.base/interact.exp: show interactive-mode (auto)
+PASS: gdb.base/interact.exp: set interactive-mode on
+PASS: gdb.base/interact.exp: source script with interactive-mode on
+PASS: gdb.base/interact.exp: sanity check with interactive-mode on
+PASS: gdb.base/interact.exp: show interactive-mode (on)
+PASS: gdb.base/interact.exp: set interactive-mode off
+PASS: gdb.base/interact.exp: source script with interactive-mode off
+PASS: gdb.base/interact.exp: sanity check with interactive-mode off
+PASS: gdb.base/interact.exp: show interactive-mode (off)
+Running ./gdb.base/interp.exp ...
+PASS: gdb.base/interp.exp: interpreter-exec mi "-var-update *"
+PASS: gdb.base/interp.exp: interpreter-exec console "show version"
+PASS: gdb.base/interp.exp: interpreter-exec mi "-var-update *"
+PASS: gdb.base/interp.exp: interpreter-exec mi "-stack-info-frame"
+PASS: gdb.base/interp.exp: interpreter-exec mi1 "-break-insert main"
+PASS: gdb.base/interp.exp: interpreter-exec mi2 "-break-insert main"
+PASS: gdb.base/interp.exp: interpreter-exec mi3 "-break-insert main"
+PASS: gdb.base/interp.exp: can list sources
+Running ./gdb.base/interrupt.exp ...
+Running ./gdb.base/jit.exp ...
+PASS: gdb.base/jit.exp: one_jit_test-1: continue to breakpoint: break here 0
+PASS: gdb.base/jit.exp: one_jit_test-1: set var argc = 2
+FAIL: gdb.base/jit.exp: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so"
+FAIL: gdb.base/jit.exp: one_jit_test-1: set var count = 1
+FAIL: gdb.base/jit.exp: one_jit_test-1: continue to breakpoint: break here 1
+FAIL: gdb.base/jit.exp: one_jit_test-1: info function jit_function
+FAIL: gdb.base/jit.exp: one_jit_test-1: continue to breakpoint: break here 2
+PASS: gdb.base/jit.exp: one_jit_test-1: info function jit_function
+PASS: gdb.base/jit.exp: one_jit_test-2: continue to breakpoint: break here 0
+PASS: gdb.base/jit.exp: one_jit_test-2: set var argc = 2
+FAIL: gdb.base/jit.exp: one_jit_test-2: set var libname = "SHLIBDIR/jit-solib.so"
+FAIL: gdb.base/jit.exp: one_jit_test-2: set var count = 2
+FAIL: gdb.base/jit.exp: one_jit_test-2: continue to breakpoint: break here 1
+FAIL: gdb.base/jit.exp: one_jit_test-2: info function jit_function
+FAIL: gdb.base/jit.exp: one_jit_test-2: continue to breakpoint: break here 2
+PASS: gdb.base/jit.exp: one_jit_test-2: info function jit_function
+PASS: gdb.base/jit.exp: PIE: one_jit_test-1: continue to breakpoint: break here 0
+PASS: gdb.base/jit.exp: PIE: one_jit_test-1: set var argc = 2
+FAIL: gdb.base/jit.exp: PIE: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so"
+FAIL: gdb.base/jit.exp: PIE: one_jit_test-1: set var count = 1
+FAIL: gdb.base/jit.exp: PIE: one_jit_test-1: continue to breakpoint: break here 1
+FAIL: gdb.base/jit.exp: PIE: one_jit_test-1: info function jit_function
+FAIL: gdb.base/jit.exp: PIE: one_jit_test-1: continue to breakpoint: break here 2
+PASS: gdb.base/jit.exp: PIE: one_jit_test-1: info function jit_function
+Running ./gdb.base/jit-simple.exp ...
+PASS: gdb.base/jit-simple.exp: blah 1
+PASS: gdb.base/jit-simple.exp: recompile jit-simple.c
+PASS: gdb.base/jit-simple.exp: blah 1
+Running ./gdb.base/jit-so.exp ...
+PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here before-dlopen
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: set var jit_libname = "jit-main.so"
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here after-dlopen
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: setting breakpoint at jit-main.c:131
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 0
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: set var argc = 2
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so"
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: set var count = 1
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: setting breakpoint at jit-main.c:194
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 1
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: info function jit_function
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: setting breakpoint at jit-main.c:219
+FAIL: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 2
+PASS: gdb.base/jit-so.exp: one_jit_test-1: info function jit_function
+PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here before-dlopen
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: set var jit_libname = "jit-main.so"
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here after-dlopen
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: setting breakpoint at jit-main.c:131
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 0
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: set var argc = 2
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: set var libname = "SHLIBDIR/jit-solib.so"
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: set var count = 2
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: setting breakpoint at jit-main.c:194
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 1
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: info function jit_function
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: setting breakpoint at jit-main.c:219
+FAIL: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 2
+PASS: gdb.base/jit-so.exp: one_jit_test-2: info function jit_function
+Running ./gdb.base/jump.exp ...
+PASS: gdb.base/jump.exp: break before jump to non-call
+PASS: gdb.base/jump.exp: jump to non-call
+PASS: gdb.base/jump.exp: break before jump to call
+PASS: gdb.base/jump.exp: jump to call
+PASS: gdb.base/jump.exp: disable breakpoint on call
+PASS: gdb.base/jump.exp: jump to call with disabled breakpoint
+PASS: gdb.base/jump.exp: jump without argument disallowed
+PASS: gdb.base/jump.exp: jump with trailing argument junk
+PASS: gdb.base/jump.exp: aborted jump out of current function
+PASS: gdb.base/jump.exp: jump out of current function
+Running ./gdb.base/kill-after-signal.exp ...
+UNTESTED: gdb.base/kill-after-signal.exp: kill-after-signal.exp
+Running ./gdb.base/label.exp ...
+Running ./gdb.base/langs.exp ...
+PASS: gdb.base/langs.exp: break on nonexistent function in langs.exp
+PASS: gdb.base/langs.exp: show language at csub in langs.exp
+PASS: gdb.base/langs.exp: backtrace in langs.exp
+PASS: gdb.base/langs.exp: up to foo in langs.exp
+PASS: gdb.base/langs.exp: show language at foo in langs.exp
+PASS: gdb.base/langs.exp: up to cppsub_ in langs.exp
+PASS: gdb.base/langs.exp: show language at cppsub_ in langs.exp
+PASS: gdb.base/langs.exp: up to fsub in langs.exp
+PASS: gdb.base/langs.exp: show language at fsub in langs.exp
+PASS: gdb.base/langs.exp: up to langs0__2do in langs.exp
+PASS: gdb.base/langs.exp: show language at langs0__2do in langs.exp
+PASS: gdb.base/langs.exp: up to main in langs.exp
+PASS: gdb.base/langs.exp: show language at main in langs.exp
+FAIL: gdb.base/langs.exp: setting breakpoint at exit
+PASS: gdb.base/langs.exp: set lang to minimal
+PASS: gdb.base/langs.exp: print parameter value
+Running ./gdb.base/ldbl_e308.exp ...
+PASS: gdb.base/ldbl_e308.exp: set variable ldbl_308 = 1.6e+308l
+PASS: gdb.base/ldbl_e308.exp: print ldbl_308
+Running ./gdb.base/lineinc.exp ...
+PASS: gdb.base/lineinc.exp: tolerate macro info with multiple #inclusions per line
+Running ./gdb.base/linespecs.exp ...
+PASS: gdb.base/linespecs.exp: list c:/foo/bar/baz.c:1
+PASS: gdb.base/linespecs.exp: list c:/foo/bar/baz.c
+PASS: gdb.base/linespecs.exp: list fooc:/foo/bar/baz.c:1
+PASS: gdb.base/linespecs.exp: list fooc:/foo/bar/baz.c
+Running ./gdb.base/list.exp ...
+PASS: gdb.base/list.exp: set width 0
+PASS: gdb.base/list.exp: show default list size
+PASS: gdb.base/list.exp: list default lines around main
+PASS: gdb.base/list.exp: setting listsize to 1 #1
+PASS: gdb.base/list.exp: show listsize 1 #1
+PASS: gdb.base/list.exp: list line 1 with listsize 1
+PASS: gdb.base/list.exp: list line 2 with listsize 1
+PASS: gdb.base/list.exp: setting listsize to 2 #2
+PASS: gdb.base/list.exp: show listsize 2 #2
+PASS: gdb.base/list.exp: list line 1 with listsize 2
+PASS: gdb.base/list.exp: list line 2 with listsize 2
+PASS: gdb.base/list.exp: list line 3 with listsize 2
+PASS: gdb.base/list.exp: setting listsize to 3 #3
+PASS: gdb.base/list.exp: show listsize 3 #3
+PASS: gdb.base/list.exp: list line 1 with listsize 3
+PASS: gdb.base/list.exp: list line 2 with listsize 3
+PASS: gdb.base/list.exp: list line 3 with listsize 3
+PASS: gdb.base/list.exp: setting listsize to 4 #4
+PASS: gdb.base/list.exp: show listsize 4 #4
+PASS: gdb.base/list.exp: list line 1 with listsize 4
+PASS: gdb.base/list.exp: list line 2 with listsize 4
+PASS: gdb.base/list.exp: list line 3 with listsize 4
+PASS: gdb.base/list.exp: list line 4 with listsize 4
+PASS: gdb.base/list.exp: setting listsize to 100 #5
+PASS: gdb.base/list.exp: show listsize 100 #5
+PASS: gdb.base/list.exp: list line 1 with listsize 100
+PASS: gdb.base/list.exp: list line 10 with listsize 100
+PASS: gdb.base/list.exp: setting listsize to 0 #6
+PASS: gdb.base/list.exp: show listsize unlimited #6
+PASS: gdb.base/list.exp: list line 1 with unlimited listsize
+PASS: gdb.base/list.exp: setting listsize to 10 #7
+PASS: gdb.base/list.exp: show listsize 10 #7
+PASS: gdb.base/list.exp: list line 1 in include file
+PASS: gdb.base/list.exp: list message for lines past EOF
+PASS: gdb.base/list.exp: list filename:number (4 tests)
+PASS: gdb.base/list.exp: list function in source file 1
+PASS: gdb.base/list.exp: list function in source file 2
+PASS: gdb.base/list.exp: list function in include file
+PASS: gdb.base/list.exp: successive list commands to page forward (4 tests)
+PASS: gdb.base/list.exp: 4 successive "list -" commands to page backwards
+PASS: gdb.base/list.exp: repeat list commands to page forward using 'return' (4 tests)
+PASS: gdb.base/list.exp: list range; filename:line1,filename:line2
+PASS: gdb.base/list.exp: list range; line1,line2
+PASS: gdb.base/list.exp: list range; upper bound past EOF
+PASS: gdb.base/list.exp: list range; both bounds past EOF
+PASS: gdb.base/list.exp: list range, must be same files
+PASS: gdb.base/list.exp: list filename:function (5 tests)
+PASS: gdb.base/list.exp: list 'list0.c:main'
+XFAIL: gdb.base/list.exp: list filename:function; wrong filename rejected
+PASS: gdb.base/list.exp: list filename:function; nonexistant file
+PASS: gdb.base/list.exp: list filename:function; nonexistant function
+PASS: gdb.base/list.exp: set listsize 4
+PASS: gdb.base/list.exp: list long_line
+PASS: gdb.base/list.exp: search 4321
+PASS: gdb.base/list.exp: search 6789
+PASS: gdb.base/list.exp: search extremely long line (> 5000 chars)
+PASS: gdb.base/list.exp: set listsize 2
+PASS: gdb.base/list.exp: list 1
+PASS: gdb.base/list.exp: list ,5
+Running ./gdb.base/logical.exp ...
+PASS: gdb.base/logical.exp: evaluate x; variables x = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x; variables x = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !!x; variables x = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x; variables x = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x; variables x = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !!x; variables x = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 1, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 1, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 1, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x > y || w == z; variables x = 1, y = 2, w = 3, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate x >= y && w != z; variables x = 1, y = 2, w = 3, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate ! x > y || w + z; variables x = 1, y = 2, w = 3, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y || w == z; variables x = 1, y = 2, w = 1, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y && w != z; variables x = 1, y = 2, w = 1, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate ! x > y || w + z; variables x = 1, y = 2, w = 1, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y || w == z; variables x = 2, y = 2, w = 2, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y && w != z; variables x = 2, y = 2, w = 2, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate ! x > y || w + z; variables x = 2, y = 2, w = 2, z = 3; expecting 1
+Running ./gdb.base/longest-types.exp ...
+UNTESTED: gdb.base/longest-types.exp: longest-types.exp
+Running ./gdb.base/longjmp.exp ...
+PASS: gdb.base/longjmp.exp: breakpoint at pattern 1 start
+PASS: gdb.base/longjmp.exp: continue to breakpoint at pattern 1 start
+PASS: gdb.base/longjmp.exp: breakpoint at miss_step_1
+PASS: gdb.base/longjmp.exp: next over setjmp (1)
+PASS: gdb.base/longjmp.exp: next to longjmp (1)
+FAIL: gdb.base/longjmp.exp: next over longjmp(1)
+PASS: gdb.base/longjmp.exp: breakpoint at pattern 2 start
+PASS: gdb.base/longjmp.exp: continue to breakpoint at pattern 2 start
+PASS: gdb.base/longjmp.exp: breakpoint at miss_step_2
+PASS: gdb.base/longjmp.exp: next over setjmp (2)
+FAIL: gdb.base/longjmp.exp: next over call_longjmp (2)
+PASS: gdb.base/longjmp.exp: breakpoint at pattern 3 start
+PASS: gdb.base/longjmp.exp: continue to breakpoint at pattern 3 start
+PASS: gdb.base/longjmp.exp: next over patt3
+Running ./gdb.base/long_long.exp ...
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (char)" (1)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (short)" (2)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (int)" (4)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long)" (4)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long long)" (8)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (void *)" (4)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (double)" (8)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long double)" (8)
+PASS: gdb.base/long_long.exp: continue to breakpoint: Stop here and look
+PASS: gdb.base/long_long.exp: hex print p/x
+PASS: gdb.base/long_long.exp: decimal print p/x
+PASS: gdb.base/long_long.exp: default print val.dec
+PASS: gdb.base/long_long.exp: default print val.bin
+PASS: gdb.base/long_long.exp: default print val.oct
+PASS: gdb.base/long_long.exp: default print hex
+PASS: gdb.base/long_long.exp: decimal print p/u
+PASS: gdb.base/long_long.exp: binary print
+PASS: gdb.base/long_long.exp: octal print
+PASS: gdb.base/long_long.exp: print +ve long long
+PASS: gdb.base/long_long.exp: decimal print p/d
+PASS: gdb.base/long_long.exp: p/d val.oct
+PASS: gdb.base/long_long.exp: p/u val.oct
+PASS: gdb.base/long_long.exp: p/o val.oct
+PASS: gdb.base/long_long.exp: p/t val.oct
+PASS: gdb.base/long_long.exp: p/a val.oct
+PASS: gdb.base/long_long.exp: p/c val.oct
+PASS: gdb.base/long_long.exp: p/f val.oct
+PASS: gdb.base/long_long.exp: p/x *(char *)c
+PASS: gdb.base/long_long.exp: p/d *(char *)c
+PASS: gdb.base/long_long.exp: p/u *(char *)c
+PASS: gdb.base/long_long.exp: p/o *(char *)c
+PASS: gdb.base/long_long.exp: p/t *(char *)c
+PASS: gdb.base/long_long.exp: p/a *(char *)c
+PASS: gdb.base/long_long.exp: p/f *(char *)c
+PASS: gdb.base/long_long.exp: p/c *(char *)c
+PASS: gdb.base/long_long.exp: p/x *(short *)s
+PASS: gdb.base/long_long.exp: p/d *(short *)s
+PASS: gdb.base/long_long.exp: p/u *(short *)s
+PASS: gdb.base/long_long.exp: p/o *(short *)s
+PASS: gdb.base/long_long.exp: p/t *(short *)s
+PASS: gdb.base/long_long.exp: p/a *(short *)s
+PASS: gdb.base/long_long.exp: p/f *(short *)s
+PASS: gdb.base/long_long.exp: p/c *(short *)s
+PASS: gdb.base/long_long.exp: p/x *(int *)i
+PASS: gdb.base/long_long.exp: p/d *(int *)i
+PASS: gdb.base/long_long.exp: p/u *(int *)i
+PASS: gdb.base/long_long.exp: p/o *(int *)i
+PASS: gdb.base/long_long.exp: p/t *(int *)i
+PASS: gdb.base/long_long.exp: p/a *(int *)i
+PASS: gdb.base/long_long.exp: p/f *(int *)i
+PASS: gdb.base/long_long.exp: p/c *(int *)i
+PASS: gdb.base/long_long.exp: p/x *(long *)l
+PASS: gdb.base/long_long.exp: p/d *(long *)l
+PASS: gdb.base/long_long.exp: p/u *(long *)l
+PASS: gdb.base/long_long.exp: p/o *(long *)l
+PASS: gdb.base/long_long.exp: p/t *(long *)l
+PASS: gdb.base/long_long.exp: p/a *(long *)l
+PASS: gdb.base/long_long.exp: p/f *(long *)l
+PASS: gdb.base/long_long.exp: p/c *(long *)l
+PASS: gdb.base/long_long.exp: p/x *(long long *)ll
+PASS: gdb.base/long_long.exp: p/d *(long long *)ll
+PASS: gdb.base/long_long.exp: p/u *(long long *)ll
+PASS: gdb.base/long_long.exp: p/o *(long long *)ll
+PASS: gdb.base/long_long.exp: p/t *(long long *)ll
+PASS: gdb.base/long_long.exp: p/a *(long long *)ll
+PASS: gdb.base/long_long.exp: p/f *(long long *)ll
+PASS: gdb.base/long_long.exp: p/c *(long long *)ll
+PASS: gdb.base/long_long.exp: set examine size to w
+PASS: gdb.base/long_long.exp: x/x w
+PASS: gdb.base/long_long.exp: x/d w
+PASS: gdb.base/long_long.exp: x/u w
+PASS: gdb.base/long_long.exp: x/o w
+PASS: gdb.base/long_long.exp: x/t w
+PASS: gdb.base/long_long.exp: x/a
+PASS: gdb.base/long_long.exp: x/c b
+PASS: gdb.base/long_long.exp: x/f &val.oct
+PASS: gdb.base/long_long.exp: set examine size to g
+PASS: gdb.base/long_long.exp: x/2x g
+PASS: gdb.base/long_long.exp: x/2d g
+PASS: gdb.base/long_long.exp: x/2u g
+PASS: gdb.base/long_long.exp: x/2o g
+PASS: gdb.base/long_long.exp: x/2t g
+PASS: gdb.base/long_long.exp: x/2a
+PASS: gdb.base/long_long.exp: x/2c b
+PASS: gdb.base/long_long.exp: x/2f &val.oct
+PASS: gdb.base/long_long.exp: x/2bx b
+PASS: gdb.base/long_long.exp: x/2bd b
+PASS: gdb.base/long_long.exp: x/2bu b
+PASS: gdb.base/long_long.exp: x/2bo b
+PASS: gdb.base/long_long.exp: x/2bt b
+PASS: gdb.base/long_long.exp: x/2ba b
+PASS: gdb.base/long_long.exp: x/2bc b
+PASS: gdb.base/long_long.exp: x/2bf b
+PASS: gdb.base/long_long.exp: x/2hx h
+PASS: gdb.base/long_long.exp: x/2hd h
+PASS: gdb.base/long_long.exp: x/2hu h
+PASS: gdb.base/long_long.exp: x/2ho h
+PASS: gdb.base/long_long.exp: x/2ht h
+PASS: gdb.base/long_long.exp: x/2ha h
+PASS: gdb.base/long_long.exp: x/2hc h
+PASS: gdb.base/long_long.exp: x/2hf h
+PASS: gdb.base/long_long.exp: x/2wx w
+PASS: gdb.base/long_long.exp: x/2wd w
+PASS: gdb.base/long_long.exp: x/2wu w
+PASS: gdb.base/long_long.exp: x/2wo w
+PASS: gdb.base/long_long.exp: x/2wt w
+PASS: gdb.base/long_long.exp: x/2wa w
+PASS: gdb.base/long_long.exp: x/2wc w
+PASS: gdb.base/long_long.exp: x/2wf w
+PASS: gdb.base/long_long.exp: x/2gx g
+PASS: gdb.base/long_long.exp: x/2gd g
+PASS: gdb.base/long_long.exp: x/2gu g
+PASS: gdb.base/long_long.exp: x/2go g
+PASS: gdb.base/long_long.exp: x/2gt g
+PASS: gdb.base/long_long.exp: x/2ga g
+PASS: gdb.base/long_long.exp: x/2gc g
+PASS: gdb.base/long_long.exp: x/2gf g
+Running ./gdb.base/macscp.exp ...
+PASS: gdb.base/macscp.exp: list main for support check
+UNSUPPORTED: gdb.base/macscp.exp: Skipping test because debug information does not include macro information.
+Running ./gdb.base/maint.exp ...
+PASS: gdb.base/maint.exp: set height 0
+PASS: gdb.base/maint.exp: maint print registers
+PASS: gdb.base/maint.exp: maint check-symtabs
+PASS: gdb.base/maint.exp: maint space
+PASS: gdb.base/maint.exp: maint space 1
+PASS: gdb.base/maint.exp: maint time
+PASS: gdb.base/maint.exp: maint time 1
+PASS: gdb.base/maint.exp: maint time 0
+PASS: gdb.base/maint.exp: maint space 0
+PASS: gdb.base/maint.exp: maint demangle
+PASS: gdb.base/maint.exp: maint demangle main
+PASS: gdb.base/maint.exp: maint print statistics
+PASS: gdb.base/maint.exp: maint print dummy-frames
+PASS: gdb.base/maint.exp: maint print objfiles: header
+PASS: gdb.base/maint.exp: maint print objfiles: psymtabs
+PASS: gdb.base/maint.exp: maint print objfiles: symtabs
+PASS: gdb.base/maint.exp: maint print psymbols w/o args
+PASS: gdb.base/maint.exp: maint print psymbols 1
+PASS: gdb.base/maint.exp: shell rm -f psymbols_output
+PASS: gdb.base/maint.exp: maint print msymbols w/o args
+PASS: gdb.base/maint.exp: maint print msymbols
+PASS: gdb.base/maint.exp: shell rm -f msymbols_output
+PASS: gdb.base/maint.exp: cd to objdir
+PASS: gdb.base/maint.exp: maint print msymbols
+PASS: gdb.base/maint.exp: shell rm -f msymbols_output2
+PASS: gdb.base/maint.exp: cd to mydir
+PASS: gdb.base/maint.exp: maint print symbols w/o args
+PASS: gdb.base/maint.exp: maint print symbols
+PASS: gdb.base/maint.exp: shell rm -f symbols_output
+PASS: gdb.base/maint.exp: maint print type
+PASS: gdb.base/maint.exp: maint info sections
+PASS: gdb.base/maint.exp: maint info sections .text
+PASS: gdb.base/maint.exp: maint info sections CODE
+PASS: gdb.base/maint.exp: maint info sections DATA
+FAIL: gdb.base/maint.exp: maint info breakpoints
+PASS: gdb.base/maint.exp: maint print w/o args
+PASS: gdb.base/maint.exp: maint info w/o args
+PASS: gdb.base/maint.exp: maint w/o args
+PASS: gdb.base/maint.exp: help maint
+PASS: gdb.base/maint.exp: help maint check-symtabs
+PASS: gdb.base/maint.exp: help maint space
+PASS: gdb.base/maint.exp: help maint time
+PASS: gdb.base/maint.exp: help maint demangle
+PASS: gdb.base/maint.exp: help maint dump-me
+PASS: gdb.base/maint.exp: help maint internal-error
+PASS: gdb.base/maint.exp: help maint internal-warning
+PASS: gdb.base/maint.exp: help maint print statistics
+PASS: gdb.base/maint.exp: help maint print dummy-frames
+PASS: gdb.base/maint.exp: help maint print objfiles
+PASS: gdb.base/maint.exp: help maint print psymbols
+PASS: gdb.base/maint.exp: help maint print msymbols
+PASS: gdb.base/maint.exp: help maint print symbols
+PASS: gdb.base/maint.exp: help maint print type
+PASS: gdb.base/maint.exp: help maint info sections
+PASS: gdb.base/maint.exp: help maint info breakpoints
+PASS: gdb.base/maint.exp: help maint info
+PASS: gdb.base/maint.exp: help maint print
+PASS: gdb.base/maint.exp: help maint
+PASS: gdb.base/maint.exp: maint dump-me
+PASS: gdb.base/maint.exp: maint internal-error
+PASS: gdb.base/maint.exp: internal-error resync
+Running ./gdb.base/memattr.exp ...
+PASS: gdb.base/memattr.exp: create mem region 1
+PASS: gdb.base/memattr.exp: create mem region 2
+PASS: gdb.base/memattr.exp: create mem region 3
+PASS: gdb.base/memattr.exp: create mem region 4
+PASS: gdb.base/memattr.exp: create mem region 5
+PASS: gdb.base/memattr.exp: info mem (1)
+PASS: gdb.base/memattr.exp: mem1 cannot be read
+PASS: gdb.base/memattr.exp: mem1 can be written
+PASS: gdb.base/memattr.exp: mem2 cannot be written
+PASS: gdb.base/memattr.exp: mem2 can be read
+PASS: gdb.base/memattr.exp: disable mem 1
+PASS: gdb.base/memattr.exp: mem 1 was disabled
+PASS: gdb.base/memattr.exp: enable mem 1
+PASS: gdb.base/memattr.exp: mem 1 was enabled
+PASS: gdb.base/memattr.exp: disable mem 2 4
+PASS: gdb.base/memattr.exp: mem 2 and 4 were disabled
+PASS: gdb.base/memattr.exp: enable mem 2-4
+PASS: gdb.base/memattr.exp: mem 2-4 were enabled
+PASS: gdb.base/memattr.exp: disable mem
+PASS: gdb.base/memattr.exp: mem 1 to 5 were disabled
+PASS: gdb.base/memattr.exp: enable mem
+PASS: gdb.base/memattr.exp: mem 1 to 5 were enabled
+PASS: gdb.base/memattr.exp: disable non-existant regions
+PASS: gdb.base/memattr.exp: delete mem 1
+PASS: gdb.base/memattr.exp: mem 1 was deleted
+PASS: gdb.base/memattr.exp: delete mem 2 4
+PASS: gdb.base/memattr.exp: mem 2 and 4 were deleted
+PASS: gdb.base/memattr.exp: delete mem 2-4
+PASS: gdb.base/memattr.exp: mem 2-4 were deleted
+PASS: gdb.base/memattr.exp: delete non-existant region
+PASS: gdb.base/memattr.exp: mem 0x30 0x60 ro
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x20 0x40: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x30 0x40: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x40 0x50: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x50 0x60: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x50 0x70: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x30 0x60: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x20 0x70: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x20 0x0: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x30 0x0: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x40 0x0: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x20 0x30: no-overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x60 0x70: no-overlap
+PASS: gdb.base/memattr.exp: 0x30 0x60: 0x80 0x0: no-overlap
+PASS: gdb.base/memattr.exp: mem 0x30 0x0 ro
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x20 0x50: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x30 0x50: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x40 0x50: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x20 0x0: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x30 0x0: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x40 0x0: overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x20 0x30: no-overlap
+PASS: gdb.base/memattr.exp: 0x30 0x0: 0x00 0x10: no-overlap
+Running ./gdb.base/mips_pro.exp ...
+PASS: gdb.base/mips_pro.exp: backtrace
+Running ./gdb.base/miscexprs.exp ...
+PASS: gdb.base/miscexprs.exp: continue to marker1
+PASS: gdb.base/miscexprs.exp: up from marker1
+PASS: gdb.base/miscexprs.exp: print value of &ibig.i[0]
+PASS: gdb.base/miscexprs.exp: print value of &cbig.c[0]
+PASS: gdb.base/miscexprs.exp: print value of &fbig.f[0]
+PASS: gdb.base/miscexprs.exp: print value of &dbig.d[0]
+PASS: gdb.base/miscexprs.exp: print value of &sbig.s[0]
+PASS: gdb.base/miscexprs.exp: print value of &lbig.l[0]
+PASS: gdb.base/miscexprs.exp: print value of ibig.i[100] | 1
+PASS: gdb.base/miscexprs.exp: print value of sbig.s[90] & 127
+PASS: gdb.base/miscexprs.exp: print value of !ibig.i[100]
+PASS: gdb.base/miscexprs.exp: print value of !sbig.s[90]
+PASS: gdb.base/miscexprs.exp: print value of !ibig.i[100]
+PASS: gdb.base/miscexprs.exp: print value of !ibig.i[100]
+PASS: gdb.base/miscexprs.exp: print value of !sbig.s[90] * 10
+PASS: gdb.base/miscexprs.exp: print value of ibig.i[100] * sbig.s[90]
+PASS: gdb.base/miscexprs.exp: print value of fbig.f[100] * dbig.d[202]
+PASS: gdb.base/miscexprs.exp: print value of !(sbig.s[90] * 2)
+PASS: gdb.base/miscexprs.exp: print value of sizeof sbig
+PASS: gdb.base/miscexprs.exp: print value of sizeof cbig
+PASS: gdb.base/miscexprs.exp: print value of sizeof lbig / sizeof long
+PASS: gdb.base/miscexprs.exp: print value of ibig.i[100] << 2
+PASS: gdb.base/miscexprs.exp: print value of sbig.s[90] >> 4
+PASS: gdb.base/miscexprs.exp: print value of lbig.l[333] >> 6
+Running ./gdb.base/morestack.exp ...
+gdb compile failed, cc1: error: '-fsplit-stack' is not supported by this compiler configuration
+UNTESTED: gdb.base/morestack.exp: morestack.exp
+Running ./gdb.base/moribund-step.exp ...
+PASS: gdb.base/moribund-step.exp: set non-stop on
+Running ./gdb.base/multi-forks.exp ...
+Running ./gdb.base/nextoverexit.exp ...
+PASS: gdb.base/nextoverexit.exp: next over exit
+Running ./gdb.base/nodebug.exp ...
+PASS: gdb.base/nodebug.exp: p top
+PASS: gdb.base/nodebug.exp: whatis top
+PASS: gdb.base/nodebug.exp: ptype top
+PASS: gdb.base/nodebug.exp: p middle
+PASS: gdb.base/nodebug.exp: whatis middle
+PASS: gdb.base/nodebug.exp: ptype middle
+PASS: gdb.base/nodebug.exp: p dataglobal
+PASS: gdb.base/nodebug.exp: whatis dataglobal
+PASS: gdb.base/nodebug.exp: ptype dataglobal
+PASS: gdb.base/nodebug.exp: p datalocal
+PASS: gdb.base/nodebug.exp: whatis datalocal
+PASS: gdb.base/nodebug.exp: ptype datalocal
+PASS: gdb.base/nodebug.exp: p bssglobal
+PASS: gdb.base/nodebug.exp: whatis bssglobal
+PASS: gdb.base/nodebug.exp: ptype bssglobal
+PASS: gdb.base/nodebug.exp: p bsslocal
+PASS: gdb.base/nodebug.exp: whatis bsslocal
+PASS: gdb.base/nodebug.exp: ptype bsslocal
+PASS: gdb.base/nodebug.exp: backtrace from inner in nodebug.exp
+FAIL: gdb.base/nodebug.exp: p/c array_index("abcdef",2)
+PASS: gdb.base/nodebug.exp: backtrace from middle in nodebug.exp
+Running ./gdb.base/nofield.exp ...
+PASS: gdb.base/nofield.exp: ptype struct not_empty
+PASS: gdb.base/nofield.exp: ptype struct empty
+PASS: gdb.base/nofield.exp: ptype union empty_union
+Running ./gdb.base/nostdlib.exp ...
+UNTESTED: gdb.base/nostdlib.exp: nostdlib.exp
+Running ./gdb.base/opaque.exp ...
+PASS: gdb.base/opaque.exp: whatis on opaque struct pointer (statically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct pointer (statically)
+PASS: gdb.base/opaque.exp: whatis on opaque struct instance (statically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct instance (statically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct tagname (statically)
+PASS: gdb.base/opaque.exp: whatis on opaque struct pointer (dynamically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct pointer (dynamically) 1
+PASS: gdb.base/opaque.exp: whatis on opaque struct instance (dynamically) 1
+PASS: gdb.base/opaque.exp: ptype on opaque struct instance (dynamically) 1
+PASS: gdb.base/opaque.exp: ptype on opaque struct tagname (dynamically) 1
+PASS: gdb.base/opaque.exp: whatis on opaque struct pointer (dynamically) 1
+PASS: gdb.base/opaque.exp: ptype on opaque struct pointer (dynamically) 2
+PASS: gdb.base/opaque.exp: whatis on opaque struct instance (dynamically) 2
+PASS: gdb.base/opaque.exp: ptype on opaque struct instance (dynamically) 2
+PASS: gdb.base/opaque.exp: ptype on opaque struct tagname (dynamically) 2
+Running ./gdb.base/overlays.exp ...
+Running ./gdb.base/page.exp ...
+PASS: gdb.base/page.exp: set pagination off
+PASS: gdb.base/page.exp: pagination is off
+PASS: gdb.base/page.exp: unpaged help
+PASS: gdb.base/page.exp: set pagination on
+PASS: gdb.base/page.exp: pagination is on
+PASS: gdb.base/page.exp: set height 10
+PASS: gdb.base/page.exp: paged help
+PASS: gdb.base/page.exp: q
+Running ./gdb.base/pc-fp.exp ...
+PASS: gdb.base/pc-fp.exp: get hexadecimal valueof "$pc"
+PASS: gdb.base/pc-fp.exp: get hexadecimal valueof "$fp"
+PASS: gdb.base/pc-fp.exp: display/i $pc
+PASS: gdb.base/pc-fp.exp: display/w $fp
+PASS: gdb.base/pc-fp.exp: info register $pc
+PASS: gdb.base/pc-fp.exp: info register $fp
+PASS: gdb.base/pc-fp.exp: info register pc fp
+Running ./gdb.base/pending.exp ...
+PASS: gdb.base/pending.exp: set pending breakpoint (without symbols)
+PASS: gdb.base/pending.exp: complete condition
+PASS: gdb.base/pending.exp: single pending breakpoint info (without symbols)
+FAIL: gdb.base/pending.exp: run to resolved breakpoint 1 (without symbols) (the program exited)
+PASS: gdb.base/pending.exp: set pending breakpoint
+PASS: gdb.base/pending.exp: single pending breakpoint info
+PASS: gdb.base/pending.exp: breakpoint function
+PASS: gdb.base/pending.exp: pending plus real breakpoint info
+PASS: gdb.base/pending.exp: Don't set pending breakpoint
+PASS: gdb.base/pending.exp: condition 1 k == 1
+PASS: gdb.base/pending.exp: pending plus condition
+PASS: gdb.base/pending.exp: disable 1
+PASS: gdb.base/pending.exp: pending disabled
+PASS: gdb.base/pending.exp: Set commands for pending breakpoint
+PASS: gdb.base/pending.exp: pending disabled plus commands
+PASS: gdb.base/pending.exp: Set pending breakpoint 2
+PASS: gdb.base/pending.exp: multiple pending breakpoints
+PASS: gdb.base/pending.exp: Set pending breakpoint 3
+PASS: gdb.base/pending.exp: set ignore count on pending breakpoint 3
+PASS: gdb.base/pending.exp: multiple pending breakpoints 2
+PASS: gdb.base/pending.exp: running to main
+PASS: gdb.base/pending.exp: re-enabling pending breakpoint that can resolve instantly
+FAIL: gdb.base/pending.exp: continue to resolved breakpoint 2 (the program exited)
+FAIL: gdb.base/pending.exp: continue to resolved breakpoint 1 (the program is no longer running)
+PASS: gdb.base/pending.exp: Disable other breakpoints
+PASS: gdb.base/pending.exp: Disable other breakpoints
+FAIL: gdb.base/pending.exp: continue to resolved breakpoint 3 (the program is no longer running)
+PASS: gdb.base/pending.exp: set imaginary pending breakpoint
+PASS: gdb.base/pending.exp: rerun to main
+PASS: gdb.base/pending.exp: verify pending breakpoint after restart
+Running ./gdb.base/permissions.exp ...
+PASS: gdb.base/permissions.exp: show may-write-registers
+PASS: gdb.base/permissions.exp: show may-write-memory
+PASS: gdb.base/permissions.exp: show may-insert-breakpoints
+PASS: gdb.base/permissions.exp: show may-insert-tracepoints
+PASS: gdb.base/permissions.exp: show may-insert-fast-tracepoints
+PASS: gdb.base/permissions.exp: show may-interrupt
+PASS: gdb.base/permissions.exp: enable observer mode
+PASS: gdb.base/permissions.exp: show may-write-memory
+PASS: gdb.base/permissions.exp: show may-write-registers
+PASS: gdb.base/permissions.exp: show may-insert-breakpoints
+PASS: gdb.base/permissions.exp: show may-insert-tracepoints
+PASS: gdb.base/permissions.exp: show may-insert-fast-tracepoints
+PASS: gdb.base/permissions.exp: show may-interrupt
+PASS: gdb.base/permissions.exp: disable observer mode
+PASS: gdb.base/permissions.exp: set non-stop off
+PASS: gdb.base/permissions.exp: set a global
+PASS: gdb.base/permissions.exp: print x
+PASS: gdb.base/permissions.exp: set may-write-memory off
+PASS: gdb.base/permissions.exp: try to set a global
+PASS: gdb.base/permissions.exp: print x
+Running ./gdb.base/pie-execl.exp ...
+Running ./gdb.base/pointers.exp ...
+FAIL: gdb.base/pointers.exp: continuing after dummy()
+PASS: gdb.base/pointers.exp: set pointer to beginning of array
+PASS: gdb.base/pointers.exp: set pointer to end of array
+FAIL: gdb.base/pointers.exp: print object pointed to
+FAIL: gdb.base/pointers.exp: print object pointed to #2
+PASS: gdb.base/pointers.exp: pointer1==pointer2
+PASS: gdb.base/pointers.exp: pointer1!=pointer2
+PASS: gdb.base/pointers.exp: pointer1<=pointer2
+PASS: gdb.base/pointers.exp: pointer1>=pointer2
+PASS: gdb.base/pointers.exp: pointer1pointer2
+PASS: gdb.base/pointers.exp: set y = *v_int_pointer++
+FAIL: gdb.base/pointers.exp: pointer assignment
+FAIL: gdb.base/pointers.exp: and post-increment
+PASS: gdb.base/pointers.exp: set y = *--v_int_pointer2
+FAIL: gdb.base/pointers.exp: pointer assignment
+FAIL: gdb.base/pointers.exp: and pre-decrement
+PASS: gdb.base/pointers.exp: set y =v_int_pointer-v_int_pointer2
+PASS: gdb.base/pointers.exp: pointer1-pointer2
+PASS: gdb.base/pointers.exp: set v_int_pointer=v_int_array
+FAIL: gdb.base/pointers.exp: print array element through pointer
+FAIL: gdb.base/pointers.exp: print array element through pointer #2
+PASS: gdb.base/pointers.exp: print array element through pointer #3
+PASS: gdb.base/pointers.exp: print array element through pointer #4
+PASS: gdb.base/pointers.exp: print array element through pointer #5
+PASS: gdb.base/pointers.exp: increment rptr
+PASS: gdb.base/pointers.exp: print array element through pointer #6
+PASS: gdb.base/pointers.exp: print array element through pointer #7
+PASS: gdb.base/pointers.exp: print array element through pointer #8
+PASS: gdb.base/pointers.exp: print array element w/ pointer arithmetic
+FAIL: gdb.base/pointers.exp: print through ptr to ptr
+PASS: gdb.base/pointers.exp: continue
+PASS: gdb.base/pointers.exp: up from marker1
+PASS: gdb.base/pointers.exp: print value of *pUC
+PASS: gdb.base/pointers.exp: ptype pUC
+PASS: gdb.base/pointers.exp: print value of *pS
+PASS: gdb.base/pointers.exp: ptype pS
+PASS: gdb.base/pointers.exp: print value of *pUS
+PASS: gdb.base/pointers.exp: ptype pUS
+PASS: gdb.base/pointers.exp: print value of *pI
+PASS: gdb.base/pointers.exp: ptype pI
+PASS: gdb.base/pointers.exp: print value of *pUI
+PASS: gdb.base/pointers.exp: ptype pUI
+PASS: gdb.base/pointers.exp: print value of *pL
+PASS: gdb.base/pointers.exp: ptype pL
+PASS: gdb.base/pointers.exp: print value of *pUL
+PASS: gdb.base/pointers.exp: ptype pUL
+PASS: gdb.base/pointers.exp: print value of *pF
+PASS: gdb.base/pointers.exp: ptype pF
+PASS: gdb.base/pointers.exp: print value of *pD
+PASS: gdb.base/pointers.exp: ptype pD
+PASS: gdb.base/pointers.exp: print value of ******ppppppC
+PASS: gdb.base/pointers.exp: ptype pC
+PASS: gdb.base/pointers.exp: ptype ppC
+PASS: gdb.base/pointers.exp: ptype pppC
+PASS: gdb.base/pointers.exp: ptype ppppC
+PASS: gdb.base/pointers.exp: ptype pppppC
+PASS: gdb.base/pointers.exp: ptype ppppppC
+PASS: gdb.base/pointers.exp: p instance.array_variable + 0
+Running ./gdb.base/pr10179.exp ...
+PASS: gdb.base/pr10179.exp: rbreak foo.*
+PASS: gdb.base/pr10179.exp: rbreak pr10179-a.c:foo.*
+PASS: gdb.base/pr10179.exp: rbreak pr10179-a.c : .*
+Running ./gdb.base/pr11022.exp ...
+Running ./gdb.base/prelink.exp ...
+Running ./gdb.base/printcmds.exp ...
+PASS: gdb.base/printcmds.exp: print $pc
+PASS: gdb.base/printcmds.exp: print "abc"
+PASS: gdb.base/printcmds.exp: print sizeof ("abc")
+PASS: gdb.base/printcmds.exp: ptype "abc"
+PASS: gdb.base/printcmds.exp: print $cvar = "abc"
+PASS: gdb.base/printcmds.exp: print sizeof ($cvar)
+PASS: gdb.base/printcmds.exp: print $pc (with file)
+PASS: gdb.base/printcmds.exp: set print sevenbit-strings
+PASS: gdb.base/printcmds.exp: set print address off
+PASS: gdb.base/printcmds.exp: set width 0
+PASS: gdb.base/printcmds.exp: p ctable1[120] #1
+PASS: gdb.base/printcmds.exp: p 123
+PASS: gdb.base/printcmds.exp: p -123
+PASS: gdb.base/printcmds.exp: p/d 123
+PASS: gdb.base/printcmds.exp: p 0123
+PASS: gdb.base/printcmds.exp: p 00123
+PASS: gdb.base/printcmds.exp: p -0123
+PASS: gdb.base/printcmds.exp: p/o 0123
+PASS: gdb.base/printcmds.exp: p 0x123
+PASS: gdb.base/printcmds.exp: p -0x123
+PASS: gdb.base/printcmds.exp: p 0x0123
+PASS: gdb.base/printcmds.exp: p -0x0123
+PASS: gdb.base/printcmds.exp: p 0xABCDEF
+PASS: gdb.base/printcmds.exp: p 0xabcdef
+PASS: gdb.base/printcmds.exp: p 0xAbCdEf
+PASS: gdb.base/printcmds.exp: p/x 0x123
+PASS: gdb.base/printcmds.exp: p 0b0
+PASS: gdb.base/printcmds.exp: p 0b1111
+PASS: gdb.base/printcmds.exp: p 0B1111
+PASS: gdb.base/printcmds.exp: p -0b1111
+PASS: gdb.base/printcmds.exp: reject p 0x
+PASS: gdb.base/printcmds.exp: reject p 0b
+PASS: gdb.base/printcmds.exp: p ''
+PASS: gdb.base/printcmds.exp: p '''
+PASS: gdb.base/printcmds.exp: reject p '\'
+PASS: gdb.base/printcmds.exp: reject p '\\\'
+PASS: gdb.base/printcmds.exp: reject p DEADBEEF
+PASS: gdb.base/printcmds.exp: reject p 09
+PASS: gdb.base/printcmds.exp: reject p 079
+PASS: gdb.base/printcmds.exp: reject p 0xG
+PASS: gdb.base/printcmds.exp: reject p 0xAG
+PASS: gdb.base/printcmds.exp: reject p 0b2
+PASS: gdb.base/printcmds.exp: reject p 0b12
+PASS: gdb.base/printcmds.exp: check for floating addition
+PASS: gdb.base/printcmds.exp: p 1.
+PASS: gdb.base/printcmds.exp: p 1.5
+PASS: gdb.base/printcmds.exp: p 1.f
+PASS: gdb.base/printcmds.exp: p 1.5f
+PASS: gdb.base/printcmds.exp: p 1.l
+PASS: gdb.base/printcmds.exp: p 1.5l
+PASS: gdb.base/printcmds.exp: p 0x1.1
+PASS: gdb.base/printcmds.exp: reject p 123DEADBEEF
+PASS: gdb.base/printcmds.exp: reject p 123foobar.bazfoo3
+PASS: gdb.base/printcmds.exp: reject p 123EEEEEEEEEEEEEEEEE33333k333
+PASS: gdb.base/printcmds.exp: reject p 1.1x
+PASS: gdb.base/printcmds.exp: reject p 1.1ff
+PASS: gdb.base/printcmds.exp: reject p 1.1ll
+PASS: gdb.base/printcmds.exp: p 'a'
+PASS: gdb.base/printcmds.exp: p/c 'a'
+PASS: gdb.base/printcmds.exp: p/x 'a'
+PASS: gdb.base/printcmds.exp: p/d 'a'
+PASS: gdb.base/printcmds.exp: p/t 'a'
+PASS: gdb.base/printcmds.exp: p '\141'
+PASS: gdb.base/printcmds.exp: p/x '\377'
+PASS: gdb.base/printcmds.exp: p '\''
+PASS: gdb.base/printcmds.exp: p '\\'
+PASS: gdb.base/printcmds.exp: p ctable1[0]
+PASS: gdb.base/printcmds.exp: p ctable1[1]
+PASS: gdb.base/printcmds.exp: p ctable1[2]
+PASS: gdb.base/printcmds.exp: p ctable1[3]
+PASS: gdb.base/printcmds.exp: p ctable1[4]
+PASS: gdb.base/printcmds.exp: p ctable1[5]
+PASS: gdb.base/printcmds.exp: p ctable1[6]
+PASS: gdb.base/printcmds.exp: p ctable1[7]
+PASS: gdb.base/printcmds.exp: p ctable1[8]
+PASS: gdb.base/printcmds.exp: p ctable1[9]
+PASS: gdb.base/printcmds.exp: p ctable1[10]
+PASS: gdb.base/printcmds.exp: p ctable1[11]
+PASS: gdb.base/printcmds.exp: p ctable1[12]
+PASS: gdb.base/printcmds.exp: p ctable1[13]
+PASS: gdb.base/printcmds.exp: p ctable1[14]
+PASS: gdb.base/printcmds.exp: p ctable1[15]
+PASS: gdb.base/printcmds.exp: p ctable1[16]
+PASS: gdb.base/printcmds.exp: p ctable1[17]
+PASS: gdb.base/printcmds.exp: p ctable1[18]
+PASS: gdb.base/printcmds.exp: p ctable1[19]
+PASS: gdb.base/printcmds.exp: p ctable1[20]
+PASS: gdb.base/printcmds.exp: p ctable1[21]
+PASS: gdb.base/printcmds.exp: p ctable1[22]
+PASS: gdb.base/printcmds.exp: p ctable1[23]
+PASS: gdb.base/printcmds.exp: p ctable1[24]
+PASS: gdb.base/printcmds.exp: p ctable1[25]
+PASS: gdb.base/printcmds.exp: p ctable1[26]
+PASS: gdb.base/printcmds.exp: p ctable1[27]
+PASS: gdb.base/printcmds.exp: p ctable1[28]
+PASS: gdb.base/printcmds.exp: p ctable1[29]
+PASS: gdb.base/printcmds.exp: p ctable1[30]
+PASS: gdb.base/printcmds.exp: p ctable1[31]
+PASS: gdb.base/printcmds.exp: p ctable1[32]
+PASS: gdb.base/printcmds.exp: p ctable1[33]
+PASS: gdb.base/printcmds.exp: p ctable1[34]
+PASS: gdb.base/printcmds.exp: p ctable1[35]
+PASS: gdb.base/printcmds.exp: p ctable1[36]
+PASS: gdb.base/printcmds.exp: p ctable1[37]
+PASS: gdb.base/printcmds.exp: p ctable1[38]
+PASS: gdb.base/printcmds.exp: p ctable1[39]
+PASS: gdb.base/printcmds.exp: p ctable1[40]
+PASS: gdb.base/printcmds.exp: p ctable1[41]
+PASS: gdb.base/printcmds.exp: p ctable1[42]
+PASS: gdb.base/printcmds.exp: p ctable1[43]
+PASS: gdb.base/printcmds.exp: p ctable1[44]
+PASS: gdb.base/printcmds.exp: p ctable1[45]
+PASS: gdb.base/printcmds.exp: p ctable1[46]
+PASS: gdb.base/printcmds.exp: p ctable1[47]
+PASS: gdb.base/printcmds.exp: p ctable1[48]
+PASS: gdb.base/printcmds.exp: p ctable1[49]
+PASS: gdb.base/printcmds.exp: p ctable1[50]
+PASS: gdb.base/printcmds.exp: p ctable1[51]
+PASS: gdb.base/printcmds.exp: p ctable1[52]
+PASS: gdb.base/printcmds.exp: p ctable1[53]
+PASS: gdb.base/printcmds.exp: p ctable1[54]
+PASS: gdb.base/printcmds.exp: p ctable1[55]
+PASS: gdb.base/printcmds.exp: p ctable1[56]
+PASS: gdb.base/printcmds.exp: p ctable1[57]
+PASS: gdb.base/printcmds.exp: p ctable1[58]
+PASS: gdb.base/printcmds.exp: p ctable1[59]
+PASS: gdb.base/printcmds.exp: p ctable1[60]
+PASS: gdb.base/printcmds.exp: p ctable1[61]
+PASS: gdb.base/printcmds.exp: p ctable1[62]
+PASS: gdb.base/printcmds.exp: p ctable1[63]
+PASS: gdb.base/printcmds.exp: p ctable1[64]
+PASS: gdb.base/printcmds.exp: p ctable1[65]
+PASS: gdb.base/printcmds.exp: p ctable1[66]
+PASS: gdb.base/printcmds.exp: p ctable1[67]
+PASS: gdb.base/printcmds.exp: p ctable1[68]
+PASS: gdb.base/printcmds.exp: p ctable1[69]
+PASS: gdb.base/printcmds.exp: p ctable1[70]
+PASS: gdb.base/printcmds.exp: p ctable1[71]
+PASS: gdb.base/printcmds.exp: p ctable1[72]
+PASS: gdb.base/printcmds.exp: p ctable1[73]
+PASS: gdb.base/printcmds.exp: p ctable1[74]
+PASS: gdb.base/printcmds.exp: p ctable1[75]
+PASS: gdb.base/printcmds.exp: p ctable1[76]
+PASS: gdb.base/printcmds.exp: p ctable1[77]
+PASS: gdb.base/printcmds.exp: p ctable1[78]
+PASS: gdb.base/printcmds.exp: p ctable1[79]
+PASS: gdb.base/printcmds.exp: p ctable1[80]
+PASS: gdb.base/printcmds.exp: p ctable1[81]
+PASS: gdb.base/printcmds.exp: p ctable1[82]
+PASS: gdb.base/printcmds.exp: p ctable1[83]
+PASS: gdb.base/printcmds.exp: p ctable1[84]
+PASS: gdb.base/printcmds.exp: p ctable1[85]
+PASS: gdb.base/printcmds.exp: p ctable1[86]
+PASS: gdb.base/printcmds.exp: p ctable1[87]
+PASS: gdb.base/printcmds.exp: p ctable1[88]
+PASS: gdb.base/printcmds.exp: p ctable1[89]
+PASS: gdb.base/printcmds.exp: p ctable1[90]
+PASS: gdb.base/printcmds.exp: p ctable1[91]
+PASS: gdb.base/printcmds.exp: p ctable1[92]
+PASS: gdb.base/printcmds.exp: p ctable1[93]
+PASS: gdb.base/printcmds.exp: p ctable1[94]
+PASS: gdb.base/printcmds.exp: p ctable1[95]
+PASS: gdb.base/printcmds.exp: p ctable1[96]
+PASS: gdb.base/printcmds.exp: p ctable1[97]
+PASS: gdb.base/printcmds.exp: p ctable1[98]
+PASS: gdb.base/printcmds.exp: p ctable1[99]
+PASS: gdb.base/printcmds.exp: p ctable1[100]
+PASS: gdb.base/printcmds.exp: p ctable1[101]
+PASS: gdb.base/printcmds.exp: p ctable1[102]
+PASS: gdb.base/printcmds.exp: p ctable1[103]
+PASS: gdb.base/printcmds.exp: p ctable1[104]
+PASS: gdb.base/printcmds.exp: p ctable1[105]
+PASS: gdb.base/printcmds.exp: p ctable1[106]
+PASS: gdb.base/printcmds.exp: p ctable1[107]
+PASS: gdb.base/printcmds.exp: p ctable1[108]
+PASS: gdb.base/printcmds.exp: p ctable1[109]
+PASS: gdb.base/printcmds.exp: p ctable1[110]
+PASS: gdb.base/printcmds.exp: p ctable1[111]
+PASS: gdb.base/printcmds.exp: p ctable1[112]
+PASS: gdb.base/printcmds.exp: p ctable1[113]
+PASS: gdb.base/printcmds.exp: p ctable1[114]
+PASS: gdb.base/printcmds.exp: p ctable1[115]
+PASS: gdb.base/printcmds.exp: p ctable1[116]
+PASS: gdb.base/printcmds.exp: p ctable1[117]
+PASS: gdb.base/printcmds.exp: p ctable1[118]
+PASS: gdb.base/printcmds.exp: p ctable1[119]
+PASS: gdb.base/printcmds.exp: p ctable1[120]
+PASS: gdb.base/printcmds.exp: p ctable1[121]
+PASS: gdb.base/printcmds.exp: p ctable1[122]
+PASS: gdb.base/printcmds.exp: p ctable1[123]
+PASS: gdb.base/printcmds.exp: p ctable1[124]
+PASS: gdb.base/printcmds.exp: p ctable1[125]
+PASS: gdb.base/printcmds.exp: p ctable1[126]
+PASS: gdb.base/printcmds.exp: p ctable1[127]
+PASS: gdb.base/printcmds.exp: p ctable1[128]
+PASS: gdb.base/printcmds.exp: p ctable1[129]
+PASS: gdb.base/printcmds.exp: p ctable1[130]
+PASS: gdb.base/printcmds.exp: p ctable1[131]
+PASS: gdb.base/printcmds.exp: p ctable1[132]
+PASS: gdb.base/printcmds.exp: p ctable1[133]
+PASS: gdb.base/printcmds.exp: p ctable1[134]
+PASS: gdb.base/printcmds.exp: p ctable1[135]
+PASS: gdb.base/printcmds.exp: p ctable1[136]
+PASS: gdb.base/printcmds.exp: p ctable1[137]
+PASS: gdb.base/printcmds.exp: p ctable1[138]
+PASS: gdb.base/printcmds.exp: p ctable1[139]
+PASS: gdb.base/printcmds.exp: p ctable1[140]
+PASS: gdb.base/printcmds.exp: p ctable1[141]
+PASS: gdb.base/printcmds.exp: p ctable1[142]
+PASS: gdb.base/printcmds.exp: p ctable1[143]
+PASS: gdb.base/printcmds.exp: p ctable1[144]
+PASS: gdb.base/printcmds.exp: p ctable1[145]
+PASS: gdb.base/printcmds.exp: p ctable1[146]
+PASS: gdb.base/printcmds.exp: p ctable1[147]
+PASS: gdb.base/printcmds.exp: p ctable1[148]
+PASS: gdb.base/printcmds.exp: p ctable1[149]
+PASS: gdb.base/printcmds.exp: p ctable1[150]
+PASS: gdb.base/printcmds.exp: p ctable1[151]
+PASS: gdb.base/printcmds.exp: p ctable1[152]
+PASS: gdb.base/printcmds.exp: p ctable1[153]
+PASS: gdb.base/printcmds.exp: p ctable1[154]
+PASS: gdb.base/printcmds.exp: p ctable1[155]
+PASS: gdb.base/printcmds.exp: p ctable1[156]
+PASS: gdb.base/printcmds.exp: p ctable1[157]
+PASS: gdb.base/printcmds.exp: p ctable1[158]
+PASS: gdb.base/printcmds.exp: p ctable1[159]
+PASS: gdb.base/printcmds.exp: p ctable1[160]
+PASS: gdb.base/printcmds.exp: p ctable1[161]
+PASS: gdb.base/printcmds.exp: p ctable1[162]
+PASS: gdb.base/printcmds.exp: p ctable1[163]
+PASS: gdb.base/printcmds.exp: p ctable1[164]
+PASS: gdb.base/printcmds.exp: p ctable1[165]
+PASS: gdb.base/printcmds.exp: p ctable1[166]
+PASS: gdb.base/printcmds.exp: p ctable1[167]
+PASS: gdb.base/printcmds.exp: p ctable1[168]
+PASS: gdb.base/printcmds.exp: p ctable1[169]
+PASS: gdb.base/printcmds.exp: p ctable1[170]
+PASS: gdb.base/printcmds.exp: p ctable1[171]
+PASS: gdb.base/printcmds.exp: p ctable1[172]
+PASS: gdb.base/printcmds.exp: p ctable1[173]
+PASS: gdb.base/printcmds.exp: p ctable1[174]
+PASS: gdb.base/printcmds.exp: p ctable1[175]
+PASS: gdb.base/printcmds.exp: p ctable1[176]
+PASS: gdb.base/printcmds.exp: p ctable1[177]
+PASS: gdb.base/printcmds.exp: p ctable1[178]
+PASS: gdb.base/printcmds.exp: p ctable1[179]
+PASS: gdb.base/printcmds.exp: p ctable1[180]
+PASS: gdb.base/printcmds.exp: p ctable1[181]
+PASS: gdb.base/printcmds.exp: p ctable1[182]
+PASS: gdb.base/printcmds.exp: p ctable1[183]
+PASS: gdb.base/printcmds.exp: p ctable1[184]
+PASS: gdb.base/printcmds.exp: p ctable1[185]
+PASS: gdb.base/printcmds.exp: p ctable1[186]
+PASS: gdb.base/printcmds.exp: p ctable1[187]
+PASS: gdb.base/printcmds.exp: p ctable1[188]
+PASS: gdb.base/printcmds.exp: p ctable1[189]
+PASS: gdb.base/printcmds.exp: p ctable1[190]
+PASS: gdb.base/printcmds.exp: p ctable1[191]
+PASS: gdb.base/printcmds.exp: p ctable1[192]
+PASS: gdb.base/printcmds.exp: p ctable1[193]
+PASS: gdb.base/printcmds.exp: p ctable1[194]
+PASS: gdb.base/printcmds.exp: p ctable1[195]
+PASS: gdb.base/printcmds.exp: p ctable1[196]
+PASS: gdb.base/printcmds.exp: p ctable1[197]
+PASS: gdb.base/printcmds.exp: p ctable1[198]
+PASS: gdb.base/printcmds.exp: p ctable1[199]
+PASS: gdb.base/printcmds.exp: p ctable1[200]
+PASS: gdb.base/printcmds.exp: p ctable1[201]
+PASS: gdb.base/printcmds.exp: p ctable1[202]
+PASS: gdb.base/printcmds.exp: p ctable1[203]
+PASS: gdb.base/printcmds.exp: p ctable1[204]
+PASS: gdb.base/printcmds.exp: p ctable1[205]
+PASS: gdb.base/printcmds.exp: p ctable1[206]
+PASS: gdb.base/printcmds.exp: p ctable1[207]
+PASS: gdb.base/printcmds.exp: p ctable1[208]
+PASS: gdb.base/printcmds.exp: p ctable1[209]
+PASS: gdb.base/printcmds.exp: p ctable1[210]
+PASS: gdb.base/printcmds.exp: p ctable1[211]
+PASS: gdb.base/printcmds.exp: p ctable1[212]
+PASS: gdb.base/printcmds.exp: p ctable1[213]
+PASS: gdb.base/printcmds.exp: p ctable1[214]
+PASS: gdb.base/printcmds.exp: p ctable1[215]
+PASS: gdb.base/printcmds.exp: p ctable1[216]
+PASS: gdb.base/printcmds.exp: p ctable1[217]
+PASS: gdb.base/printcmds.exp: p ctable1[218]
+PASS: gdb.base/printcmds.exp: p ctable1[219]
+PASS: gdb.base/printcmds.exp: p ctable1[220]
+PASS: gdb.base/printcmds.exp: p ctable1[221]
+PASS: gdb.base/printcmds.exp: p ctable1[222]
+PASS: gdb.base/printcmds.exp: p ctable1[223]
+PASS: gdb.base/printcmds.exp: p ctable1[224]
+PASS: gdb.base/printcmds.exp: p ctable1[225]
+PASS: gdb.base/printcmds.exp: p ctable1[226]
+PASS: gdb.base/printcmds.exp: p ctable1[227]
+PASS: gdb.base/printcmds.exp: p ctable1[228]
+PASS: gdb.base/printcmds.exp: p ctable1[229]
+PASS: gdb.base/printcmds.exp: p ctable1[230]
+PASS: gdb.base/printcmds.exp: p ctable1[231]
+PASS: gdb.base/printcmds.exp: p ctable1[232]
+PASS: gdb.base/printcmds.exp: p ctable1[233]
+PASS: gdb.base/printcmds.exp: p ctable1[234]
+PASS: gdb.base/printcmds.exp: p ctable1[235]
+PASS: gdb.base/printcmds.exp: p ctable1[236]
+PASS: gdb.base/printcmds.exp: p ctable1[237]
+PASS: gdb.base/printcmds.exp: p ctable1[238]
+PASS: gdb.base/printcmds.exp: p ctable1[239]
+PASS: gdb.base/printcmds.exp: p ctable1[240]
+PASS: gdb.base/printcmds.exp: p ctable1[241]
+PASS: gdb.base/printcmds.exp: p ctable1[242]
+PASS: gdb.base/printcmds.exp: p ctable1[243]
+PASS: gdb.base/printcmds.exp: p ctable1[244]
+PASS: gdb.base/printcmds.exp: p ctable1[245]
+PASS: gdb.base/printcmds.exp: p ctable1[246]
+PASS: gdb.base/printcmds.exp: p ctable1[247]
+PASS: gdb.base/printcmds.exp: p ctable1[248]
+PASS: gdb.base/printcmds.exp: p ctable1[249]
+PASS: gdb.base/printcmds.exp: p ctable1[250]
+PASS: gdb.base/printcmds.exp: p ctable1[251]
+PASS: gdb.base/printcmds.exp: p ctable1[252]
+PASS: gdb.base/printcmds.exp: p ctable1[253]
+PASS: gdb.base/printcmds.exp: p ctable1[254]
+PASS: gdb.base/printcmds.exp: p ctable1[255]
+PASS: gdb.base/printcmds.exp: set print elements 1
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: set print elements 2
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: set print elements 3
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: set print elements 4
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: set print elements 5
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: set print elements 6
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: set print elements 7
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: set print elements 8
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: set print elements 9
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: set print elements 10
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: set print elements 11
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: set print elements 12
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: set print elements 13
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: set print elements 14
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: set print elements 15
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: set print elements 16
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: correct element repeats in array embedded at offset > 0
+PASS: gdb.base/printcmds.exp: set print elements 0
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 0
+PASS: gdb.base/printcmds.exp: set print elements 1
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 1
+PASS: gdb.base/printcmds.exp: set print elements 5
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 5
+PASS: gdb.base/printcmds.exp: set print elements 19
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 19
+PASS: gdb.base/printcmds.exp: set print elements 20
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 20
+PASS: gdb.base/printcmds.exp: set print elements 8
+PASS: gdb.base/printcmds.exp: p &ctable1[0]
+PASS: gdb.base/printcmds.exp: p &ctable1[1]
+PASS: gdb.base/printcmds.exp: p &ctable1[1*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[2*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[3*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[4*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[5*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[6*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[7*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[8*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[9*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[10*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[11*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[12*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[13*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[14*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[15*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[16*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[17*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[18*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[19*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[20*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[21*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[22*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[23*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[24*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[25*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[26*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[27*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[28*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[29*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[30*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[31*8]
+PASS: gdb.base/printcmds.exp: set print elements 24
+PASS: gdb.base/printcmds.exp: set print elements 24
+PASS: gdb.base/printcmds.exp: p a1[0]
+PASS: gdb.base/printcmds.exp: p a1[9]
+PASS: gdb.base/printcmds.exp: p a2
+PASS: gdb.base/printcmds.exp: p a2[0]
+PASS: gdb.base/printcmds.exp: p a2[3]
+PASS: gdb.base/printcmds.exp: set print null-stop on
+PASS: gdb.base/printcmds.exp: print a2 with null-stop on
+PASS: gdb.base/printcmds.exp: set print null-stop off
+PASS: gdb.base/printcmds.exp: p int1dim[0]@2
+PASS: gdb.base/printcmds.exp: p int1dim[0]@2@3
+PASS: gdb.base/printcmds.exp: set print elements 24
+PASS: gdb.base/printcmds.exp: set print address on
+PASS: gdb.base/printcmds.exp: p arrays
+PASS: gdb.base/printcmds.exp: p parrays
+PASS: gdb.base/printcmds.exp: p parrays->array1
+PASS: gdb.base/printcmds.exp: p &parrays->array1
+PASS: gdb.base/printcmds.exp: p parrays->array2
+PASS: gdb.base/printcmds.exp: p &parrays->array2
+PASS: gdb.base/printcmds.exp: p parrays->array3
+PASS: gdb.base/printcmds.exp: p &parrays->array3
+PASS: gdb.base/printcmds.exp: p parrays->array4
+PASS: gdb.base/printcmds.exp: p &parrays->array4
+PASS: gdb.base/printcmds.exp: p parrays->array5
+PASS: gdb.base/printcmds.exp: p &parrays->array5
+PASS: gdb.base/printcmds.exp: set print address off
+PASS: gdb.base/printcmds.exp: set print elements 50
+PASS: gdb.base/printcmds.exp: p "a string"
+PASS: gdb.base/printcmds.exp: p "embedded \000 null"
+PASS: gdb.base/printcmds.exp: p "abcd"[2]
+PASS: gdb.base/printcmds.exp: p sizeof ("abcdef")
+PASS: gdb.base/printcmds.exp: ptype "foo"
+FAIL: gdb.base/printcmds.exp: p *"foo" (the program exited)
+PASS: gdb.base/printcmds.exp: ptype *"foo"
+FAIL: gdb.base/printcmds.exp: p &*"foo"
+FAIL: gdb.base/printcmds.exp: ptype &*"foo"
+FAIL: gdb.base/printcmds.exp: p (char *)"foo"
+PASS: gdb.base/printcmds.exp: print {'a','b','c'}
+PASS: gdb.base/printcmds.exp: print {4,5,6}[2]
+PASS: gdb.base/printcmds.exp: print *&{4,5,6}[1]
+PASS: gdb.base/printcmds.exp: print some_volatile_enum
+PASS: gdb.base/printcmds.exp: print three
+PASS: gdb.base/printcmds.exp: printf "x=%d,y=%d,z=%d\n", 5, 6, 7
+FAIL: gdb.base/printcmds.exp: printf "string=%.4sxx\n", teststring
+FAIL: gdb.base/printcmds.exp: printf "string=%sxx\n", teststring
+PASS: gdb.base/printcmds.exp: printf "%f is fun\n", 1.0
+PASS: gdb.base/printcmds.exp: printf "x=%d,y=%f,z=%d\n", 5, 6.0, 7
+PASS: gdb.base/printcmds.exp: printf "%x %f, %c %x, %x, %f\n", 0xbad, -99.541, 'z', 0xfeedface, 0xdeadbeef, 5.0
+PASS: gdb.base/printcmds.exp: printf "%c\n", "x"[1,0]
+PASS: gdb.base/printcmds.exp: printf "%%%d%%\n", 5
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",-1.2df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.234567df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",-1.234567df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1234567.df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",-1234567.df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E1df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E10df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E-10df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E96df
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",-1.2dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.234567890123456dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",-1.234567890123456dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1234567890123456.dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",-1234567890123456.dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E1dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E10dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E-10dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E384dd
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",-1.2dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.234567890123456789012345678901234dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",-1.234567890123456789012345678901234dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1234567890123456789012345678901234.dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",-1234567890123456789012345678901234.dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E1dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E10dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E-10dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E6144dl
+PASS: gdb.base/printcmds.exp: printf "%Hf %Hf\n",1.2df,1.3df
+PASS: gdb.base/printcmds.exp: set print symbol on
+PASS: gdb.base/printcmds.exp: print &three
+FAIL: gdb.base/printcmds.exp: print parrays
+PASS: gdb.base/printcmds.exp: set print symbol off
+PASS: gdb.base/printcmds.exp: print invalid_LLL
+PASS: gdb.base/printcmds.exp: print invalid_LLE
+PASS: gdb.base/printcmds.exp: print invalid_LLR
+PASS: gdb.base/printcmds.exp: print invalid_LLS
+PASS: gdb.base/printcmds.exp: print invalid_ELL
+PASS: gdb.base/printcmds.exp: print invalid_ELR
+PASS: gdb.base/printcmds.exp: print invalid_ELS
+PASS: gdb.base/printcmds.exp: print invalid_RLL
+PASS: gdb.base/printcmds.exp: print invalid_RLE
+PASS: gdb.base/printcmds.exp: print invalid_RLR
+PASS: gdb.base/printcmds.exp: print invalid_RLS
+PASS: gdb.base/printcmds.exp: print invalid_SLL
+PASS: gdb.base/printcmds.exp: print invalid_SLE
+PASS: gdb.base/printcmds.exp: print invalid_SLR
+PASS: gdb.base/printcmds.exp: print invalid_SLS
+PASS: gdb.base/printcmds.exp: print invalid_LRL
+PASS: gdb.base/printcmds.exp: print invalid_LRE
+PASS: gdb.base/printcmds.exp: print invalid_LRR
+PASS: gdb.base/printcmds.exp: print invalid_LRS
+PASS: gdb.base/printcmds.exp: print invalid_ERL
+PASS: gdb.base/printcmds.exp: print invalid_ERR
+PASS: gdb.base/printcmds.exp: print invalid_ERS
+PASS: gdb.base/printcmds.exp: print invalid_RRL
+PASS: gdb.base/printcmds.exp: print invalid_RRE
+PASS: gdb.base/printcmds.exp: print invalid_RRR
+PASS: gdb.base/printcmds.exp: print invalid_RRS
+PASS: gdb.base/printcmds.exp: print invalid_SRL
+PASS: gdb.base/printcmds.exp: print invalid_SRE
+PASS: gdb.base/printcmds.exp: print invalid_SRR
+PASS: gdb.base/printcmds.exp: print invalid_SRS
+PASS: gdb.base/printcmds.exp: print invalid_LSL
+PASS: gdb.base/printcmds.exp: print invalid_LSE
+PASS: gdb.base/printcmds.exp: print invalid_LSR
+PASS: gdb.base/printcmds.exp: print invalid_LSS
+PASS: gdb.base/printcmds.exp: print invalid_ESL
+PASS: gdb.base/printcmds.exp: print invalid_ESR
+PASS: gdb.base/printcmds.exp: print invalid_ESS
+PASS: gdb.base/printcmds.exp: print invalid_RSL
+PASS: gdb.base/printcmds.exp: print invalid_RSE
+PASS: gdb.base/printcmds.exp: print invalid_RSR
+PASS: gdb.base/printcmds.exp: print invalid_RSS
+PASS: gdb.base/printcmds.exp: print invalid_SSL
+PASS: gdb.base/printcmds.exp: print invalid_SSE
+PASS: gdb.base/printcmds.exp: print invalid_SSR
+PASS: gdb.base/printcmds.exp: print invalid_SSS
+Running ./gdb.base/print-file-var.exp ...
+PASS: gdb.base/print-file-var.exp: breapoint past v1 & v2 initialization
+PASS: gdb.base/print-file-var.exp: continue to STOP marker
+FAIL: gdb.base/print-file-var.exp: print 'print-file-var-lib1.c'::this_version_id == v1
+FAIL: gdb.base/print-file-var.exp: print 'print-file-var-lib2.c'::this_version_id == v2
+Running ./gdb.base/prologue.exp ...
+PASS: gdb.base/prologue.exp: setting breakpoint at marker
+PASS: gdb.base/prologue.exp: continue to marker
+PASS: gdb.base/prologue.exp: reading $pc: marker
+PASS: gdb.base/prologue.exp: setting breakpoint at other
+PASS: gdb.base/prologue.exp: continue to other
+PASS: gdb.base/prologue.exp: reading $pc: other
+PASS: gdb.base/prologue.exp: same pc from minimal symbol
+Running ./gdb.base/prologue-include.exp ...
+PASS: gdb.base/prologue-include.exp: breakpoint main
+Running ./gdb.base/psymtab.exp ...
+PASS: gdb.base/psymtab.exp: psymtab pending setup
+PASS: gdb.base/psymtab.exp: Don't search past end of psymtab.
+Running ./gdb.base/ptr-typedef.exp ...
+PASS: gdb.base/ptr-typedef.exp: print foo_ptr
+PASS: gdb.base/ptr-typedef.exp: print foz_ptr
+Running ./gdb.base/ptype.exp ...
+PASS: gdb.base/ptype.exp: ptype unnamed enumeration member
+PASS: gdb.base/ptype.exp: ptype structure
+PASS: gdb.base/ptype.exp: ptype v_struct1.v_float_member
+PASS: gdb.base/ptype.exp: ptype v_struct1->v_float_member
+PASS: gdb.base/ptype.exp: ptype v_t_struct_p.v_float_member
+PASS: gdb.base/ptype.exp: ptype v_t_struct_p->v_float_member
+PASS: gdb.base/ptype.exp: ptype linked list structure
+PASS: gdb.base/ptype.exp: ptype union
+PASS: gdb.base/ptype.exp: ptype linked list union
+PASS: gdb.base/ptype.exp: ptype unnamed enumeration
+PASS: gdb.base/ptype.exp: ptype named enumeration
+PASS: gdb.base/ptype.exp: ptype unnamed typedef'd enumeration
+PASS: gdb.base/ptype.exp: list main
+PASS: gdb.base/ptype.exp: whatis unnamed typedef'd enum (compiler bug in IBM's xlc)
+PASS: gdb.base/ptype.exp: printing typedef'd struct
+PASS: gdb.base/ptype.exp: printing typedef'd union
+PASS: gdb.base/ptype.exp: ptype named typedef'd enumf'd enum
+PASS: gdb.base/ptype.exp: ptype misordered enumeration
+PASS: gdb.base/ptype.exp: ptype named enumeration member
+PASS: gdb.base/ptype.exp: ptype unnamed enumeration member #2
+PASS: gdb.base/ptype.exp: ptype short
+PASS: gdb.base/ptype.exp: ptype int
+PASS: gdb.base/ptype.exp: ptype t_char_array
+PASS: gdb.base/ptype.exp: ptype pv_char_array
+PASS: gdb.base/ptype.exp: ptype outer structure
+PASS: gdb.base/ptype.exp: ptype inner structure
+PASS: gdb.base/ptype.exp: ptype inner union
+PASS: gdb.base/ptype.exp: ptype nested structure
+PASS: gdb.base/ptype.exp: ptype outer int
+PASS: gdb.base/ptype.exp: ptype nested structure #2
+PASS: gdb.base/ptype.exp: ptype inner int
+PASS: gdb.base/ptype.exp: ptype nested union
+PASS: gdb.base/ptype.exp: ptype the_highest
+PASS: gdb.base/ptype.exp: ptype the_highest
+PASS: gdb.base/ptype.exp: ptype func_type
+PASS: gdb.base/ptype.exp: ptype old_fptr
+PASS: gdb.base/ptype.exp: ptype new_fptr
+PASS: gdb.base/ptype.exp: ptype fptr
+PASS: gdb.base/ptype.exp: ptype fptr2
+PASS: gdb.base/ptype.exp: ptype xptr
+PASS: gdb.base/ptype.exp: ptype ffptr
+PASS: gdb.base/ptype.exp: ptype fffptr
+PASS: gdb.base/ptype.exp: list intfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after first list of intfoo
+PASS: gdb.base/ptype.exp: list charfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after first list of charfoo
+PASS: gdb.base/ptype.exp: list intfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after second list of intfoo
+PASS: gdb.base/ptype.exp: list charfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after second list of charfoo
+PASS: gdb.base/ptype.exp: ptype "abc"
+PASS: gdb.base/ptype.exp: ptype {'a','b','c'}
+PASS: gdb.base/ptype.exp: ptype {0,1,2}
+PASS: gdb.base/ptype.exp: ptype {(long)0,(long)1,(long)2}
+PASS: gdb.base/ptype.exp: ptype {(float)0,(float)1,(float)2}
+PASS: gdb.base/ptype.exp: ptype {{0,1,2},{3,4,5}}
+PASS: gdb.base/ptype.exp: ptype {4,5,6}[2]
+PASS: gdb.base/ptype.exp: ptype *&{4,5,6}[1]
+PASS: gdb.base/ptype.exp: ptype $pc
+Running ./gdb.base/radix.exp ...
+PASS: gdb.base/radix.exp: initialize radix, input radix 2
+PASS: gdb.base/radix.exp: set input-radix 2
+PASS: gdb.base/radix.exp: show radix, input radix 2
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 2
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 2
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 2
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 2
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 2
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 2
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 2
+PASS: gdb.base/radix.exp: print 10; expect 2; input radix 2
+PASS: gdb.base/radix.exp: print 11; expect 3; input radix 2
+PASS: gdb.base/radix.exp: print -10; expect -2; input radix 2
+PASS: gdb.base/radix.exp: print -11; expect -3; input radix 2
+PASS: gdb.base/radix.exp: print 100; expect 4; input radix 2
+PASS: gdb.base/radix.exp: print 101; expect 5; input radix 2
+PASS: gdb.base/radix.exp: print -100; expect -4; input radix 2
+PASS: gdb.base/radix.exp: print -101; expect -5; input radix 2
+PASS: gdb.base/radix.exp: print 10101; expect 21; input radix 2
+PASS: gdb.base/radix.exp: print 4; expect Invalid number "4"\.; input radix 2
+PASS: gdb.base/radix.exp: print -2; expect Invalid number "2"\.; input radix 2
+PASS: gdb.base/radix.exp: initialize radix, input radix 3
+PASS: gdb.base/radix.exp: set input-radix 3
+PASS: gdb.base/radix.exp: show radix, input radix 3
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 3
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 3
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 3
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 3
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 3
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 3
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 3
+PASS: gdb.base/radix.exp: print 10; expect 3; input radix 3
+PASS: gdb.base/radix.exp: print 11; expect 4; input radix 3
+PASS: gdb.base/radix.exp: print -10; expect -3; input radix 3
+PASS: gdb.base/radix.exp: print -11; expect -4; input radix 3
+PASS: gdb.base/radix.exp: print 100; expect 9; input radix 3
+PASS: gdb.base/radix.exp: print 101; expect 10; input radix 3
+PASS: gdb.base/radix.exp: print -100; expect -9; input radix 3
+PASS: gdb.base/radix.exp: print -101; expect -10; input radix 3
+PASS: gdb.base/radix.exp: print 10101; expect 91; input radix 3
+PASS: gdb.base/radix.exp: print 2; expect 2; input radix 3
+PASS: gdb.base/radix.exp: print 20; expect 6; input radix 3
+PASS: gdb.base/radix.exp: print 3; expect Invalid number "3"\.; input radix 3
+PASS: gdb.base/radix.exp: print 30; expect Invalid number "30"\.; input radix 2
+PASS: gdb.base/radix.exp: initialize radix, input radix 8
+PASS: gdb.base/radix.exp: set input-radix 8
+PASS: gdb.base/radix.exp: show radix, input radix 8
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 8
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 8
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 8
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 8
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 8
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 8
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 8
+PASS: gdb.base/radix.exp: print 10; expect 8; input radix 8
+PASS: gdb.base/radix.exp: print 11; expect 9; input radix 8
+PASS: gdb.base/radix.exp: print -10; expect -8; input radix 8
+PASS: gdb.base/radix.exp: print -11; expect -9; input radix 8
+PASS: gdb.base/radix.exp: print 100; expect 64; input radix 8
+PASS: gdb.base/radix.exp: print 101; expect 65; input radix 8
+PASS: gdb.base/radix.exp: print -100; expect -64; input radix 8
+PASS: gdb.base/radix.exp: print -101; expect -65; input radix 8
+PASS: gdb.base/radix.exp: print 10101; expect 4161; input radix 8
+PASS: gdb.base/radix.exp: print 20; expect 16; input radix 8
+PASS: gdb.base/radix.exp: print -20; expect -16; input radix 8
+PASS: gdb.base/radix.exp: print 8; expect Invalid number "8".; input radix 8
+PASS: gdb.base/radix.exp: print -9; expect Invalid number "9".; input radix 8
+PASS: gdb.base/radix.exp: initialize radix, input radix 10
+PASS: gdb.base/radix.exp: set input-radix 10
+PASS: gdb.base/radix.exp: show radix, input radix 10
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 10
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 10
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 10
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 10
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 10
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 10
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 10
+PASS: gdb.base/radix.exp: print 10; expect 10; input radix 10
+PASS: gdb.base/radix.exp: print 11; expect 11; input radix 10
+PASS: gdb.base/radix.exp: print -10; expect -10; input radix 10
+PASS: gdb.base/radix.exp: print -11; expect -11; input radix 10
+PASS: gdb.base/radix.exp: print 100; expect 100; input radix 10
+PASS: gdb.base/radix.exp: print 101; expect 101; input radix 10
+PASS: gdb.base/radix.exp: print -100; expect -100; input radix 10
+PASS: gdb.base/radix.exp: print -101; expect -101; input radix 10
+PASS: gdb.base/radix.exp: print 10101; expect 10101; input radix 10
+PASS: gdb.base/radix.exp: print -12; expect -12; input radix 10
+PASS: gdb.base/radix.exp: initialize radix, input radix 16
+PASS: gdb.base/radix.exp: set input-radix 16
+PASS: gdb.base/radix.exp: show radix, input radix 16
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 16
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 16
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 16
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 16
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 16
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 16
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 16
+PASS: gdb.base/radix.exp: print 10; expect 16; input radix 16
+PASS: gdb.base/radix.exp: print 11; expect 17; input radix 16
+PASS: gdb.base/radix.exp: print -10; expect -16; input radix 16
+PASS: gdb.base/radix.exp: print -11; expect -17; input radix 16
+PASS: gdb.base/radix.exp: print 100; expect 256; input radix 16
+PASS: gdb.base/radix.exp: print 101; expect 257; input radix 16
+PASS: gdb.base/radix.exp: print -100; expect -256; input radix 16
+PASS: gdb.base/radix.exp: print -101; expect -257; input radix 16
+PASS: gdb.base/radix.exp: print 10101; expect 65793; input radix 16
+PASS: gdb.base/radix.exp: initialize radix, output radix 8
+PASS: gdb.base/radix.exp: set output-radix 8
+PASS: gdb.base/radix.exp: show radix, output radix 8
+PASS: gdb.base/radix.exp: print 010; expect 010; output radix 8
+PASS: gdb.base/radix.exp: print 0xf; expect 17; output radix 8
+PASS: gdb.base/radix.exp: print 10; expect 12; output radix 8
+PASS: gdb.base/radix.exp: print 100; expect 144; output radix 8
+KFAIL: gdb.base/radix.exp: print 20.; expect 24; output radix 8 (PRMS: gdb/1715)
+PASS: gdb.base/radix.exp: print (int) 20.; expect 24; output radix 8
+PASS: gdb.base/radix.exp: initialize radix, output radix 10
+PASS: gdb.base/radix.exp: set output-radix 10
+PASS: gdb.base/radix.exp: show radix, output radix 10
+PASS: gdb.base/radix.exp: print 010; expect 8; output radix 10
+PASS: gdb.base/radix.exp: print 0xf; expect 15; output radix 10
+PASS: gdb.base/radix.exp: print 10; expect 10; output radix 10
+PASS: gdb.base/radix.exp: print 100; expect 100; output radix 10
+PASS: gdb.base/radix.exp: print 20.; expect 20; output radix 10
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; output radix 10
+PASS: gdb.base/radix.exp: initialize radix, output radix 16
+PASS: gdb.base/radix.exp: set output-radix 16
+PASS: gdb.base/radix.exp: show radix, output radix 16
+PASS: gdb.base/radix.exp: print 010; expect 8; output radix 16
+PASS: gdb.base/radix.exp: print 0xf; expect f; output radix 16
+PASS: gdb.base/radix.exp: print 10; expect a; output radix 16
+PASS: gdb.base/radix.exp: print 100; expect 64; output radix 16
+KFAIL: gdb.base/radix.exp: print 20.; expect 14; output radix 16 (PRMS: gdb/1715)
+PASS: gdb.base/radix.exp: print (int) 20.; expect 14; output radix 16
+PASS: gdb.base/radix.exp: Reset radices
+PASS: gdb.base/radix.exp: Reject input-radix 0
+PASS: gdb.base/radix.exp: Input radix unchanged after rejecting 0
+PASS: gdb.base/radix.exp: Reject input-radix 1
+PASS: gdb.base/radix.exp: Input radix unchanged after rejecting 1
+PASS: gdb.base/radix.exp: Reject output-radix 0
+PASS: gdb.base/radix.exp: Output radix unchanged after rejecting 0
+PASS: gdb.base/radix.exp: Reject output-radix 1
+PASS: gdb.base/radix.exp: Output radix unchanged after rejecting 1
+PASS: gdb.base/radix.exp: set radix 7 rejected
+PASS: gdb.base/radix.exp: Output radix unchanged after rejection through set radix command
+Running ./gdb.base/randomize.exp ...
+UNTESTED: gdb.base/randomize.exp: Disabling randomization is not supported on this Linux GDB
+Running ./gdb.base/random-signal.exp ...
+PASS: gdb.base/random-signal.exp: set can-use-hw-watchpoints 0
+PASS: gdb.base/random-signal.exp: watch v
+PASS: gdb.base/random-signal.exp: continue
+FAIL: gdb.base/random-signal.exp: stop with control-c
+Running ./gdb.base/readline-ask.exp ...
+PASS: gdb.base/readline-ask.exp: set width 50
+PASS: gdb.base/readline-ask.exp: set height 3
+PASS: gdb.base/readline-ask.exp: bell for more message
+FAIL: gdb.base/readline-ask.exp: more message for 01 and 02
+FAIL: gdb.base/readline-ask.exp: more message for 03
+FAIL: gdb.base/readline-ask.exp: more finish for 04
+ERROR: Undefined command "foo".
+UNRESOLVED: gdb.base/readline-ask.exp: abort more message
+PASS: gdb.base/readline-ask.exp: bell for ask message
+FAIL: gdb.base/readline-ask.exp: ask message
+Running ./gdb.base/readline.exp ...
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 1
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 2
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 3
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 3
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 2
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 1
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 1
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 2
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 3
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - final prompt
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send if 1 > 0
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send p 5
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send end
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-p to end
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-p to p 5
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-p to if 1 > 0
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-o for if 1 > 0
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-o for p 5
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-o for end
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - final prompt
+PASS: gdb.base/readline.exp: print 42
+PASS: gdb.base/readline.exp: arrow keys with secondary prompt
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 7
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 8
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 9
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 9
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 8
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 7
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 7
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 8
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 9
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - final prompt
+Running ./gdb.base/realname-expand.exp ...
+PASS: gdb.base/realname-expand.exp: set basenames-may-differ on
+PASS: gdb.base/realname-expand.exp: rbreak realname-expand-real.c:func
+PASS: gdb.base/realname-expand.exp: set basenames-may-differ on
+PASS: gdb.base/realname-expand.exp: break realname-expand-real.c:func
+Running ./gdb.base/recpar.exp ...
+PASS: gdb.base/recpar.exp: break recpar.c:26 if n == 3
+PASS: gdb.base/recpar.exp: continue
+PASS: gdb.base/recpar.exp: backtrace
+PASS: gdb.base/recpar.exp: frame 2
+PASS: gdb.base/recpar.exp: print foo::val
+Running ./gdb.base/recurse.exp ...
+PASS: gdb.base/recurse.exp: next over b = 0 in first instance
+PASS: gdb.base/recurse.exp: set first instance watchpoint
+PASS: gdb.base/recurse.exp: continue to first instance watchpoint, first time
+PASS: gdb.base/recurse.exp: continue to recurse (a = 9)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 8)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 7)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 6)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 5)
+PASS: gdb.base/recurse.exp: next over b = 0 in second instance
+PASS: gdb.base/recurse.exp: set second instance watchpoint
+PASS: gdb.base/recurse.exp: continue to second instance watchpoint, first time
+PASS: gdb.base/recurse.exp: continue to recurse (a = 4)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 3)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 2)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 1)
+PASS: gdb.base/recurse.exp: continue to second instance watchpoint, second time
+PASS: gdb.base/recurse.exp: second instance watchpoint deleted when leaving scope
+PASS: gdb.base/recurse.exp: continue to first instance watchpoint, second time
+PASS: gdb.base/recurse.exp: first instance watchpoint deleted when leaving scope
+Running ./gdb.base/relational.exp ...
+PASS: gdb.base/relational.exp: set variable x=14
+PASS: gdb.base/relational.exp: set variable y=2
+PASS: gdb.base/relational.exp: set variable z=2
+PASS: gdb.base/relational.exp: set variable w=3
+PASS: gdb.base/relational.exp: print value of x
+PASS: gdb.base/relational.exp: print value of y
+PASS: gdb.base/relational.exp: print value of z
+PASS: gdb.base/relational.exp: print value of w
+PASS: gdb.base/relational.exp: print value of xy
+PASS: gdb.base/relational.exp: print value of x>=y
+PASS: gdb.base/relational.exp: print value of x==y
+PASS: gdb.base/relational.exp: print value of x!=y
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of xy>z
+PASS: gdb.base/relational.exp: print value of x>=y>=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x==y==z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x!=y!=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x=z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of xz
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: print value of x>y>=z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>y==z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>y!=z
+PASS: gdb.base/relational.exp: set x to 4
+PASS: gdb.base/relational.exp: print value of x>y<=z
+PASS: gdb.base/relational.exp: print value of x>=y==z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: print value of x>=y!=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>=y<=z
+PASS: gdb.base/relational.exp: print value of x<=y==z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: print value of x<=y!=z
+PASS: gdb.base/relational.exp: print value of x==y!=z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>=(y=(y!=z)
+PASS: gdb.base/relational.exp: print value of x==(y==z)
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of (x==y)
+ ^
+compilation terminated.
+UNTESTED: gdb.base/stap-probe.exp: without semaphore, not optimized: stap-probe.exp
+UNTESTED: gdb.base/stap-probe.exp: without semaphore, not optimized: stap-probe.exp
+Running ./gdb.base/start.exp ...
+UNTESTED: gdb.base/start.exp: start
+Running ./gdb.base/step-break.exp ...
+PASS: gdb.base/step-break.exp: breakpoint line number
+PASS: gdb.base/step-break.exp: run until breakpoint set at a line number
+PASS: gdb.base/step-break.exp: next 2 (1)
+PASS: gdb.base/step-break.exp: next 2 (2)
+PASS: gdb.base/step-break.exp: next 2 (3)
+PASS: gdb.base/step-break.exp: next 2 (4)
+PASS: gdb.base/step-break.exp: next 2 (5)
+PASS: gdb.base/step-break.exp: next 2 (6)
+Running ./gdb.base/step-bt.exp ...
+PASS: gdb.base/step-bt.exp: breakpoint at first instruction of hello()
+PASS: gdb.base/step-bt.exp: run to hello()
+PASS: gdb.base/step-bt.exp: step first instruction
+PASS: gdb.base/step-bt.exp: backtrace after first instruction step
+PASS: gdb.base/step-bt.exp: step second instruction
+PASS: gdb.base/step-bt.exp: backtrace after second instruction step
+Running ./gdb.base/step-line.exp ...
+PASS: gdb.base/step-line.exp: break f1
+PASS: gdb.base/step-line.exp: continue to f1
+PASS: gdb.base/step-line.exp: next over dummy 1
+PASS: gdb.base/step-line.exp: next to dummy 2
+PASS: gdb.base/step-line.exp: next over dummy 2
+PASS: gdb.base/step-line.exp: step into f2
+PASS: gdb.base/step-line.exp: next over dummy 4
+PASS: gdb.base/step-line.exp: next to dummy 5
+PASS: gdb.base/step-line.exp: next to dummy 6
+PASS: gdb.base/step-line.exp: next over dummy 6
+PASS: gdb.base/step-line.exp: next to dummy 7
+PASS: gdb.base/step-line.exp: next to dummy 8
+PASS: gdb.base/step-line.exp: next over dummy 8
+PASS: gdb.base/step-line.exp: next to dummy 9
+PASS: gdb.base/step-line.exp: next to dummy 10
+PASS: gdb.base/step-line.exp: next over dummy 10
+Running ./gdb.base/step-resume-infcall.exp ...
+PASS: gdb.base/step-resume-infcall.exp: step
+PASS: gdb.base/step-resume-infcall.exp: up
+PASS: gdb.base/step-resume-infcall.exp: set $b=$pc
+PASS: gdb.base/step-resume-infcall.exp: print $bpnum
+PASS: gdb.base/step-resume-infcall.exp: disass/m
+PASS: gdb.base/step-resume-infcall.exp: info breakpoints
+PASS: gdb.base/step-resume-infcall.exp: next
+PASS: gdb.base/step-resume-infcall.exp: p cond_hit
+Running ./gdb.base/step-symless.exp ...
+PASS: gdb.base/step-symless.exp: strip stub symbols
+PASS: gdb.base/step-symless.exp: step
+Running ./gdb.base/step-test.exp ...
+PASS: gdb.base/step-test.exp: next 1
+PASS: gdb.base/step-test.exp: step 1
+PASS: gdb.base/step-test.exp: next 2
+PASS: gdb.base/step-test.exp: step 3
+PASS: gdb.base/step-test.exp: next 3
+PASS: gdb.base/step-test.exp: next over
+PASS: gdb.base/step-test.exp: step into
+PASS: gdb.base/step-test.exp: step out
+PASS: gdb.base/step-test.exp: stepi to next line
+PASS: gdb.base/step-test.exp: stepi into function
+PASS: gdb.base/step-test.exp: stepi into function's first source line
+PASS: gdb.base/step-test.exp: stepi: finish call
+PASS: gdb.base/step-test.exp: nexti over function
+PASS: gdb.base/step-test.exp: set breakpoint at call to large_struct_by_value
+PASS: gdb.base/step-test.exp: run to pass large struct
+PASS: gdb.base/step-test.exp: large struct by value
+FAIL: gdb.base/step-test.exp: setting breakpoint at exit
+Running ./gdb.base/store.exp ...
+PASS: gdb.base/store.exp: tbreak wack_charest
+PASS: gdb.base/store.exp: continue to wack_charest
+PASS: gdb.base/store.exp: var charest l; print old l, expecting -1 .*
+PASS: gdb.base/store.exp: var charest l; print old r, expecting -2 .*
+PASS: gdb.base/store.exp: var charest l; setting l to 4
+PASS: gdb.base/store.exp: var charest l; print new l, expecting 4 ..004.
+PASS: gdb.base/store.exp: var charest l; next over add call
+PASS: gdb.base/store.exp: var charest l; print incremented l, expecting 2 ..002.
+PASS: gdb.base/store.exp: tbreak wack_short
+PASS: gdb.base/store.exp: continue to wack_short
+PASS: gdb.base/store.exp: var short l; print old l, expecting -1
+PASS: gdb.base/store.exp: var short l; print old r, expecting -2
+PASS: gdb.base/store.exp: var short l; setting l to 4
+PASS: gdb.base/store.exp: var short l; print new l, expecting 4
+PASS: gdb.base/store.exp: var short l; next over add call
+FAIL: gdb.base/store.exp: var short l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_int
+PASS: gdb.base/store.exp: continue to wack_int
+PASS: gdb.base/store.exp: var int l; print old l, expecting -1
+PASS: gdb.base/store.exp: var int l; print old r, expecting -2
+PASS: gdb.base/store.exp: var int l; setting l to 4
+PASS: gdb.base/store.exp: var int l; print new l, expecting 4
+PASS: gdb.base/store.exp: var int l; next over add call
+PASS: gdb.base/store.exp: var int l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_long
+PASS: gdb.base/store.exp: continue to wack_long
+PASS: gdb.base/store.exp: var long l; print old l, expecting -1
+PASS: gdb.base/store.exp: var long l; print old r, expecting -2
+PASS: gdb.base/store.exp: var long l; setting l to 4
+PASS: gdb.base/store.exp: var long l; print new l, expecting 4
+PASS: gdb.base/store.exp: var long l; next over add call
+PASS: gdb.base/store.exp: var long l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_longest
+PASS: gdb.base/store.exp: continue to wack_longest
+PASS: gdb.base/store.exp: var longest l; print old l, expecting -1
+PASS: gdb.base/store.exp: var longest l; print old r, expecting -2
+PASS: gdb.base/store.exp: var longest l; setting l to 4
+PASS: gdb.base/store.exp: var longest l; print new l, expecting 4
+PASS: gdb.base/store.exp: var longest l; next over add call
+PASS: gdb.base/store.exp: var longest l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_float
+PASS: gdb.base/store.exp: continue to wack_float
+PASS: gdb.base/store.exp: var float l; print old l, expecting -1
+PASS: gdb.base/store.exp: var float l; print old r, expecting -2
+PASS: gdb.base/store.exp: var float l; setting l to 4
+PASS: gdb.base/store.exp: var float l; print new l, expecting 4
+PASS: gdb.base/store.exp: var float l; next over add call
+FAIL: gdb.base/store.exp: var float l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_double
+PASS: gdb.base/store.exp: continue to wack_double
+PASS: gdb.base/store.exp: var double l; print old l, expecting -1
+PASS: gdb.base/store.exp: var double l; print old r, expecting -2
+PASS: gdb.base/store.exp: var double l; setting l to 4
+PASS: gdb.base/store.exp: var double l; print new l, expecting 4
+PASS: gdb.base/store.exp: var double l; next over add call
+FAIL: gdb.base/store.exp: var double l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_doublest
+PASS: gdb.base/store.exp: continue to wack_doublest
+PASS: gdb.base/store.exp: var doublest l; print old l, expecting -1
+PASS: gdb.base/store.exp: var doublest l; print old r, expecting -2
+PASS: gdb.base/store.exp: var doublest l; setting l to 4
+PASS: gdb.base/store.exp: var doublest l; print new l, expecting 4
+PASS: gdb.base/store.exp: var doublest l; next over add call
+FAIL: gdb.base/store.exp: var doublest l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak add_charest
+PASS: gdb.base/store.exp: continue to add_charest
+PASS: gdb.base/store.exp: upvar charest l; up
+PASS: gdb.base/store.exp: upvar charest l; print old l, expecting -1 .*
+PASS: gdb.base/store.exp: upvar charest l; print old r, expecting -2 .*
+PASS: gdb.base/store.exp: upvar charest l; set l to 4
+PASS: gdb.base/store.exp: upvar charest l; print new l, expecting 4 ..004.
+PASS: gdb.base/store.exp: tbreak add_short
+PASS: gdb.base/store.exp: continue to add_short
+PASS: gdb.base/store.exp: upvar short l; up
+PASS: gdb.base/store.exp: upvar short l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar short l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar short l; set l to 4
+PASS: gdb.base/store.exp: upvar short l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_int
+PASS: gdb.base/store.exp: continue to add_int
+PASS: gdb.base/store.exp: upvar int l; up
+PASS: gdb.base/store.exp: upvar int l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar int l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar int l; set l to 4
+PASS: gdb.base/store.exp: upvar int l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_long
+PASS: gdb.base/store.exp: continue to add_long
+PASS: gdb.base/store.exp: upvar long l; up
+PASS: gdb.base/store.exp: upvar long l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar long l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar long l; set l to 4
+PASS: gdb.base/store.exp: upvar long l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_longest
+PASS: gdb.base/store.exp: continue to add_longest
+PASS: gdb.base/store.exp: upvar longest l; up
+PASS: gdb.base/store.exp: upvar longest l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar longest l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar longest l; set l to 4
+PASS: gdb.base/store.exp: upvar longest l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_float
+PASS: gdb.base/store.exp: continue to add_float
+PASS: gdb.base/store.exp: upvar float l; up
+PASS: gdb.base/store.exp: upvar float l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar float l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar float l; set l to 4
+PASS: gdb.base/store.exp: upvar float l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_double
+PASS: gdb.base/store.exp: continue to add_double
+PASS: gdb.base/store.exp: upvar double l; up
+PASS: gdb.base/store.exp: upvar double l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar double l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar double l; set l to 4
+PASS: gdb.base/store.exp: upvar double l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_doublest
+PASS: gdb.base/store.exp: continue to add_doublest
+PASS: gdb.base/store.exp: upvar doublest l; up
+PASS: gdb.base/store.exp: upvar doublest l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar doublest l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar doublest l; set l to 4
+PASS: gdb.base/store.exp: upvar doublest l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak wack_struct_1
+FAIL: gdb.base/store.exp: continue to wack_struct_1
+FAIL: gdb.base/store.exp: var struct 1 u; next to add_struct_1 call
+PASS: gdb.base/store.exp: var struct 1 u; print old u, expecting {s = \{0}}
+PASS: gdb.base/store.exp: var struct 1 u; set u to s_1
+FAIL: gdb.base/store.exp: var struct 1 u; print new u, expecting {s = \{1}}
+PASS: gdb.base/store.exp: tbreak wack_struct_2
+FAIL: gdb.base/store.exp: continue to wack_struct_2
+FAIL: gdb.base/store.exp: var struct 2 u; next to add_struct_2 call
+PASS: gdb.base/store.exp: var struct 2 u; print old u, expecting {s = \{0, 0}}
+PASS: gdb.base/store.exp: var struct 2 u; set u to s_2
+FAIL: gdb.base/store.exp: var struct 2 u; print new u, expecting {s = \{1, 2}}
+PASS: gdb.base/store.exp: tbreak wack_struct_3
+FAIL: gdb.base/store.exp: continue to wack_struct_3
+FAIL: gdb.base/store.exp: var struct 3 u; next to add_struct_3 call
+PASS: gdb.base/store.exp: var struct 3 u; print old u, expecting {s = \{0, 0, 0}}
+PASS: gdb.base/store.exp: var struct 3 u; set u to s_3
+FAIL: gdb.base/store.exp: var struct 3 u; print new u, expecting {s = \{1, 2, 3}}
+PASS: gdb.base/store.exp: tbreak wack_struct_4
+FAIL: gdb.base/store.exp: continue to wack_struct_4
+FAIL: gdb.base/store.exp: var struct 4 u; next to add_struct_4 call
+PASS: gdb.base/store.exp: var struct 4 u; print old u, expecting {s = \{0, 0, 0, 0}}
+PASS: gdb.base/store.exp: var struct 4 u; set u to s_4
+FAIL: gdb.base/store.exp: var struct 4 u; print new u, expecting {s = \{1, 2, 3, 4}}
+PASS: gdb.base/store.exp: tbreak add_struct_1
+PASS: gdb.base/store.exp: continue to add_struct_1
+PASS: gdb.base/store.exp: up struct 1 u; up
+PASS: gdb.base/store.exp: up struct 1 u; print old u, expecting {s = \{0}}
+PASS: gdb.base/store.exp: up struct 1 u; set u to s_1
+PASS: gdb.base/store.exp: up struct 1 u; print new u, expecting {s = \{1}}
+PASS: gdb.base/store.exp: tbreak add_struct_2
+PASS: gdb.base/store.exp: continue to add_struct_2
+PASS: gdb.base/store.exp: up struct 2 u; up
+PASS: gdb.base/store.exp: up struct 2 u; print old u, expecting {s = \{0, 0}}
+PASS: gdb.base/store.exp: up struct 2 u; set u to s_2
+PASS: gdb.base/store.exp: up struct 2 u; print new u, expecting {s = \{1, 2}}
+PASS: gdb.base/store.exp: tbreak add_struct_3
+PASS: gdb.base/store.exp: continue to add_struct_3
+PASS: gdb.base/store.exp: up struct 3 u; up
+PASS: gdb.base/store.exp: up struct 3 u; print old u, expecting {s = \{0, 0, 0}}
+PASS: gdb.base/store.exp: up struct 3 u; set u to s_3
+PASS: gdb.base/store.exp: up struct 3 u; print new u, expecting {s = \{1, 2, 3}}
+PASS: gdb.base/store.exp: tbreak add_struct_4
+PASS: gdb.base/store.exp: continue to add_struct_4
+PASS: gdb.base/store.exp: up struct 4 u; up
+PASS: gdb.base/store.exp: up struct 4 u; print old u, expecting {s = \{0, 0, 0, 0}}
+PASS: gdb.base/store.exp: up struct 4 u; set u to s_4
+PASS: gdb.base/store.exp: up struct 4 u; print new u, expecting {s = \{1, 2, 3, 4}}
+PASS: gdb.base/store.exp: tbreak wack_field_1
+PASS: gdb.base/store.exp: continue field 1
+PASS: gdb.base/store.exp: next field 1
+PASS: gdb.base/store.exp: old field 1
+PASS: gdb.base/store.exp: set variable u = F_1
+PASS: gdb.base/store.exp: new field 1
+PASS: gdb.base/store.exp: set variable u = F_1, u.i = f_1.i
+PASS: gdb.base/store.exp: f_1.i
+PASS: gdb.base/store.exp: set variable u = F_1, u.j = f_1.j
+PASS: gdb.base/store.exp: f_1.j
+PASS: gdb.base/store.exp: set variable u = F_1, u.k = f_1.k
+PASS: gdb.base/store.exp: f_1.k
+PASS: gdb.base/store.exp: set variable u = f_1, u.i = F_1.i
+PASS: gdb.base/store.exp: F_1.i
+PASS: gdb.base/store.exp: set variable u = f_1, u.j = F_1.j
+PASS: gdb.base/store.exp: F_1.j
+PASS: gdb.base/store.exp: set variable u = f_1, u.k = F_1.k
+PASS: gdb.base/store.exp: F_1.k
+PASS: gdb.base/store.exp: tbreak wack_field_2
+PASS: gdb.base/store.exp: continue field 2
+PASS: gdb.base/store.exp: next field 2
+PASS: gdb.base/store.exp: old field 2
+PASS: gdb.base/store.exp: set variable u = F_2
+PASS: gdb.base/store.exp: new field 2
+PASS: gdb.base/store.exp: set variable u = F_2, u.i = f_2.i
+PASS: gdb.base/store.exp: f_2.i
+PASS: gdb.base/store.exp: set variable u = F_2, u.j = f_2.j
+PASS: gdb.base/store.exp: f_2.j
+PASS: gdb.base/store.exp: set variable u = F_2, u.k = f_2.k
+PASS: gdb.base/store.exp: f_2.k
+PASS: gdb.base/store.exp: set variable u = f_2, u.i = F_2.i
+PASS: gdb.base/store.exp: F_2.i
+PASS: gdb.base/store.exp: set variable u = f_2, u.j = F_2.j
+PASS: gdb.base/store.exp: F_2.j
+PASS: gdb.base/store.exp: set variable u = f_2, u.k = F_2.k
+PASS: gdb.base/store.exp: F_2.k
+PASS: gdb.base/store.exp: tbreak wack_field_3
+PASS: gdb.base/store.exp: continue field 3
+PASS: gdb.base/store.exp: next field 3
+PASS: gdb.base/store.exp: old field 3
+PASS: gdb.base/store.exp: set variable u = F_3
+PASS: gdb.base/store.exp: new field 3
+PASS: gdb.base/store.exp: set variable u = F_3, u.i = f_3.i
+PASS: gdb.base/store.exp: f_3.i
+PASS: gdb.base/store.exp: set variable u = F_3, u.j = f_3.j
+PASS: gdb.base/store.exp: f_3.j
+PASS: gdb.base/store.exp: set variable u = F_3, u.k = f_3.k
+PASS: gdb.base/store.exp: f_3.k
+PASS: gdb.base/store.exp: set variable u = f_3, u.i = F_3.i
+PASS: gdb.base/store.exp: F_3.i
+PASS: gdb.base/store.exp: set variable u = f_3, u.j = F_3.j
+PASS: gdb.base/store.exp: F_3.j
+PASS: gdb.base/store.exp: set variable u = f_3, u.k = F_3.k
+PASS: gdb.base/store.exp: F_3.k
+PASS: gdb.base/store.exp: tbreak wack_field_4
+PASS: gdb.base/store.exp: continue field 4
+PASS: gdb.base/store.exp: next field 4
+PASS: gdb.base/store.exp: old field 4
+PASS: gdb.base/store.exp: set variable u = F_4
+PASS: gdb.base/store.exp: new field 4
+PASS: gdb.base/store.exp: set variable u = F_4, u.i = f_4.i
+PASS: gdb.base/store.exp: f_4.i
+PASS: gdb.base/store.exp: set variable u = F_4, u.j = f_4.j
+PASS: gdb.base/store.exp: f_4.j
+PASS: gdb.base/store.exp: set variable u = F_4, u.k = f_4.k
+PASS: gdb.base/store.exp: f_4.k
+PASS: gdb.base/store.exp: set variable u = f_4, u.i = F_4.i
+PASS: gdb.base/store.exp: F_4.i
+PASS: gdb.base/store.exp: set variable u = f_4, u.j = F_4.j
+PASS: gdb.base/store.exp: F_4.j
+PASS: gdb.base/store.exp: set variable u = f_4, u.k = F_4.k
+PASS: gdb.base/store.exp: F_4.k
+Running ./gdb.base/structs2.exp ...
+PASS: gdb.base/structs2.exp: set width 0
+FAIL: gdb.base/structs2.exp: structs2 sanity check
+PASS: gdb.base/structs2.exp: structs2 breakpoint set
+FAIL: gdb.base/structs2.exp: structs2 continue1
+FAIL: gdb.base/structs2.exp: structs2 continue2
+Running ./gdb.base/structs3.exp ...
+PASS: gdb.base/structs3.exp: print two
+PASS: gdb.base/structs3.exp: print *twop
+PASS: gdb.base/structs3.exp: print *(struct Two *)onep
+PASS: gdb.base/structs3.exp: print *(tTwo *)onep
+Running ./gdb.base/structs.exp ...
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: continue to breakpoint: chartest-done
+PASS: gdb.base/structs.exp: p chartest
+PASS: gdb.base/structs.exp: ptype foo1; structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 1 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 5 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 6 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 7 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 7 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 7 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 8 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 8 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 8 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 9 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 9 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 9 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 10 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 10 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 10 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 11 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 11 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 11 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 12 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 12 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 12 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 13 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 13 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 13 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 14 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 14 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 14 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 15 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 15 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 15 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 16 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 16 structs-tc
+PASS: gdb.base/structs.exp: p/c L; call 16 structs-tc
+PASS: gdb.base/structs.exp: p/c fun(); call 17 structs-tc
+PASS: gdb.base/structs.exp: call Fun(foo); call 17 structs-tc
+PASS: gdb.base/structs.exp: p/c L