From 8f1457d991b2da1ed26d0359a888995f3d761432 Mon Sep 17 00:00:00 2001 From: Zhizhou Yang Date: Thu, 13 Feb 2020 17:52:03 +0000 Subject: Revert "cros_utils: Do not use encoding in NamedTemporaryFile" This reverts commit e013418dade906a2828b33fcb6432010953de847. Reason for revert: All dependencies of cros_utils have been migrated to python3. Original change's description: > cros_utils: Do not use encoding in NamedTemporaryFile > > This parameter is introduced in python 3 and there are many scripts > calling cros_utils with python 2. > > TEST=passed all unittests. > BUG=chromium:1048938, chromium:1048884 > > Change-Id: If4a8b9f9e9ef5a1720647c7187d7d08e1d6655b0 > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2037144 > Reviewed-by: George Burgess > Commit-Queue: Zhizhou Yang > Tested-by: Zhizhou Yang Bug: chromium:1048938, chromium:1048884 Change-Id: Iff7d1e7ff1c0e843602192a3152a29d0f62073d9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2054075 Reviewed-by: Zhizhou Yang Reviewed-by: Mike Frysinger Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang --- cros_utils/command_executer.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cros_utils/command_executer.py b/cros_utils/command_executer.py index 39bff5ed..002aa754 100755 --- a/cros_utils/command_executer.py +++ b/cros_utils/command_executer.py @@ -240,10 +240,9 @@ class CommandExecuter(object): return command def WriteToTempShFile(self, contents): - # TODO(crbug.com/1048938): use encoding='utf-8' when all dependencies have - # migrated to python 3. with tempfile.NamedTemporaryFile( - 'w', delete=False, prefix=os.uname()[1], suffix='.sh') as f: + 'w', encoding='utf-8', delete=False, prefix=os.uname()[1], + suffix='.sh') as f: f.write('#!/bin/bash\n') f.write(contents) f.flush() @@ -367,10 +366,9 @@ class CommandExecuter(object): if self.logger: self.logger.LogCmd(command, print_to_console=print_to_console) - # TODO(crbug.com/1048938): use encoding='utf-8' when all dependencies have - # migrated to python 3. with tempfile.NamedTemporaryFile( 'w', + encoding='utf-8', delete=False, dir=os.path.join(chromeos_root, 'src/scripts'), suffix='.sh', -- cgit v1.2.3 From ac96cb3e307c7edb96b05994b9deade0978c1e78 Mon Sep 17 00:00:00 2001 From: Zhizhou Yang Date: Thu, 13 Feb 2020 10:18:16 -0800 Subject: toolchain-utils: fix python3 errors in go scripts There are several places go scrtips launching and generating python related code. This patch makes sure they are python 3 compatible. BUG=chromium:1042452, chromium:1011676 TEST=Passed all python and go tests. Change-Id: Ie531ceedb14ca2af94bd26f59ba4cab399ef1e6a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2054081 Reviewed-by: Manoj Gupta Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang --- binary_search_tool/compiler_wrapper.py | 2 +- compiler_wrapper/bisect_flag.go | 4 ++-- compiler_wrapper/bisect_flag_test.go | 4 ++-- compiler_wrapper/testdata/android_golden/bisect.json | 12 ++++++------ compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 12 ++++++------ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 12 ++++++------ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 12 ++++++------ .../testdata/cros_hardened_noccache_golden/bisect.json | 12 ++++++------ .../testdata/cros_nonhardened_golden/bisect.json | 12 ++++++------ 9 files changed, 41 insertions(+), 41 deletions(-) diff --git a/binary_search_tool/compiler_wrapper.py b/binary_search_tool/compiler_wrapper.py index 8755ed42..0fd92c67 100755 --- a/binary_search_tool/compiler_wrapper.py +++ b/binary_search_tool/compiler_wrapper.py @@ -37,7 +37,7 @@ BISECT_DIR = os.environ.get('BISECT_DIR') or DEFAULT_BISECT_DIR def ProcessArgFile(arg_file): args = [] # Read in entire file at once and parse as if in shell - with open(arg_file, 'rb') as f: + with open(arg_file, 'r', encoding='utf-8') as f: args.extend(shlex.split(f.read())) return args diff --git a/compiler_wrapper/bisect_flag.go b/compiler_wrapper/bisect_flag.go index 8aec3e7e..f07d9a63 100644 --- a/compiler_wrapper/bisect_flag.go +++ b/compiler_wrapper/bisect_flag.go @@ -20,7 +20,7 @@ import sys def ExpandArgs(args, target): for arg in args: if arg[0] == '@': - with open(arg[1:], 'rb') as f: + with open(arg[1:], 'r', encoding='utf-8') as f: ExpandArgs(shlex.split(f.read()), target) else: target.append(arg) @@ -64,7 +64,7 @@ func calcBisectCommand(env env, cfg *config, bisectStage string, compilerCmd *co return &command{ Path: "/usr/bin/env", Args: append([]string{ - "python", + "python3", "-c", bisectPythonCommand, bisectStage, diff --git a/compiler_wrapper/bisect_flag_test.go b/compiler_wrapper/bisect_flag_test.go index 5c4c82d6..cc203a0f 100644 --- a/compiler_wrapper/bisect_flag_test.go +++ b/compiler_wrapper/bisect_flag_test.go @@ -56,7 +56,7 @@ func TestCallBisectDriverWithCCache(t *testing.T) { if err := verifyPath(cmd, "/usr/bin/env"); err != nil { t.Error(err) } - if err := verifyArgOrder(cmd, "python", "/usr/bin/ccache"); err != nil { + if err := verifyArgOrder(cmd, "python3", "/usr/bin/ccache"); err != nil { t.Error(err) } if err := verifyEnvUpdate(cmd, "CCACHE_DIR=.*"); err != nil { @@ -138,7 +138,7 @@ func withBisectTestContext(t *testing.T, work func(ctx *testContext)) { if err := verifyPath(cmd, "/usr/bin/env"); err != nil { return err } - if cmd.Args[0] != "python" { + if cmd.Args[0] != "python3" { return fmt.Errorf("expected a call to python. Got: %s", cmd.Args[0]) } if cmd.Args[1] != "-c" { diff --git a/compiler_wrapper/testdata/android_golden/bisect.json b/compiler_wrapper/testdata/android_golden/bisect.json index 25df7f17..a1ffc50b 100644 --- a/compiler_wrapper/testdata/android_golden/bisect.json +++ b/compiler_wrapper/testdata/android_golden/bisect.json @@ -18,9 +18,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "/user/home/ANDROID_BISECT", "/tmp/stable/clang.real", @@ -53,9 +53,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/tmp/stable/clang.real", @@ -91,9 +91,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/tmp/stable/clang.real", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index 28adfee2..437cae52 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -18,9 +18,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "/tmp/sysroot_bisect", "/tmp/stable/clang", @@ -67,9 +67,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/tmp/stable/clang", @@ -119,9 +119,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/tmp/stable/clang", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index b00f9740..a6ac7a19 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -18,9 +18,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "/tmp/sysroot_bisect", "/usr/bin/ccache", @@ -81,9 +81,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/ccache", @@ -147,9 +147,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/ccache", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index b00f9740..a6ac7a19 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -18,9 +18,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "/tmp/sysroot_bisect", "/usr/bin/ccache", @@ -81,9 +81,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/ccache", @@ -147,9 +147,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/ccache", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index 5075f843..ac9beb55 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -18,9 +18,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "/tmp/sysroot_bisect", "/usr/bin/clang", @@ -76,9 +76,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/clang", @@ -137,9 +137,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/clang", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index cb5dea01..22ba14c0 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -18,9 +18,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "/tmp/sysroot_bisect", "/usr/bin/ccache", @@ -73,9 +73,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/ccache", @@ -131,9 +131,9 @@ "cmd": { "path": "/usr/bin/env", "args": [ - "python", + "python3", "-c", - "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'rb') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", + "\nimport bisect_driver\nimport shlex\nimport sys\n\ndef ExpandArgs(args, target):\n\tfor arg in args:\n\t\tif arg[0] == '@':\n\t\t\twith open(arg[1:], 'r', encoding='utf-8') as f:\n\t\t\t\tExpandArgs(shlex.split(f.read()), target)\n\t\telse:\n\t\t\ttarget.append(arg)\n\treturn target\n\nstage = sys.argv[1]\ndir = sys.argv[2]\nexecargs = ExpandArgs(sys.argv[3:], [])\n\nsys.exit(bisect_driver.bisect_driver(stage, dir, execargs))\n", "someBisectStage", "someBisectDir", "/usr/bin/ccache", -- cgit v1.2.3 From cbc6a9d99bdd4c7180f5e309de09039d6d9c9dbd Mon Sep 17 00:00:00 2001 From: Zhizhou Yang Date: Thu, 13 Feb 2020 15:51:36 -0800 Subject: toolchain-utils: fix cros lint and some random errors We have enabled --py3 for cros lint and thus reveals some new linting errors in migrated scripts. This patch fixes them and some other random errors. BUG=chromium:1011676 TEST=Passed unittests. Change-Id: If129e01c21845e1b944a2b64e50e9fed7138c845 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2055972 Tested-by: Zhizhou Yang Reviewed-by: George Burgess Commit-Queue: Zhizhou Yang Auto-Submit: Zhizhou Yang --- binary_search_tool/binary_search_perforce.py | 2 +- binary_search_tool/test/binary_search_tool_test.py | 2 +- buildbot_test_toolchains.py | 40 +++++++++++----------- chromiumos_image_diff.py | 2 +- cros_utils/buildbot_utils.py | 1 - cros_utils/device_setup_utils_unittest.py | 3 +- cros_utils/logger.py | 1 - cros_utils/misc.py | 2 +- cros_utils/tabulator.py | 6 ++-- crosperf/experiment_factory.py | 4 +-- crosperf/experiment_file.py | 6 ++-- crosperf/machine_manager.py | 6 ++-- crosperf/results_report_templates.py | 6 ++-- crosperf/suite_runner.py | 7 ++-- lock_machine.py | 6 ---- 15 files changed, 41 insertions(+), 53 deletions(-) diff --git a/binary_search_tool/binary_search_perforce.py b/binary_search_tool/binary_search_perforce.py index 5065f709..f2a3c8d5 100755 --- a/binary_search_tool/binary_search_perforce.py +++ b/binary_search_tool/binary_search_perforce.py @@ -369,7 +369,7 @@ class P4BinarySearcher(VCSBinarySearcher): self.ce.RunCommand(command) command = 'cd %s' % self.checkout_dir command += '; g4 changes -c %s' % self.client_name - _, out, _ = self.ce.RunCommandWOUTPUOT(command) + _, out, _ = self.ce.RunCommandWOutput(command) changes = re.findall(r'Change (\d+)', out) if changes: command = 'cd %s' % self.checkout_dir diff --git a/binary_search_tool/test/binary_search_tool_test.py b/binary_search_tool/test/binary_search_tool_test.py index ca9313b5..6f5b514e 100755 --- a/binary_search_tool/test/binary_search_tool_test.py +++ b/binary_search_tool/test/binary_search_tool_test.py @@ -202,7 +202,7 @@ class BisectingUtilsTest(unittest.TestCase): f.write('test123') bss = binary_search_state.MockBinarySearchState() - with self.assertRaises(binary_search_state.Error): + with self.assertRaises(OSError): bss.SaveState() with open(state_file, 'r', encoding='utf-8') as f: diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 5f7c21d3..1609da49 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -204,23 +204,23 @@ class ToolchainComparator(object): # Now add vanilla to test file. official_image = """ - vanilla_image { - chromeos_root: %s - build: %s - compiler: llvm - } - """ % (self._chromeos_root, vanilla_image) + vanilla_image { + chromeos_root: %s + build: %s + compiler: llvm + } + """ % (self._chromeos_root, vanilla_image) f.write(official_image) # Now add non-AFDO image to test file. if nonafdo_image: official_nonafdo_image = """ - nonafdo_image { - chromeos_root: %s - build: %s - compiler: llvm - } - """ % (self._chromeos_root, nonafdo_image) + nonafdo_image { + chromeos_root: %s + build: %s + compiler: llvm + } + """ % (self._chromeos_root, nonafdo_image) f.write(official_nonafdo_image) label_string = '%s_trybot_image' % compiler_string @@ -228,14 +228,14 @@ class ToolchainComparator(object): # Reuse autotest files from vanilla image for trybot images autotest_files = os.path.join('/tmp', vanilla_image, 'autotest_files') experiment_image = """ - %s { - chromeos_root: %s - build: %s - autotest_path: %s - compiler: %s - } - """ % (label_string, self._chromeos_root, trybot_image, - autotest_files, compiler_string) + %s { + chromeos_root: %s + build: %s + autotest_path: %s + compiler: %s + } + """ % (label_string, self._chromeos_root, trybot_image, autotest_files, + compiler_string) f.write(experiment_image) crosperf = os.path.join(TOOLCHAIN_DIR, 'crosperf', 'crosperf') diff --git a/chromiumos_image_diff.py b/chromiumos_image_diff.py index 66a54ccc..3d54100d 100755 --- a/chromiumos_image_diff.py +++ b/chromiumos_image_diff.py @@ -318,7 +318,7 @@ def Main(argv): for i, image_path in enumerate([options.image1, options.image2], start=1): image_path = os.path.realpath(image_path) if not os.path.isfile(image_path): - logger.getLogger().LogError('"{0}" is not a file.'.format(image_path)) + logger.GetLogger().LogError('"{0}" is not a file.'.format(image_path)) return 1 chromeos_root = None diff --git a/cros_utils/buildbot_utils.py b/cros_utils/buildbot_utils.py index a06abd26..428433db 100644 --- a/cros_utils/buildbot_utils.py +++ b/cros_utils/buildbot_utils.py @@ -27,7 +27,6 @@ TIME_OUT = 43200 # Decide the build is dead or will never finish class BuildbotTimeout(Exception): """Exception to throw when a buildbot operation timesout.""" - pass def RunCommandInPath(path, cmd): diff --git a/cros_utils/device_setup_utils_unittest.py b/cros_utils/device_setup_utils_unittest.py index 63f9bf66..12a70811 100755 --- a/cros_utils/device_setup_utils_unittest.py +++ b/cros_utils/device_setup_utils_unittest.py @@ -14,10 +14,9 @@ import time import unittest from unittest import mock -from device_setup_utils import DutWrapper - from cros_utils import command_executer from cros_utils import logger +from cros_utils.device_setup_utils import DutWrapper BIG_LITTLE_CPUINFO = """processor : 0 model name : ARMv8 Processor rev 4 (v8l) diff --git a/cros_utils/logger.py b/cros_utils/logger.py index 4cc4618e..e304fe12 100644 --- a/cros_utils/logger.py +++ b/cros_utils/logger.py @@ -207,7 +207,6 @@ class MockLogger(object): def __init__(self, *_args, **_kwargs): self.stdout = sys.stdout self.stderr = sys.stderr - return None def _AddSuffix(self, basename, suffix): return '%s%s' % (basename, suffix) diff --git a/cros_utils/misc.py b/cros_utils/misc.py index 246767f0..b4beb60c 100644 --- a/cros_utils/misc.py +++ b/cros_utils/misc.py @@ -462,7 +462,7 @@ def ApplyGerritPatches(chromeos_root, gerrit_patch_string, sys.path.append(os.path.join(chromeos_root, 'chromite')) # Imports below are ok after modifying path to add chromite. # Pylint cannot detect that and complains. - # pylint: disable=import-error + # pylint: disable=import-error, import-outside-toplevel from lib import git from lib import gerrit manifest = git.ManifestCheckout(chromeos_root) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 300c2d79..5029ceee 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -318,7 +318,7 @@ class SamplesTableGenerator(TableGenerator): v.append(None) run_fail += 1 one_tuple = ((run_pass, run_fail), v) - if iterations != 0 and iterations != run_pass + run_fail: + if iterations not in (0, run_pass + run_fail): raise ValueError('Iterations of each benchmark run ' \ 'are not the same') iterations = run_pass + run_fail @@ -358,7 +358,7 @@ class SamplesTableGenerator(TableGenerator): # Accumulate each run result to composite benchmark run # If any run fails, then we set this run for composite benchmark # to None so that we know it fails. - if bench_runs[index] and row[label_index][index] != None: + if bench_runs[index] and row[label_index][index] is not None: row[label_index][index] += bench_runs[index] else: row[label_index][index] = None @@ -557,12 +557,10 @@ class AmeanResult(StringMeanResult): class RawResult(Result): """Raw result.""" - pass class IterationResult(Result): """Iteration result.""" - pass class MinResult(Result): diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 4527db5f..3b1ed614 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -229,8 +229,8 @@ class ExperimentFactory(object): iterations = benchmark_settings.GetField('iterations') if cwp_dso: - if cwp_dso_iterations != 0 and iterations != cwp_dso_iterations: - raise RuntimeError('Iterations of each benchmark run are not the ' \ + if cwp_dso_iterations not in (0, iterations): + raise RuntimeError('Iterations of each benchmark run are not the ' 'same') cwp_dso_iterations = iterations diff --git a/crosperf/experiment_file.py b/crosperf/experiment_file.py index 1d89edad..d2831bda 100644 --- a/crosperf/experiment_file.py +++ b/crosperf/experiment_file.py @@ -95,7 +95,8 @@ class ExperimentFile(object): if not line: continue - elif ExperimentFile._FIELD_VALUE_RE.match(line): + + if ExperimentFile._FIELD_VALUE_RE.match(line): field = self._ParseField(reader) settings.SetField(field[0], field[1], field[2]) elif ExperimentFile._CLOSE_SETTINGS_RE.match(line): @@ -113,7 +114,8 @@ class ExperimentFile(object): if not line: continue - elif ExperimentFile._OPEN_SETTINGS_RE.match(line): + + if ExperimentFile._OPEN_SETTINGS_RE.match(line): new_settings, settings_type = self._ParseSettings(reader) # We will allow benchmarks with duplicated settings name for now. # Further decision will be made when parsing benchmark details in diff --git a/crosperf/machine_manager.py b/crosperf/machine_manager.py index 7211662c..0b38eef2 100644 --- a/crosperf/machine_manager.py +++ b/crosperf/machine_manager.py @@ -28,12 +28,10 @@ CHECKSUM_FILE = '/usr/local/osimage_checksum_file' class BadChecksum(Exception): """Raised if all machines for a label don't have the same checksum.""" - pass class BadChecksumString(Exception): """Raised if all machines for a label don't have the same checksum string.""" - pass class MissingLocksDirectory(Exception): @@ -298,8 +296,8 @@ class MachineManager(object): retval = image_chromeos.DoImage(image_chromeos_args) if retval: raise RuntimeError("Could not image machine: '%s'." % machine.name) - else: - self.num_reimages += 1 + + self.num_reimages += 1 machine.checksum = checksum machine.image = label.chromeos_image machine.label = label diff --git a/crosperf/results_report_templates.py b/crosperf/results_report_templates.py index 3c5258c9..ea411e21 100644 --- a/crosperf/results_report_templates.py +++ b/crosperf/results_report_templates.py @@ -6,7 +6,7 @@ """Text templates used by various parts of results_report.""" from __future__ import print_function -import cgi +import html from string import Template _TabMenuTemplate = Template(""" @@ -19,7 +19,7 @@ _TabMenuTemplate = Template(""" def _GetTabMenuHTML(table_name): # N.B. cgi.escape does some very basic HTML escaping. Nothing more. - escaped = cgi.escape(table_name, quote=True) + escaped = html.escape(table_name) return _TabMenuTemplate.substitute(table_name=escaped) @@ -35,7 +35,7 @@ _ExperimentFileHTML = """ def _GetExperimentFileHTML(experiment_file_text): if not experiment_file_text: return '' - return _ExperimentFileHTML % (cgi.escape(experiment_file_text),) + return _ExperimentFileHTML % (html.escape(experiment_file_text, quote=False),) _ResultsSectionHTML = Template(""" diff --git a/crosperf/suite_runner.py b/crosperf/suite_runner.py index 79ace20d..62a85cc6 100644 --- a/crosperf/suite_runner.py +++ b/crosperf/suite_runner.py @@ -166,11 +166,10 @@ class SuiteRunner(object): # process namespace and we can kill process created easily by their # process group. chrome_root_options = ('--no-ns-pid ' - '--chrome_root={} --chrome_root_mount={} ' + '--chrome_root={0} --chrome_root_mount={1} ' 'FEATURES="-usersandbox" ' - 'CHROME_ROOT={}'.format(label.chrome_src, - CHROME_MOUNT_DIR, - CHROME_MOUNT_DIR)) + 'CHROME_ROOT={1}'.format(label.chrome_src, + CHROME_MOUNT_DIR)) if self.log_level != 'verbose': self.logger.LogOutput('Running test.') diff --git a/lock_machine.py b/lock_machine.py index 06c0e80c..2948381d 100755 --- a/lock_machine.py +++ b/lock_machine.py @@ -518,12 +518,6 @@ def Main(argv): lock_manager.CheckMachineLocks(machine_states, cmd) lock_manager.UpdateMachines(False) - elif cmd == 'add': - lock_manager.AddMachinesToLocalServer() - - elif cmd == 'remove': - lock_manager.RemoveMachinesFromLocalServer() - return 0 -- cgit v1.2.3 From b62ece7177d2a387804240bf95d1e08c24182588 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Thu, 20 Feb 2020 21:05:26 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R82-12874.0-1581330812 to R82-12874.0-1581935639 Change-Id: I2b4618580757cee20700db7dcee8c95af9cabbc8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2066560 --- afdo_metadata/kernel_afdo.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 751af04c..7ca70bf6 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,10 +1,10 @@ { "chromeos-kernel-3_14": { "name": "R81-12607.58-1578524353" - }, + }, "chromeos-kernel-4_4": { - "name": "R82-12874.0-1581330812" - }, + "name": "R82-12874.0-1581935639" + }, "chromeos-kernel-3_18": { "name": "R82-12861.0-1580725956" } -- cgit v1.2.3 From 19d935e4ecf6fadee03826ae964af56688a28e4a Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Fri, 21 Feb 2020 14:22:35 -0800 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R82-12861.0-1580725956 to R82-12871.7-1581935958 Change-Id: I5b7ebd1af1ba4a0ede780b26b3db0ca40e220bd3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2066563 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 7ca70bf6..1f985d8f 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,6 +6,6 @@ "name": "R82-12874.0-1581935639" }, "chromeos-kernel-3_18": { - "name": "R82-12861.0-1580725956" + "name": "R82-12871.7-1581935958" } } \ No newline at end of file -- cgit v1.2.3 From 32506ff20d16f0c00c6664db9a85f8192ef3a175 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 24 Feb 2020 09:43:34 -0800 Subject: afdo_metadata: Add entries for kernel 4.14 and 4.19 Adds two entries for kernel 4.14 and 4.19 in the metadata file, which will be needed by the kernel PUpr to update ebuild files. Using the same name as the ebuild files in this initial upload, and will be updated by kernel AFDO verification builders later. BUG=chromium:1026315 TEST=None Change-Id: Ic2ff8f1310d691d72208f70bee619eee4b4093c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2067155 Tested-by: Tiancong Wang Reviewed-by: Manoj Gupta Reviewed-by: David Burger Commit-Queue: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 1f985d8f..724291d1 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -7,5 +7,11 @@ }, "chromeos-kernel-3_18": { "name": "R82-12871.7-1581935958" + }, + "chromeos-kernel-4_14": { + "name": "R82-12871.7-1581936231" + }, + "chromeos-kernel-4_19": { + "name": "R82-12898.0-1581935555" } -} \ No newline at end of file +} -- cgit v1.2.3 From 5b8217f8047f2d1fc254c2a66978b576aa5c6007 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 24 Feb 2020 13:43:36 -0800 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R82-12871.7-1581935958 to R82-12901.0-1582540470 Change-Id: Ia9f2ac0e3d5f89800b3b7ff09830a2355025362c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2070029 --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 724291d1..e4780b49 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,12 +6,12 @@ "name": "R82-12874.0-1581935639" }, "chromeos-kernel-3_18": { - "name": "R82-12871.7-1581935958" + "name": "R82-12901.0-1582540470" }, "chromeos-kernel-4_14": { - "name": "R82-12871.7-1581936231" + "name": "R82-12871.7-1581936231" }, "chromeos-kernel-4_19": { - "name": "R82-12898.0-1581935555" + "name": "R82-12898.0-1581935555" } -} +} \ No newline at end of file -- cgit v1.2.3 From 0b5d4c07abcaa8816a035d03e1ff5a6b0b9afba8 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 24 Feb 2020 20:19:07 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R82-12874.0-1581935639 to R82-12901.0-1582540582 Change-Id: Ie174e4417d0dd3ed8fa1a4a8b5e66dcf3c7e1b4a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2071818 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index e4780b49..abb2b581 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R82-12874.0-1581935639" + "name": "R82-12901.0-1582540582" }, "chromeos-kernel-3_18": { "name": "R82-12901.0-1582540470" -- cgit v1.2.3 From c175a38c1d0fee61f4df71f1fecb13a36c1ebd28 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 25 Feb 2020 07:41:26 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R82-12898.0-1581935555 to R82-12898.0-1582540816 Change-Id: I0e9920a9083392c07a64d970ebe463e6566ac8b6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2071920 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index abb2b581..16e93060 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R82-12871.7-1581936231" }, "chromeos-kernel-4_19": { - "name": "R82-12898.0-1581935555" + "name": "R82-12898.0-1582540816" } } \ No newline at end of file -- cgit v1.2.3 From 61f298e5615517947cbaab5db8c783284fbd392a Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 21 Feb 2020 13:34:47 -0800 Subject: compiler_wrapper: fix write() races If we make this function write its data atomically to the RUSAGE file, we can have all compilations log to this file, which would allow us to trivially log all of the build info for a given tryjob. BUG=chromium:1054897 TEST=nocturne-llvm-next-toolchain-tryjob. Local --nousepkg build_packages produced a file with 0 torn lines. Change-Id: Ic6b014af11e812111fa21a56133bbe1b6b31f954 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2066710 Reviewed-by: Manoj Gupta Commit-Queue: George Burgess Tested-by: George Burgess --- compiler_wrapper/rusage_flag.go | 52 ++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/compiler_wrapper/rusage_flag.go b/compiler_wrapper/rusage_flag.go index 2a3768c1..690308b2 100644 --- a/compiler_wrapper/rusage_flag.go +++ b/compiler_wrapper/rusage_flag.go @@ -18,6 +18,26 @@ func getRusageLogFilename(env env) string { return value } +func lockFileExclusive(fd uintptr) error { + maxTries := 100 + for i := 0; i < maxTries; i++ { + const seekSet = 0 + err := syscall.FcntlFlock(fd, syscall.F_SETLKW, &syscall.Flock_t{ + Type: syscall.F_WRLCK, + Whence: seekSet, + Start: 0, + Len: 0, + }) + if err == nil { + return nil + } + if err != syscall.EINTR { + return fmt.Errorf("locking file: %v", err) + } + } + return fmt.Errorf("locking file failed after %d tries", maxTries) +} + func logRusage(env env, logFileName string, compilerCmd *command) (exitCode int, err error) { rusageBefore := syscall.Rusage{} if err := syscall.Getrusage(syscall.RUSAGE_CHILDREN, &rusageBefore); err != nil { @@ -49,21 +69,35 @@ func logRusage(env env, logFileName string, compilerCmd *command) (exitCode int, if err := os.MkdirAll(filepath.Dir(logFileName), 0777); err != nil { return 0, wrapErrorwithSourceLocf(err, "error creating rusage log directory %s", logFileName) } + + timeUnit := float64(time.Second) + data := fmt.Sprintf("%.5f : %.5f : %.5f : %d : %s : %s\n", + float64(elapsedRealTime)/timeUnit, float64(elapsedUserTime)/timeUnit, float64(elapsedSysTime)/timeUnit, + maxMemUsed, absCompilerPath, + strings.Join(append([]string{filepath.Base(absCompilerPath)}, compilerCmd.Args...), " ")) + // Note: using file mode 0666 so that a root-created log is writable by others. logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666) if err != nil { - return 0, wrapErrorwithSourceLocf(err, "error creating rusage logfile %s", logFileName) + return 0, wrapErrorwithSourceLocf(err, "creating rusage logfile %s", logFileName) } - timeUnit := float64(time.Second) - if _, err := fmt.Fprintf(logFile, "%.5f : %.5f : %.5f : %d : %s : %s\n", - float64(elapsedRealTime)/timeUnit, float64(elapsedUserTime)/timeUnit, float64(elapsedSysTime)/timeUnit, - maxMemUsed, absCompilerPath, - strings.Join(append([]string{filepath.Base(absCompilerPath)}, compilerCmd.Args...), " ")); err != nil { + + // O_APPEND's atomicity guarantees are only for writes up to a certain size. If we don't + // lock the file, we might end up with corrupted records. + // + // Note that Close()'ing the file releases all associated locks. + if err := lockFileExclusive(logFile.Fd()); err != nil { _ = logFile.Close() - return 0, wrapErrorwithSourceLocf(err, "error writing rusage logfile %s", logFileName) + return 0, wrapErrorwithSourceLocf(err, "locking rusage logfile %s: %v", logFileName, err) + } + + _, err = logFile.WriteString(data) + closeErr := logFile.Close() + if err != nil { + return 0, wrapErrorwithSourceLocf(err, "writing to rusage logfile %s: %v", logFileName, err) } - if err := logFile.Close(); err != nil { - return 0, wrapErrorwithSourceLocf(err, "error closing rusage logfile %s", logFileName) + if closeErr != nil { + return 0, wrapErrorwithSourceLocf(err, "closing rusage logfile %s: %v", logFileName, closeErr) } return exitCode, nil -- cgit v1.2.3 From 2495a9bb06590534a0b873e36285f06f10c107ba Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Wed, 26 Feb 2020 02:14:45 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R82-12871.7-1581936231 to R82-12896.0-1582540320 Change-Id: I8d5f4e8689d0fdca33517186ff687e3c01c41346 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2074057 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 16e93060..24f40fe6 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R82-12901.0-1582540470" }, "chromeos-kernel-4_14": { - "name": "R82-12871.7-1581936231" + "name": "R82-12896.0-1582540320" }, "chromeos-kernel-4_19": { "name": "R82-12898.0-1582540816" -- cgit v1.2.3 From ee7e22c6435048f1b37db4d944e3b6f4c65a77e5 Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Thu, 20 Feb 2020 15:08:30 -0800 Subject: Change behavior of doubleBuildWithWNoError for Android "Double build with -Wno-error" is always on in the Android useLlvmNext wrapper and always off in the production wrapper. The warnings JSON is written to $OUT_DIR/warnings_reports. NFC for the ChromeOS configs. Originally reviewed in https://android-review.googlesource.com/c/1242126. BUG=b:149836702 TEST=go test Change-Id: I5f1a43524772d991b5c64422189643cde61c3826 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2079547 Tested-by: Pirama Arumuga Nainar Reviewed-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 4 +-- compiler_wrapper/config.go | 5 +++- compiler_wrapper/disable_werror_flag.go | 27 ++++++++++++----- compiler_wrapper/disable_werror_flag_test.go | 44 ++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 10 deletions(-) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index c614b99f..11fd8199 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -108,14 +108,14 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int } rusageLogfileName := getRusageLogFilename(env) bisectStage := getBisectStage(env) - if shouldForceDisableWError(env) { + if newWarningsDir, ok := getNewWarningsDir(env, cfg); ok { if rusageLogfileName != "" { return 0, newUserErrorf("GETRUSAGE is meaningless with FORCE_DISABLE_WERROR") } if bisectStage != "" { return 0, newUserErrorf("BISECT_STAGE is meaningless with FORCE_DISABLE_WERROR") } - return doubleBuildWithWNoError(env, cfg, compilerCmd) + return doubleBuildWithWNoError(env, cfg, newWarningsDir, compilerCmd) } if shouldCompileWithFallback(env) { if rusageLogfileName != "" { diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 5f389684..70c27f06 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -14,6 +14,8 @@ type config struct { isAndroidWrapper bool // Whether to use ccache. useCCache bool + // Whether llvmNext wrapper. + useLlvmNext bool // Flags to add to gcc and clang. commonFlags []string // Flags to add to gcc only. @@ -83,6 +85,7 @@ func getConfig(configName string, useCCache bool, useLlvmNext bool, version stri return nil, newErrorwithSourceLocf("unknown config name: %s", configName) } cfg.useCCache = useCCache + cfg.useLlvmNext = useLlvmNext if useLlvmNext { cfg.clangFlags = append(cfg.clangFlags, llvmNextFlags...) } @@ -208,5 +211,5 @@ var androidConfig = &config{ gccFlags: []string{}, clangFlags: []string{}, clangPostFlags: []string{}, - newWarningsDir: "/tmp/fatal_clang_warnings", + newWarningsDir: "", } diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 864397dd..406fdef9 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -9,16 +9,29 @@ import ( "encoding/json" "io/ioutil" "os" + "path" "strings" "syscall" ) -func shouldForceDisableWError(env env) bool { - value, _ := env.getenv("FORCE_DISABLE_WERROR") - return value != "" +func getNewWarningsDir(env env, cfg *config) (dirName string, ok bool) { + if cfg.isAndroidWrapper { + if cfg.useLlvmNext { + value, _ := env.getenv("OUT_DIR") + if value != "" { + return path.Join(value, "warnings_reports"), true + } + } + } else { + value, _ := env.getenv("FORCE_DISABLE_WERROR") + if value != "" { + return cfg.newWarningsDir, true + } + } + return "", false } -func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command) (exitCode int, err error) { +func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, originalCmd *command) (exitCode int, err error) { originalStdoutBuffer := &bytes.Buffer{} originalStderrBuffer := &bytes.Buffer{} // TODO: This is a bug in the old wrapper that it drops the ccache path @@ -73,8 +86,8 @@ func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command) (exitCo defer syscall.Umask(oldMask) // Allow root and regular users to write to this without issue. - if err := os.MkdirAll(cfg.newWarningsDir, 0777); err != nil { - return 0, wrapErrorwithSourceLocf(err, "error creating warnings directory %s", cfg.newWarningsDir) + if err := os.MkdirAll(newWarningsDir, 0777); err != nil { + return 0, wrapErrorwithSourceLocf(err, "error creating warnings directory %s", newWarningsDir) } // Have some tag to show that files aren't fully written. It would be sad if @@ -85,7 +98,7 @@ func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command) (exitCo // Coming up with a consistent name for this is difficult (compiler command's // SHA can clash in the case of identically named files in different // directories, or similar); let's use a random one. - tmpFile, err := ioutil.TempFile(cfg.newWarningsDir, "warnings_report*.json"+incompleteSuffix) + tmpFile, err := ioutil.TempFile(newWarningsDir, "warnings_report*.json"+incompleteSuffix) if err != nil { return 0, wrapErrorwithSourceLocf(err, "error creating warnings file") } diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index fb25d193..eb907e6b 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -11,6 +11,7 @@ import ( "io" "io/ioutil" "os" + "path" "path/filepath" "strings" "testing" @@ -372,3 +373,46 @@ func TestDoubleBuildWerrorChmodsThingsAppropriately(t *testing.T) { } }) } + +func TestAndroidGetNewWarningsDir(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + outDir := "/foo/bar" + expectedDir := path.Join(outDir, "warnings_reports") + + ctx.env = []string{"OUT_DIR=" + outDir} + ctx.cfg.isAndroidWrapper = true + + // Disable werror ON + ctx.cfg.useLlvmNext = true + dir, ok := getNewWarningsDir(ctx, ctx.cfg) + if !ok || dir != expectedDir { + t.Errorf("disable Werror not enabled for Android with useLlvmNext (dirName=%q ok=%t), expectedDir=%q", dir, ok, expectedDir) + } + + // Disable werror OFF + ctx.cfg.useLlvmNext = false + dir, ok = getNewWarningsDir(ctx, ctx.cfg) + if ok || dir != "" { + t.Errorf("disable Werror incorrectly enabled for Android without useLlvmNext (dirName=%q ok=%t)", dir, ok) + } + }) +} + +func TestChromeOSGetNewWarningsDirOn(t *testing.T) { + withForceDisableWErrorTestContext(t, func(ctx *testContext) { + dir, ok := getNewWarningsDir(ctx, ctx.cfg) + if !ok || dir != ctx.cfg.newWarningsDir { + t.Errorf("disable Werror not enabled for ChromeOS with FORCE_DISABLE_WERROR set (dirName=%q ok=%t) expectedDir=%q", dir, ok, ctx.cfg.newWarningsDir) + } + + }) +} + +func TestChromeOSGetNewWarningsDirOff(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + dir, ok := getNewWarningsDir(ctx, ctx.cfg) + if ok || dir != "" { + t.Errorf("disable Werror incorrectly enabled for ChromeOS without FORCE_DISABLE_WERROR set (dirName=%q ok=%t)", dir, ok) + } + }) +} -- cgit v1.2.3 From c3bb0cbac10890324c5004fd6d7819102a2e6995 Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Wed, 26 Feb 2020 17:59:58 -0800 Subject: When double-build-with-Wno-error, add -Wno-error=foo for -Werror=foo This will gracefully handle cases where a warning enforced with -Werror got stricter in upstream. This change also needs updates to golden testdata. No additional tests added since this is covered by existing tests. Originally reviewed in https://android-review.googlesource.com/c/1244796. BUG=b:149836702 TEST=go test Change-Id: I94624deb258b15e131387377b99bfb1747dca1a1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2079548 Tested-by: Pirama Arumuga Nainar Reviewed-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 12 +++++++++++- .../cros_clang_host_golden/force_disable_werror.json | 6 ++++-- .../testdata/cros_hardened_golden/force_disable_werror.json | 6 ++++-- .../cros_hardened_llvmnext_golden/force_disable_werror.json | 6 ++++-- .../cros_hardened_noccache_golden/force_disable_werror.json | 6 ++++-- .../cros_nonhardened_golden/force_disable_werror.json | 6 ++++-- 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 406fdef9..0d68d560 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -31,6 +31,16 @@ func getNewWarningsDir(env env, cfg *config) (dirName string, ok bool) { return "", false } +func disableWerrorFlags(originalArgs []string) []string { + noErrors := []string{"-Wno-error"} + for _, flag := range originalArgs { + if strings.HasPrefix(flag, "-Werror=") { + noErrors = append(noErrors, strings.Replace(flag, "-Werror", "-Wno-error", 1)) + } + } + return noErrors +} + func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, originalCmd *command) (exitCode int, err error) { originalStdoutBuffer := &bytes.Buffer{} originalStderrBuffer := &bytes.Buffer{} @@ -57,7 +67,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin retryStderrBuffer := &bytes.Buffer{} retryCommand := &command{ Path: originalCmd.Path, - Args: append(originalCmd.Args, "-Wno-error"), + Args: append(originalCmd.Args, disableWerrorFlags(originalCmd.Args)...), EnvUpdates: originalCmd.EnvUpdates, } retryExitCode, err := wrapSubprocessErrorWithSourceLoc(retryCommand, diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 248fcb4b..2393e71a 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -94,7 +94,8 @@ "-Wno-unknown-warning-option", "main.cc", "-Wno-implicit-int-float-conversion", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ] } } @@ -159,7 +160,8 @@ "-Wno-unknown-warning-option", "main.cc", "-Wno-implicit-int-float-conversion", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ] }, "stdout": "somemessage", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index f975f452..f796764a 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -136,7 +136,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ], "env_updates": [ "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", @@ -233,7 +234,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ], "env_updates": [ "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index f975f452..f796764a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -136,7 +136,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ], "env_updates": [ "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", @@ -233,7 +234,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ], "env_updates": [ "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 59dfb93e..078c05da 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -121,7 +121,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ] } } @@ -204,7 +205,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ] }, "stdout": "somemessage", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 787ce95d..9787e8a6 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -112,7 +112,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ], "env_updates": [ "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", @@ -193,7 +194,8 @@ "-B../../bin", "-target", "x86_64-cros-linux-gnu", - "-Wno-error" + "-Wno-error", + "-Wno-error=poison-system-directories" ], "env_updates": [ "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", -- cgit v1.2.3 From d49520813fd5f67c65cbcd7de555e07a06101185 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Fri, 28 Feb 2020 11:15:31 -0800 Subject: llvm_tools: Uploaded CL as WIP and do not send emails. Mark CL as wip and do not send emails to avoid unnecessary email churns for people monitoring the changes. BUG=None TEST=CL uploaded as wip and with no emails sent. Change-Id: I8577fb8a149b5511bc27df2a7e79901b1c778721 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2080652 Tested-by: Manoj Gupta Reviewed-by: Jian Cai Reviewed-by: George Burgess Commit-Queue: Manoj Gupta --- llvm_tools/update_chromeos_llvm_next_hash.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm_tools/update_chromeos_llvm_next_hash.py b/llvm_tools/update_chromeos_llvm_next_hash.py index d47da46d..955ebff7 100755 --- a/llvm_tools/update_chromeos_llvm_next_hash.py +++ b/llvm_tools/update_chromeos_llvm_next_hash.py @@ -455,7 +455,8 @@ def UploadChanges(path_to_repo_dir, llvm_hash, commit_messages): # Upload the changes for review. upload_change_cmd = ( - 'yes | repo upload --br=llvm-next-update-%s --no-verify' % llvm_hash) + 'yes | repo upload --wip --ne --br=llvm-next-update-%s --no-verify' % + llvm_hash) # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. -- cgit v1.2.3 From 26caa2f10035811150a11bb8871a2da1f593cf2b Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 28 Feb 2020 14:36:01 -0800 Subject: compiler_wrapper: pre-buffer stdin properly. This CL makes our compiler wrapper pre-buffer all stdin when clang is expected to depend on it. Otherwise, clang might not read all of the stdin it's given, so future invocations of clang will only be handed partial stdin. BUG=chromium:1052532 TEST=emerged the kernel; sdk tryjob Change-Id: I6660e6333a1e8cf4649ef38de5c91d0b700fe1b5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2080852 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- compiler_wrapper/clang_syntax_flag.go | 14 +++++++------- compiler_wrapper/compile_with_fallback.go | 10 +++++++--- compiler_wrapper/compiler_wrapper.go | 27 +++++++++++++++++++++------ compiler_wrapper/disable_werror_flag.go | 11 ++++++++--- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/compiler_wrapper/clang_syntax_flag.go b/compiler_wrapper/clang_syntax_flag.go index 90d2327a..53240c7f 100644 --- a/compiler_wrapper/clang_syntax_flag.go +++ b/compiler_wrapper/clang_syntax_flag.go @@ -4,10 +4,6 @@ package main -import ( - "bytes" -) - func processClangSyntaxFlag(builder *commandBuilder) (clangSyntax bool) { builder.transformArgs(func(arg builderArg) string { if arg.value == "-clang-syntax" { @@ -26,12 +22,16 @@ func checkClangSyntax(env env, clangCmd *command, gccCmd *command) (exitCode int EnvUpdates: clangCmd.EnvUpdates, } - stdinBuffer := &bytes.Buffer{} + getStdin, err := prebufferStdinIfNeeded(env, clangCmd) + if err != nil { + return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err) + } + exitCode, err = wrapSubprocessErrorWithSourceLoc(clangSyntaxCmd, - env.run(clangSyntaxCmd, teeStdinIfNeeded(env, clangCmd, stdinBuffer), env.stdout(), env.stderr())) + env.run(clangSyntaxCmd, getStdin(), env.stdout(), env.stderr())) if err != nil || exitCode != 0 { return exitCode, err } return wrapSubprocessErrorWithSourceLoc(gccCmd, - env.run(gccCmd, bytes.NewReader(stdinBuffer.Bytes()), env.stdout(), env.stderr())) + env.run(gccCmd, getStdin(), env.stdout(), env.stderr())) } diff --git a/compiler_wrapper/compile_with_fallback.go b/compiler_wrapper/compile_with_fallback.go index a3b00bf1..8b4b5b4d 100644 --- a/compiler_wrapper/compile_with_fallback.go +++ b/compiler_wrapper/compile_with_fallback.go @@ -42,10 +42,14 @@ func compileWithFallback(env env, cfg *config, originalCmd *command, absWrapperP ) } - firstCmdStdinBuffer := &bytes.Buffer{} + getStdin, err := prebufferStdinIfNeeded(env, firstCmd) + if err != nil { + return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err) + } + firstCmdStderrBuffer := &bytes.Buffer{} firstCmdExitCode, err := wrapSubprocessErrorWithSourceLoc(firstCmd, - env.run(firstCmd, teeStdinIfNeeded(env, firstCmd, firstCmdStdinBuffer), env.stdout(), io.MultiWriter(env.stderr(), firstCmdStderrBuffer))) + env.run(firstCmd, getStdin(), env.stdout(), io.MultiWriter(env.stderr(), firstCmdStderrBuffer))) if err != nil { return 0, err } @@ -101,5 +105,5 @@ func compileWithFallback(env env, cfg *config, originalCmd *command, absWrapperP EnvUpdates: append(originalCmd.EnvUpdates, prebuiltCompilerPathKey+"="), } return wrapSubprocessErrorWithSourceLoc(fallbackCmd, - env.run(fallbackCmd, bytes.NewReader(firstCmdStdinBuffer.Bytes()), env.stdout(), env.stderr())) + env.run(fallbackCmd, getStdin(), env.stdout(), env.stderr())) } diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 11fd8199..cecde1c6 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -5,6 +5,7 @@ package main import ( + "bytes" "fmt" "io" "path/filepath" @@ -231,16 +232,30 @@ func printCompilerError(writer io.Writer, compilerErr error) { } } -func teeStdinIfNeeded(env env, inputCmd *command, dest io.Writer) io.Reader { - // We can't use io.TeeReader unconditionally, as that would block - // calls to exec.Cmd.Run(), even if the underlying process has already - // terminated. See https://github.com/golang/go/issues/7990 for more details. +func needStdinTee(inputCmd *command) bool { lastArg := "" for _, arg := range inputCmd.Args { if arg == "-" && lastArg != "-o" { - return io.TeeReader(env.stdin(), dest) + return true } lastArg = arg } - return env.stdin() + return false +} + +func prebufferStdinIfNeeded(env env, inputCmd *command) (getStdin func() io.Reader, err error) { + // We pre-buffer the entirety of stdin, since the compiler may exit mid-invocation with an + // error, which may leave stdin partially read. + if !needStdinTee(inputCmd) { + // This won't produce deterministic input to the compiler, but stdin shouldn't + // matter in this case, so... + return env.stdin, nil + } + + stdinBuffer := &bytes.Buffer{} + if _, err := stdinBuffer.ReadFrom(env.stdin()); err != nil { + return nil, wrapErrorwithSourceLocf(err, "prebuffering stdin") + } + + return func() io.Reader { return bytes.NewReader(stdinBuffer.Bytes()) }, nil } diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 0d68d560..114d8250 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -49,9 +49,14 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin if originalCmd.Path == "/usr/bin/ccache" { originalCmd.Path = "ccache" } - originalStdinBuffer := &bytes.Buffer{} + + getStdin, err := prebufferStdinIfNeeded(env, originalCmd) + if err != nil { + return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err) + } + originalExitCode, err := wrapSubprocessErrorWithSourceLoc(originalCmd, - env.run(originalCmd, teeStdinIfNeeded(env, originalCmd, originalStdinBuffer), originalStdoutBuffer, originalStderrBuffer)) + env.run(originalCmd, getStdin(), originalStdoutBuffer, originalStderrBuffer)) if err != nil { return 0, err } @@ -71,7 +76,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin EnvUpdates: originalCmd.EnvUpdates, } retryExitCode, err := wrapSubprocessErrorWithSourceLoc(retryCommand, - env.run(retryCommand, bytes.NewReader(originalStdinBuffer.Bytes()), retryStdoutBuffer, retryStderrBuffer)) + env.run(retryCommand, getStdin(), retryStdoutBuffer, retryStderrBuffer)) if err != nil { return 0, err } -- cgit v1.2.3 From 39d3c174860e4d68cca670338d069b99a9d1dde1 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Sun, 1 Mar 2020 10:57:35 -0800 Subject: toolchain-utils: Increase buildbot timeout to 15 hours. Our nightly performance tryjobs are consistently taking more than 12 hours to complete, and our script is timing out. This CL increases the timeout limit to 14 hours. BUG=chromium:1057137 TEST=None Change-Id: Ief6bdb51f35d62ed6ad405a3f7369e58411ce9a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2082174 Tested-by: Caroline Tice Commit-Queue: Caroline Tice Reviewed-by: George Burgess --- cros_utils/buildbot_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cros_utils/buildbot_utils.py b/cros_utils/buildbot_utils.py index 428433db..859e0134 100644 --- a/cros_utils/buildbot_utils.py +++ b/cros_utils/buildbot_utils.py @@ -21,8 +21,8 @@ INITIAL_SLEEP_TIME = 7200 # 2 hours; wait time before polling buildbot. SLEEP_TIME = 600 # 10 minutes; time between polling of buildbot. # Some of our slower builders (llvm-next) are taking more -# than 11 hours. So, increase this TIME_OUT to 12 hours. -TIME_OUT = 43200 # Decide the build is dead or will never finish +# than 12 hours. So, increase this TIME_OUT to 15 hours. +TIME_OUT = 15 * 60 * 60 # Decide the build is dead or will never finish class BuildbotTimeout(Exception): -- cgit v1.2.3 From c9ee93aee28e6f9316de4c409ef951ae2e5a2b6e Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 2 Mar 2020 07:21:21 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R82-12898.0-1582540816 to R82-12921.0-1583145749 Change-Id: I8fc4693009ae29e1fdd1a1194829e26dd0ef4f2b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2081889 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 24f40fe6..8abf6a23 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R82-12896.0-1582540320" }, "chromeos-kernel-4_19": { - "name": "R82-12898.0-1582540816" + "name": "R82-12921.0-1583145749" } } \ No newline at end of file -- cgit v1.2.3 From 53df50018b00bd52391a4186098219b29f3d21e6 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 2 Mar 2020 13:07:45 -0800 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R82-12901.0-1582540470 to R82-12901.0-1583145520 Change-Id: I6b632e7034d17a4c761f2f32e33de6b909583268 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2083657 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 8abf6a23..3473ec7b 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R82-12901.0-1582540582" }, "chromeos-kernel-3_18": { - "name": "R82-12901.0-1582540470" + "name": "R82-12901.0-1583145520" }, "chromeos-kernel-4_14": { "name": "R82-12896.0-1582540320" -- cgit v1.2.3 From a0c3e90bd174ee2cb16da7776bf6be63b7a0e1bf Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 2 Mar 2020 19:40:13 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R82-12901.0-1582540582 to R82-12901.0-1583145236 Change-Id: Ief76d73859162462453a11a9182c8ca229d13c0b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2083669 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 3473ec7b..2a8d0e42 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R82-12901.0-1582540582" + "name": "R82-12901.0-1583145236" }, "chromeos-kernel-3_18": { "name": "R82-12901.0-1583145520" -- cgit v1.2.3 From b743fb430b621c71ad7b871655455c078bf740bc Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 3 Mar 2020 02:03:55 -0800 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R82-12896.0-1582540320 to R82-12896.0-1583145666 Change-Id: Ia22437fb28048427f674b04109b54f0d81a988bc Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2084475 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 2a8d0e42..8e79407c 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R82-12901.0-1583145520" }, "chromeos-kernel-4_14": { - "name": "R82-12896.0-1582540320" + "name": "R82-12896.0-1583145666" }, "chromeos-kernel-4_19": { "name": "R82-12921.0-1583145749" -- cgit v1.2.3 From b74b4717a13bc4d55ead27ca834c2c2550385fb5 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Sat, 29 Feb 2020 07:52:14 -0800 Subject: compiler_wrapper: Stop disabling two warnings. Chrome OS code now is clean of following warnings: "-Wreorder-init-list" and "-return-stack-address" so stop disabling them. BUG=chromium:1057384 TEST=warnings tested by CL:1898670 Change-Id: I568cf93a9e836ba936ea976312e9a78b5c473157 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2081707 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- compiler_wrapper/config.go | 6 ------ .../testdata/cros_clang_host_golden/bisect.json | 6 ------ .../clang_ftrapv_maincc_target_specific.json | 18 ---------------- .../cros_clang_host_golden/clang_host_wrapper.json | 2 -- .../clang_maincc_target_specific.json | 18 ---------------- .../cros_clang_host_golden/clang_path.json | 24 ---------------------- .../clang_sanitizer_args.json | 16 --------------- .../clang_specific_args.json | 14 ------------- .../testdata/cros_clang_host_golden/clangtidy.json | 16 --------------- .../force_disable_werror.json | 10 --------- .../testdata/cros_hardened_golden/bisect.json | 6 ------ .../clang_ftrapv_maincc_target_specific.json | 18 ---------------- .../clang_maincc_target_specific.json | 18 ---------------- .../testdata/cros_hardened_golden/clang_path.json | 24 ---------------------- .../cros_hardened_golden/clang_sanitizer_args.json | 16 --------------- .../cros_hardened_golden/clang_specific_args.json | 14 ------------- .../clang_sysroot_wrapper_common.json | 12 ----------- .../testdata/cros_hardened_golden/clangtidy.json | 16 --------------- .../cros_hardened_golden/force_disable_werror.json | 10 --------- .../cros_hardened_golden/gcc_clang_syntax.json | 8 -------- .../cros_hardened_llvmnext_golden/bisect.json | 6 ------ .../cros_hardened_llvmnext_golden/clang_path.json | 24 ---------------------- .../cros_hardened_llvmnext_golden/clangtidy.json | 16 --------------- .../force_disable_werror.json | 10 --------- .../gcc_clang_syntax.json | 8 -------- .../cros_hardened_noccache_golden/bisect.json | 6 ------ .../cros_hardened_noccache_golden/clang_path.json | 24 ---------------------- .../cros_hardened_noccache_golden/clangtidy.json | 16 --------------- .../force_disable_werror.json | 10 --------- .../gcc_clang_syntax.json | 8 -------- .../testdata/cros_nonhardened_golden/bisect.json | 6 ------ .../clang_ftrapv_maincc_target_specific.json | 18 ---------------- .../clang_maincc_target_specific.json | 18 ---------------- .../cros_nonhardened_golden/clang_path.json | 24 ---------------------- .../clang_sanitizer_args.json | 16 --------------- .../clang_specific_args.json | 14 ------------- .../clang_sysroot_wrapper_common.json | 12 ----------- .../cros_nonhardened_golden/clangtidy.json | 16 --------------- .../force_disable_werror.json | 10 --------- .../cros_nonhardened_golden/gcc_clang_syntax.json | 8 -------- 40 files changed, 542 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 70c27f06..ed0b597b 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -128,9 +128,7 @@ var crosHardenedConfig = &config{ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", }, clangPostFlags: []string{ @@ -159,9 +157,7 @@ var crosNonHardenedConfig = &config{ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", }, clangPostFlags: []string{ @@ -191,9 +187,7 @@ var crosHostConfig = &config{ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", }, diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index 437cae52..e29d77e0 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -32,9 +32,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -81,9 +79,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -133,9 +129,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index b52f0c85..5036312d 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -23,9 +23,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -59,9 +57,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -95,9 +91,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -131,9 +125,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -167,9 +159,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -203,9 +193,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -239,9 +227,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -275,9 +261,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -311,9 +295,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 251694e8..6e897172 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -22,9 +22,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index e5a8afa7..ab3ce44c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -22,9 +22,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -57,9 +55,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -92,9 +88,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -127,9 +121,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -162,9 +154,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -197,9 +187,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -232,9 +220,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -267,9 +253,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -302,9 +286,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index cb175e05..b2de2870 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -22,9 +22,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -60,9 +58,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -98,9 +94,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -136,9 +130,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -181,9 +173,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-resource-dir=someResourceDir", @@ -231,9 +221,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-resource-dir=someResourceDir", @@ -281,9 +269,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-resource-dir=someResourceDir", @@ -321,9 +307,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -356,9 +340,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -391,9 +373,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -426,9 +406,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -464,9 +442,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 3df459fa..fff7d0fd 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -24,9 +24,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fsanitize=kernel-address", @@ -62,9 +60,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fsanitize=kernel-address", @@ -100,9 +96,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fsanitize=kernel-address", @@ -138,9 +132,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fsanitize=kernel-address", @@ -175,9 +167,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fno-experimental-new-pass-manager", @@ -214,9 +204,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fno-experimental-new-pass-manager", @@ -253,9 +241,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fsanitize=address", @@ -290,9 +276,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fprofile-instr-generate", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 40427b96..568ab6eb 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -33,9 +33,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -69,9 +67,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-Wno-#warnings", @@ -106,9 +102,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-Wno-error=uninitialized", @@ -143,9 +137,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-Wno-error=unused-variable", @@ -180,9 +172,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-Wno-unused-variable", @@ -217,9 +207,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-Wunused-variable", @@ -254,9 +242,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-someflag", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index eebda022..266771a1 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -38,9 +38,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -60,9 +58,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -112,9 +108,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -134,9 +128,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -188,9 +180,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -213,9 +203,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -268,9 +256,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -290,9 +276,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 2393e71a..f1de9518 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -25,9 +25,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -63,9 +61,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -87,9 +83,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -129,9 +123,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", @@ -153,9 +145,7 @@ "-Wno-deprecated-declarations", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "main.cc", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index a6ac7a19..aa9d3853 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -35,9 +35,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -98,9 +96,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -164,9 +160,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index f71551be..3e4cb4bc 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -26,9 +26,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -79,9 +77,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -132,9 +128,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -185,9 +179,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -238,9 +230,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -291,9 +281,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -344,9 +332,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -397,9 +383,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -450,9 +434,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 0dae3e82..8ba250d6 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -25,9 +25,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -76,9 +74,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -127,9 +123,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -178,9 +172,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -229,9 +221,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -280,9 +270,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -331,9 +319,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -382,9 +368,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -433,9 +417,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 6932398b..abf34e8b 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -25,9 +25,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -79,9 +77,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -133,9 +129,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -187,9 +181,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -248,9 +240,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -314,9 +304,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -374,9 +362,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -430,9 +416,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -481,9 +465,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -532,9 +514,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -583,9 +563,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -637,9 +615,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 398b6d5c..8ce50182 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -27,9 +27,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -80,9 +78,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -133,9 +129,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -186,9 +180,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -238,9 +230,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -292,9 +282,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -346,9 +334,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -398,9 +384,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index a1a05c22..eb12523b 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -36,9 +36,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -88,9 +86,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -141,9 +137,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -194,9 +188,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -247,9 +239,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -300,9 +290,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -353,9 +341,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 161bad6f..5ea9e300 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -60,9 +60,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -114,9 +112,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -160,9 +156,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", @@ -210,9 +204,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -261,9 +253,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-D_FORTIFY_SOURCE=2", "-mthumb", @@ -311,9 +301,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index d75eb527..b047adec 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -40,9 +40,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -71,9 +69,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -132,9 +128,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -164,9 +158,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -227,9 +219,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -262,9 +252,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -326,9 +314,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -358,9 +344,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index f796764a..87befee3 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -28,9 +28,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -82,9 +80,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -122,9 +118,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -180,9 +174,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -220,9 +212,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index b9582f6d..dd0a4f4d 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -25,9 +25,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -100,9 +98,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -169,9 +165,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -222,9 +216,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index a6ac7a19..aa9d3853 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -35,9 +35,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -98,9 +96,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -164,9 +160,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 6932398b..abf34e8b 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -25,9 +25,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -79,9 +77,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -133,9 +129,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -187,9 +181,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -248,9 +240,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -314,9 +304,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -374,9 +362,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -430,9 +416,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -481,9 +465,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -532,9 +514,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -583,9 +563,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -637,9 +615,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index d75eb527..b047adec 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -40,9 +40,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -71,9 +69,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -132,9 +128,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -164,9 +158,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -227,9 +219,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -262,9 +252,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -326,9 +314,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -358,9 +344,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index f796764a..87befee3 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -28,9 +28,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -82,9 +80,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -122,9 +118,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -180,9 +174,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -220,9 +212,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index b9582f6d..dd0a4f4d 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -25,9 +25,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -100,9 +98,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -169,9 +165,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -222,9 +216,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index ac9beb55..ca2eda8a 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -34,9 +34,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -92,9 +90,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -153,9 +149,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index 096d1aaf..73da7082 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -24,9 +24,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -71,9 +69,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -118,9 +114,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -165,9 +159,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -219,9 +211,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -279,9 +269,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -338,9 +326,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -387,9 +373,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -431,9 +415,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -475,9 +457,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -519,9 +499,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -566,9 +544,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index d75eb527..b047adec 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -40,9 +40,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -71,9 +69,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -132,9 +128,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -164,9 +158,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -227,9 +219,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -262,9 +252,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -326,9 +314,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -358,9 +344,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 078c05da..5ff4c32d 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -27,9 +27,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -74,9 +72,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -107,9 +103,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -158,9 +152,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -191,9 +183,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index 1bb779f0..179d660f 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -25,9 +25,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -94,9 +92,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -163,9 +159,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", @@ -216,9 +210,7 @@ "-Wno-section", "-static-libgcc", "-fuse-ld=lld", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fstack-protector-strong", "-fPIE", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 22ba14c0..77b99ce4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -32,9 +32,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -87,9 +85,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -145,9 +141,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index ae4a85c3..74c4e854 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -23,9 +23,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-ftrapv", "main.cc", @@ -68,9 +66,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-ftrapv", "main.cc", @@ -113,9 +109,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-ftrapv", "main.cc", @@ -158,9 +152,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "-ftrapv", @@ -204,9 +196,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-ftrapv", "main.cc", @@ -249,9 +239,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "-ftrapv", @@ -295,9 +283,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "-ftrapv", @@ -341,9 +327,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-ftrapv", "main.cc", @@ -386,9 +370,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "-ftrapv", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index bf91b019..69a8188f 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -22,9 +22,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -65,9 +63,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -108,9 +104,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -151,9 +145,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "main.cc", @@ -195,9 +187,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -238,9 +228,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "main.cc", @@ -282,9 +270,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "main.cc", @@ -326,9 +312,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -369,9 +353,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index 2f843529..51c4c05a 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -22,9 +22,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -68,9 +66,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -114,9 +110,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -160,9 +154,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -213,9 +205,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", @@ -271,9 +261,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", @@ -323,9 +311,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", @@ -371,9 +357,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -414,9 +398,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -457,9 +439,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -500,9 +480,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -546,9 +524,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 9cc90057..d48bebe6 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -24,9 +24,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fsanitize=kernel-address", "main.cc", @@ -70,9 +68,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fsanitize=kernel-address", "main.cc", @@ -116,9 +112,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fsanitize=kernel-address", "main.cc", @@ -162,9 +156,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fsanitize=kernel-address", "main.cc", @@ -207,9 +199,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", @@ -254,9 +244,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fno-experimental-new-pass-manager", "-fsanitize=address", @@ -301,9 +289,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fsanitize=address", "main.cc", @@ -346,9 +332,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fprofile-instr-generate", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index c1c78dc2..3a751ed0 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -33,9 +33,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -77,9 +75,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-#warnings", "main.cc", @@ -122,9 +118,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-error=uninitialized", "main.cc", @@ -167,9 +161,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-error=unused-variable", "main.cc", @@ -212,9 +204,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wno-unused-variable", "main.cc", @@ -257,9 +247,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-Wunused-variable", "main.cc", @@ -302,9 +290,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-someflag", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 46c0c832..ec0bed98 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -53,9 +53,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -99,9 +97,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -137,9 +133,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -181,9 +175,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-fno-stack-protector", "-D__KERNEL__", @@ -227,9 +219,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "-mthumb", "-fno-stack-protector", @@ -273,9 +263,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "--sysroot=xyz", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index 3a15badd..d8804e47 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -37,9 +37,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -60,9 +58,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -113,9 +109,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -137,9 +131,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -192,9 +184,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -219,9 +209,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -275,9 +263,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -299,9 +285,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 9787e8a6..dea0bbf0 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -25,9 +25,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -71,9 +69,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -103,9 +99,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -153,9 +147,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -185,9 +177,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index c8db8869..3587b6bf 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -22,9 +22,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -85,9 +83,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -142,9 +138,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", @@ -187,9 +181,7 @@ "-Wno-unknown-warning-option", "-Wno-section", "-static-libgcc", - "-Wno-reorder-init-list", "-Wno-final-dtor-non-final-class", - "-Wno-return-stack-address", "-Werror=poison-system-directories", "main.cc", "-Wno-implicit-int-float-conversion", -- cgit v1.2.3 From 30171e1539d5f63491365d6363a74791d7d0432e Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Wed, 4 Mar 2020 13:13:47 -0800 Subject: compiler-wrapper: Update clang-tidy flags to match Android. The flags that we use to generate clang tidy warnings have gotten out of sync with the flags the Android team uses. This CL fixes that. BUG=None TEST=None Change-Id: I766af02fee111e2e2233612e8352de1fb0802c3b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2088431 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- compiler_wrapper/clang_tidy_flag.go | 14 ++------------ .../testdata/cros_clang_host_golden/clangtidy.json | 8 ++++---- .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++---- .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++---- .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++---- .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++---- 6 files changed, 22 insertions(+), 32 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index 40a5bdbe..d8bf3cb2 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -38,23 +38,13 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, useClangTi func runClangTidy(env env, clangCmd *command, cSrcFile string) error { defaultTidyChecks := strings.Join([]string{ "*", - "google*", "-bugprone-narrowing-conversions", "-cppcoreguidelines-*", "-fuchsia-*", - "-google-build-using-namespace", - "-google-default-arguments", - "-google-explicit-constructor", "-google-readability*", - "-google-runtime-int", "-google-runtime-references", - "-hicpp-avoid-c-arrays", - "-hicpp-braces-around-statements", - "-hicpp-no-array-decay", - "-hicpp-signed-bitwise", - "-hicpp-uppercase-literal-suffix", - "-hicpp-use-auto", - "-llvm-namespace-comment", + "-hicpp-*", + "-llvm-*", "-misc-non-private-member-variables-in-classes", "-misc-unused-parameters", "-modernize-*", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 266771a1..43f02b45 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -26,7 +26,7 @@ "cmd": { "path": "/tmp/stable/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -96,7 +96,7 @@ "cmd": { "path": "/tmp/stable/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -168,7 +168,7 @@ "cmd": { "path": "/tmp/stable/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -244,7 +244,7 @@ "cmd": { "path": "/tmp/stable/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index b047adec..dcaed1e5 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -26,7 +26,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -114,7 +114,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -205,7 +205,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -300,7 +300,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b047adec..dcaed1e5 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -26,7 +26,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -114,7 +114,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -205,7 +205,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -300,7 +300,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index b047adec..dcaed1e5 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -26,7 +26,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -114,7 +114,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -205,7 +205,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -300,7 +300,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index d8804e47..cf30514c 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -26,7 +26,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -98,7 +98,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -173,7 +173,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", @@ -252,7 +252,7 @@ "cmd": { "path": "../../usr/bin/clang-tidy", "args": [ - "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", + "-checks=*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-readability*,-google-runtime-references,-hicpp-*,-llvm-*,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*", "main.cc", "--", "-resource-dir=someResourceDir", -- cgit v1.2.3 From c94f243ccfe39115e7a648ffbb6f7594b0d2e9ea Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 4 Mar 2020 17:32:44 -0800 Subject: wrapper: correctly Join() paths for Android filepath.Join(".", "foo") folds to "foo", which is fine as long as we're not Exec()ing the result of that Join(). If we do, we might execute a binary we weren't expecting to (e.g., one looked up from ${PATH}, rather than the one at ${CWD}). BUG=None TEST=`go test` Change-Id: Ifbd247c2e489c786d0a0d3342b5d1b61a7320796 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2088432 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/compile_with_fallback_test.go | 2 +- compiler_wrapper/compiler_wrapper.go | 30 ++++++++++++++++----- compiler_wrapper/compiler_wrapper_test.go | 37 ++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/compiler_wrapper/compile_with_fallback_test.go b/compiler_wrapper/compile_with_fallback_test.go index 4ea847f6..b36c3e18 100644 --- a/compiler_wrapper/compile_with_fallback_test.go +++ b/compiler_wrapper/compile_with_fallback_test.go @@ -229,7 +229,7 @@ func TestCompileWithFallbackLogCommandAndErrors(t *testing.T) { log := readCompileWithFallbackErrorLog(ctx) if log != `==================COMMAND:==================== -clang.real main.cc -fno-color-diagnostics -a -b +./clang.real main.cc -fno-color-diagnostics -a -b someerror ============================================== diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index cecde1c6..c8c3b6f9 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -38,6 +38,29 @@ func callCompiler(env env, cfg *config, inputCmd *command) int { return exitCode } +// Given the main builder path and the absolute path to our wrapper, returns the path to the +// 'real' compiler we should invoke. +func calculateAndroidWrapperPath(mainBuilderPath string, absWrapperPath string) string { + // FIXME: This combination of using the directory of the symlink but the basename of the + // link target is strange but is the logic that old android wrapper uses. Change this to use + // directory and basename either from the absWrapperPath or from the builder.path, but don't + // mix anymore. + + // We need to be careful here: path.Join Clean()s its result, so `./foo` will get + // transformed to `foo`, which isn't good since we're passing this path to exec. + basePart := filepath.Base(absWrapperPath) + ".real" + if !strings.ContainsRune(mainBuilderPath, filepath.Separator) { + return basePart + } + + dirPart := filepath.Dir(mainBuilderPath) + if cleanResult := filepath.Join(dirPart, basePart); strings.ContainsRune(cleanResult, filepath.Separator) { + return cleanResult + } + + return "." + string(filepath.Separator) + basePart +} + func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int, err error) { if err := checkUnsupportedFlags(inputCmd); err != nil { return 0, err @@ -52,12 +75,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int var compilerCmd *command clangSyntax := processClangSyntaxFlag(mainBuilder) if cfg.isAndroidWrapper { - // FIXME: This combination of using the directory of the symlink but the - // basename of the link target is strange but is the logic that old android - // wrapper uses. Change this to use directory and basename either from the - // absWrapperPath or from the builder.path, but don't mix anymore. - mainBuilder.path = filepath.Join(filepath.Dir(mainBuilder.path), filepath.Base(mainBuilder.absWrapperPath)+".real") - + mainBuilder.path = calculateAndroidWrapperPath(mainBuilder.path, mainBuilder.absWrapperPath) switch mainBuilder.target.compilerType { case clangType: mainBuilder.addPreUserArgs(mainBuilder.cfg.clangFlags...) diff --git a/compiler_wrapper/compiler_wrapper_test.go b/compiler_wrapper/compiler_wrapper_test.go index 67cbda92..a132ec5c 100644 --- a/compiler_wrapper/compiler_wrapper_test.go +++ b/compiler_wrapper/compiler_wrapper_test.go @@ -148,3 +148,40 @@ func TestPrintOtherCompilerError(t *testing.T) { t.Errorf("Unexpected string. Got: %s", buffer.String()) } } + +func TestCalculateAndroidWrapperPath(t *testing.T) { + t.Parallel() + + testCases := []struct { + mainBuilderPath string + absWrapperPath string + want string + }{ + { + mainBuilderPath: "/foo/bar", + absWrapperPath: "/bar/baz", + want: "/foo/baz.real", + }, + { + mainBuilderPath: "/my_wrapper", + absWrapperPath: "/bar/baz", + want: "/baz.real", + }, + { + mainBuilderPath: "no_seps", + absWrapperPath: "/bar/baz", + want: "baz.real", + }, + { + mainBuilderPath: "./a_sep", + absWrapperPath: "/bar/baz", + want: "./baz.real", + }, + } + + for _, tc := range testCases { + if result := calculateAndroidWrapperPath(tc.mainBuilderPath, tc.absWrapperPath); result != tc.want { + t.Errorf("Failed calculating the wrapper path with (%q, %q); got %q, want %q", tc.mainBuilderPath, tc.absWrapperPath, result, tc.want) + } + } +} -- cgit v1.2.3 From 49458a0af73d90313633c09d26f55b1a9f4172fa Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 4 Mar 2020 17:47:17 -0800 Subject: wrapper: make a test consider the caller's umask Apparently my umask on my glinux system is 027 outside of the chroot, so this test fails for me. Mask out any bits that can't be set due to our umask. BUG=None TEST=go test Change-Id: I683a1ab315479e277d8b9b1fd3b61c96818bc055 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2088433 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/compile_with_fallback_test.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/compile_with_fallback_test.go b/compiler_wrapper/compile_with_fallback_test.go index b36c3e18..a67f3eb9 100644 --- a/compiler_wrapper/compile_with_fallback_test.go +++ b/compiler_wrapper/compile_with_fallback_test.go @@ -12,9 +12,18 @@ import ( "os" "path/filepath" "strings" + "syscall" "testing" ) +// Save this off before goroutines start running, since this necessarily involves modifying the +// value for our umask, and that screams subtle race conditions. :) +var umaskAtStartup = func() os.FileMode { + umask := syscall.Umask(0) + syscall.Umask(umask) + return os.FileMode(umask) +}() + func TestOmitFallbackCompileForSuccessfulCall(t *testing.T) { withCompileWithFallbackTestContext(t, func(ctx *testContext) { ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangAndroid, mainCc))) @@ -239,7 +248,7 @@ someerror } entry, _ := os.Lstat(filepath.Join(ctx.tempDir, "fallback_stderr")) - if entry.Mode()&0777 != 0644 { + if entry.Mode()&0777 != 0644 & ^umaskAtStartup { t.Errorf("unexpected mode for logfile. Got: %#o", entry.Mode()) } }) -- cgit v1.2.3 From a0da3eb67ddccc47b87c0e64faed09368303b4c9 Mon Sep 17 00:00:00 2001 From: Zhizhou Yang Date: Wed, 4 Mar 2020 17:33:05 -0800 Subject: crosperf: do not include graphics_WebGLAquarium in all_toolchain_perf Currently due to crbug.com/1057755, graphics_WebGLAquarium will fail and take 1 hour to timeout. We do not want to waste 2 * 5 iterations which means 10 hours in our nightly test everyday waiting for it to fail. Will re-enable it when the bug is fixed. BUG=chromium:1057755 TEST=None Change-Id: I8da4d60b19e95d00be202f206d0d581bc426adf4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2088536 Reviewed-by: Manoj Gupta Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang --- crosperf/experiment_factory.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 3b1ed614..8839399a 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -288,20 +288,24 @@ class ExperimentFactory(object): perf_args, suite, show_all_results, retries, run_local, cwp_dso, weight) # Add non-telemetry toolchain-perf benchmarks: - benchmarks.append( - Benchmark( - 'graphics_WebGLAquarium', - 'graphics_WebGLAquarium', - '', - iterations, - rm_chroot_tmp, - perf_args, - 'crosperf_Wrapper', # Use client wrapper in Autotest - show_all_results, - retries, - run_local=False, - cwp_dso=cwp_dso, - weight=weight)) + + # TODO: crbug.com/1057755 Do not enable graphics_WebGLAquarium until + # it gets fixed. + # + # benchmarks.append( + # Benchmark( + # 'graphics_WebGLAquarium', + # 'graphics_WebGLAquarium', + # '', + # iterations, + # rm_chroot_tmp, + # perf_args, + # 'crosperf_Wrapper', # Use client wrapper in Autotest + # show_all_results, + # retries, + # run_local=False, + # cwp_dso=cwp_dso, + # weight=weight)) elif test_name == 'all_toolchain_perf_old': self.AppendBenchmarkSet( benchmarks, telemetry_toolchain_old_perf_tests, test_args, -- cgit v1.2.3 From 5167d91b3c2bf2b77aa60a11d91d00f2353865d1 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 9 Mar 2020 08:08:11 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R82-12921.0-1583145749 to R82-12946.0-1583746646 Change-Id: I3b5f44acfcd2d5aba48cf3da2a1c5b0d7b9f2554 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2095278 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 8e79407c..814bac9b 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R82-12896.0-1583145666" }, "chromeos-kernel-4_19": { - "name": "R82-12921.0-1583145749" + "name": "R82-12946.0-1583746646" } } \ No newline at end of file -- cgit v1.2.3 From c41f411496681ab94a35821b318587e85c1e0b23 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 9 Mar 2020 14:05:20 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R82-12901.0-1583145520 to R82-12946.0-1583746637 Change-Id: I763f9194e3b3b438d0195f9a8b11150786157e50 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2095686 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 814bac9b..db4212c3 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R82-12901.0-1583145236" }, "chromeos-kernel-3_18": { - "name": "R82-12901.0-1583145520" + "name": "R82-12946.0-1583746637" }, "chromeos-kernel-4_14": { "name": "R82-12896.0-1583145666" -- cgit v1.2.3 From 948e1d8c8325f79e4b4b363ecbab7d1b8fa98393 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 9 Mar 2020 18:02:19 -0700 Subject: llvm_tools: add a simple cherrypick script Given a SHA, this script will cherrypick the CL from LLVM, add it to the appropriate filesdir, and update PATCHES.json with an appropriate comment. No testing is included, since the code is pretty straightline, and it's expected to be used interactively. In other words, if it breaks, *shrug*. BUG=chromium:1057428 TEST=Ran on a few test-cases. Change-Id: I8cb361bb29ec239316847a781a1edfd7941c7551 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2095772 Tested-by: George Burgess Reviewed-by: Manoj Gupta --- llvm_tools/README.md | 17 +++++ llvm_tools/cherrypick_cl.py | 157 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100755 llvm_tools/cherrypick_cl.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 52bc263f..5d27a962 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -470,3 +470,20 @@ from get_llvm_hash import GetGoogle3LLVMVersion GetGoogle3LLVMVersion(stable=True) ``` + +### `cherrypick_cl.py` + +#### Usage + +This script updates sys-devel/llvm with an LLVM cherrypick of your choosing, and +copies the cherrypick into sys-devel/llvm/files/cherry. + +Usage: + +``` +./cherrypick_cl.py --sha 174c3eb69f19ff2d6a3eeae31d04afe77e62c021 +``` + +It tries to autodetect a lot of things (e.g., sys-devel/llvm's path, the +"start"/"end" revisions to set, etc.) For more information, please see the +`--help` diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py new file mode 100755 index 00000000..68a11a4c --- /dev/null +++ b/llvm_tools/cherrypick_cl.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +# pylint: disable=cros-logging-import + +"""Adds a cherrypick to LLVM's PATCHES.json.""" + +from __future__ import print_function + +import argparse +import json +import logging +import os +import shlex +import subprocess +import sys + +import get_llvm_hash +import git_llvm_rev + + +def add_cherrypick(patches_json_path: str, patches_dir: str, + relative_patches_dir: str, start_version: git_llvm_rev.Rev, + llvm_dir: str, rev: git_llvm_rev.Rev, sha: str): + with open(patches_json_path, encoding='utf-8') as f: + patches_json = json.load(f) + + file_name = sha + '.patch' + rel_patch_path = os.path.join(relative_patches_dir, file_name) + + for p in patches_json: + rel_path = p['rel_patch_path'] + if rel_path == rel_patch_path: + raise ValueError('Patch at %r already exists in PATCHES.json' % rel_path) + if sha in rel_path: + logging.warning( + 'Similarly-named patch already exists in PATCHES.json: %r', rel_path) + + with open(os.path.join(patches_dir, file_name), 'wb') as f: + subprocess.check_call(['git', 'show', sha], stdout=f, cwd=llvm_dir) + + commit_subject = subprocess.check_output( + ['git', 'log', '-n1', '--format=%s', sha], cwd=llvm_dir, encoding='utf-8') + + patches_json.append({ + 'comment': commit_subject.strip(), + 'rel_patch_path': rel_patch_path, + 'start_version': start_version.number, + 'end_version': rev.number, + }) + + temp_file = patches_json_path + '.tmp' + with open(temp_file, 'w', encoding='utf-8') as f: + json.dump(patches_json, f, indent=4, separators=(',', ': ')) + os.rename(temp_file, patches_json_path) + + +def parse_ebuild_for_assignment(llvm_path: str, var_name: str) -> str: + # '_pre' filters the LLVM 9.0 ebuild, which we never want to target, from + # this list. + candidates = [ + x for x in os.listdir(llvm_path) + if x.endswith('.ebuild') and x.startswith('llvm') and '_pre' in x + ] + + if not candidates: + raise ValueError('No LLVM ebuilds found under %r' % llvm_path) + + ebuild = os.path.join(llvm_path, max(candidates)) + with open(ebuild, encoding='utf-8') as f: + var_name_eq = var_name + '=' + for orig_line in f: + if not orig_line.startswith(var_name_eq): + continue + + # We shouldn't see much variety here, so do the simplest thing possible. + line = orig_line[len(var_name_eq):] + # Remove comments + line = line.split('#')[0] + # Remove quotes + line = shlex.split(line) + if len(line) != 1: + raise ValueError('Expected exactly one quoted value in %r' % orig_line) + return line[0].strip() + + raise ValueError('No %s= line found in %r' % (var_name, ebuild)) + + +# Resolves a git ref (or similar) to a LLVM SHA. +def resolve_llvm_ref(llvm_dir: str, sha: str) -> str: + return subprocess.check_output( + ['git', 'rev-parse', sha], + encoding='utf-8', + cwd=llvm_dir, + ).strip() + + +def main(): + logging.basicConfig( + format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', + level=logging.INFO, + ) + + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--llvm', help='Path to sys-devel/llvm. Will autodetect if not provided.') + parser.add_argument( + '--start_sha', + default='llvm-next', + help='LLVM SHA that the patch should start applying at. You can specify ' + '"llvm" or "llvm-next", as well. Defaults to %(default)s.') + parser.add_argument( + '--sha', help='LLVM git SHA. Either this or --sha must be specified.') + args = parser.parse_args() + + if args.llvm: + llvm = args.llvm + else: + my_dir = os.path.dirname(os.path.realpath(__file__)) + llvm = os.path.join( + my_dir, '../../../third_party/chromiumos-overlay/sys-devel/llvm') + if not os.path.isdir(llvm): + raise ValueError("Couldn't autodetect llvm") + + llvm = os.path.realpath(llvm) + + patches_json_path = os.path.join(llvm, 'files/PATCHES.json') + relative_patches_dir = 'cherry' + patches_dir = os.path.join(llvm, 'files', relative_patches_dir) + + llvm_config = git_llvm_rev.LLVMConfig( + remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) + + start_sha = args.start_sha + if start_sha == 'llvm': + start_sha = parse_ebuild_for_assignment(llvm, 'LLVM_HASH') + logging.info('Autodetected llvm hash == %s', start_sha) + elif start_sha == 'llvm-next': + start_sha = parse_ebuild_for_assignment(llvm, 'LLVM_NEXT_HASH') + logging.info('Autodetected llvm-next hash == %s', start_sha) + + start_sha = resolve_llvm_ref(llvm_config.dir, start_sha) + start_rev = git_llvm_rev.translate_sha_to_rev(llvm_config, start_sha) + sha = resolve_llvm_ref(llvm_config.dir, args.sha) + rev = git_llvm_rev.translate_sha_to_rev(llvm_config, sha) + + logging.info('Will cherrypick %s (%s), with start == %s', rev, sha, start_sha) + add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, + start_rev, llvm_config.dir, rev, sha) + logging.info('Complete.') + + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.3 From b2f63d06e948285655bc77e3b00d9a8a26f3e139 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 9 Mar 2020 20:16:38 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R82-12901.0-1583145236 to R82-12946.0-1583747127 Change-Id: I18efc07c11d821a9b09e16ba30ab9fa05d1871b9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2096138 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index db4212c3..79a90598 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R82-12901.0-1583145236" + "name": "R82-12946.0-1583747127" }, "chromeos-kernel-3_18": { "name": "R82-12946.0-1583746637" -- cgit v1.2.3 From c5ad73223208f2db2d8701592d11014bb3d79365 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 10 Mar 2020 01:52:23 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R82-12896.0-1583145666 to R82-12946.0-1583746805 Change-Id: Ia9351d7e0d7e6201b3c650438d929a4d2b3ad52d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2096248 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 79a90598..d718a3ff 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R82-12946.0-1583746637" }, "chromeos-kernel-4_14": { - "name": "R82-12896.0-1583145666" + "name": "R82-12946.0-1583746805" }, "chromeos-kernel-4_19": { "name": "R82-12946.0-1583746646" -- cgit v1.2.3 From fbb16169c0cb546b48c849ec06853018a2cf1e22 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 9 Mar 2020 16:01:52 -0700 Subject: wrapper: resolve /proc/self/cwd only when seen. This wrapper may run on Mac, which doesn't have /proc/self/cwd available. This also adds a test to be sure this selective Readlink() behavior continues to work. BUG=None TEST=SDK Tryjob; tests pass Change-Id: I6f6aaeb7ea45ab8b3d68299422f0594a689ecfcd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2095763 Reviewed-by: Manoj Gupta Reviewed-by: Tiancong Wang Tested-by: George Burgess --- compiler_wrapper/env.go | 26 ++++++++++------ compiler_wrapper/env_test.go | 74 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 10 deletions(-) diff --git a/compiler_wrapper/env.go b/compiler_wrapper/env.go index 56b3a913..2c48ad30 100644 --- a/compiler_wrapper/env.go +++ b/compiler_wrapper/env.go @@ -28,19 +28,25 @@ type processEnv struct { } func newProcessEnv() (env, error) { - // Note: We are not using os.getwd() as this sometimes uses the value of the PWD - // env variable. This has the following problems: - // - if PWD=/proc/self/cwd, os.getwd() will return "/proc/self/cwd", - // and we need to read the link to get the actual wd. However, we can't always - // do this as we are calculating - // the path to clang, and following a symlinked cwd first would make - // this calculation invalid. - // - the old python wrapper doesn't respect the PWD env variable either, so if we - // did we would fail the comparison to the old wrapper. - wd, err := os.Readlink("/proc/self/cwd") + wd, err := os.Getwd() if err != nil { return nil, wrapErrorwithSourceLocf(err, "failed to read working directory") } + + // Note: On Linux, Getwd may resolve to /proc/self/cwd, since it checks the PWD environment + // variable. We need to read the link to get the actual working directory. We can't always + // do this as we are calculating the path to clang, since following a symlinked cwd first + // would make this calculation invalid. + // + // FIXME(gbiv): It's not clear why always Readlink()ing here an issue. crrev.com/c/1764624 + // might provide helpful context? + if wd == "/proc/self/cwd" { + wd, err = os.Readlink(wd) + if err != nil { + return nil, wrapErrorwithSourceLocf(err, "resolving /proc/self/cwd") + } + } + return &processEnv{wd: wd}, nil } diff --git a/compiler_wrapper/env_test.go b/compiler_wrapper/env_test.go index 8580d4aa..e03d60a8 100644 --- a/compiler_wrapper/env_test.go +++ b/compiler_wrapper/env_test.go @@ -7,6 +7,7 @@ package main import ( "bytes" "flag" + "io/ioutil" "os" "os/exec" "path/filepath" @@ -163,6 +164,79 @@ func TestProcessEnvRunCmdDeleteEnv(t *testing.T) { }) } +func TestNewProcessEnvResolvesPwdAwayProperly(t *testing.T) { + // This test cannot be t.Parallel(), since it modifies our environment. + const envPwd = "PWD" + + oldEnvPwd := os.Getenv(envPwd) + defer func() { + if oldEnvPwd == "" { + os.Unsetenv(envPwd) + } else { + os.Setenv(envPwd, oldEnvPwd) + } + }() + + os.Unsetenv(envPwd) + + initialWd, err := os.Getwd() + if initialWd == "/proc/self/cwd" { + t.Fatalf("Working directory should never be %q when env is unset", initialWd) + } + + defer func() { + if err := os.Chdir(initialWd); err != nil { + t.Errorf("Changing back to %q failed: %v", initialWd, err) + } + }() + + tempDir, err := ioutil.TempDir("", "wrapper_env_test") + if err != nil { + t.Fatalf("Failed making temp dir: %v", err) + } + + // Nothing we can do if this breaks, unfortunately. + defer os.RemoveAll(tempDir) + + tempDirLink := tempDir + ".symlink" + if err := os.Symlink(tempDir, tempDirLink); err != nil { + t.Fatalf("Failed creating symlink %q => %q: %v", tempDirLink, tempDir, err) + } + + if err := os.Chdir(tempDir); err != nil { + t.Fatalf("Failed chdir'ing to tempdir at %q: %v", tempDirLink, err) + } + + if err := os.Setenv(envPwd, tempDirLink); err != nil { + t.Fatalf("Failed setting pwd to tempdir at %q: %v", tempDirLink, err) + } + + // Ensure that we don't resolve symlinks if they're present in our CWD somehow, except for + // /proc/self/cwd, which tells us nothing about where we are. + env, err := newProcessEnv() + if err != nil { + t.Fatalf("Failed making a new env: %v", err) + } + + if wd := env.getwd(); wd != tempDirLink { + t.Errorf("Environment setup had a wd of %q; wanted %q", wd, tempDirLink) + } + + const cwdLink = "/proc/self/cwd" + if err := os.Setenv(envPwd, cwdLink); err != nil { + t.Fatalf("Failed setting pwd to /proc/self/cwd: %v", err) + } + + env, err = newProcessEnv() + if err != nil { + t.Fatalf("Failed making a new env: %v", err) + } + + if wd := env.getwd(); wd != tempDir { + t.Errorf("Environment setup had a wd of %q; wanted %q", cwdLink, tempDir) + } +} + func execEcho(ctx *testContext, cmd *command) { env := &processEnv{} err := env.exec(createEcho(ctx, cmd)) -- cgit v1.2.3 From 99b3ff928b1c000980d331f30174614484095d37 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Fri, 13 Mar 2020 10:33:13 -0700 Subject: compiler_wrapper: Add "-fcommon" to clang invocations Clang ToT has switched to "-fno-common" as default to match GCC 10 which breaks many packages. Upgrading to ToT versions of many packages does not fix the problem as packages upstream have not fixed them yet. Pass "-fcommon" in compiler wrapper to workaround this for now. This does not change the current clang behavior which defaults to "-fcommon" so this is a NFC. BUG=chromium:1060413 TEST=packages build with ToT clang; NFC for current clang Change-Id: I5a40e502db201615f45a7e4720105bebef2f2b0a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2102905 Reviewed-by: George Burgess Commit-Queue: Manoj Gupta Tested-by: Manoj Gupta --- compiler_wrapper/config.go | 6 ++++++ compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 + .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_path.json | 12 ++++++++++++ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 +++++++ .../testdata/cros_clang_host_golden/clangtidy.json | 8 ++++++++ .../cros_clang_host_golden/force_disable_werror.json | 5 +++++ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../cros_hardened_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/clang_specific_args.json | 7 +++++++ .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../testdata/cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_noccache_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ 30 files changed, 203 insertions(+) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index ed0b597b..fc43a29b 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -118,10 +118,13 @@ var crosHardenedConfig = &config{ // Temporarily add no-unknown-warning-option to deal with old clang versions. // Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867 // Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742. + // Pass "-fcommon" till the packages are fixed to work with new clang default + // "-fno-common", crbug.com/1060413. clangFlags: []string{ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -178,10 +181,13 @@ var crosHostConfig = &config{ }, // Temporarily disable tautological-*-compare chromium:778316. // Temporarily add no-unknown-warning-option to deal with old clang versions. + // Pass "-fcommon" till the packages are fixed to work with new clang default + // "-fno-common", crbug.com/1060413. clangFlags: []string{ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index e29d77e0..606fecda 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -27,6 +27,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -74,6 +75,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -124,6 +126,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 5036312d..7f45584a 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -18,6 +18,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -52,6 +53,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -86,6 +88,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -120,6 +123,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -154,6 +158,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -188,6 +193,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -222,6 +228,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -256,6 +263,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -290,6 +298,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 6e897172..afb0329e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -17,6 +17,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index ab3ce44c..05b0ff96 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -17,6 +17,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -50,6 +51,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -83,6 +85,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -116,6 +119,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -149,6 +153,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -182,6 +187,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -215,6 +221,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -248,6 +255,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -281,6 +289,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index b2de2870..f7924a06 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -17,6 +17,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -53,6 +54,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -89,6 +91,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -125,6 +128,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -168,6 +172,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -216,6 +221,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -264,6 +270,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -302,6 +309,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -335,6 +343,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -368,6 +377,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -401,6 +411,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -437,6 +448,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index fff7d0fd..11ebc821 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -55,6 +56,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -91,6 +93,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -127,6 +130,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -162,6 +166,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -199,6 +204,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -236,6 +242,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -271,6 +278,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 568ab6eb..7a724c88 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -28,6 +28,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -62,6 +63,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -97,6 +99,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -132,6 +135,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -167,6 +171,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -202,6 +207,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -237,6 +243,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 43f02b45..b4cd44c2 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -33,6 +33,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -53,6 +54,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -103,6 +105,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -123,6 +126,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -175,6 +179,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -198,6 +203,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -251,6 +257,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -271,6 +278,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index f1de9518..66e58dc9 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -20,6 +20,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -56,6 +57,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -78,6 +80,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -118,6 +121,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", @@ -140,6 +144,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-fuse-ld=lld", "-Wno-unused-local-typedefs", "-Wno-deprecated-declarations", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index aa9d3853..b99fadc2 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -29,6 +29,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -90,6 +91,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -154,6 +156,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index 3e4cb4bc..e10ef91e 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -20,6 +20,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -71,6 +72,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -122,6 +124,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -173,6 +176,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -224,6 +228,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -275,6 +280,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -326,6 +332,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -377,6 +384,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -428,6 +436,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 8ba250d6..72649957 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -68,6 +69,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -117,6 +119,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -166,6 +169,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -215,6 +219,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -264,6 +269,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -313,6 +319,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -362,6 +369,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -411,6 +419,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index abf34e8b..9cfd24d7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -71,6 +72,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -123,6 +125,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -175,6 +178,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -234,6 +238,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -298,6 +303,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -356,6 +362,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -410,6 +417,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -459,6 +467,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -508,6 +517,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -557,6 +567,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -609,6 +620,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 8ce50182..5e8b21a9 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -21,6 +21,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -72,6 +73,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -123,6 +125,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -174,6 +177,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -224,6 +228,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -276,6 +281,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -328,6 +334,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -378,6 +385,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index eb12523b..ee7a73fe 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -30,6 +30,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -80,6 +81,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -131,6 +133,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -182,6 +185,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -233,6 +237,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -284,6 +289,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -335,6 +341,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 5ea9e300..485e6230 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -54,6 +54,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -106,6 +107,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -150,6 +152,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -198,6 +201,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -247,6 +251,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -295,6 +300,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index dcaed1e5..26abab87 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -34,6 +34,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -63,6 +64,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -122,6 +124,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -152,6 +155,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -213,6 +217,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -246,6 +251,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -308,6 +314,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -338,6 +345,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 87befee3..9559e199 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -22,6 +22,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -74,6 +75,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -112,6 +114,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -168,6 +171,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -206,6 +210,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index dd0a4f4d..3c4937b3 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -92,6 +93,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -159,6 +161,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -210,6 +213,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index aa9d3853..b99fadc2 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -29,6 +29,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -90,6 +91,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -154,6 +156,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index abf34e8b..9cfd24d7 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -71,6 +72,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -123,6 +125,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -175,6 +178,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -234,6 +238,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -298,6 +303,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -356,6 +362,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -410,6 +417,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -459,6 +467,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -508,6 +517,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -557,6 +567,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -609,6 +620,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index dcaed1e5..26abab87 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -34,6 +34,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -63,6 +64,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -122,6 +124,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -152,6 +155,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -213,6 +217,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -246,6 +251,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -308,6 +314,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -338,6 +345,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 87befee3..9559e199 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -22,6 +22,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -74,6 +75,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -112,6 +114,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -168,6 +171,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -206,6 +210,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index dd0a4f4d..3c4937b3 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -92,6 +93,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -159,6 +161,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -210,6 +213,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index ca2eda8a..e9bc3661 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -28,6 +28,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -84,6 +85,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -143,6 +145,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index 73da7082..c21d6198 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -18,6 +18,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -63,6 +64,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -108,6 +110,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -153,6 +156,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -205,6 +209,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -263,6 +268,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -320,6 +326,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -367,6 +374,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -409,6 +417,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -451,6 +460,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -493,6 +503,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -538,6 +549,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index dcaed1e5..26abab87 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -34,6 +34,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -63,6 +64,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -122,6 +124,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -152,6 +155,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -213,6 +217,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -246,6 +251,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -308,6 +314,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -338,6 +345,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 5ff4c32d..ce35f311 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -21,6 +21,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -66,6 +67,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -97,6 +99,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -146,6 +149,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -177,6 +181,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index 179d660f..f716dde3 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -19,6 +19,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -86,6 +87,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -153,6 +155,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", @@ -204,6 +207,7 @@ "-Qunused-arguments", "-grecord-gcc-switches", "-fno-addrsig", + "-fcommon", "-Wno-tautological-constant-compare", "-Wno-tautological-unsigned-enum-zero-compare", "-Wno-unknown-warning-option", -- cgit v1.2.3 From 28979264d4c945fcd9a3f09b385a7b67f051419f Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Fri, 13 Mar 2020 11:05:26 -0700 Subject: compiler_wrapper: Stop setting CCACHE_BASEDIR CCACHE_BASEDIR used to be set to sysroot so that ccache can reuse compilation results across different boards. This is not useful on builders and also less useful for board builds since we set closer to target CFLAGS now. It also breaks use of -fmacro-prefix-map option in clang/gcc. So rip it out and simplify the rest of code. BUG=chromium:983759 TEST=go test Change-Id: Ia99ca994c976ee1137c3d904a78f7e25931c70f6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2103170 Commit-Queue: Manoj Gupta Tested-by: Manoj Gupta Reviewed-by: George Burgess --- compiler_wrapper/ccache_flag.go | 22 +++--------------- compiler_wrapper/ccache_flag_test.go | 11 --------- compiler_wrapper/compiler_wrapper.go | 27 +++++++++------------- compiler_wrapper/sysroot_flag.go | 3 +-- .../testdata/cros_hardened_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 -------- .../clang_maincc_target_specific.json | 9 -------- .../testdata/cros_hardened_golden/clang_path.json | 11 --------- .../cros_hardened_golden/clang_sanitizer_args.json | 8 ------- .../cros_hardened_golden/clang_specific_args.json | 7 ------ .../clang_sysroot_wrapper_common.json | 5 ---- .../cros_hardened_golden/force_disable_werror.json | 5 ---- .../cros_hardened_golden/gcc_clang_syntax.json | 2 -- .../gcc_maincc_target_specific.json | 9 -------- .../testdata/cros_hardened_golden/gcc_path.json | 6 ----- .../cros_hardened_golden/gcc_sanitizer_args.json | 8 ------- .../cros_hardened_golden/gcc_specific_args.json | 3 --- .../gcc_sysroot_wrapper_common.json | 5 ---- .../cros_hardened_llvmnext_golden/bisect.json | 3 --- .../cros_hardened_llvmnext_golden/clang_path.json | 11 --------- .../force_disable_werror.json | 5 ---- .../gcc_clang_syntax.json | 2 -- .../cros_hardened_llvmnext_golden/gcc_path.json | 6 ----- .../testdata/cros_nonhardened_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 -------- .../clang_maincc_target_specific.json | 9 -------- .../cros_nonhardened_golden/clang_path.json | 11 --------- .../clang_sanitizer_args.json | 8 ------- .../clang_specific_args.json | 7 ------ .../clang_sysroot_wrapper_common.json | 5 ---- .../force_disable_werror.json | 5 ---- .../cros_nonhardened_golden/gcc_clang_syntax.json | 2 -- .../gcc_maincc_target_specific.json | 9 -------- .../testdata/cros_nonhardened_golden/gcc_path.json | 6 ----- .../gcc_sanitizer_args.json | 8 ------- .../cros_nonhardened_golden/gcc_specific_args.json | 3 --- .../gcc_sysroot_wrapper_common.json | 5 ---- 37 files changed, 15 insertions(+), 255 deletions(-) diff --git a/compiler_wrapper/ccache_flag.go b/compiler_wrapper/ccache_flag.go index 312d0f02..265b8fc2 100644 --- a/compiler_wrapper/ccache_flag.go +++ b/compiler_wrapper/ccache_flag.go @@ -4,7 +4,7 @@ package main -func processCCacheFlag(sysroot string, builder *commandBuilder) { +func processCCacheFlag(builder *commandBuilder) { // We should be able to share the objects across compilers as // the pre-processed output will differ. This allows boards // that share compiler flags (like x86 boards) to share caches. @@ -20,24 +20,8 @@ func processCCacheFlag(sysroot string, builder *commandBuilder) { }) if builder.cfg.useCCache && useCCache { - // We need to get ccache to make relative paths from within the - // sysroot. This lets us share cached files across boards (if - // all other things are equal of course like CFLAGS) as well as - // across versions. A quick test is something like: - // $ export CFLAGS='-O2 -g -pipe' CXXFLAGS='-O2 -g -pipe' - // $ BOARD=x86-alex - // $ cros_workon-$BOARD stop cros-disks - // $ emerge-$BOARD cros-disks - // $ cros_workon-$BOARD start cros-disks - // $ emerge-$BOARD cros-disks - // $ BOARD=amd64-generic - // $ cros_workon-$BOARD stop cros-disks - // $ emerge-$BOARD cros-disks - // $ cros_workon-$BOARD start cros-disks - // $ emerge-$BOARD cros-disks - // All of those will get cache hits (ignoring the first one - // which will seed the cache) due to this setting. - builder.updateEnv("CCACHE_BASEDIR=" + sysroot) + // Note: we used to also set CCACHE_BASEDIR but don't do it + // anymore for reasons outlined in crrev.com/c/2103170. if _, present := builder.env.getenv("CCACHE_DISABLE"); present { // Portage likes to set this for us when it has FEATURES=-ccache. // The other vars we need to setup manually because of tools like diff --git a/compiler_wrapper/ccache_flag_test.go b/compiler_wrapper/ccache_flag_test.go index 61abef06..03a74de8 100644 --- a/compiler_wrapper/ccache_flag_test.go +++ b/compiler_wrapper/ccache_flag_test.go @@ -54,17 +54,6 @@ func TestSetCacheDir(t *testing.T) { }) } -func TestSetCacheBaseDirToSysroot(t *testing.T) { - withCCacheEnabledTestContext(t, func(ctx *testContext) { - cmd := ctx.must(callCompiler(ctx, ctx.cfg, - ctx.newCommand(gccX86_64, mainCc))) - if err := verifyEnvUpdate(cmd, - "CCACHE_BASEDIR="+ctx.tempDir+"/usr/x86_64-cros-linux-gnu"); err != nil { - t.Error(err) - } - }) -} - func TestSetCacheUmask(t *testing.T) { withCCacheEnabledTestContext(t, func(ctx *testContext) { cmd := ctx.must(callCompiler(ctx, ctx.cfg, diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index c8c3b6f9..da9c8660 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -91,7 +91,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int } } else if mainBuilder.target.compilerType == clangType { cSrcFile, useClangTidy := processClangTidyFlags(mainBuilder) - sysroot, err := prepareClangCommand(mainBuilder) + err := prepareClangCommand(mainBuilder) if err != nil { return 0, err } @@ -103,7 +103,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int return 0, err } } - if err := processGomaCCacheFlags(sysroot, allowCCache, mainBuilder); err != nil { + if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil { return 0, err } compilerCmd = mainBuilder.build() @@ -162,35 +162,30 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int return wrapSubprocessErrorWithSourceLoc(compilerCmd, env.exec(compilerCmd)) } -func prepareClangCommand(builder *commandBuilder) (sysroot string, err error) { - sysroot = "" +func prepareClangCommand(builder *commandBuilder) (err error) { if !builder.cfg.isHostWrapper { - sysroot = processSysrootFlag(builder) + processSysrootFlag(builder) } builder.addPreUserArgs(builder.cfg.clangFlags...) builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) - if err := processClangFlags(builder); err != nil { - return "", err - } - return sysroot, nil + return processClangFlags(builder) } func calcClangCommand(allowCCache bool, builder *commandBuilder) (*command, error) { - sysroot, err := prepareClangCommand(builder) + err := prepareClangCommand(builder) if err != nil { return nil, err } - if err := processGomaCCacheFlags(sysroot, allowCCache, builder); err != nil { + if err := processGomaCCacheFlags(allowCCache, builder); err != nil { return nil, err } return builder.build(), nil } func calcGccCommand(builder *commandBuilder) (*command, error) { - sysroot := "" if !builder.cfg.isHostWrapper { - sysroot = processSysrootFlag(builder) + processSysrootFlag(builder) } builder.addPreUserArgs(builder.cfg.gccFlags...) if !builder.cfg.isHostWrapper { @@ -199,7 +194,7 @@ func calcGccCommand(builder *commandBuilder) (*command, error) { processGccFlags(builder) if !builder.cfg.isHostWrapper { allowCCache := true - if err := processGomaCCacheFlags(sysroot, allowCCache, builder); err != nil { + if err := processGomaCCacheFlags(allowCCache, builder); err != nil { return nil, err } } @@ -217,7 +212,7 @@ func calcCommonPreUserArgs(builder *commandBuilder) { processSanitizerFlags(builder) } -func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBuilder) (err error) { +func processGomaCCacheFlags(allowCCache bool, builder *commandBuilder) (err error) { gomaccUsed := false if !builder.cfg.isHostWrapper { gomaccUsed, err = processGomaCccFlags(builder) @@ -226,7 +221,7 @@ func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBu } } if !gomaccUsed && allowCCache { - processCCacheFlag(sysroot, builder) + processCCacheFlag(builder) } return nil } diff --git a/compiler_wrapper/sysroot_flag.go b/compiler_wrapper/sysroot_flag.go index 67625b3b..501fb20e 100644 --- a/compiler_wrapper/sysroot_flag.go +++ b/compiler_wrapper/sysroot_flag.go @@ -9,7 +9,7 @@ import ( "strings" ) -func processSysrootFlag(builder *commandBuilder) string { +func processSysrootFlag(builder *commandBuilder) { fromUser := false for _, arg := range builder.args { if arg.fromUser && strings.HasPrefix(arg.value, "--sysroot=") { @@ -28,5 +28,4 @@ func processSysrootFlag(builder *commandBuilder) string { if !fromUser { builder.addPreUserArgs("--sysroot=" + sysroot) } - return sysroot } diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index b99fadc2..5b95cdb7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -50,7 +50,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", @@ -112,7 +111,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", @@ -177,7 +175,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index e10ef91e..aa083d70 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -42,7 +42,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -94,7 +93,6 @@ "x86_64-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -146,7 +144,6 @@ "x86_64-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -198,7 +195,6 @@ "armv7m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -250,7 +246,6 @@ "armv7m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -302,7 +297,6 @@ "armv7m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -354,7 +348,6 @@ "armv8m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -406,7 +399,6 @@ "armv8m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -458,7 +450,6 @@ "armv8m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 72649957..257c0a05 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -40,7 +40,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -90,7 +89,6 @@ "x86_64-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -140,7 +138,6 @@ "x86_64-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -190,7 +187,6 @@ "armv7m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -240,7 +236,6 @@ "armv7m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -290,7 +285,6 @@ "armv7m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -340,7 +334,6 @@ "armv8m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -390,7 +383,6 @@ "armv8m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -440,7 +432,6 @@ "armv8m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 9cfd24d7..b9edc49d 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -40,7 +40,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -93,7 +92,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -146,7 +144,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -199,7 +196,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -261,7 +257,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -385,7 +380,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -438,7 +432,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -488,7 +481,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -538,7 +530,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -588,7 +579,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -641,7 +631,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 5e8b21a9..2d70dfbf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -42,7 +42,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -94,7 +93,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -146,7 +144,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -198,7 +195,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -250,7 +246,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -304,7 +299,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -355,7 +349,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -407,7 +400,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index ee7a73fe..50f71a6f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -51,7 +51,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -103,7 +102,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -155,7 +153,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -207,7 +204,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -259,7 +255,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -311,7 +306,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -363,7 +357,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 485e6230..b690e3ed 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -75,7 +75,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -171,7 +170,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -221,7 +219,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -271,7 +268,6 @@ "armv7a-cros-linux-gnueabihf" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7a-cros-linux-gnueabihf", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -322,7 +318,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 9559e199..61a63a37 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -43,7 +43,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -96,7 +95,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -137,7 +135,6 @@ "-Wno-error=poison-system-directories" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -192,7 +189,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -233,7 +229,6 @@ "-Wno-error=poison-system-directories" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 3c4937b3..a37725c0 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -61,7 +61,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -255,7 +254,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_maincc_target_specific.json index a037dd10..a45c95f1 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_maincc_target_specific.json @@ -28,7 +28,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -65,7 +64,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -102,7 +100,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -138,7 +135,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -174,7 +170,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -210,7 +205,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -246,7 +240,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -282,7 +275,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -318,7 +310,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_path.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_path.json index 24ad65ae..36bf222b 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_path.json @@ -28,7 +28,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -68,7 +67,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -108,7 +106,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -145,7 +142,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -182,7 +178,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -222,7 +217,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_sanitizer_args.json index a63aa25c..3807d8ab 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_sanitizer_args.json @@ -31,7 +31,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -71,7 +70,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -111,7 +109,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -151,7 +148,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -190,7 +186,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -231,7 +226,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -270,7 +264,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -309,7 +302,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_specific_args.json index b7a56ce4..e8a57b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_specific_args.json @@ -30,7 +30,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -69,7 +68,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -108,7 +106,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_sysroot_wrapper_common.json index c52003b7..d17707a8 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_sysroot_wrapper_common.json @@ -63,7 +63,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -134,7 +133,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -171,7 +169,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -207,7 +204,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7a-cros-linux-gnueabihf", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -245,7 +241,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index b99fadc2..5b95cdb7 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -50,7 +50,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", @@ -112,7 +111,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", @@ -177,7 +175,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 9cfd24d7..b9edc49d 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -40,7 +40,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -93,7 +92,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -146,7 +144,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -199,7 +196,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -261,7 +257,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -385,7 +380,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -438,7 +432,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -488,7 +481,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -538,7 +530,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -588,7 +579,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -641,7 +631,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 9559e199..61a63a37 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -43,7 +43,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -96,7 +95,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -137,7 +135,6 @@ "-Wno-error=poison-system-directories" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -192,7 +189,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -233,7 +229,6 @@ "-Wno-error=poison-system-directories" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 3c4937b3..a37725c0 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -61,7 +61,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -255,7 +254,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_path.json index 24ad65ae..36bf222b 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_path.json @@ -28,7 +28,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -68,7 +67,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -108,7 +106,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -145,7 +142,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -182,7 +178,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -222,7 +217,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 77b99ce4..ce83cd72 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -41,7 +41,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", @@ -94,7 +93,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", @@ -150,7 +148,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index 74c4e854..db5bea28 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -33,7 +33,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -76,7 +75,6 @@ "x86_64-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -119,7 +117,6 @@ "x86_64-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -163,7 +160,6 @@ "armv7m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -206,7 +202,6 @@ "armv7m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -250,7 +245,6 @@ "armv7m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -294,7 +288,6 @@ "armv8m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -337,7 +330,6 @@ "armv8m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -381,7 +373,6 @@ "armv8m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 69a8188f..8b5d7088 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -31,7 +31,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -72,7 +71,6 @@ "x86_64-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -113,7 +111,6 @@ "x86_64-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -155,7 +152,6 @@ "armv7m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -196,7 +192,6 @@ "armv7m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -238,7 +233,6 @@ "armv7m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -280,7 +274,6 @@ "armv8m-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -321,7 +314,6 @@ "armv8m-cros-eabi" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -363,7 +355,6 @@ "armv8m-cros-win-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index 51c4c05a..418f9d62 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -31,7 +31,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -75,7 +74,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -119,7 +117,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -163,7 +160,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -216,7 +212,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -322,7 +317,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -366,7 +360,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -407,7 +400,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -448,7 +440,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -489,7 +480,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -533,7 +523,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index d48bebe6..54a3268c 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -34,7 +34,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -78,7 +77,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -122,7 +120,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -166,7 +163,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -210,7 +206,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -256,7 +251,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -299,7 +293,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -342,7 +335,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index 3a751ed0..4a30d74e 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -42,7 +42,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -85,7 +84,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -128,7 +126,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -171,7 +168,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -214,7 +210,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -257,7 +252,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -300,7 +294,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index ec0bed98..8b5c8b90 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -62,7 +62,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -142,7 +141,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -186,7 +184,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -231,7 +228,6 @@ "armv7a-cros-linux-gnueabihf" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7a-cros-linux-gnueabihf", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -273,7 +269,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index dea0bbf0..7aad322f 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -34,7 +34,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -78,7 +77,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -110,7 +108,6 @@ "-Wno-error=poison-system-directories" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -156,7 +153,6 @@ "x86_64-cros-linux-gnu" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" @@ -188,7 +184,6 @@ "-Wno-error=poison-system-directories" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002", "CCACHE_CPP2=yes" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index 3587b6bf..76d81fa9 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -48,7 +48,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -207,7 +206,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_maincc_target_specific.json index 5efa5ed6..d11a7413 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_maincc_target_specific.json @@ -24,7 +24,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -57,7 +56,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -90,7 +88,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -123,7 +120,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -155,7 +151,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -188,7 +183,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -221,7 +215,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -253,7 +246,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-eabi", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -286,7 +278,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv8m-cros-win-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_path.json index 92a261ce..17483eee 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_path.json @@ -24,7 +24,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -60,7 +59,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -96,7 +94,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -129,7 +126,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -162,7 +158,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -198,7 +193,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sanitizer_args.json index 7091f608..4aacc51a 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sanitizer_args.json @@ -27,7 +27,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -63,7 +62,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -99,7 +97,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -135,7 +132,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -170,7 +166,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -207,7 +202,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -242,7 +236,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -277,7 +270,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_specific_args.json index 6e519429..c2f7cd07 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_specific_args.json @@ -26,7 +26,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -61,7 +60,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -96,7 +94,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sysroot_wrapper_common.json index a3cfc34a..be2df4cf 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_sysroot_wrapper_common.json @@ -55,7 +55,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -120,7 +119,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -156,7 +154,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -192,7 +189,6 @@ "main.cc" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/armv7a-cros-linux-gnueabihf", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] @@ -226,7 +222,6 @@ "-mno-movbe" ], "env_updates": [ - "CCACHE_BASEDIR=/usr/x86_64-cros-linux-gnu", "CCACHE_DIR=/var/cache/distfiles/ccache", "CCACHE_UMASK=002" ] -- cgit v1.2.3 From 69030f8051f8573a5985e0805a6dabfb55ef8faa Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 16 Mar 2020 08:01:57 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R82-12946.0-1583746646 to R82-12970.0-1584352180 Change-Id: I6ed33e98f02c8b9debc5a562249b75097b8035a7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2105064 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index d718a3ff..4978b862 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R82-12946.0-1583746805" }, "chromeos-kernel-4_19": { - "name": "R82-12946.0-1583746646" + "name": "R82-12970.0-1584352180" } } \ No newline at end of file -- cgit v1.2.3 From adf6f5ed64493e830070db407e7e9d17c2ecd6b6 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 16 Mar 2020 13:57:37 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R82-12946.0-1583746637 to R82-12970.0-1584351611 Change-Id: Ia17475919528dbee6a4f84b6ffd706a9126726ac Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2106365 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 4978b862..61d762b8 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R82-12946.0-1583747127" }, "chromeos-kernel-3_18": { - "name": "R82-12946.0-1583746637" + "name": "R82-12970.0-1584351611" }, "chromeos-kernel-4_14": { "name": "R82-12946.0-1583746805" -- cgit v1.2.3 From f0d6206eef70f187125d5e5bc2004ca97b38110b Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 16 Mar 2020 21:51:27 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R82-12946.0-1583747127 to R82-12970.0-1584351905 Change-Id: I89e21a474d7fecd6dbd687bfb3eca4353746b8a2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2105837 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 61d762b8..7d0204aa 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R82-12946.0-1583747127" + "name": "R82-12970.0-1584351905" }, "chromeos-kernel-3_18": { "name": "R82-12970.0-1584351611" -- cgit v1.2.3 From 6a5688fb60152eb4117345d97e65efbfe168f337 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 17 Mar 2020 02:16:20 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R82-12946.0-1583746805 to R82-12970.0-1584351383 Change-Id: I7cb9272395d46cdac7d1920a251860292ac9a959 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2105838 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 7d0204aa..2ff040e1 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R82-12970.0-1584351611" }, "chromeos-kernel-4_14": { - "name": "R82-12946.0-1583746805" + "name": "R82-12970.0-1584351383" }, "chromeos-kernel-4_19": { "name": "R82-12970.0-1584352180" -- cgit v1.2.3 From 66ee2dc562b90cfbf21c41d477e017dfd4ba9e12 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Wed, 18 Mar 2020 18:11:24 -0700 Subject: cros_utils: Do not sort keys by default Add a sort option NO_SORT in TableGenerator and make it default. Before we had rows in the table sorted by key-name which mixed up the test scores with cpufreq_*, cputemp_* data and made it hard to locate the most important information. The change solves the problem by leaving the keys in the original order which will guarantee that retval and cpu stats will always be at the end of the table. BUG=None TEST=rendering.desktop and loading.desktop show scores in the beginning of the table. Change-Id: I5b2d75db20549eae264db9ca809ccd634e743510 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2108572 Tested-by: Denis Nikitin Commit-Queue: Denis Nikitin Reviewed-by: Bob Haarman Reviewed-by: George Burgess --- cros_utils/tabulator.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 5029ceee..3d5f2aed 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -64,6 +64,7 @@ table: from __future__ import division from __future__ import print_function +import collections import getpass import math import sys @@ -112,21 +113,22 @@ class TableGenerator(object): SORT_BY_KEYS_DESC = 1 SORT_BY_VALUES = 2 SORT_BY_VALUES_DESC = 3 + NO_SORT = 4 MISSING_VALUE = 'x' - def __init__(self, d, l, sort=SORT_BY_KEYS, key_name='keys'): + def __init__(self, d, l, sort=NO_SORT, key_name='keys'): self._runs = d self._labels = l self._sort = sort self._key_name = key_name def _AggregateKeys(self): - keys = set([]) + keys = collections.OrderedDict() for run_list in self._runs: for run in run_list: - keys = keys.union(run.keys()) - return keys + keys.update(dict.fromkeys(run.keys())) + return list(keys.keys()) def _GetHighestValue(self, key): values = [] @@ -159,6 +161,8 @@ class TableGenerator(object): elif self._sort == self.SORT_BY_VALUES_DESC: # pylint: disable=unnecessary-lambda return sorted(keys, key=lambda x: self._GetHighestValue(x), reverse=True) + elif self._sort == self.NO_SORT: + return keys else: assert 0, 'Unimplemented sort %s' % self._sort -- cgit v1.2.3 From f2bba3e2c1071e9965d9702da29ea4fecd7c9040 Mon Sep 17 00:00:00 2001 From: Ed Baker Date: Thu, 3 Oct 2019 09:47:13 -0700 Subject: gcc: Add tigerlake to corei7 mapping GCC 4.9 does not support new architecture flags such as skylake or tigerlake. Bug=b:141363149 TEST=Verify unit tests pass cd ${chromium_os}/src/third_party/toolchain-utils export PYTHONPATH=$(readlink -f .):$PYTHONPATH ./run_tests_for.py ./compiler_wrapper/* Change-Id: I63a74cb8fa6d2b40a9890a1e61f5be7917321975 Signed-off-by: Edward Baker Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1959943 Reviewed-by: Manoj Gupta --- compiler_wrapper/gcc_flags.go | 1 + compiler_wrapper/gcc_flags_test.go | 1 + 2 files changed, 2 insertions(+) diff --git a/compiler_wrapper/gcc_flags.go b/compiler_wrapper/gcc_flags.go index 397bf82d..7141d14c 100644 --- a/compiler_wrapper/gcc_flags.go +++ b/compiler_wrapper/gcc_flags.go @@ -14,6 +14,7 @@ func processGccFlags(builder *commandBuilder) { "-march=goldmont": "-march=silvermont", "-march=goldmont-plus": "-march=silvermont", "-march=skylake": "-march=corei7", + "-march=tigerlake": "-march=corei7", "-march=tremont": "-march=silvermont", } diff --git a/compiler_wrapper/gcc_flags_test.go b/compiler_wrapper/gcc_flags_test.go index 8f8e9023..8de07a47 100644 --- a/compiler_wrapper/gcc_flags_test.go +++ b/compiler_wrapper/gcc_flags_test.go @@ -37,6 +37,7 @@ func TestConvertClangToGccFlags(t *testing.T) { {"-march=goldmont", "-march=silvermont"}, {"-march=goldmont-plus", "-march=silvermont"}, {"-march=skylake", "-march=corei7"}, + {"-march=tigerlake", "-march=corei7"}, {"-march=tremont", "-march=silvermont"}, } -- cgit v1.2.3 From 93535dbdbe90df6d6672b87225c83378532237a3 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 20 Mar 2020 13:04:51 -0700 Subject: llvm_tools: add git_llvm_rev notes. BUG=None TEST=None Change-Id: I64dd7b2e8a5e5210d3a53bb1de5c510072715aa4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2113170 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 5d27a962..07c11651 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -471,6 +471,23 @@ from get_llvm_hash import GetGoogle3LLVMVersion GetGoogle3LLVMVersion(stable=True) ``` +### `git_llvm_rev.py` + +This script is meant to synthesize LLVM revision numbers, and translate between +these synthesized numbers and git SHAs. Usage should be straightforward: + +``` +~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --rev r380000 +6f635f90929da9545dd696071a829a1a42f84b30 +~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha 6f635f90929da9545dd696071a829a1a42f84b30 +r380000 +~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha origin/master +r387778 +``` + +**Tip**: if you put a symlink called `git-llvm-rev` to this script somewhere on +your `$PATH`, you can also use it as `git llvm-rev`. + ### `cherrypick_cl.py` #### Usage -- cgit v1.2.3 From dcdc47ed84c12ce9ba74ee8b27e2159e5f0fc113 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 23 Mar 2020 08:57:40 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R82-12970.0-1584352180 to R83-12974.2-1584955870 Change-Id: I789daf34f26bf2d0c5dfe9ffb3e20f4aa06f1ed3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2115469 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 2ff040e1..d9b8479c 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R82-12970.0-1584351383" }, "chromeos-kernel-4_19": { - "name": "R82-12970.0-1584352180" + "name": "R83-12974.2-1584955870" } } \ No newline at end of file -- cgit v1.2.3 From 3cee0ae8d1ba3dea0c1b1f0cf2fec9f54c6be7a3 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 23 Mar 2020 14:27:21 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R82-12970.0-1584351611 to R83-12974.2-1584956046 Change-Id: I3469679573d8af2845f6e316ea1288f40113c357 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2115747 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index d9b8479c..b22c7047 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R82-12970.0-1584351905" }, "chromeos-kernel-3_18": { - "name": "R82-12970.0-1584351611" + "name": "R83-12974.2-1584956046" }, "chromeos-kernel-4_14": { "name": "R82-12970.0-1584351383" -- cgit v1.2.3 From ba4953f8f7305e50e5e6fcd1900e07e5b4239d50 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 23 Mar 2020 20:47:41 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R82-12970.0-1584351905 to R83-12974.2-1584955958 Change-Id: I98d0033eef0c499df5119c87fa9754d27a694f1f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2117393 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index b22c7047..dfef3e4e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R82-12970.0-1584351905" + "name": "R83-12974.2-1584955958" }, "chromeos-kernel-3_18": { "name": "R83-12974.2-1584956046" -- cgit v1.2.3 From a19433cc3c16a8bf1acef2b181091d4945765525 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 24 Mar 2020 02:25:50 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R82-12970.0-1584351383 to R83-12974.2-1584956174 Change-Id: I449f51204b2d1e09bd28ae025970a542d11ddbeb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2117772 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index dfef3e4e..8e811335 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R83-12974.2-1584956046" }, "chromeos-kernel-4_14": { - "name": "R82-12970.0-1584351383" + "name": "R83-12974.2-1584956174" }, "chromeos-kernel-4_19": { "name": "R83-12974.2-1584955870" -- cgit v1.2.3 From eb6e55f2b6f0f99aae9a4dbccf9970b1dfb5d1ca Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Tue, 24 Mar 2020 12:09:20 -0700 Subject: toolchain-utils: Generate more detailed logs for nightly tests By default the logs of nightly tests do not show details about how certain tests fail. This patch increases the logging level of nightly performance test to 'verbose' explicitly and it will help people debug errors. BUG=chromium:1063703 TEST=None Change-Id: I1f3889a9816fee1172291310964505a8f5468cb6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2117639 Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang Reviewed-by: George Burgess --- buildbot_test_toolchains.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 1609da49..95557344 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -241,7 +241,7 @@ class ToolchainComparator(object): crosperf = os.path.join(TOOLCHAIN_DIR, 'crosperf', 'crosperf') noschedv2_opts = '--noschedv2' if self._noschedv2 else '' command = ('{crosperf} --no_email=True --results_dir={r_dir} ' - '--intel_pstate=no_hwp ' + '--intel_pstate=no_hwp --logging_level=verbose ' '--json_report=True {noschedv2_opts} {exp_file}').format( crosperf=crosperf, r_dir=self._reports_dir, -- cgit v1.2.3 From 58c49f6faa951fdf0bb51e97f4ad3c77528b07c4 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Thu, 19 Mar 2020 21:24:59 -0700 Subject: llvm_tools: parameterize update_chromeos_llvm_next_hash.py Currently update_chromeos_llvm_next_hash.py can only be used to create CLs that update LLVM_NEXT_HASH in toolchain-related ebuild files, as it hardcoded which git hash to update. This change allows users to choose betwen LLVM_HASH and LLVM_NEXT_HASH, and therefore can be used to create LLVM roll CLs automatically. BUG=chromium:1057428 TEST=local tests Change-Id: Ifc0cadb7b618d4780aceb92dcc8891941c612ecb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2112250 Reviewed-by: Bob Haarman Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- llvm_tools/modify_a_tryjob.py | 3 +- llvm_tools/update_chromeos_llvm_next_hash.py | 154 +++++++------ .../update_chromeos_llvm_next_hash_unittest.py | 248 +++++++++++++-------- llvm_tools/update_packages_and_run_tryjobs.py | 9 +- 4 files changed, 249 insertions(+), 165 deletions(-) diff --git a/llvm_tools/modify_a_tryjob.py b/llvm_tools/modify_a_tryjob.py index 20ba3541..6ea5e893 100755 --- a/llvm_tools/modify_a_tryjob.py +++ b/llvm_tools/modify_a_tryjob.py @@ -118,7 +118,8 @@ def GetCLAfterUpdatingPackages(packages, git_hash, svn_version, chroot_path, """Updates the packages' LLVM_NEXT.""" change_list = update_chromeos_llvm_next_hash.UpdatePackages( - packages, git_hash, svn_version, chroot_path, patch_metadata_file, + packages, update_chromeos_llvm_next_hash.LLVMVariant.next, git_hash, + svn_version, chroot_path, patch_metadata_file, FailureModes.DISABLE_PATCHES, svn_option) print('\nSuccessfully updated packages to %d' % svn_version) diff --git a/llvm_tools/update_chromeos_llvm_next_hash.py b/llvm_tools/update_chromeos_llvm_next_hash.py index 955ebff7..ce87db94 100755 --- a/llvm_tools/update_chromeos_llvm_next_hash.py +++ b/llvm_tools/update_chromeos_llvm_next_hash.py @@ -4,26 +4,38 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -"""Updates LLVM_NEXT_HASH and uprevs the build of a package or packages. +"""Updates the LLVM hash and uprevs the build of the specified + +packages. For each package, a temporary repo is created and the changes are uploaded for review. """ from __future__ import print_function +from collections import namedtuple +from enum import Enum import argparse import os import re import subprocess -from collections import namedtuple from assert_not_in_chroot import VerifyOutsideChroot from failure_modes import FailureModes +from subprocess_helpers import ChrootRunCommand, ExecCommandAndCaptureOutput from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption, is_svn_option import get_llvm_hash import llvm_patch_management -from subprocess_helpers import ChrootRunCommand, ExecCommandAndCaptureOutput + + +# Specify which LLVM hash to update +class LLVMVariant(Enum): + """Represent the LLVM hash in an ebuild file to update.""" + + current = 'LLVM_HASH' + next = 'LLVM_NEXT_HASH' + # If set to `True`, then the contents of `stdout` after executing a command will # be displayed to the terminal. @@ -72,12 +84,21 @@ def GetCommandLineArgs(): help='display contents of a command to the terminal ' '(default: %(default)s)') + # Add argument for the LLVM hash to update + parser.add_argument( + '--is_llvm_next', + action='store_true', + help= + 'which llvm hash to update. Update LLVM_NEXT_HASH specified. ' \ + 'Otherwise, update LLVM_HASH' + ) + # Add argument for the LLVM version to use. parser.add_argument( '--llvm_version', type=is_svn_option, required=True, - help='which git hash of LLVM to find. Either a svn revision, or one ' + help='which git hash to use. Either a svn revision, or one ' 'of %s' % sorted(get_llvm_hash.KNOWN_HASH_SOURCES)) # Add argument for the mode of the patch management when handling patches. @@ -218,15 +239,16 @@ def GetEbuildPathsFromSymLinkPaths(symlinks): return resolved_paths -def UpdateBuildLLVMNextHash(ebuild_path, llvm_hash, llvm_version): - """Updates the build's LLVM_NEXT_HASH. +def UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version): + """Updates the LLVM hash in the ebuild. The build changes are staged for commit in the temporary repo. Args: ebuild_path: The absolute path to the ebuild. - llvm_hash: The new LLVM hash to use for LLVM_NEXT_HASH. - llvm_version: The revision number of 'llvm_hash'. + llvm_variant: Which LLVM hash to update. + git_hash: The new git hash. + svn_version: The SVN-style revision number of git_hash. Raises: ValueError: Invalid ebuild path provided or failed to stage the commit @@ -244,19 +266,13 @@ def UpdateBuildLLVMNextHash(ebuild_path, llvm_hash, llvm_version): if not os.path.isfile(ebuild_path): raise ValueError('Invalid ebuild path provided: %s' % ebuild_path) - # Create regex that finds 'LLVM_NEXT_HASH'. - llvm_regex = re.compile('^LLVM_NEXT_HASH=\"[a-z0-9]+\"') - temp_ebuild_file = '%s.temp' % ebuild_path - # A flag for whether 'LLVM_NEXT_HASH=...' was updated. - is_updated = False - with open(ebuild_path) as ebuild_file: # write updates to a temporary file in case of interrupts with open(temp_ebuild_file, 'w') as temp_file: - for cur_line in ReplaceLLVMNextHash(ebuild_file, is_updated, llvm_regex, - llvm_hash, llvm_version): + for cur_line in ReplaceLLVMHash(ebuild_file, llvm_variant, git_hash, + svn_version): temp_file.write(cur_line) os.rename(temp_ebuild_file, ebuild_path) @@ -270,30 +286,30 @@ def UpdateBuildLLVMNextHash(ebuild_path, llvm_hash, llvm_version): ExecCommandAndCaptureOutput(stage_changes_cmd, verbose=verbose) -def ReplaceLLVMNextHash(ebuild_lines, is_updated, llvm_regex, llvm_hash, - llvm_version): - """Iterates through the ebuild file and updates the 'LLVM_NEXT_HASH'. +def ReplaceLLVMHash(ebuild_lines, llvm_variant, git_hash, svn_version): + """Updates the LLVM git hash. Args: ebuild_lines: The contents of the ebuild file. - is_updated: A flag for whether 'LLVM_NEXT_HASH' was updated. - llvm_regex: The regex object for finding 'LLVM_NEXT_HASH=...' when - iterating through the contents of the file. - llvm_hash: The new LLVM hash to use for LLVM_NEXT_HASH. - llvm_version: The revision number of 'llvm_hash'. + llvm_variant: The LLVM hash to update. + git_hash: The new git hash. + svn_version: The SVN-style revision number of git_hash. """ - + is_updated = False + llvm_regex = re.compile('^' + re.escape(llvm_variant.value) + + '=\"[a-z0-9]+\"') for cur_line in ebuild_lines: if not is_updated and llvm_regex.search(cur_line): - # Update the LLVM next hash and revision number. - cur_line = 'LLVM_NEXT_HASH=\"%s\" # r%d\n' % (llvm_hash, llvm_version) + # Update the git hash and revision number. + cur_line = '%s=\"%s\" # r%d\n' % (llvm_variant.value, git_hash, + svn_version) is_updated = True yield cur_line - if not is_updated: # failed to update 'LLVM_NEXT_HASH' - raise ValueError('Failed to update the LLVM hash.') + if not is_updated: + raise ValueError('Failed to update %s' % llvm_variant.value) def UprevEbuild(symlink): @@ -333,12 +349,14 @@ def UprevEbuild(symlink): ExecCommandAndCaptureOutput(stage_symlink_cmd, verbose=verbose) -def _CreateRepo(path_to_repo_dir, llvm_hash): +def _CreateRepo(path_to_repo_dir, branch): """Creates a temporary repo for the changes. Args: path_to_repo_dir: The absolute path to the repo. - llvm_hash: The LLVM hash to use for the name of the repo. + branch: The name of the branch to create. + llvm_variant: The LLVM hash to update. + git_hash: The new git hash. Raises: ValueError: Failed to create a repo in that directory. @@ -358,18 +376,18 @@ def _CreateRepo(path_to_repo_dir, llvm_hash): ExecCommandAndCaptureOutput(reset_changes_cmd, verbose=verbose) - create_repo_cmd = ['repo', 'start', 'llvm-next-update-%s' % llvm_hash] + create_repo_cmd = ['repo', 'start', branch] ExecCommandAndCaptureOutput( create_repo_cmd, cwd=path_to_repo_dir, verbose=verbose) -def _DeleteRepo(path_to_repo_dir, llvm_hash): +def _DeleteRepo(path_to_repo_dir, branch): """Deletes the temporary repo. Args: path_to_repo_dir: The absolute path of the repo. - llvm_hash: The LLVM hash used for the name of the repo. + branch: The name of the branch to delete. Raises: ValueError: Failed to delete the repo in that directory. @@ -388,10 +406,7 @@ def _DeleteRepo(path_to_repo_dir, llvm_hash): ExecCommandAndCaptureOutput(reset_head_cmd, verbose=verbose) - delete_repo_cmd = [ - 'git', '-C', path_to_repo_dir, 'branch', '-D', - 'llvm-next-update-%s' % llvm_hash - ] + delete_repo_cmd = ['git', '-C', path_to_repo_dir, 'branch', '-D', branch] ExecCommandAndCaptureOutput(delete_repo_cmd, verbose=verbose) @@ -424,12 +439,12 @@ def GetGerritRepoUploadContents(repo_upload_contents): return CommitContents(url=found_url.group(0), cl_number=cl_number) -def UploadChanges(path_to_repo_dir, llvm_hash, commit_messages): +def UploadChanges(path_to_repo_dir, branch, commit_messages): """Uploads the changes (updating LLVM next hash and uprev symlink) for review. Args: path_to_repo_dir: The absolute path to the repo where changes were made. - llvm_hash: The LLVM hash used for the name of the repo. + branch: The name of the branch to upload. commit_messages: A string of commit message(s) (i.e. '-m [message]' of the changes made. @@ -455,8 +470,7 @@ def UploadChanges(path_to_repo_dir, llvm_hash, commit_messages): # Upload the changes for review. upload_change_cmd = ( - 'yes | repo upload --wip --ne --br=llvm-next-update-%s --no-verify' % - llvm_hash) + 'yes | repo upload --wip --ne --br=%s --no-verify' % branch) # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. @@ -598,25 +612,26 @@ def StagePackagesPatchResultsForCommit(package_info_dict, commit_messages): return commit_messages -def UpdatePackages(packages, llvm_hash, llvm_version, chroot_path, - patch_metadata_file, mode, svn_option): - """Updates the package's LLVM_NEXT_HASH and uprevs the ebuild. +def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, + patch_metadata_file, mode, git_hash_source): + """Updates an LLVM hash and uprevs the ebuild of the packages. A temporary repo is created for the changes. The changes are then uploaded for review. Args: packages: A list of all the packages that are going to be updated. - llvm_hash: The LLVM hash to use for 'LLVM_NEXT_HASH'. - llvm_version: The LLVM version of the 'llvm_hash'. + llvm_variant: The LLVM hash to update. + git_hash: The new git hash. + svn_version: The SVN-style revision number of git_hash. chroot_path: The absolute path to the chroot. patch_metadata_file: The name of the .json file in '$FILESDIR/' that has the patches and its metadata. mode: The mode of the patch manager when handling an applicable patch that failed to apply. Ex: 'FailureModes.FAIL' - svn_option: The git hash to use based off of the svn option. - Ex: 'google3', 'tot', or such as 365123 + git_hash_source: The source of which git hash to use based off of. + Ex: 'google3', 'tot', or such as 365123 Returns: A nametuple that has two (key, value) pairs, where the first pair is the @@ -632,15 +647,20 @@ def UpdatePackages(packages, llvm_hash, llvm_version, chroot_path, repo_path = os.path.dirname(next(iter(paths_dict.values()))) - _CreateRepo(repo_path, llvm_hash) + branch = 'update-' + llvm_variant.value + '-' + git_hash + + _CreateRepo(repo_path, branch) try: - if svn_option in get_llvm_hash.KNOWN_HASH_SOURCES: - commit_message_header = ('llvm-next/%s: upgrade to %s (r%d)' % - (svn_option, llvm_hash, llvm_version)) + commit_message_header = 'llvm' + if llvm_variant == LLVMVariant.next: + commit_message_header = 'llvm-next' + if git_hash_source in get_llvm_hash.KNOWN_HASH_SOURCES: + commit_message_header += ( + '/%s: upgrade to %s (r%d)' % (git_hash_source, git_hash, svn_version)) else: - commit_message_header = ( - 'llvm-next: upgrade to %s (r%d)' % (llvm_hash, llvm_version)) + commit_message_header += ( + ': upgrade to %s (r%d)' % (git_hash, svn_version)) commit_messages = ['-m %s' % commit_message_header] @@ -652,13 +672,13 @@ def UpdatePackages(packages, llvm_hash, llvm_version, chroot_path, # Iterate through the dictionary. # # For each iteration: - # 1) Update the ebuild's LLVM_NEXT_HASH. + # 1) Update the ebuild's LLVM hash. # 2) Uprev the ebuild (symlink). # 3) Add the modified package to the commit message. for symlink_path, ebuild_path in paths_dict.items(): path_to_ebuild_dir = os.path.dirname(ebuild_path) - UpdateBuildLLVMNextHash(ebuild_path, llvm_hash, llvm_version) + UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version) UprevEbuild(symlink_path) @@ -673,16 +693,16 @@ def UpdatePackages(packages, llvm_hash, llvm_version, chroot_path, # Handle the patches for each package. package_info_dict = llvm_patch_management.UpdatePackagesPatchMetadataFile( - chroot_path, llvm_version, patch_metadata_file, packages, mode) + chroot_path, svn_version, patch_metadata_file, packages, mode) # Update the commit message if changes were made to a package's patches. commit_messages = StagePackagesPatchResultsForCommit( package_info_dict, commit_messages) - change_list = UploadChanges(repo_path, llvm_hash, commit_messages) + change_list = UploadChanges(repo_path, branch, commit_messages) finally: - _DeleteRepo(repo_path, llvm_hash) + _DeleteRepo(repo_path, branch) return change_list @@ -698,16 +718,20 @@ def main(): args_output = GetCommandLineArgs() - svn_option = args_output.llvm_version + llvm_variant = LLVMVariant.current + if args_output.is_llvm_next: + llvm_variant = LLVMVariant.next + + git_hash_source = args_output.llvm_version - llvm_hash, llvm_version = GetLLVMHashAndVersionFromSVNOption(svn_option) + git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(git_hash_source) change_list = UpdatePackages( - args_output.update_packages, llvm_hash, llvm_version, + args_output.update_packages, llvm_variant, git_hash, svn_version, args_output.chroot_path, args_output.patch_metadata_file, - FailureModes(args_output.failure_mode), svn_option) + FailureModes(args_output.failure_mode), git_hash_source) - print('Successfully updated packages to %d' % llvm_version) + print('Successfully updated packages to %s (%d)' % (git_hash, svn_version)) print('Gerrit URL: %s' % change_list.url) print('Change list number: %d' % change_list.cl_number) diff --git a/llvm_tools/update_chromeos_llvm_next_hash_unittest.py b/llvm_tools/update_chromeos_llvm_next_hash_unittest.py index 4e39bafa..033d602e 100755 --- a/llvm_tools/update_chromeos_llvm_next_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_next_hash_unittest.py @@ -4,7 +4,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -"""Unit tests for updating the LLVM next hash.""" +"""Unit tests for updating LLVM hashes.""" from __future__ import print_function @@ -23,8 +23,8 @@ import update_chromeos_llvm_next_hash # pylint: disable=protected-access -class UpdateLLVMNextHashTest(unittest.TestCase): - """Test class for updating 'LLVM_NEXT_HASH' of packages.""" +class UpdateLLVMHashTest(unittest.TestCase): + """Test class for updating LLVM hashes of packages.""" @mock.patch.object(update_chromeos_llvm_next_hash, 'ChrootRunCommand') def testSucceedsToGetChrootPathForPackage(self, mock_chroot_command): @@ -108,22 +108,50 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Simulate behavior of 'os.path.isfile()' when the ebuild path to a package # does not exist. @mock.patch.object(os.path, 'isfile', return_value=False) - def testFailedToUpdateLLVMNextHashForInvalidEbuildPath(self, mock_isfile): + def testFailedToUpdateLLVMHashForInvalidEbuildPath(self, mock_isfile): ebuild_path = '/some/path/to/package.ebuild' - - llvm_hash = 'a123testhash1' - llvm_revision = 1000 + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.current + git_hash = 'a123testhash1' + svn_version = 1000 # Verify the exception is raised when the ebuild path does not exist. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UpdateBuildLLVMNextHash( - ebuild_path, llvm_hash, llvm_revision) + update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( + ebuild_path, llvm_variant, git_hash, svn_version) self.assertEqual( str(err.exception), 'Invalid ebuild path provided: %s' % ebuild_path) mock_isfile.assert_called_once() + # Simulate 'os.path.isfile' behavior on a valid ebuild path. + @mock.patch.object(os.path, 'isfile', return_value=True) + def testFailedToUpdateLLVMHash(self, mock_isfile): + # Create a temporary file to simulate an ebuild file of a package. + with CreateTemporaryJsonFile() as ebuild_file: + with open(ebuild_file, 'w') as f: + f.write('\n'.join([ + 'First line in the ebuild', 'Second line in the ebuild', + 'Last line in the ebuild' + ])) + + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.current + git_hash = 'a123testhash1' + svn_version = 1000 + + # Verify the exception is raised when the ebuild file does not have + # 'LLVM_HASH'. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( + ebuild_file, llvm_variant, git_hash, svn_version) + + self.assertEqual( + str(err.exception), ('Failed to update %s.', 'LLVM_HASH')) + + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next + + self.assertEqual(mock_isfile.call_count, 2) + # Simulate 'os.path.isfile' behavior on a valid ebuild path. @mock.patch.object(os.path, 'isfile', return_value=True) def testFailedToUpdateLLVMNextHash(self, mock_isfile): @@ -135,19 +163,64 @@ class UpdateLLVMNextHashTest(unittest.TestCase): 'Last line in the ebuild' ])) - llvm_hash = 'a123testhash1' - llvm_revision = 1000 + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next + git_hash = 'a123testhash1' + svn_version = 1000 # Verify the exception is raised when the ebuild file does not have # 'LLVM_NEXT_HASH'. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UpdateBuildLLVMNextHash( - ebuild_file, llvm_hash, llvm_revision) + update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( + ebuild_file, llvm_variant, git_hash, svn_version) + + self.assertEqual( + str(err.exception), ('Failed to update %s.', 'LLVM_NEXT_HASH')) + + self.assertEqual(mock_isfile.call_count, 2) + + # Simulate 'os.path.isfile' behavior on a valid ebuild path. + @mock.patch.object(os.path, 'isfile', return_value=True) + # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the + # ebuild file for commit. + @mock.patch.object( + update_chromeos_llvm_next_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyStageTheEbuildForCommitForLLVMHashUpdate( + self, mock_stage_commit_command, mock_isfile): + + # Create a temporary file to simulate an ebuild file of a package. + with CreateTemporaryJsonFile() as ebuild_file: + # Updates LLVM_HASH to 'git_hash' and revision to + # 'svn_version'. + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.current + git_hash = 'a123testhash1' + svn_version = 1000 - self.assertEqual(str(err.exception), 'Failed to update the LLVM hash.') + with open(ebuild_file, 'w') as f: + f.write('\n'.join([ + 'First line in the ebuild', 'Second line in the ebuild', + 'LLVM_HASH=\"a12b34c56d78e90\" # r500', 'Last line in the ebuild' + ])) + + update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( + ebuild_file, llvm_variant, git_hash, svn_version) + + expected_file_contents = [ + 'First line in the ebuild\n', 'Second line in the ebuild\n', + 'LLVM_HASH=\"a123testhash1\" # r1000\n', 'Last line in the ebuild' + ] + + # Verify the new file contents of the ebuild file match the expected file + # contents. + with open(ebuild_file) as new_file: + file_contents_as_a_list = [cur_line for cur_line in new_file] + self.assertListEqual(file_contents_as_a_list, expected_file_contents) self.assertEqual(mock_isfile.call_count, 2) + mock_stage_commit_command.assert_called_once() + # Simulate 'os.path.isfile' behavior on a valid ebuild path. @mock.patch.object(os.path, 'isfile', return_value=True) # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the @@ -161,6 +234,12 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Create a temporary file to simulate an ebuild file of a package. with CreateTemporaryJsonFile() as ebuild_file: + # Updates LLVM_NEXT_HASH to 'git_hash' and revision to + # 'svn_version'. + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next + git_hash = 'a123testhash1' + svn_version = 1000 + with open(ebuild_file, 'w') as f: f.write('\n'.join([ 'First line in the ebuild', 'Second line in the ebuild', @@ -168,13 +247,8 @@ class UpdateLLVMNextHashTest(unittest.TestCase): 'Last line in the ebuild' ])) - # Updates the ebuild's git hash to 'llvm_hash' and revision to - # 'llvm_revision'. - llvm_hash = 'a123testhash1' - llvm_revision = 1000 - - update_chromeos_llvm_next_hash.UpdateBuildLLVMNextHash( - ebuild_file, llvm_hash, llvm_revision) + update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( + ebuild_file, llvm_variant, git_hash, svn_version) expected_file_contents = [ 'First line in the ebuild\n', 'Second line in the ebuild\n', @@ -250,13 +324,11 @@ class UpdateLLVMNextHashTest(unittest.TestCase): @mock.patch.object(os.path, 'isdir', return_value=False) def testFailedToCreateRepoForInvalidDirectoryPath(self, mock_isdir): path_to_repo = '/path/to/repo' - - # The name to use for the repo name. - llvm_hash = 'a123testhash1' + branch = 'update-LLVM_NEXT_HASH-a123testhash1' # Verify the exception is raised when provided an invalid directory path. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash._CreateRepo(path_to_repo, llvm_hash) + update_chromeos_llvm_next_hash._CreateRepo(path_to_repo, branch) self.assertEqual( str(err.exception), @@ -274,11 +346,9 @@ class UpdateLLVMNextHashTest(unittest.TestCase): return_value=None) def testSuccessfullyCreatedRepo(self, mock_command_output, mock_isdir): path_to_repo = '/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash1' - # The name to use for the repo name. - llvm_hash = 'a123testhash1' - - update_chromeos_llvm_next_hash._CreateRepo(path_to_repo, llvm_hash) + update_chromeos_llvm_next_hash._CreateRepo(path_to_repo, branch) mock_isdir.assert_called_once_with(path_to_repo) @@ -289,13 +359,11 @@ class UpdateLLVMNextHashTest(unittest.TestCase): @mock.patch.object(os.path, 'isdir', return_value=False) def testFailedToDeleteRepoForInvalidDirectoryPath(self, mock_isdir): path_to_repo = '/some/path/to/repo' - - # The name to use for the repo name. - llvm_hash = 'a123testhash2' + branch = 'update-LLVM_NEXT_HASH-a123testhash2' # Verify the exception is raised on an invalid repo path. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash._DeleteRepo(path_to_repo, llvm_hash) + update_chromeos_llvm_next_hash._DeleteRepo(path_to_repo, branch) self.assertEqual( str(err.exception), @@ -313,11 +381,9 @@ class UpdateLLVMNextHashTest(unittest.TestCase): return_value=None) def testSuccessfullyDeletedRepo(self, mock_command_output, mock_isdir): path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash2' - # The name of the repo to be deleted. - llvm_hash = 'a123testhash2' - - update_chromeos_llvm_next_hash._DeleteRepo(path_to_repo, llvm_hash) + update_chromeos_llvm_next_hash._DeleteRepo(path_to_repo, branch) mock_isdir.assert_called_once_with(path_to_repo) @@ -354,16 +420,12 @@ class UpdateLLVMNextHashTest(unittest.TestCase): @mock.patch.object(os.path, 'isdir', return_value=False) def testFailedToUploadChangesForInvalidPathDirectory(self, mock_isdir): path_to_repo = '/some/path/to/repo' - - # The name of repo to upload for review. - llvm_hash = 'a123testhash3' - - # Commit messages to add to the CL. + branch = 'update-LLVM_NEXT_HASH-a123testhash3' commit_messages = ['-m Test message'] # Verify exception is raised when on an invalid repo path. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UploadChanges(path_to_repo, llvm_hash, + update_chromeos_llvm_next_hash.UploadChanges(path_to_repo, branch, commit_messages) self.assertEqual( @@ -395,16 +457,12 @@ class UpdateLLVMNextHashTest(unittest.TestCase): mock_repo_upload.return_value.returncode = 1 path_to_repo = '/some/path/to/repo' - - # The name of repo to upload for review. - llvm_hash = 'a123testhash3' - - # Commit messages to add to the CL. + branch = 'update-LLVM_NEXT_HASH-a123testhash3' commit_messages = ['-m Test message'] # Verify exception is raised when failed to upload the changes for review. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UploadChanges(path_to_repo, llvm_hash, + update_chromeos_llvm_next_hash.UploadChanges(path_to_repo, branch, commit_messages) self.assertEqual(str(err.exception), 'Failed to upload changes for review') @@ -443,15 +501,11 @@ class UpdateLLVMNextHashTest(unittest.TestCase): mock_repo_upload.return_value.returncode = 0 path_to_repo = '/some/path/to/repo' - - # The name of the hash to upload for review. - llvm_hash = 'a123testhash3' - - # Commit messages to add to the CL. + branch = 'update-LLVM_NEXT_HASH-a123testhash3' commit_messages = ['-m Test message'] change_list = update_chromeos_llvm_next_hash.UploadChanges( - path_to_repo, llvm_hash, commit_messages) + path_to_repo, branch, commit_messages) self.assertEqual( change_list.url, @@ -701,7 +755,7 @@ class UpdateLLVMNextHashTest(unittest.TestCase): @mock.patch.object(update_chromeos_llvm_next_hash, 'CreatePathDictionaryFromPackages') @mock.patch.object(update_chromeos_llvm_next_hash, '_CreateRepo') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdateBuildLLVMNextHash') + @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdateEbuildLLVMHash') @mock.patch.object(update_chromeos_llvm_next_hash, 'UprevEbuild') @mock.patch.object(update_chromeos_llvm_next_hash, 'UploadChanges') @mock.patch.object(update_chromeos_llvm_next_hash, '_DeleteRepo') @@ -718,16 +772,16 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Test function to simulate '_CreateRepo' when successfully created the # repo on a valid repo path. - def SuccessfullyCreateRepoForChanges(_repo_path, llvm_hash): - self.assertEqual(llvm_hash, 'a123testhash4') + def SuccessfullyCreateRepoForChanges(_repo_path, branch): + self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash4') return - # Test function to simulate 'UpdateBuildLLVMNextHash' when successfully + # Test function to simulate 'UpdateEbuildLLVMHash' when successfully # updated the ebuild's 'LLVM_NEXT_HASH'. - def SuccessfullyUpdatedLLVMNextHash(ebuild_path, llvm_hash, llvm_version): + def SuccessfullyUpdatedLLVMHash(ebuild_path, _, git_hash, svn_version): self.assertEqual(ebuild_path, abs_path_to_package) - self.assertEqual(llvm_hash, 'a123testhash4') - self.assertEqual(llvm_version, 1000) + self.assertEqual(git_hash, 'a123testhash4') + self.assertEqual(svn_version, 1000) return # Test function to simulate 'UprevEbuild' when the symlink to the ebuild @@ -739,7 +793,7 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Test function to fail on 'UploadChanges' if the function gets called # when an exception is raised. - def ShouldNotExecuteUploadChanges(_repo_path, _llvm_hash, _commit_messages): + def ShouldNotExecuteUploadChanges(_repo_path, _git_hash, _commit_messages): # Test function should not be called (i.e. execution should resume in the # 'finally' block) because 'UprevEbuild()' raised an # exception. @@ -756,44 +810,46 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Use test function to simulate behavior. mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges - mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMNextHash + mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash mock_uprev_ebuild.side_effect = FailedToUprevEbuild mock_upload_changes.side_effect = ShouldNotExecuteUploadChanges packages_to_update = ['test-packages/package1'] - patch_metadata_file = 'PATCHES.json' - llvm_hash = 'a123testhash4' - llvm_version = 1000 + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next + git_hash = 'a123testhash4' + svn_version = 1000 chroot_path = '/some/path/to/chroot' - svn_option = 'google3' + patch_metadata_file = 'PATCHES.json' + git_hash_source = 'google3' + branch = 'update-LLVM_NEXT_HASH-a123testhash4' # Verify exception is raised when an exception is thrown within # the 'try' block by UprevEbuild function. with self.assertRaises(ValueError) as err: update_chromeos_llvm_next_hash.UpdatePackages( - packages_to_update, llvm_hash, llvm_version, chroot_path, - patch_metadata_file, FailureModes.FAIL, svn_option) + packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, + patch_metadata_file, FailureModes.FAIL, git_hash_source) self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') mock_create_path_dict.assert_called_once_with(chroot_path, packages_to_update) - mock_create_repo.assert_called_once_with(path_to_package_dir, llvm_hash) + mock_create_repo.assert_called_once_with(path_to_package_dir, branch) - mock_update_llvm_next.assert_called_once_with(abs_path_to_package, - llvm_hash, llvm_version) + mock_update_llvm_next.assert_called_once_with( + abs_path_to_package, llvm_variant, git_hash, svn_version) mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) mock_upload_changes.assert_not_called() - mock_delete_repo.assert_called_once_with(path_to_package_dir, llvm_hash) + mock_delete_repo.assert_called_once_with(path_to_package_dir, branch) @mock.patch.object(update_chromeos_llvm_next_hash, 'CreatePathDictionaryFromPackages') @mock.patch.object(update_chromeos_llvm_next_hash, '_CreateRepo') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdateBuildLLVMNextHash') + @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdateEbuildLLVMHash') @mock.patch.object(update_chromeos_llvm_next_hash, 'UprevEbuild') @mock.patch.object(update_chromeos_llvm_next_hash, 'UploadChanges') @mock.patch.object(update_chromeos_llvm_next_hash, '_DeleteRepo') @@ -814,17 +870,17 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Test function to simulate '_CreateRepo' when successfully created the repo # for the changes to be made to the ebuild files. - def SuccessfullyCreateRepoForChanges(_repo_path, llvm_hash): - self.assertEqual(llvm_hash, 'a123testhash5') + def SuccessfullyCreateRepoForChanges(_repo_path, branch): + self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash5') return # Test function to simulate 'UploadChanges' after a successfull update of # 'LLVM_NEXT_HASH" of the ebuild file. - def SuccessfullyUpdatedLLVMNextHash(ebuild_path, llvm_hash, llvm_version): + def SuccessfullyUpdatedLLVMHash(ebuild_path, _, git_hash, svn_version): self.assertEqual(ebuild_path, '/some/path/to/chroot/src/path/to/package.ebuild') - self.assertEqual(llvm_hash, 'a123testhash5') - self.assertEqual(llvm_version, 1000) + self.assertEqual(git_hash, 'a123testhash5') + self.assertEqual(svn_version, 1000) return # Test function to simulate 'UprevEbuild' when successfully incremented @@ -837,11 +893,11 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Test function to simulate 'UpdatePackagesPatchMetadataFile()' when the # patch results contains a disabled patch in 'disable_patches' mode. - def RetrievedPatchResults(chroot_path, llvm_version, patch_metadata_file, + def RetrievedPatchResults(chroot_path, svn_version, patch_metadata_file, packages, mode): self.assertEqual(chroot_path, '/some/path/to/chroot') - self.assertEqual(llvm_version, 1000) + self.assertEqual(svn_version, 1000) self.assertEqual(patch_metadata_file, 'PATCHES.json') self.assertListEqual(packages, ['path/to']) self.assertEqual(mode, FailureModes.DISABLE_PATCHES) @@ -869,7 +925,7 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Test function to simulate 'UploadChanges()' when successfully created a # commit for the changes made to the packages and their patches and # retrieved the change list of the commit. - def SuccessfullyUploadedChanges(_repo_path, _llvm_hash, _commit_messages): + def SuccessfullyUploadedChanges(_repo_path, _branch, _commit_messages): commit_url = 'https://some_name/path/to/commit/+/12345' return update_chromeos_llvm_next_hash.CommitContents( @@ -885,21 +941,23 @@ class UpdateLLVMNextHashTest(unittest.TestCase): # Use test function to simulate behavior. mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges - mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMNextHash + mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash mock_uprev_ebuild.side_effect = SuccessfullyUprevedEbuild mock_update_package_metadata_file.side_effect = RetrievedPatchResults mock_upload_changes.side_effect = SuccessfullyUploadedChanges packages_to_update = ['test-packages/package1'] - patch_metadata_file = 'PATCHES.json' - llvm_hash = 'a123testhash5' - llvm_version = 1000 + llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next + git_hash = 'a123testhash5' + svn_version = 1000 chroot_path = '/some/path/to/chroot' - svn_option = 'tot' + patch_metadata_file = 'PATCHES.json' + git_hash_source = 'tot' + branch = 'update-LLVM_NEXT_HASH-a123testhash5' change_list = update_chromeos_llvm_next_hash.UpdatePackages( - packages_to_update, llvm_hash, llvm_version, chroot_path, - patch_metadata_file, FailureModes.DISABLE_PATCHES, svn_option) + packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, + patch_metadata_file, FailureModes.DISABLE_PATCHES, git_hash_source) self.assertEqual(change_list.url, 'https://some_name/path/to/commit/+/12345') @@ -909,10 +967,10 @@ class UpdateLLVMNextHashTest(unittest.TestCase): mock_create_path_dict.assert_called_once_with(chroot_path, packages_to_update) - mock_create_repo.assert_called_once_with(path_to_package_dir, llvm_hash) + mock_create_repo.assert_called_once_with(path_to_package_dir, branch) - mock_update_llvm_next.assert_called_once_with(abs_path_to_package, - llvm_hash, llvm_version) + mock_update_llvm_next.assert_called_once_with( + abs_path_to_package, llvm_variant, git_hash, svn_version) mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) @@ -931,10 +989,10 @@ class UpdateLLVMNextHashTest(unittest.TestCase): mock_stage_patch_file.assert_called_once_with( '/abs/path/to/filesdir/PATCHES.json') - mock_upload_changes.assert_called_once_with(path_to_package_dir, llvm_hash, + mock_upload_changes.assert_called_once_with(path_to_package_dir, branch, expected_commit_messages) - mock_delete_repo.assert_called_once_with(path_to_package_dir, llvm_hash) + mock_delete_repo.assert_called_once_with(path_to_package_dir, branch) if __name__ == '__main__': diff --git a/llvm_tools/update_packages_and_run_tryjobs.py b/llvm_tools/update_packages_and_run_tryjobs.py index fac93db3..30e8b356 100755 --- a/llvm_tools/update_packages_and_run_tryjobs.py +++ b/llvm_tools/update_packages_and_run_tryjobs.py @@ -38,8 +38,8 @@ def GetCommandLineArgs(): # Create parser and add optional command-line arguments. parser = argparse.ArgumentParser( - description='Runs a tryjob if successfully updated packages\'' - '"LLVM_NEXT_HASH".') + description= + 'Runs a tryjob if successfully updated LLVM_NEXT_HASH of packages.') # Add argument for the absolute path to the file that contains information on # the previous tested svn version. @@ -287,8 +287,9 @@ def main(): update_chromeos_llvm_next_hash.verbose = args_output.verbose change_list = update_chromeos_llvm_next_hash.UpdatePackages( - update_packages, git_hash, svn_version, args_output.chroot_path, - patch_metadata_file, FailureModes.DISABLE_PATCHES, svn_option) + update_packages, update_chromeos_llvm_next_hash.LLVMVariant.next, + git_hash, svn_version, args_output.chroot_path, patch_metadata_file, + FailureModes.DISABLE_PATCHES, svn_option) print('Successfully updated packages to %d' % svn_version) print('Gerrit URL: %s' % change_list.url) -- cgit v1.2.3 From d511f2bc35d35f203ab500d93d57c328b50529e5 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 25 Mar 2020 15:51:31 -0700 Subject: llvm_tools: rename update_chromeos_llvm_next_hash.py Now that update_chromeos_llvm_next_hash.py can be used to create LLVM roll CLs too, rename it to update_chromeos_llvm_hash.py to avoid confusion. BUG=chromium:1041590 TEST=local tests Change-Id: I18df7c2fe1f73566d053e963e606d28562637c6b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2119808 Tested-by: Jian Cai Reviewed-by: Manoj Gupta --- llvm_tools/modify_a_tryjob.py | 8 +- llvm_tools/update_chromeos_llvm_hash.py | 740 +++++++++++++++ llvm_tools/update_chromeos_llvm_hash_unittest.py | 996 ++++++++++++++++++++ llvm_tools/update_chromeos_llvm_next_hash.py | 740 --------------- .../update_chromeos_llvm_next_hash_unittest.py | 999 --------------------- llvm_tools/update_packages_and_run_tryjobs.py | 10 +- .../update_packages_and_run_tryjobs_unittest.py | 8 +- 7 files changed, 1749 insertions(+), 1752 deletions(-) create mode 100755 llvm_tools/update_chromeos_llvm_hash.py create mode 100755 llvm_tools/update_chromeos_llvm_hash_unittest.py delete mode 100755 llvm_tools/update_chromeos_llvm_next_hash.py delete mode 100755 llvm_tools/update_chromeos_llvm_next_hash_unittest.py diff --git a/llvm_tools/modify_a_tryjob.py b/llvm_tools/modify_a_tryjob.py index 6ea5e893..96478321 100755 --- a/llvm_tools/modify_a_tryjob.py +++ b/llvm_tools/modify_a_tryjob.py @@ -20,7 +20,7 @@ from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption from update_packages_and_run_tryjobs import RunTryJobs from update_tryjob_status import FindTryjobIndex from update_tryjob_status import TryjobStatus -import update_chromeos_llvm_next_hash +import update_chromeos_llvm_hash class ModifyTryjob(enum.Enum): @@ -117,8 +117,8 @@ def GetCLAfterUpdatingPackages(packages, git_hash, svn_version, chroot_path, patch_metadata_file, svn_option): """Updates the packages' LLVM_NEXT.""" - change_list = update_chromeos_llvm_next_hash.UpdatePackages( - packages, update_chromeos_llvm_next_hash.LLVMVariant.next, git_hash, + change_list = update_chromeos_llvm_hash.UpdatePackages( + packages, update_chromeos_llvm_hash.LLVMVariant.next, git_hash, svn_version, chroot_path, patch_metadata_file, FailureModes.DISABLE_PATCHES, svn_option) @@ -162,7 +162,7 @@ def AddTryjob(packages, git_hash, revision, chroot_path, patch_metadata_file, extra_cls, options, builder, verbose, svn_option): """Submits a tryjob.""" - update_chromeos_llvm_next_hash.verbose = verbose + update_chromeos_llvm_hash.verbose = verbose change_list = GetCLAfterUpdatingPackages(packages, git_hash, revision, chroot_path, patch_metadata_file, diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py new file mode 100755 index 00000000..ce87db94 --- /dev/null +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -0,0 +1,740 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2019 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. + +"""Updates the LLVM hash and uprevs the build of the specified + +packages. + +For each package, a temporary repo is created and the changes are uploaded +for review. +""" + +from __future__ import print_function +from collections import namedtuple +from enum import Enum + +import argparse +import os +import re +import subprocess + +from assert_not_in_chroot import VerifyOutsideChroot +from failure_modes import FailureModes +from subprocess_helpers import ChrootRunCommand, ExecCommandAndCaptureOutput +from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption, is_svn_option +import get_llvm_hash +import llvm_patch_management + + +# Specify which LLVM hash to update +class LLVMVariant(Enum): + """Represent the LLVM hash in an ebuild file to update.""" + + current = 'LLVM_HASH' + next = 'LLVM_NEXT_HASH' + + +# If set to `True`, then the contents of `stdout` after executing a command will +# be displayed to the terminal. +verbose = False + +CommitContents = namedtuple('CommitContents', ['url', 'cl_number']) + + +def GetCommandLineArgs(): + """Parses the command line for the optional command line arguments. + + Returns: + The log level to use when retrieving the LLVM hash or google3 LLVM version, + the chroot path to use for executing chroot commands, + a list of a package or packages to update their LLVM next hash, + and the LLVM version to use when retrieving the LLVM hash. + """ + + # Default path to the chroot if a path is not specified. + cros_root = os.path.expanduser('~') + cros_root = os.path.join(cros_root, 'chromiumos') + + # Create parser and add optional command-line arguments. + parser = argparse.ArgumentParser( + description="Updates the build's hash for llvm-next.") + + # Add argument for a specific chroot path. + parser.add_argument( + '--chroot_path', + default=cros_root, + help='the path to the chroot (default: %(default)s)') + + # Add argument for specific builds to uprev and update their llvm-next hash. + parser.add_argument( + '--update_packages', + default=['sys-devel/llvm'], + required=False, + nargs='+', + help='the ebuilds to update their hash for llvm-next ' \ + '(default: %(default)s)') + + # Add argument for whether to display command contents to `stdout`. + parser.add_argument( + '--verbose', + action='store_true', + help='display contents of a command to the terminal ' + '(default: %(default)s)') + + # Add argument for the LLVM hash to update + parser.add_argument( + '--is_llvm_next', + action='store_true', + help= + 'which llvm hash to update. Update LLVM_NEXT_HASH specified. ' \ + 'Otherwise, update LLVM_HASH' + ) + + # Add argument for the LLVM version to use. + parser.add_argument( + '--llvm_version', + type=is_svn_option, + required=True, + help='which git hash to use. Either a svn revision, or one ' + 'of %s' % sorted(get_llvm_hash.KNOWN_HASH_SOURCES)) + + # Add argument for the mode of the patch management when handling patches. + parser.add_argument( + '--failure_mode', + default=FailureModes.FAIL.value, + choices=[FailureModes.FAIL.value, FailureModes.CONTINUE.value, + FailureModes.DISABLE_PATCHES.value, + FailureModes.REMOVE_PATCHES.value], + help='the mode of the patch manager when handling failed patches ' \ + '(default: %(default)s)') + + # Add argument for the patch metadata file. + parser.add_argument( + '--patch_metadata_file', + default='PATCHES.json', + help='the .json file that has all the patches and their ' + 'metadata if applicable (default: PATCHES.json inside $FILESDIR)') + + # Parse the command line. + args_output = parser.parse_args() + + # FIXME: We shouldn't be using globals here, but until we fix it, make pylint + # stop complaining about it. + # pylint: disable=global-statement + global verbose + + verbose = args_output.verbose + + return args_output + + +def GetChrootBuildPaths(chromeos_root, package_list): + """Gets the chroot path(s) of the package(s). + + Args: + chromeos_root: The absolute path to the chroot to + use for executing chroot commands. + package_list: A list of a package/packages to + be used to find their chroot path. + + Returns: + A list of a chroot path/chroot paths of the package's ebuild file. + + Raises: + ValueError: Failed to get the chroot path of a package. + """ + + chroot_paths = [] + + # Find the chroot path for each package's ebuild. + for cur_package in sorted(set(package_list)): + # Cmd to find the chroot path for the package. + equery_cmd = ['equery', 'w', cur_package] + + chroot_path = ChrootRunCommand(chromeos_root, equery_cmd, verbose=verbose) + + chroot_paths.append(chroot_path.strip()) + + return chroot_paths + + +def _ConvertChrootPathsToSymLinkPaths(chromeos_root, chroot_file_paths): + """Converts the chroot path(s) to absolute symlink path(s). + + Args: + chromeos_root: The absolute path to the chroot. + chroot_file_paths: A list of a chroot path/chroot paths to convert to + a absolute symlink path/symlink paths. + + Returns: + A list of absolute path(s) which are symlinks that point to + the ebuild of the package(s). + + Raises: + ValueError: Invalid prefix for the chroot path or + invalid chroot path(s) were provided. + """ + + symlink_file_paths = [] + + chroot_prefix = '/mnt/host/source/' + + # Iterate through the chroot paths. + # + # For each chroot file path, remove '/mnt/host/source/' prefix + # and combine the chroot path with the result and add it to the list. + for cur_chroot_file_path in chroot_file_paths: + if not cur_chroot_file_path.startswith(chroot_prefix): + raise ValueError( + 'Invalid prefix for the chroot path: %s' % cur_chroot_file_path) + + rel_path = cur_chroot_file_path[len(chroot_prefix):] + + # combine the chromeos root path + '/src/...' + absolute_symlink_path = os.path.join(chromeos_root, rel_path) + + symlink_file_paths.append(absolute_symlink_path) + + return symlink_file_paths + + +def GetEbuildPathsFromSymLinkPaths(symlinks): + """Reads the symlink(s) to get the ebuild path(s) to the package(s). + + Args: + symlinks: A list of absolute path symlink/symlinks that point + to the package's ebuild. + + Returns: + A dictionary where the key is the absolute path of the symlink and the value + is the absolute path to the ebuild that was read from the symlink. + + Raises: + ValueError: Invalid symlink(s) were provided. + """ + + # A dictionary that holds: + # key: absolute symlink path + # value: absolute ebuild path + resolved_paths = {} + + # Iterate through each symlink. + # + # For each symlink, check that it is a valid symlink, + # and then construct the ebuild path, and + # then add the ebuild path to the dict. + for cur_symlink in symlinks: + if not os.path.islink(cur_symlink): + raise ValueError('Invalid symlink provided: %s' % cur_symlink) + + # Construct the absolute path to the ebuild. + ebuild_path = os.path.realpath(cur_symlink) + + if cur_symlink not in resolved_paths: + resolved_paths[cur_symlink] = ebuild_path + + return resolved_paths + + +def UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version): + """Updates the LLVM hash in the ebuild. + + The build changes are staged for commit in the temporary repo. + + Args: + ebuild_path: The absolute path to the ebuild. + llvm_variant: Which LLVM hash to update. + git_hash: The new git hash. + svn_version: The SVN-style revision number of git_hash. + + Raises: + ValueError: Invalid ebuild path provided or failed to stage the commit + of the changes or failed to update the LLVM hash. + """ + + # Iterate through each ebuild. + # + # For each ebuild, read the file in + # advance and then create a temporary file + # that gets updated with the new LLVM hash + # and revision number and then the ebuild file + # gets updated to the temporary file. + + if not os.path.isfile(ebuild_path): + raise ValueError('Invalid ebuild path provided: %s' % ebuild_path) + + temp_ebuild_file = '%s.temp' % ebuild_path + + with open(ebuild_path) as ebuild_file: + # write updates to a temporary file in case of interrupts + with open(temp_ebuild_file, 'w') as temp_file: + for cur_line in ReplaceLLVMHash(ebuild_file, llvm_variant, git_hash, + svn_version): + temp_file.write(cur_line) + + os.rename(temp_ebuild_file, ebuild_path) + + # Get the path to the parent directory. + parent_dir = os.path.dirname(ebuild_path) + + # Stage the changes. + stage_changes_cmd = ['git', '-C', parent_dir, 'add', ebuild_path] + + ExecCommandAndCaptureOutput(stage_changes_cmd, verbose=verbose) + + +def ReplaceLLVMHash(ebuild_lines, llvm_variant, git_hash, svn_version): + """Updates the LLVM git hash. + + Args: + ebuild_lines: The contents of the ebuild file. + llvm_variant: The LLVM hash to update. + git_hash: The new git hash. + svn_version: The SVN-style revision number of git_hash. + """ + is_updated = False + llvm_regex = re.compile('^' + re.escape(llvm_variant.value) + + '=\"[a-z0-9]+\"') + for cur_line in ebuild_lines: + if not is_updated and llvm_regex.search(cur_line): + # Update the git hash and revision number. + cur_line = '%s=\"%s\" # r%d\n' % (llvm_variant.value, git_hash, + svn_version) + + is_updated = True + + yield cur_line + + if not is_updated: + raise ValueError('Failed to update %s' % llvm_variant.value) + + +def UprevEbuild(symlink): + """Uprevs the ebuild's revision number. + + Increases the revision number by 1 and stages the change in + the temporary repo. + + Args: + symlink: The absolute path of the symlink that points to + the ebuild of the package. + + Raises: + ValueError: Failed to uprev the symlink or failed to stage the changes. + """ + + if not os.path.islink(symlink): + raise ValueError('Invalid symlink provided: %s' % symlink) + + # Find the revision number and increment it by 1. + new_symlink, is_changed = re.subn( + r'r([0-9]+).ebuild', + lambda match: 'r%s.ebuild' % str(int(match.group(1)) + 1), + symlink, + count=1) + + if not is_changed: # failed to increment the revision number + raise ValueError('Failed to uprev the ebuild.') + + path_to_symlink_dir = os.path.dirname(symlink) + + # Stage the new symlink for commit. + stage_symlink_cmd = [ + 'git', '-C', path_to_symlink_dir, 'mv', symlink, new_symlink + ] + + ExecCommandAndCaptureOutput(stage_symlink_cmd, verbose=verbose) + + +def _CreateRepo(path_to_repo_dir, branch): + """Creates a temporary repo for the changes. + + Args: + path_to_repo_dir: The absolute path to the repo. + branch: The name of the branch to create. + llvm_variant: The LLVM hash to update. + git_hash: The new git hash. + + Raises: + ValueError: Failed to create a repo in that directory. + """ + + if not os.path.isdir(path_to_repo_dir): + raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) + + reset_changes_cmd = [ + 'git', + '-C', + path_to_repo_dir, + 'reset', + 'HEAD', + '--hard', + ] + + ExecCommandAndCaptureOutput(reset_changes_cmd, verbose=verbose) + + create_repo_cmd = ['repo', 'start', branch] + + ExecCommandAndCaptureOutput( + create_repo_cmd, cwd=path_to_repo_dir, verbose=verbose) + + +def _DeleteRepo(path_to_repo_dir, branch): + """Deletes the temporary repo. + + Args: + path_to_repo_dir: The absolute path of the repo. + branch: The name of the branch to delete. + + Raises: + ValueError: Failed to delete the repo in that directory. + """ + + if not os.path.isdir(path_to_repo_dir): + raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) + + checkout_to_master_cmd = [ + 'git', '-C', path_to_repo_dir, 'checkout', 'cros/master' + ] + + ExecCommandAndCaptureOutput(checkout_to_master_cmd, verbose=verbose) + + reset_head_cmd = ['git', '-C', path_to_repo_dir, 'reset', 'HEAD', '--hard'] + + ExecCommandAndCaptureOutput(reset_head_cmd, verbose=verbose) + + delete_repo_cmd = ['git', '-C', path_to_repo_dir, 'branch', '-D', branch] + + ExecCommandAndCaptureOutput(delete_repo_cmd, verbose=verbose) + + +def GetGerritRepoUploadContents(repo_upload_contents): + """Parses 'repo upload' to get the Gerrit commit URL and CL number. + + Args: + repo_upload_contents: The contents of the 'repo upload' command. + + Returns: + A nametuple that has two (key, value) pairs, where the first pair is the + Gerrit commit URL and the second pair is the change list number. + + Raises: + ValueError: The contents of the 'repo upload' command did not contain a + Gerrit commit URL. + """ + + found_url = re.search( + r'https://chromium-review.googlesource.com/c/' + r'chromiumos/overlays/chromiumos-overlay/\+/([0-9]+)', + repo_upload_contents) + + if not found_url: + raise ValueError('Failed to find change list URL.') + + cl_number = int(found_url.group(1)) + + return CommitContents(url=found_url.group(0), cl_number=cl_number) + + +def UploadChanges(path_to_repo_dir, branch, commit_messages): + """Uploads the changes (updating LLVM next hash and uprev symlink) for review. + + Args: + path_to_repo_dir: The absolute path to the repo where changes were made. + branch: The name of the branch to upload. + commit_messages: A string of commit message(s) (i.e. '-m [message]' + of the changes made. + + Returns: + A nametuple that has two (key, value) pairs, where the first pair is the + Gerrit commit URL and the second pair is the change list number. + + Raises: + ValueError: Failed to create a commit or failed to upload the + changes for review. + """ + + if not os.path.isdir(path_to_repo_dir): + raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) + + commit_cmd = [ + 'git', + 'commit', + ] + commit_cmd.extend(commit_messages) + + ExecCommandAndCaptureOutput(commit_cmd, cwd=path_to_repo_dir, verbose=verbose) + + # Upload the changes for review. + upload_change_cmd = ( + 'yes | repo upload --wip --ne --br=%s --no-verify' % branch) + + # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow + # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. + # pylint: disable=unexpected-keyword-arg + + # NOTE: Need `shell=True` in order to pipe `yes` into `repo upload ...`. + # + # The CL URL is sent to 'stderr', so need to redirect 'stderr' to 'stdout'. + upload_changes_obj = subprocess.Popen( + upload_change_cmd, + cwd=path_to_repo_dir, + shell=True, + encoding='UTF-8', + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + + out, _ = upload_changes_obj.communicate() + + if upload_changes_obj.returncode: # Failed to upload changes. + print(out) + raise ValueError('Failed to upload changes for review') + + return GetGerritRepoUploadContents(out.rstrip()) + + +def CreatePathDictionaryFromPackages(chroot_path, update_packages): + """Creates a symlink and ebuild path pair dictionary from the packages. + + Args: + chroot_path: The absolute path to the chroot. + update_packages: The filtered packages to be updated. + + Returns: + A dictionary where the key is the absolute path to the symlink + of the package and the value is the absolute path to the ebuild of + the package. + """ + + # Construct a list containing the chroot file paths of the package(s). + chroot_file_paths = GetChrootBuildPaths(chroot_path, update_packages) + + # Construct a list containing the symlink(s) of the package(s). + symlink_file_paths = _ConvertChrootPathsToSymLinkPaths( + chroot_path, chroot_file_paths) + + # Create a dictionary where the key is the absolute path of the symlink to + # the package and the value is the absolute path to the ebuild of the package. + return GetEbuildPathsFromSymLinkPaths(symlink_file_paths) + + +def RemovePatchesFromFilesDir(patches_to_remove): + """Removes the patches from $FILESDIR of a package. + + Args: + patches_to_remove: A list where each entry is the absolute path to a patch. + + Raises: + ValueError: Failed to remove a patch in $FILESDIR. + """ + + for cur_patch in patches_to_remove: + remove_patch_cmd = [ + 'git', '-C', + os.path.dirname(cur_patch), 'rm', '-f', cur_patch + ] + + ExecCommandAndCaptureOutput(remove_patch_cmd, verbose=verbose) + + +def StagePatchMetadataFileForCommit(patch_metadata_file_path): + """Stages the updated patch metadata file for commit. + + Args: + patch_metadata_file_path: The absolute path to the patch metadata file. + + Raises: + ValueError: Failed to stage the patch metadata file for commit or invalid + patch metadata file. + """ + + if not os.path.isfile(patch_metadata_file_path): + raise ValueError( + 'Invalid patch metadata file provided: %s' % patch_metadata_file_path) + + # Cmd to stage the patch metadata file for commit. + stage_patch_file = [ + 'git', '-C', + os.path.dirname(patch_metadata_file_path), 'add', patch_metadata_file_path + ] + + ExecCommandAndCaptureOutput(stage_patch_file, verbose=verbose) + + +def StagePackagesPatchResultsForCommit(package_info_dict, commit_messages): + """Stages the patch results of the packages to the commit message. + + Args: + package_info_dict: A dictionary where the key is the package name and the + value is a dictionary that contains information about the patches of the + package (key). + commit_messages: The commit message that has the updated ebuilds and + upreving information. + """ + + # For each package, check if any patches for that package have + # changed, if so, add which patches have changed to the commit + # message. + for package_name, patch_info_dict in package_info_dict.items(): + if patch_info_dict['disabled_patches'] or \ + patch_info_dict['removed_patches'] or \ + patch_info_dict['modified_metadata']: + cur_package_header = 'For the package %s:' % package_name + commit_messages.append('-m %s' % cur_package_header) + + # Add to the commit message that the patch metadata file was modified. + if patch_info_dict['modified_metadata']: + patch_metadata_path = patch_info_dict['modified_metadata'] + commit_messages.append('-m %s' % 'The patch metadata file %s was ' + 'modified' % os.path.basename(patch_metadata_path)) + + StagePatchMetadataFileForCommit(patch_metadata_path) + + # Add each disabled patch to the commit message. + if patch_info_dict['disabled_patches']: + commit_messages.append('-m %s' % 'The following patches were disabled:') + + for patch_path in patch_info_dict['disabled_patches']: + commit_messages.append('-m %s' % os.path.basename(patch_path)) + + # Add each removed patch to the commit message. + if patch_info_dict['removed_patches']: + commit_messages.append('-m %s' % 'The following patches were removed:') + + for patch_path in patch_info_dict['removed_patches']: + commit_messages.append('-m %s' % os.path.basename(patch_path)) + + RemovePatchesFromFilesDir(patch_info_dict['removed_patches']) + + return commit_messages + + +def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, + patch_metadata_file, mode, git_hash_source): + """Updates an LLVM hash and uprevs the ebuild of the packages. + + A temporary repo is created for the changes. The changes are + then uploaded for review. + + Args: + packages: A list of all the packages that are going to be updated. + llvm_variant: The LLVM hash to update. + git_hash: The new git hash. + svn_version: The SVN-style revision number of git_hash. + chroot_path: The absolute path to the chroot. + patch_metadata_file: The name of the .json file in '$FILESDIR/' that has + the patches and its metadata. + mode: The mode of the patch manager when handling an applicable patch + that failed to apply. + Ex: 'FailureModes.FAIL' + git_hash_source: The source of which git hash to use based off of. + Ex: 'google3', 'tot', or such as 365123 + + Returns: + A nametuple that has two (key, value) pairs, where the first pair is the + Gerrit commit URL and the second pair is the change list number. + """ + + # Determines whether to print the result of each executed command. + llvm_patch_management.verbose = verbose + + # Construct a dictionary where the key is the absolute path of the symlink to + # the package and the value is the absolute path to the ebuild of the package. + paths_dict = CreatePathDictionaryFromPackages(chroot_path, packages) + + repo_path = os.path.dirname(next(iter(paths_dict.values()))) + + branch = 'update-' + llvm_variant.value + '-' + git_hash + + _CreateRepo(repo_path, branch) + + try: + commit_message_header = 'llvm' + if llvm_variant == LLVMVariant.next: + commit_message_header = 'llvm-next' + if git_hash_source in get_llvm_hash.KNOWN_HASH_SOURCES: + commit_message_header += ( + '/%s: upgrade to %s (r%d)' % (git_hash_source, git_hash, svn_version)) + else: + commit_message_header += ( + ': upgrade to %s (r%d)' % (git_hash, svn_version)) + + commit_messages = ['-m %s' % commit_message_header] + + commit_messages.append('-m The following packages have been updated:') + + # Holds the list of packages that are updating. + packages = [] + + # Iterate through the dictionary. + # + # For each iteration: + # 1) Update the ebuild's LLVM hash. + # 2) Uprev the ebuild (symlink). + # 3) Add the modified package to the commit message. + for symlink_path, ebuild_path in paths_dict.items(): + path_to_ebuild_dir = os.path.dirname(ebuild_path) + + UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version) + + UprevEbuild(symlink_path) + + cur_dir_name = os.path.basename(path_to_ebuild_dir) + parent_dir_name = os.path.basename(os.path.dirname(path_to_ebuild_dir)) + + packages.append('%s/%s' % (parent_dir_name, cur_dir_name)) + + new_commit_message = '%s/%s' % (parent_dir_name, cur_dir_name) + + commit_messages.append('-m %s' % new_commit_message) + + # Handle the patches for each package. + package_info_dict = llvm_patch_management.UpdatePackagesPatchMetadataFile( + chroot_path, svn_version, patch_metadata_file, packages, mode) + + # Update the commit message if changes were made to a package's patches. + commit_messages = StagePackagesPatchResultsForCommit( + package_info_dict, commit_messages) + + change_list = UploadChanges(repo_path, branch, commit_messages) + + finally: + _DeleteRepo(repo_path, branch) + + return change_list + + +def main(): + """Updates the LLVM next hash for each package. + + Raises: + AssertionError: The script was run inside the chroot. + """ + + VerifyOutsideChroot() + + args_output = GetCommandLineArgs() + + llvm_variant = LLVMVariant.current + if args_output.is_llvm_next: + llvm_variant = LLVMVariant.next + + git_hash_source = args_output.llvm_version + + git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(git_hash_source) + + change_list = UpdatePackages( + args_output.update_packages, llvm_variant, git_hash, svn_version, + args_output.chroot_path, args_output.patch_metadata_file, + FailureModes(args_output.failure_mode), git_hash_source) + + print('Successfully updated packages to %s (%d)' % (git_hash, svn_version)) + print('Gerrit URL: %s' % change_list.url) + print('Change list number: %d' % change_list.cl_number) + + +if __name__ == '__main__': + main() diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py new file mode 100755 index 00000000..84717ac7 --- /dev/null +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -0,0 +1,996 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2019 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. + +"""Unit tests for updating LLVM hashes.""" + +from __future__ import print_function + +from collections import namedtuple +import os +import subprocess +import unittest +import unittest.mock as mock + +from failure_modes import FailureModes +from test_helpers import CreateTemporaryJsonFile +import llvm_patch_management +import update_chromeos_llvm_hash + +# These are unittests; protected access is OK to a point. +# pylint: disable=protected-access + + +class UpdateLLVMHashTest(unittest.TestCase): + """Test class for updating LLVM hashes of packages.""" + + @mock.patch.object(update_chromeos_llvm_hash, 'ChrootRunCommand') + def testSucceedsToGetChrootPathForPackage(self, mock_chroot_command): + package_chroot_path = '/chroot/path/to/package.ebuild' + + # Emulate ChrootRunCommandWOutput behavior when a chroot path is found for + # a valid package. + mock_chroot_command.return_value = package_chroot_path + + chroot_path = '/test/chroot/path' + package_list = ['new-test/package'] + + self.assertEqual( + update_chromeos_llvm_hash.GetChrootBuildPaths( + chroot_path, package_list), [package_chroot_path]) + + mock_chroot_command.assert_called_once() + + def testFailedToConvertChrootPathWithInvalidPrefixToSymlinkPath(self): + chroot_path = '/path/to/chroot' + chroot_file_path = '/src/package.ebuild' + + # Verify the exception is raised when a symlink does not have the prefix + # '/mnt/host/source/'. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash._ConvertChrootPathsToSymLinkPaths( + chroot_path, [chroot_file_path]) + + self.assertEqual( + str(err.exception), 'Invalid prefix for the chroot path: ' + '%s' % chroot_file_path) + + def testSucceedsToConvertChrootPathToSymlinkPath(self): + chroot_path = '/path/to/chroot' + chroot_file_paths = ['/mnt/host/source/src/package.ebuild'] + + expected_symlink_path = '/path/to/chroot/src/package.ebuild' + + self.assertEqual( + update_chromeos_llvm_hash._ConvertChrootPathsToSymLinkPaths( + chroot_path, chroot_file_paths), [expected_symlink_path]) + + # Simulate 'os.path.islink' when a path is not a symbolic link. + @mock.patch.object(os.path, 'islink', return_value=False) + def testFailedToGetEbuildPathFromInvalidSymlink(self, mock_islink): + symlink_path = '/symlink/path/src/to/package-r1.ebuild' + + # Verify the exception is raised when the argument is not a symbolic link. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.GetEbuildPathsFromSymLinkPaths([symlink_path]) + + self.assertEqual( + str(err.exception), 'Invalid symlink provided: %s' % symlink_path) + + mock_islink.assert_called_once_with(symlink_path) + + # Simulate 'os.path.islink' when a path is a symbolic link. + @mock.patch.object(os.path, 'islink', return_value=True) + @mock.patch.object(os.path, 'realpath') + def testSucceedsToGetEbuildPathFromValidSymlink(self, mock_realpath, + mock_islink): + + symlink_path = '/path/to/chroot/src/package-r1.ebuild' + + abs_path_to_package = '/abs/path/to/src/package.ebuild' + + # Simulate 'os.path.realpath' when a valid path is passed in. + mock_realpath.return_value = abs_path_to_package + + expected_resolved_paths = {symlink_path: abs_path_to_package} + + self.assertEqual( + update_chromeos_llvm_hash.GetEbuildPathsFromSymLinkPaths( + [symlink_path]), expected_resolved_paths) + + mock_realpath.assert_called_once_with(symlink_path) + + mock_islink.assert_called_once_with(symlink_path) + + # Simulate behavior of 'os.path.isfile()' when the ebuild path to a package + # does not exist. + @mock.patch.object(os.path, 'isfile', return_value=False) + def testFailedToUpdateLLVMHashForInvalidEbuildPath(self, mock_isfile): + ebuild_path = '/some/path/to/package.ebuild' + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current + git_hash = 'a123testhash1' + svn_version = 1000 + + # Verify the exception is raised when the ebuild path does not exist. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UpdateEbuildLLVMHash(ebuild_path, llvm_variant, + git_hash, svn_version) + + self.assertEqual( + str(err.exception), 'Invalid ebuild path provided: %s' % ebuild_path) + + mock_isfile.assert_called_once() + + # Simulate 'os.path.isfile' behavior on a valid ebuild path. + @mock.patch.object(os.path, 'isfile', return_value=True) + def testFailedToUpdateLLVMHash(self, mock_isfile): + # Create a temporary file to simulate an ebuild file of a package. + with CreateTemporaryJsonFile() as ebuild_file: + with open(ebuild_file, 'w') as f: + f.write('\n'.join([ + 'First line in the ebuild', 'Second line in the ebuild', + 'Last line in the ebuild' + ])) + + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current + git_hash = 'a123testhash1' + svn_version = 1000 + + # Verify the exception is raised when the ebuild file does not have + # 'LLVM_HASH'. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UpdateEbuildLLVMHash( + ebuild_file, llvm_variant, git_hash, svn_version) + + self.assertEqual( + str(err.exception), ('Failed to update %s.', 'LLVM_HASH')) + + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next + + self.assertEqual(mock_isfile.call_count, 2) + + # Simulate 'os.path.isfile' behavior on a valid ebuild path. + @mock.patch.object(os.path, 'isfile', return_value=True) + def testFailedToUpdateLLVMNextHash(self, mock_isfile): + # Create a temporary file to simulate an ebuild file of a package. + with CreateTemporaryJsonFile() as ebuild_file: + with open(ebuild_file, 'w') as f: + f.write('\n'.join([ + 'First line in the ebuild', 'Second line in the ebuild', + 'Last line in the ebuild' + ])) + + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next + git_hash = 'a123testhash1' + svn_version = 1000 + + # Verify the exception is raised when the ebuild file does not have + # 'LLVM_NEXT_HASH'. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UpdateEbuildLLVMHash( + ebuild_file, llvm_variant, git_hash, svn_version) + + self.assertEqual( + str(err.exception), ('Failed to update %s.', 'LLVM_NEXT_HASH')) + + self.assertEqual(mock_isfile.call_count, 2) + + # Simulate 'os.path.isfile' behavior on a valid ebuild path. + @mock.patch.object(os.path, 'isfile', return_value=True) + # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the + # ebuild file for commit. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyStageTheEbuildForCommitForLLVMHashUpdate( + self, mock_stage_commit_command, mock_isfile): + + # Create a temporary file to simulate an ebuild file of a package. + with CreateTemporaryJsonFile() as ebuild_file: + # Updates LLVM_HASH to 'git_hash' and revision to + # 'svn_version'. + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current + git_hash = 'a123testhash1' + svn_version = 1000 + + with open(ebuild_file, 'w') as f: + f.write('\n'.join([ + 'First line in the ebuild', 'Second line in the ebuild', + 'LLVM_HASH=\"a12b34c56d78e90\" # r500', 'Last line in the ebuild' + ])) + + update_chromeos_llvm_hash.UpdateEbuildLLVMHash(ebuild_file, llvm_variant, + git_hash, svn_version) + + expected_file_contents = [ + 'First line in the ebuild\n', 'Second line in the ebuild\n', + 'LLVM_HASH=\"a123testhash1\" # r1000\n', 'Last line in the ebuild' + ] + + # Verify the new file contents of the ebuild file match the expected file + # contents. + with open(ebuild_file) as new_file: + file_contents_as_a_list = [cur_line for cur_line in new_file] + self.assertListEqual(file_contents_as_a_list, expected_file_contents) + + self.assertEqual(mock_isfile.call_count, 2) + + mock_stage_commit_command.assert_called_once() + + # Simulate 'os.path.isfile' behavior on a valid ebuild path. + @mock.patch.object(os.path, 'isfile', return_value=True) + # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the + # ebuild file for commit. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyStageTheEbuildForCommitForLLVMNextHashUpdate( + self, mock_stage_commit_command, mock_isfile): + + # Create a temporary file to simulate an ebuild file of a package. + with CreateTemporaryJsonFile() as ebuild_file: + # Updates LLVM_NEXT_HASH to 'git_hash' and revision to + # 'svn_version'. + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next + git_hash = 'a123testhash1' + svn_version = 1000 + + with open(ebuild_file, 'w') as f: + f.write('\n'.join([ + 'First line in the ebuild', 'Second line in the ebuild', + 'LLVM_NEXT_HASH=\"a12b34c56d78e90\" # r500', + 'Last line in the ebuild' + ])) + + update_chromeos_llvm_hash.UpdateEbuildLLVMHash(ebuild_file, llvm_variant, + git_hash, svn_version) + + expected_file_contents = [ + 'First line in the ebuild\n', 'Second line in the ebuild\n', + 'LLVM_NEXT_HASH=\"a123testhash1\" # r1000\n', + 'Last line in the ebuild' + ] + + # Verify the new file contents of the ebuild file match the expected file + # contents. + with open(ebuild_file) as new_file: + file_contents_as_a_list = [cur_line for cur_line in new_file] + self.assertListEqual(file_contents_as_a_list, expected_file_contents) + + self.assertEqual(mock_isfile.call_count, 2) + + mock_stage_commit_command.assert_called_once() + + # Simulate behavior of 'os.path.islink()' when the argument passed in is not a + # symbolic link. + @mock.patch.object(os.path, 'islink', return_value=False) + def testFailedToUprevEbuildForInvalidSymlink(self, mock_islink): + symlink_to_uprev = '/symlink/to/package.ebuild' + + # Verify the exception is raised when a symbolic link is not passed in. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UprevEbuild(symlink_to_uprev) + + self.assertEqual( + str(err.exception), 'Invalid symlink provided: %s' % symlink_to_uprev) + + mock_islink.assert_called_once() + + # Simulate 'os.path.islink' when a symbolic link is passed in. + @mock.patch.object(os.path, 'islink', return_value=True) + def testFailedToUprevEbuild(self, mock_islink): + symlink_to_uprev = '/symlink/to/package.ebuild' + + # Verify the exception is raised when the symlink does not have a revision + # number. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UprevEbuild(symlink_to_uprev) + + self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') + + mock_islink.assert_called_once_with(symlink_to_uprev) + + # Simulate 'os.path.islink' when a valid symbolic link is passed in. + @mock.patch.object(os.path, 'islink', return_value=True) + # Simulate 'os.path.dirname' when returning a path to the directory of a + # valid symbolic link. + @mock.patch.object(os.path, 'dirname', return_value='/symlink/to') + # Simulate 'RunCommandWOutput' when successfully added the upreved symlink + # for commit. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyUprevEbuild(self, mock_command_output, mock_dirname, + mock_islink): + + symlink_to_uprev = '/symlink/to/package-r1.ebuild' + + update_chromeos_llvm_hash.UprevEbuild(symlink_to_uprev) + + mock_islink.assert_called_once_with(symlink_to_uprev) + + mock_dirname.assert_called_once_with(symlink_to_uprev) + + mock_command_output.assert_called_once() + + # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a + # directory. + @mock.patch.object(os.path, 'isdir', return_value=False) + def testFailedToCreateRepoForInvalidDirectoryPath(self, mock_isdir): + path_to_repo = '/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash1' + + # Verify the exception is raised when provided an invalid directory path. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash._CreateRepo(path_to_repo, branch) + + self.assertEqual( + str(err.exception), + 'Invalid directory path provided: %s' % path_to_repo) + + mock_isdir.assert_called_once() + + # Simulate 'os.path.isdir' when a valid repo path is provided. + @mock.patch.object(os.path, 'isdir', return_value=True) + # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully reset + # changes and created a repo. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyCreatedRepo(self, mock_command_output, mock_isdir): + path_to_repo = '/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash1' + + update_chromeos_llvm_hash._CreateRepo(path_to_repo, branch) + + mock_isdir.assert_called_once_with(path_to_repo) + + self.assertEqual(mock_command_output.call_count, 2) + + # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a + # directory. + @mock.patch.object(os.path, 'isdir', return_value=False) + def testFailedToDeleteRepoForInvalidDirectoryPath(self, mock_isdir): + path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash2' + + # Verify the exception is raised on an invalid repo path. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash._DeleteRepo(path_to_repo, branch) + + self.assertEqual( + str(err.exception), + 'Invalid directory path provided: %s' % path_to_repo) + + mock_isdir.assert_called_once() + + # Simulate 'os.path.isdir' on valid directory path. + @mock.patch.object(os.path, 'isdir', return_value=True) + # Simulate 'ExecCommandAndCaptureOutput()' when successfully checkout to + # cros/master, reset changes, and deleted the repo. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyDeletedRepo(self, mock_command_output, mock_isdir): + path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash2' + + update_chromeos_llvm_hash._DeleteRepo(path_to_repo, branch) + + mock_isdir.assert_called_once_with(path_to_repo) + + self.assertEqual(mock_command_output.call_count, 3) + + def testFailedToFindChangeListURL(self): + repo_upload_contents = 'remote: https://some_url' + + # Verify the exception is raised when failed to find the Gerrit URL when + # parsing the 'repo upload' contents. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.GetGerritRepoUploadContents( + repo_upload_contents) + + self.assertEqual(str(err.exception), 'Failed to find change list URL.') + + def testSuccessfullyGetGerritRepoUploadContents(self): + repo_upload_contents = ('remote: https://chromium-review.googlesource.com' + '/c/chromiumos/overlays/chromiumos-overlay/+/' + '193147 Some commit header') + + change_list = update_chromeos_llvm_hash.GetGerritRepoUploadContents( + repo_upload_contents) + + self.assertEqual( + change_list.url, + 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' + 'chromiumos-overlay/+/193147') + + self.assertEqual(change_list.cl_number, 193147) + + # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a + # directory. + @mock.patch.object(os.path, 'isdir', return_value=False) + def testFailedToUploadChangesForInvalidPathDirectory(self, mock_isdir): + path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash3' + commit_messages = ['-m Test message'] + + # Verify exception is raised when on an invalid repo path. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UploadChanges(path_to_repo, branch, + commit_messages) + + self.assertEqual( + str(err.exception), + 'Invalid directory path provided: %s' % path_to_repo) + + mock_isdir.assert_called_once() + + # Simulate 'os.path.isdir' on a valid repo path. + @mock.patch.object(os.path, 'isdir', return_value=True) + # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully + # committed the changes. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + @mock.patch.object(subprocess, 'Popen') + def testFailedToUploadChangesForReview(self, mock_repo_upload, + mock_command_output, mock_isdir): + + # Simulate the behavior of 'subprocess.Popen()' when uploading the changes + # for review + # + # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. + mock_repo_upload.return_value.communicate.return_value = ( + None, 'Branch does not exist.') + + # Exit code of 1 means failed to upload changes for review. + mock_repo_upload.return_value.returncode = 1 + + path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash3' + commit_messages = ['-m Test message'] + + # Verify exception is raised when failed to upload the changes for review. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UploadChanges(path_to_repo, branch, + commit_messages) + + self.assertEqual(str(err.exception), 'Failed to upload changes for review') + + mock_isdir.assert_called_once_with(path_to_repo) + + mock_command_output.assert_called_once() + + mock_repo_upload.assert_called_once() + + # Simulate 'os.path.isdir' when a valid repo path is passed in. + @mock.patch.object(os.path, 'isdir', return_value=True) + # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully + # committed the changes. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + @mock.patch.object(subprocess, 'Popen') + def testSuccessfullyUploadedChangesForReview(self, mock_repo_upload, + mock_command_output, mock_isdir): + + # A test CL generated by `repo upload`. + repo_upload_contents = ('remote: https://chromium-review.googlesource.' + 'com/c/chromiumos/overlays/chromiumos-overlay/' + '+/193147 Fix stdout') + + # Simulate the behavior of 'subprocess.Popen()' when uploading the changes + # for review + # + # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. + mock_repo_upload.return_value.communicate.return_value = ( + repo_upload_contents, None) + + # Exit code of 0 means successfully uploaded changes for review. + mock_repo_upload.return_value.returncode = 0 + + path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash3' + commit_messages = ['-m Test message'] + + change_list = update_chromeos_llvm_hash.UploadChanges( + path_to_repo, branch, commit_messages) + + self.assertEqual( + change_list.url, + 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' + 'chromiumos-overlay/+/193147') + + self.assertEqual(change_list.cl_number, 193147) + + mock_isdir.assert_called_once_with(path_to_repo) + + mock_command_output.assert_called_once() + + mock_repo_upload.assert_called_once() + + @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') + @mock.patch.object(update_chromeos_llvm_hash, + '_ConvertChrootPathsToSymLinkPaths') + def testExceptionRaisedWhenCreatingPathDictionaryFromPackages( + self, mock_chroot_paths_to_symlinks, mock_get_chroot_paths): + + chroot_path = '/some/path/to/chroot' + + package_name = 'test-pckg/package' + package_chroot_path = '/some/chroot/path/to/package-r1.ebuild' + + # Test function to simulate '_ConvertChrootPathsToSymLinkPaths' when a + # symlink does not start with the prefix '/mnt/host/source'. + def BadPrefixChrootPath(_chroot_path, _chroot_file_paths): + raise ValueError('Invalid prefix for the chroot path: ' + '%s' % package_chroot_path) + + # Simulate 'GetChrootBuildPaths' when valid packages are passed in. + # + # Returns a list of chroot paths. + mock_get_chroot_paths.return_value = [package_chroot_path] + + # Use test function to simulate '_ConvertChrootPathsToSymLinkPaths' + # behavior. + mock_chroot_paths_to_symlinks.side_effect = BadPrefixChrootPath + + # Verify exception is raised when for an invalid prefix in the symlink. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.CreatePathDictionaryFromPackages( + chroot_path, [package_name]) + + self.assertEqual( + str(err.exception), 'Invalid prefix for the chroot path: ' + '%s' % package_chroot_path) + + mock_get_chroot_paths.assert_called_once_with(chroot_path, [package_name]) + + mock_chroot_paths_to_symlinks.assert_called_once_with( + chroot_path, [package_chroot_path]) + + @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') + @mock.patch.object(update_chromeos_llvm_hash, + '_ConvertChrootPathsToSymLinkPaths') + @mock.patch.object(update_chromeos_llvm_hash, + 'GetEbuildPathsFromSymLinkPaths') + def testSuccessfullyCreatedPathDictionaryFromPackages( + self, mock_ebuild_paths_from_symlink_paths, mock_chroot_paths_to_symlinks, + mock_get_chroot_paths): + + package_chroot_path = '/mnt/host/source/src/path/to/package-r1.ebuild' + + # Simulate 'GetChrootBuildPaths' when returning a chroot path for a valid + # package. + # + # Returns a list of chroot paths. + mock_get_chroot_paths.return_value = [package_chroot_path] + + package_symlink_path = '/some/path/to/chroot/src/path/to/package-r1.ebuild' + + # Simulate '_ConvertChrootPathsToSymLinkPaths' when returning a symlink to + # a chroot path that points to a package. + # + # Returns a list of symlink file paths. + mock_chroot_paths_to_symlinks.return_value = [package_symlink_path] + + chroot_package_path = '/some/path/to/chroot/src/path/to/package.ebuild' + + # Simulate 'GetEbuildPathsFromSymlinkPaths' when returning a dictionary of + # a symlink that points to an ebuild. + # + # Returns a dictionary of a symlink and ebuild file path pair + # where the key is the absolute path to the symlink of the ebuild file + # and the value is the absolute path to the ebuild file of the package. + mock_ebuild_paths_from_symlink_paths.return_value = { + package_symlink_path: chroot_package_path + } + + chroot_path = '/some/path/to/chroot' + package_name = 'test-pckg/package' + + self.assertEqual( + update_chromeos_llvm_hash.CreatePathDictionaryFromPackages( + chroot_path, [package_name]), + {package_symlink_path: chroot_package_path}) + + mock_get_chroot_paths.assert_called_once_with(chroot_path, [package_name]) + + mock_chroot_paths_to_symlinks.assert_called_once_with( + chroot_path, [package_chroot_path]) + + mock_ebuild_paths_from_symlink_paths.assert_called_once_with( + [package_symlink_path]) + + # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully + # removed patches. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyRemovedPatchesFromFilesDir(self, mock_run_cmd): + patches_to_remove_list = [ + '/abs/path/to/filesdir/cherry/fix_output.patch', + '/abs/path/to/filesdir/display_results.patch' + ] + + update_chromeos_llvm_hash.RemovePatchesFromFilesDir(patches_to_remove_list) + + self.assertEqual(mock_run_cmd.call_count, 2) + + # Simulate behavior of 'os.path.isfile()' when the absolute path to the patch + # metadata file does not exist. + @mock.patch.object(os.path, 'isfile', return_value=False) + def testInvalidPatchMetadataFileStagedForCommit(self, mock_isfile): + patch_metadata_path = '/abs/path/to/filesdir/PATCHES' + + # Verify the exception is raised when the absolute path to the patch + # metadata file does not exist or is not a file. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.StagePatchMetadataFileForCommit( + patch_metadata_path) + + self.assertEqual( + str(err.exception), 'Invalid patch metadata file provided: ' + '%s' % patch_metadata_path) + + mock_isfile.assert_called_once() + + # Simulate the behavior of 'os.path.isfile()' when the absolute path to the + # patch metadata file exists. + @mock.patch.object(os.path, 'isfile', return_value=True) + # Simulate the behavior of 'ExecCommandAndCaptureOutput()' when successfully + # staged the patch metadata file for commit. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyStagedPatchMetadataFileForCommit(self, mock_run_cmd, + _mock_isfile): + + patch_metadata_path = '/abs/path/to/filesdir/PATCHES.json' + + update_chromeos_llvm_hash.StagePatchMetadataFileForCommit( + patch_metadata_path) + + mock_run_cmd.assert_called_once() + + def testNoPatchResultsForCommit(self): + package_1_patch_info_dict = { + 'applied_patches': ['display_results.patch'], + 'failed_patches': ['fixes_output.patch'], + 'non_applicable_patches': [], + 'disabled_patches': [], + 'removed_patches': [], + 'modified_metadata': None + } + + package_2_patch_info_dict = { + 'applied_patches': ['redirects_stdout.patch', 'fix_display.patch'], + 'failed_patches': [], + 'non_applicable_patches': [], + 'disabled_patches': [], + 'removed_patches': [], + 'modified_metadata': None + } + + test_package_info_dict = { + 'test-packages/package1': package_1_patch_info_dict, + 'test-packages/package2': package_2_patch_info_dict + } + + test_commit_message = ['-m %s' % 'Updated packages'] + + self.assertListEqual( + update_chromeos_llvm_hash.StagePackagesPatchResultsForCommit( + test_package_info_dict, test_commit_message), test_commit_message) + + @mock.patch.object(update_chromeos_llvm_hash, + 'StagePatchMetadataFileForCommit') + @mock.patch.object(update_chromeos_llvm_hash, 'RemovePatchesFromFilesDir') + def testAddedPatchResultsForCommit(self, mock_remove_patches, + mock_stage_patches_for_commit): + + package_1_patch_info_dict = { + 'applied_patches': [], + 'failed_patches': [], + 'non_applicable_patches': [], + 'disabled_patches': ['fixes_output.patch'], + 'removed_patches': [], + 'modified_metadata': '/abs/path/to/filesdir/PATCHES.json' + } + + package_2_patch_info_dict = { + 'applied_patches': ['fix_display.patch'], + 'failed_patches': [], + 'non_applicable_patches': [], + 'disabled_patches': [], + 'removed_patches': ['/abs/path/to/filesdir/redirect_stdout.patch'], + 'modified_metadata': '/abs/path/to/filesdir/PATCHES.json' + } + + test_package_info_dict = { + 'test-packages/package1': package_1_patch_info_dict, + 'test-packages/package2': package_2_patch_info_dict + } + + test_commit_message = ['-m %s' % 'Updated packages'] + + expected_commit_messages = [ + '-m %s' % 'Updated packages', + '-m %s' % 'For the package test-packages/package1:', + '-m %s' % 'The patch metadata file PATCHES.json was modified', + '-m %s' % 'The following patches were disabled:', + '-m %s' % 'fixes_output.patch', + '-m %s' % 'For the package test-packages/package2:', + '-m %s' % 'The patch metadata file PATCHES.json was modified', + '-m %s' % 'The following patches were removed:', + '-m %s' % 'redirect_stdout.patch' + ] + + self.assertListEqual( + update_chromeos_llvm_hash.StagePackagesPatchResultsForCommit( + test_package_info_dict, test_commit_message), + expected_commit_messages) + + path_to_removed_patch = '/abs/path/to/filesdir/redirect_stdout.patch' + + mock_remove_patches.assert_called_once_with([path_to_removed_patch]) + + self.assertEqual(mock_stage_patches_for_commit.call_count, 2) + + @mock.patch.object(update_chromeos_llvm_hash, + 'CreatePathDictionaryFromPackages') + @mock.patch.object(update_chromeos_llvm_hash, '_CreateRepo') + @mock.patch.object(update_chromeos_llvm_hash, 'UpdateEbuildLLVMHash') + @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuild') + @mock.patch.object(update_chromeos_llvm_hash, 'UploadChanges') + @mock.patch.object(update_chromeos_llvm_hash, '_DeleteRepo') + def testExceptionRaisedWhenUpdatingPackages( + self, mock_delete_repo, mock_upload_changes, mock_uprev_ebuild, + mock_update_llvm_next, mock_create_repo, mock_create_path_dict): + + abs_path_to_package = '/some/path/to/chroot/src/path/to/package.ebuild' + + symlink_path_to_package = \ + '/some/path/to/chroot/src/path/to/package-r1.ebuild' + + path_to_package_dir = '/some/path/to/chroot/src/path/to' + + # Test function to simulate '_CreateRepo' when successfully created the + # repo on a valid repo path. + def SuccessfullyCreateRepoForChanges(_repo_path, branch): + self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash4') + return + + # Test function to simulate 'UpdateEbuildLLVMHash' when successfully + # updated the ebuild's 'LLVM_NEXT_HASH'. + def SuccessfullyUpdatedLLVMHash(ebuild_path, _, git_hash, svn_version): + self.assertEqual(ebuild_path, abs_path_to_package) + self.assertEqual(git_hash, 'a123testhash4') + self.assertEqual(svn_version, 1000) + return + + # Test function to simulate 'UprevEbuild' when the symlink to the ebuild + # does not have a revision number. + def FailedToUprevEbuild(_symlink_path): + # Raises a 'ValueError' exception because the symlink did not have have a + # revision number. + raise ValueError('Failed to uprev the ebuild.') + + # Test function to fail on 'UploadChanges' if the function gets called + # when an exception is raised. + def ShouldNotExecuteUploadChanges(_repo_path, _git_hash, _commit_messages): + # Test function should not be called (i.e. execution should resume in the + # 'finally' block) because 'UprevEbuild()' raised an + # exception. + assert False, 'Failed to go to "finally" block ' \ + 'after the exception was raised.' + + test_package_path_dict = {symlink_path_to_package: abs_path_to_package} + + # Simulate behavior of 'CreatePathDictionaryFromPackages()' when + # successfully created a dictionary where the key is the absolute path to + # the symlink of the package and value is the absolute path to the ebuild of + # the package. + mock_create_path_dict.return_value = test_package_path_dict + + # Use test function to simulate behavior. + mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges + mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash + mock_uprev_ebuild.side_effect = FailedToUprevEbuild + mock_upload_changes.side_effect = ShouldNotExecuteUploadChanges + + packages_to_update = ['test-packages/package1'] + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next + git_hash = 'a123testhash4' + svn_version = 1000 + chroot_path = '/some/path/to/chroot' + patch_metadata_file = 'PATCHES.json' + git_hash_source = 'google3' + branch = 'update-LLVM_NEXT_HASH-a123testhash4' + + # Verify exception is raised when an exception is thrown within + # the 'try' block by UprevEbuild function. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UpdatePackages( + packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, + patch_metadata_file, FailureModes.FAIL, git_hash_source) + + self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') + + mock_create_path_dict.assert_called_once_with(chroot_path, + packages_to_update) + + mock_create_repo.assert_called_once_with(path_to_package_dir, branch) + + mock_update_llvm_next.assert_called_once_with( + abs_path_to_package, llvm_variant, git_hash, svn_version) + + mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) + + mock_upload_changes.assert_not_called() + + mock_delete_repo.assert_called_once_with(path_to_package_dir, branch) + + @mock.patch.object(update_chromeos_llvm_hash, + 'CreatePathDictionaryFromPackages') + @mock.patch.object(update_chromeos_llvm_hash, '_CreateRepo') + @mock.patch.object(update_chromeos_llvm_hash, 'UpdateEbuildLLVMHash') + @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuild') + @mock.patch.object(update_chromeos_llvm_hash, 'UploadChanges') + @mock.patch.object(update_chromeos_llvm_hash, '_DeleteRepo') + @mock.patch.object(llvm_patch_management, 'UpdatePackagesPatchMetadataFile') + @mock.patch.object(update_chromeos_llvm_hash, + 'StagePatchMetadataFileForCommit') + def testSuccessfullyUpdatedPackages( + self, mock_stage_patch_file, mock_update_package_metadata_file, + mock_delete_repo, mock_upload_changes, mock_uprev_ebuild, + mock_update_llvm_next, mock_create_repo, mock_create_path_dict): + + abs_path_to_package = '/some/path/to/chroot/src/path/to/package.ebuild' + + symlink_path_to_package = \ + '/some/path/to/chroot/src/path/to/package-r1.ebuild' + + path_to_package_dir = '/some/path/to/chroot/src/path/to' + + # Test function to simulate '_CreateRepo' when successfully created the repo + # for the changes to be made to the ebuild files. + def SuccessfullyCreateRepoForChanges(_repo_path, branch): + self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash5') + return + + # Test function to simulate 'UploadChanges' after a successfull update of + # 'LLVM_NEXT_HASH" of the ebuild file. + def SuccessfullyUpdatedLLVMHash(ebuild_path, _, git_hash, svn_version): + self.assertEqual(ebuild_path, + '/some/path/to/chroot/src/path/to/package.ebuild') + self.assertEqual(git_hash, 'a123testhash5') + self.assertEqual(svn_version, 1000) + return + + # Test function to simulate 'UprevEbuild' when successfully incremented + # the revision number by 1. + def SuccessfullyUprevedEbuild(symlink_path): + self.assertEqual(symlink_path, + '/some/path/to/chroot/src/path/to/package-r1.ebuild') + + return + + # Test function to simulate 'UpdatePackagesPatchMetadataFile()' when the + # patch results contains a disabled patch in 'disable_patches' mode. + def RetrievedPatchResults(chroot_path, svn_version, patch_metadata_file, + packages, mode): + + self.assertEqual(chroot_path, '/some/path/to/chroot') + self.assertEqual(svn_version, 1000) + self.assertEqual(patch_metadata_file, 'PATCHES.json') + self.assertListEqual(packages, ['path/to']) + self.assertEqual(mode, FailureModes.DISABLE_PATCHES) + + PatchInfo = namedtuple('PatchInfo', [ + 'applied_patches', 'failed_patches', 'non_applicable_patches', + 'disabled_patches', 'removed_patches', 'modified_metadata' + ]) + + package_patch_info = PatchInfo( + applied_patches=['fix_display.patch'], + failed_patches=['fix_stdout.patch'], + non_applicable_patches=[], + disabled_patches=['fix_stdout.patch'], + removed_patches=[], + modified_metadata='/abs/path/to/filesdir/%s' % patch_metadata_file) + + package_info_dict = {'path/to': package_patch_info._asdict()} + + # Returns a dictionary where the key is the package and the value is a + # dictionary that contains information about the package's patch results + # produced by the patch manager. + return package_info_dict + + # Test function to simulate 'UploadChanges()' when successfully created a + # commit for the changes made to the packages and their patches and + # retrieved the change list of the commit. + def SuccessfullyUploadedChanges(_repo_path, _branch, _commit_messages): + commit_url = 'https://some_name/path/to/commit/+/12345' + + return update_chromeos_llvm_hash.CommitContents( + url=commit_url, cl_number=12345) + + test_package_path_dict = {symlink_path_to_package: abs_path_to_package} + + # Simulate behavior of 'CreatePathDictionaryFromPackages()' when + # successfully created a dictionary where the key is the absolute path to + # the symlink of the package and value is the absolute path to the ebuild of + # the package. + mock_create_path_dict.return_value = test_package_path_dict + + # Use test function to simulate behavior. + mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges + mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash + mock_uprev_ebuild.side_effect = SuccessfullyUprevedEbuild + mock_update_package_metadata_file.side_effect = RetrievedPatchResults + mock_upload_changes.side_effect = SuccessfullyUploadedChanges + + packages_to_update = ['test-packages/package1'] + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next + git_hash = 'a123testhash5' + svn_version = 1000 + chroot_path = '/some/path/to/chroot' + patch_metadata_file = 'PATCHES.json' + git_hash_source = 'tot' + branch = 'update-LLVM_NEXT_HASH-a123testhash5' + + change_list = update_chromeos_llvm_hash.UpdatePackages( + packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, + patch_metadata_file, FailureModes.DISABLE_PATCHES, git_hash_source) + + self.assertEqual(change_list.url, + 'https://some_name/path/to/commit/+/12345') + + self.assertEqual(change_list.cl_number, 12345) + + mock_create_path_dict.assert_called_once_with(chroot_path, + packages_to_update) + + mock_create_repo.assert_called_once_with(path_to_package_dir, branch) + + mock_update_llvm_next.assert_called_once_with( + abs_path_to_package, llvm_variant, git_hash, svn_version) + + mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) + + expected_commit_messages = [ + '-m %s' % 'llvm-next/tot: upgrade to a123testhash5 (r1000)', + '-m %s' % 'The following packages have been updated:', + '-m %s' % 'path/to', + '-m %s' % 'For the package path/to:', + '-m %s' % 'The patch metadata file PATCHES.json was modified', + '-m %s' % 'The following patches were disabled:', + '-m %s' % 'fix_stdout.patch' + ] + + mock_update_package_metadata_file.assert_called_once() + + mock_stage_patch_file.assert_called_once_with( + '/abs/path/to/filesdir/PATCHES.json') + + mock_upload_changes.assert_called_once_with(path_to_package_dir, branch, + expected_commit_messages) + + mock_delete_repo.assert_called_once_with(path_to_package_dir, branch) + + +if __name__ == '__main__': + unittest.main() diff --git a/llvm_tools/update_chromeos_llvm_next_hash.py b/llvm_tools/update_chromeos_llvm_next_hash.py deleted file mode 100755 index ce87db94..00000000 --- a/llvm_tools/update_chromeos_llvm_next_hash.py +++ /dev/null @@ -1,740 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2019 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. - -"""Updates the LLVM hash and uprevs the build of the specified - -packages. - -For each package, a temporary repo is created and the changes are uploaded -for review. -""" - -from __future__ import print_function -from collections import namedtuple -from enum import Enum - -import argparse -import os -import re -import subprocess - -from assert_not_in_chroot import VerifyOutsideChroot -from failure_modes import FailureModes -from subprocess_helpers import ChrootRunCommand, ExecCommandAndCaptureOutput -from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption, is_svn_option -import get_llvm_hash -import llvm_patch_management - - -# Specify which LLVM hash to update -class LLVMVariant(Enum): - """Represent the LLVM hash in an ebuild file to update.""" - - current = 'LLVM_HASH' - next = 'LLVM_NEXT_HASH' - - -# If set to `True`, then the contents of `stdout` after executing a command will -# be displayed to the terminal. -verbose = False - -CommitContents = namedtuple('CommitContents', ['url', 'cl_number']) - - -def GetCommandLineArgs(): - """Parses the command line for the optional command line arguments. - - Returns: - The log level to use when retrieving the LLVM hash or google3 LLVM version, - the chroot path to use for executing chroot commands, - a list of a package or packages to update their LLVM next hash, - and the LLVM version to use when retrieving the LLVM hash. - """ - - # Default path to the chroot if a path is not specified. - cros_root = os.path.expanduser('~') - cros_root = os.path.join(cros_root, 'chromiumos') - - # Create parser and add optional command-line arguments. - parser = argparse.ArgumentParser( - description="Updates the build's hash for llvm-next.") - - # Add argument for a specific chroot path. - parser.add_argument( - '--chroot_path', - default=cros_root, - help='the path to the chroot (default: %(default)s)') - - # Add argument for specific builds to uprev and update their llvm-next hash. - parser.add_argument( - '--update_packages', - default=['sys-devel/llvm'], - required=False, - nargs='+', - help='the ebuilds to update their hash for llvm-next ' \ - '(default: %(default)s)') - - # Add argument for whether to display command contents to `stdout`. - parser.add_argument( - '--verbose', - action='store_true', - help='display contents of a command to the terminal ' - '(default: %(default)s)') - - # Add argument for the LLVM hash to update - parser.add_argument( - '--is_llvm_next', - action='store_true', - help= - 'which llvm hash to update. Update LLVM_NEXT_HASH specified. ' \ - 'Otherwise, update LLVM_HASH' - ) - - # Add argument for the LLVM version to use. - parser.add_argument( - '--llvm_version', - type=is_svn_option, - required=True, - help='which git hash to use. Either a svn revision, or one ' - 'of %s' % sorted(get_llvm_hash.KNOWN_HASH_SOURCES)) - - # Add argument for the mode of the patch management when handling patches. - parser.add_argument( - '--failure_mode', - default=FailureModes.FAIL.value, - choices=[FailureModes.FAIL.value, FailureModes.CONTINUE.value, - FailureModes.DISABLE_PATCHES.value, - FailureModes.REMOVE_PATCHES.value], - help='the mode of the patch manager when handling failed patches ' \ - '(default: %(default)s)') - - # Add argument for the patch metadata file. - parser.add_argument( - '--patch_metadata_file', - default='PATCHES.json', - help='the .json file that has all the patches and their ' - 'metadata if applicable (default: PATCHES.json inside $FILESDIR)') - - # Parse the command line. - args_output = parser.parse_args() - - # FIXME: We shouldn't be using globals here, but until we fix it, make pylint - # stop complaining about it. - # pylint: disable=global-statement - global verbose - - verbose = args_output.verbose - - return args_output - - -def GetChrootBuildPaths(chromeos_root, package_list): - """Gets the chroot path(s) of the package(s). - - Args: - chromeos_root: The absolute path to the chroot to - use for executing chroot commands. - package_list: A list of a package/packages to - be used to find their chroot path. - - Returns: - A list of a chroot path/chroot paths of the package's ebuild file. - - Raises: - ValueError: Failed to get the chroot path of a package. - """ - - chroot_paths = [] - - # Find the chroot path for each package's ebuild. - for cur_package in sorted(set(package_list)): - # Cmd to find the chroot path for the package. - equery_cmd = ['equery', 'w', cur_package] - - chroot_path = ChrootRunCommand(chromeos_root, equery_cmd, verbose=verbose) - - chroot_paths.append(chroot_path.strip()) - - return chroot_paths - - -def _ConvertChrootPathsToSymLinkPaths(chromeos_root, chroot_file_paths): - """Converts the chroot path(s) to absolute symlink path(s). - - Args: - chromeos_root: The absolute path to the chroot. - chroot_file_paths: A list of a chroot path/chroot paths to convert to - a absolute symlink path/symlink paths. - - Returns: - A list of absolute path(s) which are symlinks that point to - the ebuild of the package(s). - - Raises: - ValueError: Invalid prefix for the chroot path or - invalid chroot path(s) were provided. - """ - - symlink_file_paths = [] - - chroot_prefix = '/mnt/host/source/' - - # Iterate through the chroot paths. - # - # For each chroot file path, remove '/mnt/host/source/' prefix - # and combine the chroot path with the result and add it to the list. - for cur_chroot_file_path in chroot_file_paths: - if not cur_chroot_file_path.startswith(chroot_prefix): - raise ValueError( - 'Invalid prefix for the chroot path: %s' % cur_chroot_file_path) - - rel_path = cur_chroot_file_path[len(chroot_prefix):] - - # combine the chromeos root path + '/src/...' - absolute_symlink_path = os.path.join(chromeos_root, rel_path) - - symlink_file_paths.append(absolute_symlink_path) - - return symlink_file_paths - - -def GetEbuildPathsFromSymLinkPaths(symlinks): - """Reads the symlink(s) to get the ebuild path(s) to the package(s). - - Args: - symlinks: A list of absolute path symlink/symlinks that point - to the package's ebuild. - - Returns: - A dictionary where the key is the absolute path of the symlink and the value - is the absolute path to the ebuild that was read from the symlink. - - Raises: - ValueError: Invalid symlink(s) were provided. - """ - - # A dictionary that holds: - # key: absolute symlink path - # value: absolute ebuild path - resolved_paths = {} - - # Iterate through each symlink. - # - # For each symlink, check that it is a valid symlink, - # and then construct the ebuild path, and - # then add the ebuild path to the dict. - for cur_symlink in symlinks: - if not os.path.islink(cur_symlink): - raise ValueError('Invalid symlink provided: %s' % cur_symlink) - - # Construct the absolute path to the ebuild. - ebuild_path = os.path.realpath(cur_symlink) - - if cur_symlink not in resolved_paths: - resolved_paths[cur_symlink] = ebuild_path - - return resolved_paths - - -def UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version): - """Updates the LLVM hash in the ebuild. - - The build changes are staged for commit in the temporary repo. - - Args: - ebuild_path: The absolute path to the ebuild. - llvm_variant: Which LLVM hash to update. - git_hash: The new git hash. - svn_version: The SVN-style revision number of git_hash. - - Raises: - ValueError: Invalid ebuild path provided or failed to stage the commit - of the changes or failed to update the LLVM hash. - """ - - # Iterate through each ebuild. - # - # For each ebuild, read the file in - # advance and then create a temporary file - # that gets updated with the new LLVM hash - # and revision number and then the ebuild file - # gets updated to the temporary file. - - if not os.path.isfile(ebuild_path): - raise ValueError('Invalid ebuild path provided: %s' % ebuild_path) - - temp_ebuild_file = '%s.temp' % ebuild_path - - with open(ebuild_path) as ebuild_file: - # write updates to a temporary file in case of interrupts - with open(temp_ebuild_file, 'w') as temp_file: - for cur_line in ReplaceLLVMHash(ebuild_file, llvm_variant, git_hash, - svn_version): - temp_file.write(cur_line) - - os.rename(temp_ebuild_file, ebuild_path) - - # Get the path to the parent directory. - parent_dir = os.path.dirname(ebuild_path) - - # Stage the changes. - stage_changes_cmd = ['git', '-C', parent_dir, 'add', ebuild_path] - - ExecCommandAndCaptureOutput(stage_changes_cmd, verbose=verbose) - - -def ReplaceLLVMHash(ebuild_lines, llvm_variant, git_hash, svn_version): - """Updates the LLVM git hash. - - Args: - ebuild_lines: The contents of the ebuild file. - llvm_variant: The LLVM hash to update. - git_hash: The new git hash. - svn_version: The SVN-style revision number of git_hash. - """ - is_updated = False - llvm_regex = re.compile('^' + re.escape(llvm_variant.value) + - '=\"[a-z0-9]+\"') - for cur_line in ebuild_lines: - if not is_updated and llvm_regex.search(cur_line): - # Update the git hash and revision number. - cur_line = '%s=\"%s\" # r%d\n' % (llvm_variant.value, git_hash, - svn_version) - - is_updated = True - - yield cur_line - - if not is_updated: - raise ValueError('Failed to update %s' % llvm_variant.value) - - -def UprevEbuild(symlink): - """Uprevs the ebuild's revision number. - - Increases the revision number by 1 and stages the change in - the temporary repo. - - Args: - symlink: The absolute path of the symlink that points to - the ebuild of the package. - - Raises: - ValueError: Failed to uprev the symlink or failed to stage the changes. - """ - - if not os.path.islink(symlink): - raise ValueError('Invalid symlink provided: %s' % symlink) - - # Find the revision number and increment it by 1. - new_symlink, is_changed = re.subn( - r'r([0-9]+).ebuild', - lambda match: 'r%s.ebuild' % str(int(match.group(1)) + 1), - symlink, - count=1) - - if not is_changed: # failed to increment the revision number - raise ValueError('Failed to uprev the ebuild.') - - path_to_symlink_dir = os.path.dirname(symlink) - - # Stage the new symlink for commit. - stage_symlink_cmd = [ - 'git', '-C', path_to_symlink_dir, 'mv', symlink, new_symlink - ] - - ExecCommandAndCaptureOutput(stage_symlink_cmd, verbose=verbose) - - -def _CreateRepo(path_to_repo_dir, branch): - """Creates a temporary repo for the changes. - - Args: - path_to_repo_dir: The absolute path to the repo. - branch: The name of the branch to create. - llvm_variant: The LLVM hash to update. - git_hash: The new git hash. - - Raises: - ValueError: Failed to create a repo in that directory. - """ - - if not os.path.isdir(path_to_repo_dir): - raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - - reset_changes_cmd = [ - 'git', - '-C', - path_to_repo_dir, - 'reset', - 'HEAD', - '--hard', - ] - - ExecCommandAndCaptureOutput(reset_changes_cmd, verbose=verbose) - - create_repo_cmd = ['repo', 'start', branch] - - ExecCommandAndCaptureOutput( - create_repo_cmd, cwd=path_to_repo_dir, verbose=verbose) - - -def _DeleteRepo(path_to_repo_dir, branch): - """Deletes the temporary repo. - - Args: - path_to_repo_dir: The absolute path of the repo. - branch: The name of the branch to delete. - - Raises: - ValueError: Failed to delete the repo in that directory. - """ - - if not os.path.isdir(path_to_repo_dir): - raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - - checkout_to_master_cmd = [ - 'git', '-C', path_to_repo_dir, 'checkout', 'cros/master' - ] - - ExecCommandAndCaptureOutput(checkout_to_master_cmd, verbose=verbose) - - reset_head_cmd = ['git', '-C', path_to_repo_dir, 'reset', 'HEAD', '--hard'] - - ExecCommandAndCaptureOutput(reset_head_cmd, verbose=verbose) - - delete_repo_cmd = ['git', '-C', path_to_repo_dir, 'branch', '-D', branch] - - ExecCommandAndCaptureOutput(delete_repo_cmd, verbose=verbose) - - -def GetGerritRepoUploadContents(repo_upload_contents): - """Parses 'repo upload' to get the Gerrit commit URL and CL number. - - Args: - repo_upload_contents: The contents of the 'repo upload' command. - - Returns: - A nametuple that has two (key, value) pairs, where the first pair is the - Gerrit commit URL and the second pair is the change list number. - - Raises: - ValueError: The contents of the 'repo upload' command did not contain a - Gerrit commit URL. - """ - - found_url = re.search( - r'https://chromium-review.googlesource.com/c/' - r'chromiumos/overlays/chromiumos-overlay/\+/([0-9]+)', - repo_upload_contents) - - if not found_url: - raise ValueError('Failed to find change list URL.') - - cl_number = int(found_url.group(1)) - - return CommitContents(url=found_url.group(0), cl_number=cl_number) - - -def UploadChanges(path_to_repo_dir, branch, commit_messages): - """Uploads the changes (updating LLVM next hash and uprev symlink) for review. - - Args: - path_to_repo_dir: The absolute path to the repo where changes were made. - branch: The name of the branch to upload. - commit_messages: A string of commit message(s) (i.e. '-m [message]' - of the changes made. - - Returns: - A nametuple that has two (key, value) pairs, where the first pair is the - Gerrit commit URL and the second pair is the change list number. - - Raises: - ValueError: Failed to create a commit or failed to upload the - changes for review. - """ - - if not os.path.isdir(path_to_repo_dir): - raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - - commit_cmd = [ - 'git', - 'commit', - ] - commit_cmd.extend(commit_messages) - - ExecCommandAndCaptureOutput(commit_cmd, cwd=path_to_repo_dir, verbose=verbose) - - # Upload the changes for review. - upload_change_cmd = ( - 'yes | repo upload --wip --ne --br=%s --no-verify' % branch) - - # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow - # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. - # pylint: disable=unexpected-keyword-arg - - # NOTE: Need `shell=True` in order to pipe `yes` into `repo upload ...`. - # - # The CL URL is sent to 'stderr', so need to redirect 'stderr' to 'stdout'. - upload_changes_obj = subprocess.Popen( - upload_change_cmd, - cwd=path_to_repo_dir, - shell=True, - encoding='UTF-8', - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - out, _ = upload_changes_obj.communicate() - - if upload_changes_obj.returncode: # Failed to upload changes. - print(out) - raise ValueError('Failed to upload changes for review') - - return GetGerritRepoUploadContents(out.rstrip()) - - -def CreatePathDictionaryFromPackages(chroot_path, update_packages): - """Creates a symlink and ebuild path pair dictionary from the packages. - - Args: - chroot_path: The absolute path to the chroot. - update_packages: The filtered packages to be updated. - - Returns: - A dictionary where the key is the absolute path to the symlink - of the package and the value is the absolute path to the ebuild of - the package. - """ - - # Construct a list containing the chroot file paths of the package(s). - chroot_file_paths = GetChrootBuildPaths(chroot_path, update_packages) - - # Construct a list containing the symlink(s) of the package(s). - symlink_file_paths = _ConvertChrootPathsToSymLinkPaths( - chroot_path, chroot_file_paths) - - # Create a dictionary where the key is the absolute path of the symlink to - # the package and the value is the absolute path to the ebuild of the package. - return GetEbuildPathsFromSymLinkPaths(symlink_file_paths) - - -def RemovePatchesFromFilesDir(patches_to_remove): - """Removes the patches from $FILESDIR of a package. - - Args: - patches_to_remove: A list where each entry is the absolute path to a patch. - - Raises: - ValueError: Failed to remove a patch in $FILESDIR. - """ - - for cur_patch in patches_to_remove: - remove_patch_cmd = [ - 'git', '-C', - os.path.dirname(cur_patch), 'rm', '-f', cur_patch - ] - - ExecCommandAndCaptureOutput(remove_patch_cmd, verbose=verbose) - - -def StagePatchMetadataFileForCommit(patch_metadata_file_path): - """Stages the updated patch metadata file for commit. - - Args: - patch_metadata_file_path: The absolute path to the patch metadata file. - - Raises: - ValueError: Failed to stage the patch metadata file for commit or invalid - patch metadata file. - """ - - if not os.path.isfile(patch_metadata_file_path): - raise ValueError( - 'Invalid patch metadata file provided: %s' % patch_metadata_file_path) - - # Cmd to stage the patch metadata file for commit. - stage_patch_file = [ - 'git', '-C', - os.path.dirname(patch_metadata_file_path), 'add', patch_metadata_file_path - ] - - ExecCommandAndCaptureOutput(stage_patch_file, verbose=verbose) - - -def StagePackagesPatchResultsForCommit(package_info_dict, commit_messages): - """Stages the patch results of the packages to the commit message. - - Args: - package_info_dict: A dictionary where the key is the package name and the - value is a dictionary that contains information about the patches of the - package (key). - commit_messages: The commit message that has the updated ebuilds and - upreving information. - """ - - # For each package, check if any patches for that package have - # changed, if so, add which patches have changed to the commit - # message. - for package_name, patch_info_dict in package_info_dict.items(): - if patch_info_dict['disabled_patches'] or \ - patch_info_dict['removed_patches'] or \ - patch_info_dict['modified_metadata']: - cur_package_header = 'For the package %s:' % package_name - commit_messages.append('-m %s' % cur_package_header) - - # Add to the commit message that the patch metadata file was modified. - if patch_info_dict['modified_metadata']: - patch_metadata_path = patch_info_dict['modified_metadata'] - commit_messages.append('-m %s' % 'The patch metadata file %s was ' - 'modified' % os.path.basename(patch_metadata_path)) - - StagePatchMetadataFileForCommit(patch_metadata_path) - - # Add each disabled patch to the commit message. - if patch_info_dict['disabled_patches']: - commit_messages.append('-m %s' % 'The following patches were disabled:') - - for patch_path in patch_info_dict['disabled_patches']: - commit_messages.append('-m %s' % os.path.basename(patch_path)) - - # Add each removed patch to the commit message. - if patch_info_dict['removed_patches']: - commit_messages.append('-m %s' % 'The following patches were removed:') - - for patch_path in patch_info_dict['removed_patches']: - commit_messages.append('-m %s' % os.path.basename(patch_path)) - - RemovePatchesFromFilesDir(patch_info_dict['removed_patches']) - - return commit_messages - - -def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, mode, git_hash_source): - """Updates an LLVM hash and uprevs the ebuild of the packages. - - A temporary repo is created for the changes. The changes are - then uploaded for review. - - Args: - packages: A list of all the packages that are going to be updated. - llvm_variant: The LLVM hash to update. - git_hash: The new git hash. - svn_version: The SVN-style revision number of git_hash. - chroot_path: The absolute path to the chroot. - patch_metadata_file: The name of the .json file in '$FILESDIR/' that has - the patches and its metadata. - mode: The mode of the patch manager when handling an applicable patch - that failed to apply. - Ex: 'FailureModes.FAIL' - git_hash_source: The source of which git hash to use based off of. - Ex: 'google3', 'tot', or such as 365123 - - Returns: - A nametuple that has two (key, value) pairs, where the first pair is the - Gerrit commit URL and the second pair is the change list number. - """ - - # Determines whether to print the result of each executed command. - llvm_patch_management.verbose = verbose - - # Construct a dictionary where the key is the absolute path of the symlink to - # the package and the value is the absolute path to the ebuild of the package. - paths_dict = CreatePathDictionaryFromPackages(chroot_path, packages) - - repo_path = os.path.dirname(next(iter(paths_dict.values()))) - - branch = 'update-' + llvm_variant.value + '-' + git_hash - - _CreateRepo(repo_path, branch) - - try: - commit_message_header = 'llvm' - if llvm_variant == LLVMVariant.next: - commit_message_header = 'llvm-next' - if git_hash_source in get_llvm_hash.KNOWN_HASH_SOURCES: - commit_message_header += ( - '/%s: upgrade to %s (r%d)' % (git_hash_source, git_hash, svn_version)) - else: - commit_message_header += ( - ': upgrade to %s (r%d)' % (git_hash, svn_version)) - - commit_messages = ['-m %s' % commit_message_header] - - commit_messages.append('-m The following packages have been updated:') - - # Holds the list of packages that are updating. - packages = [] - - # Iterate through the dictionary. - # - # For each iteration: - # 1) Update the ebuild's LLVM hash. - # 2) Uprev the ebuild (symlink). - # 3) Add the modified package to the commit message. - for symlink_path, ebuild_path in paths_dict.items(): - path_to_ebuild_dir = os.path.dirname(ebuild_path) - - UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version) - - UprevEbuild(symlink_path) - - cur_dir_name = os.path.basename(path_to_ebuild_dir) - parent_dir_name = os.path.basename(os.path.dirname(path_to_ebuild_dir)) - - packages.append('%s/%s' % (parent_dir_name, cur_dir_name)) - - new_commit_message = '%s/%s' % (parent_dir_name, cur_dir_name) - - commit_messages.append('-m %s' % new_commit_message) - - # Handle the patches for each package. - package_info_dict = llvm_patch_management.UpdatePackagesPatchMetadataFile( - chroot_path, svn_version, patch_metadata_file, packages, mode) - - # Update the commit message if changes were made to a package's patches. - commit_messages = StagePackagesPatchResultsForCommit( - package_info_dict, commit_messages) - - change_list = UploadChanges(repo_path, branch, commit_messages) - - finally: - _DeleteRepo(repo_path, branch) - - return change_list - - -def main(): - """Updates the LLVM next hash for each package. - - Raises: - AssertionError: The script was run inside the chroot. - """ - - VerifyOutsideChroot() - - args_output = GetCommandLineArgs() - - llvm_variant = LLVMVariant.current - if args_output.is_llvm_next: - llvm_variant = LLVMVariant.next - - git_hash_source = args_output.llvm_version - - git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(git_hash_source) - - change_list = UpdatePackages( - args_output.update_packages, llvm_variant, git_hash, svn_version, - args_output.chroot_path, args_output.patch_metadata_file, - FailureModes(args_output.failure_mode), git_hash_source) - - print('Successfully updated packages to %s (%d)' % (git_hash, svn_version)) - print('Gerrit URL: %s' % change_list.url) - print('Change list number: %d' % change_list.cl_number) - - -if __name__ == '__main__': - main() diff --git a/llvm_tools/update_chromeos_llvm_next_hash_unittest.py b/llvm_tools/update_chromeos_llvm_next_hash_unittest.py deleted file mode 100755 index 033d602e..00000000 --- a/llvm_tools/update_chromeos_llvm_next_hash_unittest.py +++ /dev/null @@ -1,999 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2019 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. - -"""Unit tests for updating LLVM hashes.""" - -from __future__ import print_function - -from collections import namedtuple -import os -import subprocess -import unittest -import unittest.mock as mock - -from failure_modes import FailureModes -from test_helpers import CreateTemporaryJsonFile -import llvm_patch_management -import update_chromeos_llvm_next_hash - -# These are unittests; protected access is OK to a point. -# pylint: disable=protected-access - - -class UpdateLLVMHashTest(unittest.TestCase): - """Test class for updating LLVM hashes of packages.""" - - @mock.patch.object(update_chromeos_llvm_next_hash, 'ChrootRunCommand') - def testSucceedsToGetChrootPathForPackage(self, mock_chroot_command): - package_chroot_path = '/chroot/path/to/package.ebuild' - - # Emulate ChrootRunCommandWOutput behavior when a chroot path is found for - # a valid package. - mock_chroot_command.return_value = package_chroot_path - - chroot_path = '/test/chroot/path' - package_list = ['new-test/package'] - - self.assertEqual( - update_chromeos_llvm_next_hash.GetChrootBuildPaths( - chroot_path, package_list), [package_chroot_path]) - - mock_chroot_command.assert_called_once() - - def testFailedToConvertChrootPathWithInvalidPrefixToSymlinkPath(self): - chroot_path = '/path/to/chroot' - chroot_file_path = '/src/package.ebuild' - - # Verify the exception is raised when a symlink does not have the prefix - # '/mnt/host/source/'. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash._ConvertChrootPathsToSymLinkPaths( - chroot_path, [chroot_file_path]) - - self.assertEqual( - str(err.exception), 'Invalid prefix for the chroot path: ' - '%s' % chroot_file_path) - - def testSucceedsToConvertChrootPathToSymlinkPath(self): - chroot_path = '/path/to/chroot' - chroot_file_paths = ['/mnt/host/source/src/package.ebuild'] - - expected_symlink_path = '/path/to/chroot/src/package.ebuild' - - self.assertEqual( - update_chromeos_llvm_next_hash._ConvertChrootPathsToSymLinkPaths( - chroot_path, chroot_file_paths), [expected_symlink_path]) - - # Simulate 'os.path.islink' when a path is not a symbolic link. - @mock.patch.object(os.path, 'islink', return_value=False) - def testFailedToGetEbuildPathFromInvalidSymlink(self, mock_islink): - symlink_path = '/symlink/path/src/to/package-r1.ebuild' - - # Verify the exception is raised when the argument is not a symbolic link. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.GetEbuildPathsFromSymLinkPaths( - [symlink_path]) - - self.assertEqual( - str(err.exception), 'Invalid symlink provided: %s' % symlink_path) - - mock_islink.assert_called_once_with(symlink_path) - - # Simulate 'os.path.islink' when a path is a symbolic link. - @mock.patch.object(os.path, 'islink', return_value=True) - @mock.patch.object(os.path, 'realpath') - def testSucceedsToGetEbuildPathFromValidSymlink(self, mock_realpath, - mock_islink): - - symlink_path = '/path/to/chroot/src/package-r1.ebuild' - - abs_path_to_package = '/abs/path/to/src/package.ebuild' - - # Simulate 'os.path.realpath' when a valid path is passed in. - mock_realpath.return_value = abs_path_to_package - - expected_resolved_paths = {symlink_path: abs_path_to_package} - - self.assertEqual( - update_chromeos_llvm_next_hash.GetEbuildPathsFromSymLinkPaths( - [symlink_path]), expected_resolved_paths) - - mock_realpath.assert_called_once_with(symlink_path) - - mock_islink.assert_called_once_with(symlink_path) - - # Simulate behavior of 'os.path.isfile()' when the ebuild path to a package - # does not exist. - @mock.patch.object(os.path, 'isfile', return_value=False) - def testFailedToUpdateLLVMHashForInvalidEbuildPath(self, mock_isfile): - ebuild_path = '/some/path/to/package.ebuild' - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.current - git_hash = 'a123testhash1' - svn_version = 1000 - - # Verify the exception is raised when the ebuild path does not exist. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( - ebuild_path, llvm_variant, git_hash, svn_version) - - self.assertEqual( - str(err.exception), 'Invalid ebuild path provided: %s' % ebuild_path) - - mock_isfile.assert_called_once() - - # Simulate 'os.path.isfile' behavior on a valid ebuild path. - @mock.patch.object(os.path, 'isfile', return_value=True) - def testFailedToUpdateLLVMHash(self, mock_isfile): - # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: - with open(ebuild_file, 'w') as f: - f.write('\n'.join([ - 'First line in the ebuild', 'Second line in the ebuild', - 'Last line in the ebuild' - ])) - - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.current - git_hash = 'a123testhash1' - svn_version = 1000 - - # Verify the exception is raised when the ebuild file does not have - # 'LLVM_HASH'. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( - ebuild_file, llvm_variant, git_hash, svn_version) - - self.assertEqual( - str(err.exception), ('Failed to update %s.', 'LLVM_HASH')) - - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next - - self.assertEqual(mock_isfile.call_count, 2) - - # Simulate 'os.path.isfile' behavior on a valid ebuild path. - @mock.patch.object(os.path, 'isfile', return_value=True) - def testFailedToUpdateLLVMNextHash(self, mock_isfile): - # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: - with open(ebuild_file, 'w') as f: - f.write('\n'.join([ - 'First line in the ebuild', 'Second line in the ebuild', - 'Last line in the ebuild' - ])) - - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next - git_hash = 'a123testhash1' - svn_version = 1000 - - # Verify the exception is raised when the ebuild file does not have - # 'LLVM_NEXT_HASH'. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( - ebuild_file, llvm_variant, git_hash, svn_version) - - self.assertEqual( - str(err.exception), ('Failed to update %s.', 'LLVM_NEXT_HASH')) - - self.assertEqual(mock_isfile.call_count, 2) - - # Simulate 'os.path.isfile' behavior on a valid ebuild path. - @mock.patch.object(os.path, 'isfile', return_value=True) - # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the - # ebuild file for commit. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyStageTheEbuildForCommitForLLVMHashUpdate( - self, mock_stage_commit_command, mock_isfile): - - # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: - # Updates LLVM_HASH to 'git_hash' and revision to - # 'svn_version'. - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.current - git_hash = 'a123testhash1' - svn_version = 1000 - - with open(ebuild_file, 'w') as f: - f.write('\n'.join([ - 'First line in the ebuild', 'Second line in the ebuild', - 'LLVM_HASH=\"a12b34c56d78e90\" # r500', 'Last line in the ebuild' - ])) - - update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( - ebuild_file, llvm_variant, git_hash, svn_version) - - expected_file_contents = [ - 'First line in the ebuild\n', 'Second line in the ebuild\n', - 'LLVM_HASH=\"a123testhash1\" # r1000\n', 'Last line in the ebuild' - ] - - # Verify the new file contents of the ebuild file match the expected file - # contents. - with open(ebuild_file) as new_file: - file_contents_as_a_list = [cur_line for cur_line in new_file] - self.assertListEqual(file_contents_as_a_list, expected_file_contents) - - self.assertEqual(mock_isfile.call_count, 2) - - mock_stage_commit_command.assert_called_once() - - # Simulate 'os.path.isfile' behavior on a valid ebuild path. - @mock.patch.object(os.path, 'isfile', return_value=True) - # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the - # ebuild file for commit. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyStageTheEbuildForCommitForLLVMNextHashUpdate( - self, mock_stage_commit_command, mock_isfile): - - # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: - # Updates LLVM_NEXT_HASH to 'git_hash' and revision to - # 'svn_version'. - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next - git_hash = 'a123testhash1' - svn_version = 1000 - - with open(ebuild_file, 'w') as f: - f.write('\n'.join([ - 'First line in the ebuild', 'Second line in the ebuild', - 'LLVM_NEXT_HASH=\"a12b34c56d78e90\" # r500', - 'Last line in the ebuild' - ])) - - update_chromeos_llvm_next_hash.UpdateEbuildLLVMHash( - ebuild_file, llvm_variant, git_hash, svn_version) - - expected_file_contents = [ - 'First line in the ebuild\n', 'Second line in the ebuild\n', - 'LLVM_NEXT_HASH=\"a123testhash1\" # r1000\n', - 'Last line in the ebuild' - ] - - # Verify the new file contents of the ebuild file match the expected file - # contents. - with open(ebuild_file) as new_file: - file_contents_as_a_list = [cur_line for cur_line in new_file] - self.assertListEqual(file_contents_as_a_list, expected_file_contents) - - self.assertEqual(mock_isfile.call_count, 2) - - mock_stage_commit_command.assert_called_once() - - # Simulate behavior of 'os.path.islink()' when the argument passed in is not a - # symbolic link. - @mock.patch.object(os.path, 'islink', return_value=False) - def testFailedToUprevEbuildForInvalidSymlink(self, mock_islink): - symlink_to_uprev = '/symlink/to/package.ebuild' - - # Verify the exception is raised when a symbolic link is not passed in. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UprevEbuild(symlink_to_uprev) - - self.assertEqual( - str(err.exception), 'Invalid symlink provided: %s' % symlink_to_uprev) - - mock_islink.assert_called_once() - - # Simulate 'os.path.islink' when a symbolic link is passed in. - @mock.patch.object(os.path, 'islink', return_value=True) - def testFailedToUprevEbuild(self, mock_islink): - symlink_to_uprev = '/symlink/to/package.ebuild' - - # Verify the exception is raised when the symlink does not have a revision - # number. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UprevEbuild(symlink_to_uprev) - - self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') - - mock_islink.assert_called_once_with(symlink_to_uprev) - - # Simulate 'os.path.islink' when a valid symbolic link is passed in. - @mock.patch.object(os.path, 'islink', return_value=True) - # Simulate 'os.path.dirname' when returning a path to the directory of a - # valid symbolic link. - @mock.patch.object(os.path, 'dirname', return_value='/symlink/to') - # Simulate 'RunCommandWOutput' when successfully added the upreved symlink - # for commit. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyUprevEbuild(self, mock_command_output, mock_dirname, - mock_islink): - - symlink_to_uprev = '/symlink/to/package-r1.ebuild' - - update_chromeos_llvm_next_hash.UprevEbuild(symlink_to_uprev) - - mock_islink.assert_called_once_with(symlink_to_uprev) - - mock_dirname.assert_called_once_with(symlink_to_uprev) - - mock_command_output.assert_called_once() - - # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a - # directory. - @mock.patch.object(os.path, 'isdir', return_value=False) - def testFailedToCreateRepoForInvalidDirectoryPath(self, mock_isdir): - path_to_repo = '/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash1' - - # Verify the exception is raised when provided an invalid directory path. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash._CreateRepo(path_to_repo, branch) - - self.assertEqual( - str(err.exception), - 'Invalid directory path provided: %s' % path_to_repo) - - mock_isdir.assert_called_once() - - # Simulate 'os.path.isdir' when a valid repo path is provided. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully reset - # changes and created a repo. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyCreatedRepo(self, mock_command_output, mock_isdir): - path_to_repo = '/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash1' - - update_chromeos_llvm_next_hash._CreateRepo(path_to_repo, branch) - - mock_isdir.assert_called_once_with(path_to_repo) - - self.assertEqual(mock_command_output.call_count, 2) - - # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a - # directory. - @mock.patch.object(os.path, 'isdir', return_value=False) - def testFailedToDeleteRepoForInvalidDirectoryPath(self, mock_isdir): - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash2' - - # Verify the exception is raised on an invalid repo path. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash._DeleteRepo(path_to_repo, branch) - - self.assertEqual( - str(err.exception), - 'Invalid directory path provided: %s' % path_to_repo) - - mock_isdir.assert_called_once() - - # Simulate 'os.path.isdir' on valid directory path. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate 'ExecCommandAndCaptureOutput()' when successfully checkout to - # cros/master, reset changes, and deleted the repo. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyDeletedRepo(self, mock_command_output, mock_isdir): - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash2' - - update_chromeos_llvm_next_hash._DeleteRepo(path_to_repo, branch) - - mock_isdir.assert_called_once_with(path_to_repo) - - self.assertEqual(mock_command_output.call_count, 3) - - def testFailedToFindChangeListURL(self): - repo_upload_contents = 'remote: https://some_url' - - # Verify the exception is raised when failed to find the Gerrit URL when - # parsing the 'repo upload' contents. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.GetGerritRepoUploadContents( - repo_upload_contents) - - self.assertEqual(str(err.exception), 'Failed to find change list URL.') - - def testSuccessfullyGetGerritRepoUploadContents(self): - repo_upload_contents = ('remote: https://chromium-review.googlesource.com' - '/c/chromiumos/overlays/chromiumos-overlay/+/' - '193147 Some commit header') - - change_list = update_chromeos_llvm_next_hash.GetGerritRepoUploadContents( - repo_upload_contents) - - self.assertEqual( - change_list.url, - 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' - 'chromiumos-overlay/+/193147') - - self.assertEqual(change_list.cl_number, 193147) - - # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a - # directory. - @mock.patch.object(os.path, 'isdir', return_value=False) - def testFailedToUploadChangesForInvalidPathDirectory(self, mock_isdir): - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['-m Test message'] - - # Verify exception is raised when on an invalid repo path. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UploadChanges(path_to_repo, branch, - commit_messages) - - self.assertEqual( - str(err.exception), - 'Invalid directory path provided: %s' % path_to_repo) - - mock_isdir.assert_called_once() - - # Simulate 'os.path.isdir' on a valid repo path. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully - # committed the changes. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - @mock.patch.object(subprocess, 'Popen') - def testFailedToUploadChangesForReview(self, mock_repo_upload, - mock_command_output, mock_isdir): - - # Simulate the behavior of 'subprocess.Popen()' when uploading the changes - # for review - # - # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. - mock_repo_upload.return_value.communicate.return_value = ( - None, 'Branch does not exist.') - - # Exit code of 1 means failed to upload changes for review. - mock_repo_upload.return_value.returncode = 1 - - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['-m Test message'] - - # Verify exception is raised when failed to upload the changes for review. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UploadChanges(path_to_repo, branch, - commit_messages) - - self.assertEqual(str(err.exception), 'Failed to upload changes for review') - - mock_isdir.assert_called_once_with(path_to_repo) - - mock_command_output.assert_called_once() - - mock_repo_upload.assert_called_once() - - # Simulate 'os.path.isdir' when a valid repo path is passed in. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully - # committed the changes. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - @mock.patch.object(subprocess, 'Popen') - def testSuccessfullyUploadedChangesForReview(self, mock_repo_upload, - mock_command_output, mock_isdir): - - # A test CL generated by `repo upload`. - repo_upload_contents = ('remote: https://chromium-review.googlesource.' - 'com/c/chromiumos/overlays/chromiumos-overlay/' - '+/193147 Fix stdout') - - # Simulate the behavior of 'subprocess.Popen()' when uploading the changes - # for review - # - # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. - mock_repo_upload.return_value.communicate.return_value = ( - repo_upload_contents, None) - - # Exit code of 0 means successfully uploaded changes for review. - mock_repo_upload.return_value.returncode = 0 - - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['-m Test message'] - - change_list = update_chromeos_llvm_next_hash.UploadChanges( - path_to_repo, branch, commit_messages) - - self.assertEqual( - change_list.url, - 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' - 'chromiumos-overlay/+/193147') - - self.assertEqual(change_list.cl_number, 193147) - - mock_isdir.assert_called_once_with(path_to_repo) - - mock_command_output.assert_called_once() - - mock_repo_upload.assert_called_once() - - @mock.patch.object(update_chromeos_llvm_next_hash, 'GetChrootBuildPaths') - @mock.patch.object(update_chromeos_llvm_next_hash, - '_ConvertChrootPathsToSymLinkPaths') - def testExceptionRaisedWhenCreatingPathDictionaryFromPackages( - self, mock_chroot_paths_to_symlinks, mock_get_chroot_paths): - - chroot_path = '/some/path/to/chroot' - - package_name = 'test-pckg/package' - package_chroot_path = '/some/chroot/path/to/package-r1.ebuild' - - # Test function to simulate '_ConvertChrootPathsToSymLinkPaths' when a - # symlink does not start with the prefix '/mnt/host/source'. - def BadPrefixChrootPath(_chroot_path, _chroot_file_paths): - raise ValueError('Invalid prefix for the chroot path: ' - '%s' % package_chroot_path) - - # Simulate 'GetChrootBuildPaths' when valid packages are passed in. - # - # Returns a list of chroot paths. - mock_get_chroot_paths.return_value = [package_chroot_path] - - # Use test function to simulate '_ConvertChrootPathsToSymLinkPaths' - # behavior. - mock_chroot_paths_to_symlinks.side_effect = BadPrefixChrootPath - - # Verify exception is raised when for an invalid prefix in the symlink. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.CreatePathDictionaryFromPackages( - chroot_path, [package_name]) - - self.assertEqual( - str(err.exception), 'Invalid prefix for the chroot path: ' - '%s' % package_chroot_path) - - mock_get_chroot_paths.assert_called_once_with(chroot_path, [package_name]) - - mock_chroot_paths_to_symlinks.assert_called_once_with( - chroot_path, [package_chroot_path]) - - @mock.patch.object(update_chromeos_llvm_next_hash, 'GetChrootBuildPaths') - @mock.patch.object(update_chromeos_llvm_next_hash, - '_ConvertChrootPathsToSymLinkPaths') - @mock.patch.object(update_chromeos_llvm_next_hash, - 'GetEbuildPathsFromSymLinkPaths') - def testSuccessfullyCreatedPathDictionaryFromPackages( - self, mock_ebuild_paths_from_symlink_paths, mock_chroot_paths_to_symlinks, - mock_get_chroot_paths): - - package_chroot_path = '/mnt/host/source/src/path/to/package-r1.ebuild' - - # Simulate 'GetChrootBuildPaths' when returning a chroot path for a valid - # package. - # - # Returns a list of chroot paths. - mock_get_chroot_paths.return_value = [package_chroot_path] - - package_symlink_path = '/some/path/to/chroot/src/path/to/package-r1.ebuild' - - # Simulate '_ConvertChrootPathsToSymLinkPaths' when returning a symlink to - # a chroot path that points to a package. - # - # Returns a list of symlink file paths. - mock_chroot_paths_to_symlinks.return_value = [package_symlink_path] - - chroot_package_path = '/some/path/to/chroot/src/path/to/package.ebuild' - - # Simulate 'GetEbuildPathsFromSymlinkPaths' when returning a dictionary of - # a symlink that points to an ebuild. - # - # Returns a dictionary of a symlink and ebuild file path pair - # where the key is the absolute path to the symlink of the ebuild file - # and the value is the absolute path to the ebuild file of the package. - mock_ebuild_paths_from_symlink_paths.return_value = { - package_symlink_path: chroot_package_path - } - - chroot_path = '/some/path/to/chroot' - package_name = 'test-pckg/package' - - self.assertEqual( - update_chromeos_llvm_next_hash.CreatePathDictionaryFromPackages( - chroot_path, [package_name]), - {package_symlink_path: chroot_package_path}) - - mock_get_chroot_paths.assert_called_once_with(chroot_path, [package_name]) - - mock_chroot_paths_to_symlinks.assert_called_once_with( - chroot_path, [package_chroot_path]) - - mock_ebuild_paths_from_symlink_paths.assert_called_once_with( - [package_symlink_path]) - - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully - # removed patches. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyRemovedPatchesFromFilesDir(self, mock_run_cmd): - patches_to_remove_list = [ - '/abs/path/to/filesdir/cherry/fix_output.patch', - '/abs/path/to/filesdir/display_results.patch' - ] - - update_chromeos_llvm_next_hash.RemovePatchesFromFilesDir( - patches_to_remove_list) - - self.assertEqual(mock_run_cmd.call_count, 2) - - # Simulate behavior of 'os.path.isfile()' when the absolute path to the patch - # metadata file does not exist. - @mock.patch.object(os.path, 'isfile', return_value=False) - def testInvalidPatchMetadataFileStagedForCommit(self, mock_isfile): - patch_metadata_path = '/abs/path/to/filesdir/PATCHES' - - # Verify the exception is raised when the absolute path to the patch - # metadata file does not exist or is not a file. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.StagePatchMetadataFileForCommit( - patch_metadata_path) - - self.assertEqual( - str(err.exception), 'Invalid patch metadata file provided: ' - '%s' % patch_metadata_path) - - mock_isfile.assert_called_once() - - # Simulate the behavior of 'os.path.isfile()' when the absolute path to the - # patch metadata file exists. - @mock.patch.object(os.path, 'isfile', return_value=True) - # Simulate the behavior of 'ExecCommandAndCaptureOutput()' when successfully - # staged the patch metadata file for commit. - @mock.patch.object( - update_chromeos_llvm_next_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyStagedPatchMetadataFileForCommit(self, mock_run_cmd, - _mock_isfile): - - patch_metadata_path = '/abs/path/to/filesdir/PATCHES.json' - - update_chromeos_llvm_next_hash.StagePatchMetadataFileForCommit( - patch_metadata_path) - - mock_run_cmd.assert_called_once() - - def testNoPatchResultsForCommit(self): - package_1_patch_info_dict = { - 'applied_patches': ['display_results.patch'], - 'failed_patches': ['fixes_output.patch'], - 'non_applicable_patches': [], - 'disabled_patches': [], - 'removed_patches': [], - 'modified_metadata': None - } - - package_2_patch_info_dict = { - 'applied_patches': ['redirects_stdout.patch', 'fix_display.patch'], - 'failed_patches': [], - 'non_applicable_patches': [], - 'disabled_patches': [], - 'removed_patches': [], - 'modified_metadata': None - } - - test_package_info_dict = { - 'test-packages/package1': package_1_patch_info_dict, - 'test-packages/package2': package_2_patch_info_dict - } - - test_commit_message = ['-m %s' % 'Updated packages'] - - self.assertListEqual( - update_chromeos_llvm_next_hash.StagePackagesPatchResultsForCommit( - test_package_info_dict, test_commit_message), test_commit_message) - - @mock.patch.object(update_chromeos_llvm_next_hash, - 'StagePatchMetadataFileForCommit') - @mock.patch.object(update_chromeos_llvm_next_hash, - 'RemovePatchesFromFilesDir') - def testAddedPatchResultsForCommit(self, mock_remove_patches, - mock_stage_patches_for_commit): - - package_1_patch_info_dict = { - 'applied_patches': [], - 'failed_patches': [], - 'non_applicable_patches': [], - 'disabled_patches': ['fixes_output.patch'], - 'removed_patches': [], - 'modified_metadata': '/abs/path/to/filesdir/PATCHES.json' - } - - package_2_patch_info_dict = { - 'applied_patches': ['fix_display.patch'], - 'failed_patches': [], - 'non_applicable_patches': [], - 'disabled_patches': [], - 'removed_patches': ['/abs/path/to/filesdir/redirect_stdout.patch'], - 'modified_metadata': '/abs/path/to/filesdir/PATCHES.json' - } - - test_package_info_dict = { - 'test-packages/package1': package_1_patch_info_dict, - 'test-packages/package2': package_2_patch_info_dict - } - - test_commit_message = ['-m %s' % 'Updated packages'] - - expected_commit_messages = [ - '-m %s' % 'Updated packages', - '-m %s' % 'For the package test-packages/package1:', - '-m %s' % 'The patch metadata file PATCHES.json was modified', - '-m %s' % 'The following patches were disabled:', - '-m %s' % 'fixes_output.patch', - '-m %s' % 'For the package test-packages/package2:', - '-m %s' % 'The patch metadata file PATCHES.json was modified', - '-m %s' % 'The following patches were removed:', - '-m %s' % 'redirect_stdout.patch' - ] - - self.assertListEqual( - update_chromeos_llvm_next_hash.StagePackagesPatchResultsForCommit( - test_package_info_dict, test_commit_message), - expected_commit_messages) - - path_to_removed_patch = '/abs/path/to/filesdir/redirect_stdout.patch' - - mock_remove_patches.assert_called_once_with([path_to_removed_patch]) - - self.assertEqual(mock_stage_patches_for_commit.call_count, 2) - - @mock.patch.object(update_chromeos_llvm_next_hash, - 'CreatePathDictionaryFromPackages') - @mock.patch.object(update_chromeos_llvm_next_hash, '_CreateRepo') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdateEbuildLLVMHash') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UprevEbuild') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UploadChanges') - @mock.patch.object(update_chromeos_llvm_next_hash, '_DeleteRepo') - def testExceptionRaisedWhenUpdatingPackages( - self, mock_delete_repo, mock_upload_changes, mock_uprev_ebuild, - mock_update_llvm_next, mock_create_repo, mock_create_path_dict): - - abs_path_to_package = '/some/path/to/chroot/src/path/to/package.ebuild' - - symlink_path_to_package = \ - '/some/path/to/chroot/src/path/to/package-r1.ebuild' - - path_to_package_dir = '/some/path/to/chroot/src/path/to' - - # Test function to simulate '_CreateRepo' when successfully created the - # repo on a valid repo path. - def SuccessfullyCreateRepoForChanges(_repo_path, branch): - self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash4') - return - - # Test function to simulate 'UpdateEbuildLLVMHash' when successfully - # updated the ebuild's 'LLVM_NEXT_HASH'. - def SuccessfullyUpdatedLLVMHash(ebuild_path, _, git_hash, svn_version): - self.assertEqual(ebuild_path, abs_path_to_package) - self.assertEqual(git_hash, 'a123testhash4') - self.assertEqual(svn_version, 1000) - return - - # Test function to simulate 'UprevEbuild' when the symlink to the ebuild - # does not have a revision number. - def FailedToUprevEbuild(_symlink_path): - # Raises a 'ValueError' exception because the symlink did not have have a - # revision number. - raise ValueError('Failed to uprev the ebuild.') - - # Test function to fail on 'UploadChanges' if the function gets called - # when an exception is raised. - def ShouldNotExecuteUploadChanges(_repo_path, _git_hash, _commit_messages): - # Test function should not be called (i.e. execution should resume in the - # 'finally' block) because 'UprevEbuild()' raised an - # exception. - assert False, 'Failed to go to "finally" block ' \ - 'after the exception was raised.' - - test_package_path_dict = {symlink_path_to_package: abs_path_to_package} - - # Simulate behavior of 'CreatePathDictionaryFromPackages()' when - # successfully created a dictionary where the key is the absolute path to - # the symlink of the package and value is the absolute path to the ebuild of - # the package. - mock_create_path_dict.return_value = test_package_path_dict - - # Use test function to simulate behavior. - mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges - mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash - mock_uprev_ebuild.side_effect = FailedToUprevEbuild - mock_upload_changes.side_effect = ShouldNotExecuteUploadChanges - - packages_to_update = ['test-packages/package1'] - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next - git_hash = 'a123testhash4' - svn_version = 1000 - chroot_path = '/some/path/to/chroot' - patch_metadata_file = 'PATCHES.json' - git_hash_source = 'google3' - branch = 'update-LLVM_NEXT_HASH-a123testhash4' - - # Verify exception is raised when an exception is thrown within - # the 'try' block by UprevEbuild function. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_next_hash.UpdatePackages( - packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, FailureModes.FAIL, git_hash_source) - - self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') - - mock_create_path_dict.assert_called_once_with(chroot_path, - packages_to_update) - - mock_create_repo.assert_called_once_with(path_to_package_dir, branch) - - mock_update_llvm_next.assert_called_once_with( - abs_path_to_package, llvm_variant, git_hash, svn_version) - - mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) - - mock_upload_changes.assert_not_called() - - mock_delete_repo.assert_called_once_with(path_to_package_dir, branch) - - @mock.patch.object(update_chromeos_llvm_next_hash, - 'CreatePathDictionaryFromPackages') - @mock.patch.object(update_chromeos_llvm_next_hash, '_CreateRepo') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdateEbuildLLVMHash') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UprevEbuild') - @mock.patch.object(update_chromeos_llvm_next_hash, 'UploadChanges') - @mock.patch.object(update_chromeos_llvm_next_hash, '_DeleteRepo') - @mock.patch.object(llvm_patch_management, 'UpdatePackagesPatchMetadataFile') - @mock.patch.object(update_chromeos_llvm_next_hash, - 'StagePatchMetadataFileForCommit') - def testSuccessfullyUpdatedPackages( - self, mock_stage_patch_file, mock_update_package_metadata_file, - mock_delete_repo, mock_upload_changes, mock_uprev_ebuild, - mock_update_llvm_next, mock_create_repo, mock_create_path_dict): - - abs_path_to_package = '/some/path/to/chroot/src/path/to/package.ebuild' - - symlink_path_to_package = \ - '/some/path/to/chroot/src/path/to/package-r1.ebuild' - - path_to_package_dir = '/some/path/to/chroot/src/path/to' - - # Test function to simulate '_CreateRepo' when successfully created the repo - # for the changes to be made to the ebuild files. - def SuccessfullyCreateRepoForChanges(_repo_path, branch): - self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash5') - return - - # Test function to simulate 'UploadChanges' after a successfull update of - # 'LLVM_NEXT_HASH" of the ebuild file. - def SuccessfullyUpdatedLLVMHash(ebuild_path, _, git_hash, svn_version): - self.assertEqual(ebuild_path, - '/some/path/to/chroot/src/path/to/package.ebuild') - self.assertEqual(git_hash, 'a123testhash5') - self.assertEqual(svn_version, 1000) - return - - # Test function to simulate 'UprevEbuild' when successfully incremented - # the revision number by 1. - def SuccessfullyUprevedEbuild(symlink_path): - self.assertEqual(symlink_path, - '/some/path/to/chroot/src/path/to/package-r1.ebuild') - - return - - # Test function to simulate 'UpdatePackagesPatchMetadataFile()' when the - # patch results contains a disabled patch in 'disable_patches' mode. - def RetrievedPatchResults(chroot_path, svn_version, patch_metadata_file, - packages, mode): - - self.assertEqual(chroot_path, '/some/path/to/chroot') - self.assertEqual(svn_version, 1000) - self.assertEqual(patch_metadata_file, 'PATCHES.json') - self.assertListEqual(packages, ['path/to']) - self.assertEqual(mode, FailureModes.DISABLE_PATCHES) - - PatchInfo = namedtuple('PatchInfo', [ - 'applied_patches', 'failed_patches', 'non_applicable_patches', - 'disabled_patches', 'removed_patches', 'modified_metadata' - ]) - - package_patch_info = PatchInfo( - applied_patches=['fix_display.patch'], - failed_patches=['fix_stdout.patch'], - non_applicable_patches=[], - disabled_patches=['fix_stdout.patch'], - removed_patches=[], - modified_metadata='/abs/path/to/filesdir/%s' % patch_metadata_file) - - package_info_dict = {'path/to': package_patch_info._asdict()} - - # Returns a dictionary where the key is the package and the value is a - # dictionary that contains information about the package's patch results - # produced by the patch manager. - return package_info_dict - - # Test function to simulate 'UploadChanges()' when successfully created a - # commit for the changes made to the packages and their patches and - # retrieved the change list of the commit. - def SuccessfullyUploadedChanges(_repo_path, _branch, _commit_messages): - commit_url = 'https://some_name/path/to/commit/+/12345' - - return update_chromeos_llvm_next_hash.CommitContents( - url=commit_url, cl_number=12345) - - test_package_path_dict = {symlink_path_to_package: abs_path_to_package} - - # Simulate behavior of 'CreatePathDictionaryFromPackages()' when - # successfully created a dictionary where the key is the absolute path to - # the symlink of the package and value is the absolute path to the ebuild of - # the package. - mock_create_path_dict.return_value = test_package_path_dict - - # Use test function to simulate behavior. - mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges - mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash - mock_uprev_ebuild.side_effect = SuccessfullyUprevedEbuild - mock_update_package_metadata_file.side_effect = RetrievedPatchResults - mock_upload_changes.side_effect = SuccessfullyUploadedChanges - - packages_to_update = ['test-packages/package1'] - llvm_variant = update_chromeos_llvm_next_hash.LLVMVariant.next - git_hash = 'a123testhash5' - svn_version = 1000 - chroot_path = '/some/path/to/chroot' - patch_metadata_file = 'PATCHES.json' - git_hash_source = 'tot' - branch = 'update-LLVM_NEXT_HASH-a123testhash5' - - change_list = update_chromeos_llvm_next_hash.UpdatePackages( - packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, FailureModes.DISABLE_PATCHES, git_hash_source) - - self.assertEqual(change_list.url, - 'https://some_name/path/to/commit/+/12345') - - self.assertEqual(change_list.cl_number, 12345) - - mock_create_path_dict.assert_called_once_with(chroot_path, - packages_to_update) - - mock_create_repo.assert_called_once_with(path_to_package_dir, branch) - - mock_update_llvm_next.assert_called_once_with( - abs_path_to_package, llvm_variant, git_hash, svn_version) - - mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) - - expected_commit_messages = [ - '-m %s' % 'llvm-next/tot: upgrade to a123testhash5 (r1000)', - '-m %s' % 'The following packages have been updated:', - '-m %s' % 'path/to', - '-m %s' % 'For the package path/to:', - '-m %s' % 'The patch metadata file PATCHES.json was modified', - '-m %s' % 'The following patches were disabled:', - '-m %s' % 'fix_stdout.patch' - ] - - mock_update_package_metadata_file.assert_called_once() - - mock_stage_patch_file.assert_called_once_with( - '/abs/path/to/filesdir/PATCHES.json') - - mock_upload_changes.assert_called_once_with(path_to_package_dir, branch, - expected_commit_messages) - - mock_delete_repo.assert_called_once_with(path_to_package_dir, branch) - - -if __name__ == '__main__': - unittest.main() diff --git a/llvm_tools/update_packages_and_run_tryjobs.py b/llvm_tools/update_packages_and_run_tryjobs.py index 30e8b356..c609fcfd 100755 --- a/llvm_tools/update_packages_and_run_tryjobs.py +++ b/llvm_tools/update_packages_and_run_tryjobs.py @@ -19,7 +19,7 @@ from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption from get_llvm_hash import is_svn_option from subprocess_helpers import ChrootRunCommand from subprocess_helpers import ExecCommandAndCaptureOutput -import update_chromeos_llvm_next_hash +import update_chromeos_llvm_hash def GetCommandLineArgs(): @@ -284,11 +284,11 @@ def main(): (svn_version, last_svn_version, args_output.last_tested)) return - update_chromeos_llvm_next_hash.verbose = args_output.verbose + update_chromeos_llvm_hash.verbose = args_output.verbose - change_list = update_chromeos_llvm_next_hash.UpdatePackages( - update_packages, update_chromeos_llvm_next_hash.LLVMVariant.next, - git_hash, svn_version, args_output.chroot_path, patch_metadata_file, + change_list = update_chromeos_llvm_hash.UpdatePackages( + update_packages, update_chromeos_llvm_hash.LLVMVariant.next, git_hash, + svn_version, args_output.chroot_path, patch_metadata_file, FailureModes.DISABLE_PATCHES, svn_option) print('Successfully updated packages to %d' % svn_version) diff --git a/llvm_tools/update_packages_and_run_tryjobs_unittest.py b/llvm_tools/update_packages_and_run_tryjobs_unittest.py index 55e344bb..e7563f65 100755 --- a/llvm_tools/update_packages_and_run_tryjobs_unittest.py +++ b/llvm_tools/update_packages_and_run_tryjobs_unittest.py @@ -14,8 +14,8 @@ import unittest.mock as mock from test_helpers import ArgsOutputTest from test_helpers import CreateTemporaryFile -from update_chromeos_llvm_next_hash import CommitContents -import update_chromeos_llvm_next_hash +from update_chromeos_llvm_hash import CommitContents +import update_chromeos_llvm_hash import update_packages_and_run_tryjobs @@ -36,7 +36,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): def testLastTestFileDoesNotExist(self): # Simulate 'open()' on a lasted tested file that does not exist. - mock_open = mock.mock_open(read_data='') + mock.mock_open(read_data='') self.assertEqual( update_packages_and_run_tryjobs.GetLastTestedSVNVersion( @@ -219,7 +219,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): @mock.patch.object(update_packages_and_run_tryjobs, 'RunTryJobs') # Simulate behavior of `UpdatePackages()` when successfully updated the # packages and uploaded a CL for review. - @mock.patch.object(update_chromeos_llvm_next_hash, 'UpdatePackages') + @mock.patch.object(update_chromeos_llvm_hash, 'UpdatePackages') # Simulate behavior of `GetCommandLineArgs()` when successfully parsed the # command line for the optional/required arguments for the script. @mock.patch.object(update_packages_and_run_tryjobs, 'GetCommandLineArgs') -- cgit v1.2.3 From 7ee1e5dc3841f8e521b45607bd07567fb9f7863f Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Tue, 24 Mar 2020 17:11:45 -0700 Subject: crosperf: raise error at exit when benchmarks fail to run Crosperf always returns 0 no matter benchmarks fail or experiment interrupted in the middle. Thus we cannot tell if a run succeeded or not with the exit status of it and it makes our nightly test failures hard to find. In this patch, I changed the behavior of crosperf return value: 1) Crosperf will not generate any report or send email if terminated or all benchmarks fail. It raises RuntimeError stating all benchmarks failing in the end. 2) Crosperf will generate report if benchmarks (but not all) fail, and will raise RuntimeError stating benchmarks partially failing. 3) Crosperf will also copy results json files to local results directory for further info. BUG=chromium:1063703 TEST=Passed all unittests, tested with different failure situations. Change-Id: I998bad51cd7301b9451645d22e8734963bc01aed Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2119231 Reviewed-by: Caroline Tice Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang --- crosperf/crosperf.py | 9 +++++++- crosperf/experiment_runner.py | 41 ++++++++++++++++++++++++---------- crosperf/experiment_runner_unittest.py | 2 +- crosperf/results_cache.py | 5 +++-- crosperf/results_cache_unittest.py | 12 +++++++--- 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/crosperf/crosperf.py b/crosperf/crosperf.py index ec07e7c7..f195b13a 100755 --- a/crosperf/crosperf.py +++ b/crosperf/crosperf.py @@ -27,6 +27,9 @@ from cros_utils import logger import test_flag +HAS_FAILURE = 1 +ALL_FAILED = 2 + def SetupParserOptions(parser): """Add all options to the parser.""" @@ -128,7 +131,11 @@ def RunCrosperf(argv): runner = ExperimentRunner( experiment, json_report, using_schedv2=(not options.noschedv2)) - runner.Run() + ret = runner.Run() + if ret == HAS_FAILURE: + raise RuntimeError('One or more benchmarks failed.') + if ret == ALL_FAILED: + raise RuntimeError('All benchmarks failed to run.') def Main(argv): diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 39e3f863..3e91e09c 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -49,6 +49,10 @@ class ExperimentRunner(object): STATUS_TIME_DELAY = 30 THREAD_MONITOR_DELAY = 2 + SUCCEEDED = 0 + HAS_FAILURE = 1 + ALL_FAILED = 2 + def __init__(self, experiment, json_report, @@ -258,7 +262,8 @@ class ExperimentRunner(object): def _StoreResults(self, experiment): if self._terminated: - return + return self.ALL_FAILED + results_directory = experiment.results_directory FileUtils().RmDir(results_directory) FileUtils().MkDirP(results_directory) @@ -266,6 +271,24 @@ class ExperimentRunner(object): experiment_file_path = os.path.join(results_directory, 'experiment.exp') FileUtils().WriteFile(experiment_file_path, experiment.experiment_file) + has_failure = False + all_failed = True + self.l.LogOutput('Storing results of each benchmark run.') + for benchmark_run in experiment.benchmark_runs: + if benchmark_run.result: + if benchmark_run.result.retval: + has_failure = True + else: + all_failed = False + benchmark_run_name = ''.join( + ch for ch in benchmark_run.name if ch.isalnum()) + benchmark_run_path = os.path.join(results_directory, benchmark_run_name) + benchmark_run.result.CopyResultsTo(benchmark_run_path) + benchmark_run.result.CleanUp(benchmark_run.benchmark.rm_chroot_tmp) + + if all_failed: + return self.ALL_FAILED + self.l.LogOutput('Storing results report in %s.' % results_directory) results_table_path = os.path.join(results_directory, 'results.html') report = HTMLResultsReport.FromExperiment(experiment).GetReport() @@ -284,15 +307,6 @@ class ExperimentRunner(object): msg_body = "
%s
" % text_report FileUtils().WriteFile(msg_file_path, msg_body) - self.l.LogOutput('Storing results of each benchmark run.') - for benchmark_run in experiment.benchmark_runs: - if benchmark_run.result: - benchmark_run_name = ''.join( - ch for ch in benchmark_run.name if ch.isalnum()) - benchmark_run_path = os.path.join(results_directory, benchmark_run_name) - benchmark_run.result.CopyResultsTo(benchmark_run_path) - benchmark_run.result.CleanUp(benchmark_run.benchmark.rm_chroot_tmp) - topstats_file = os.path.join(results_directory, 'topstats.log') self.l.LogOutput('Storing top5 statistics of each benchmark run into %s.' % topstats_file) @@ -305,15 +319,18 @@ class ExperimentRunner(object): top_fd.write(benchmark_run.result.FormatStringTop5()) top_fd.write('\n\n') + return self.SUCCEEDED if not has_failure else self.HAS_FAILURE + def Run(self): try: self._Run(self._experiment) finally: # Always print the report at the end of the run. self._PrintTable(self._experiment) - if not self._terminated: - self._StoreResults(self._experiment) + ret = self._StoreResults(self._experiment) + if ret != self.ALL_FAILED: self._Email(self._experiment) + return ret class MockExperimentRunner(ExperimentRunner): diff --git a/crosperf/experiment_runner_unittest.py b/crosperf/experiment_runner_unittest.py index 4905975c..fb584244 100755 --- a/crosperf/experiment_runner_unittest.py +++ b/crosperf/experiment_runner_unittest.py @@ -467,9 +467,9 @@ class ExperimentRunnerTest(unittest.TestCase): self.assertEqual(self.mock_logger.LogOutputCount, 5) self.assertEqual(self.mock_logger.output_msgs, [ 'Storing experiment file in /usr/local/crosperf-results.', + 'Storing results of each benchmark run.', 'Storing results report in /usr/local/crosperf-results.', 'Storing email message body in /usr/local/crosperf-results.', - 'Storing results of each benchmark run.', 'Storing top5 statistics of each benchmark run into' ' /usr/local/crosperf-results/topstats.log.', ]) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index 98062194..a7fd4169 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -109,10 +109,11 @@ class Result(object): raise IOError('Could not copy results file: %s' % file_to_copy) def CopyResultsTo(self, dest_dir): + self.CopyFilesTo(dest_dir, self.results_file) self.CopyFilesTo(dest_dir, self.perf_data_files) self.CopyFilesTo(dest_dir, self.perf_report_files) - if self.perf_data_files or self.perf_report_files: - self._logger.LogOutput('Perf results files stored in %s.' % dest_dir) + if self.results_file or self.perf_data_files or self.perf_report_files: + self._logger.LogOutput('Results files stored in %s.' % dest_dir) def GetNewKeyvals(self, keyvals_dict): # Initialize 'units' dictionary. diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index 1e7f04a1..ed6ff95b 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -501,6 +501,9 @@ class ResultTest(unittest.TestCase): @mock.patch.object(Result, 'CopyFilesTo') def test_copy_results_to(self, mockCopyFilesTo): + results_file = [ + '/tmp/result.json.0', '/tmp/result.json.1', '/tmp/result.json.2' + ] perf_data_files = [ '/tmp/perf.data.0', '/tmp/perf.data.1', '/tmp/perf.data.2' ] @@ -508,16 +511,19 @@ class ResultTest(unittest.TestCase): '/tmp/perf.report.0', '/tmp/perf.report.1', '/tmp/perf.report.2' ] + self.result.results_file = results_file self.result.perf_data_files = perf_data_files self.result.perf_report_files = perf_report_files self.result.CopyFilesTo = mockCopyFilesTo self.result.CopyResultsTo('/tmp/results/') - self.assertEqual(mockCopyFilesTo.call_count, 2) - self.assertEqual(len(mockCopyFilesTo.call_args_list), 2) + self.assertEqual(mockCopyFilesTo.call_count, 3) + self.assertEqual(len(mockCopyFilesTo.call_args_list), 3) self.assertEqual(mockCopyFilesTo.call_args_list[0][0], - ('/tmp/results/', perf_data_files)) + ('/tmp/results/', results_file)) self.assertEqual(mockCopyFilesTo.call_args_list[1][0], + ('/tmp/results/', perf_data_files)) + self.assertEqual(mockCopyFilesTo.call_args_list[2][0], ('/tmp/results/', perf_report_files)) def test_get_new_keyvals(self): -- cgit v1.2.3 From 30888c68d0fcf1ba181e9160400c505fbec1adfa Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 31 Mar 2020 20:28:58 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R83-12974.2-1584955958 to R83-12998.0-1585561042 Change-Id: I366eab692e70bb2acfb896f5199193700c70c7c5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2131376 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 8e811335..aeb68e80 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R83-12974.2-1584955958" + "name": "R83-12998.0-1585561042" }, "chromeos-kernel-3_18": { "name": "R83-12974.2-1584956046" -- cgit v1.2.3 From bfb695533f6c8f4f1b26609d233c858e2c135931 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Wed, 1 Apr 2020 08:44:25 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R83-12974.2-1584955870 to R83-12997.0-1585560870 Change-Id: Id45b22439220def6b703d3602539b7d028d661d9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2131927 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index aeb68e80..801e2f00 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R83-12974.2-1584956174" }, "chromeos-kernel-4_19": { - "name": "R83-12974.2-1584955870" + "name": "R83-12997.0-1585560870" } } \ No newline at end of file -- cgit v1.2.3 From ca8e8b8dc0f702eaa3c74f9b5468547623423a41 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 1 Apr 2020 12:21:42 -0700 Subject: compiler_wrapper: don't write -Werror files on still-failed builds Not `return`ing here was troublesome for our monitoring infra, since it meant that _any_ clang error that mentioned '-Werror', with this support turned on, would turn into a json file. With configure steps and the like, this probably isn't the behavior that we want. BUG=None TEST=unittests Change-Id: I0669c5bd9473b687c34c23f284433a21e8a1d88c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2132233 Commit-Queue: George Burgess Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 14 +++++++------- compiler_wrapper/disable_werror_flag_test.go | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 114d8250..65ea1ab1 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -80,17 +80,17 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin if err != nil { return 0, err } - // If -Wno-error fixed us, pretend that we never ran without -Wno-error. - // Otherwise, pretend that we never ran the second invocation. Since -Werror - // is an issue, log in either case. - if retryExitCode == 0 { - retryStdoutBuffer.WriteTo(env.stdout()) - retryStderrBuffer.WriteTo(env.stderr()) - } else { + // If -Wno-error fixed us, pretend that we never ran without -Wno-error. Otherwise, pretend + // that we never ran the second invocation. + if retryExitCode != 0 { originalStdoutBuffer.WriteTo(env.stdout()) originalStderrBuffer.WriteTo(env.stderr()) + return originalExitCode, nil } + retryStdoutBuffer.WriteTo(env.stdout()) + retryStderrBuffer.WriteTo(env.stderr()) + // All of the below is basically logging. If we fail at any point, it's // reasonable for that to fail the build. This is all meant for FYI-like // builders in the first place. diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index eb907e6b..bd4d376e 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -146,7 +146,7 @@ func TestForwardStdoutAndStderrWhenDoubleBuildFails(t *testing.T) { } } exitCode := callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, mainCc)) - if exitCode != 5 { + if exitCode != 3 { t.Errorf("unexpected exitcode. Got: %d", exitCode) } if err := verifyNonInternalError(ctx.stderrString(), "-Werror originalerror"); err != nil { @@ -278,8 +278,8 @@ func TestLogWarningsWhenDoubleBuildFails(t *testing.T) { } ctx.mustFail(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, mainCc))) loggedWarnings := readLoggedWarnings(ctx) - if loggedWarnings == nil { - t.Fatal("expected logged warnings") + if loggedWarnings != nil { + t.Fatal("expected no warnings to be logged") } }) } -- cgit v1.2.3 From afadccb836da9e84f0bc5cfcf5566ce8b1322272 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 1 Apr 2020 12:38:16 -0700 Subject: compiler_wrapper: s/strings.Contains/bytes.Contains/ Rather than turning all of stderr into a string here, we can turn the thing we're searching for into a []byte. Should shave off a few cycles, and is just as readable. BUG=None TEST=unittests Change-Id: Ib4cc916ada11e0d8e286775b15dd93998c8403aa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2132721 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 65ea1ab1..3decbf29 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -62,7 +62,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin } // The only way we can do anything useful is if it looks like the failure // was -Werror-related. - if originalExitCode == 0 || !strings.Contains(originalStderrBuffer.String(), "-Werror") { + if originalExitCode == 0 || !bytes.Contains(originalStderrBuffer.Bytes(), []byte("-Werror")) { originalStdoutBuffer.WriteTo(env.stdout()) originalStderrBuffer.WriteTo(env.stderr()) return originalExitCode, nil -- cgit v1.2.3 From f34383b1f6ed0f9f0db1dfa729d6f8dcad67743a Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 1 Apr 2020 12:48:13 -0700 Subject: compiler_wrapper: disable -Wno-error on conftest-y files There are some ebuilds that (unfortunately) run configure steps inside of their regular `make` invocations. Rather than trying to fix those as they pop up, add a heuristic to our -Wno-error bits. This is similar to a heuristic goma added a while back when experimenting with full builds of CrOS using goma. BUG=None TEST=unittests Change-Id: I23efdc8ad5ea29621b105040bc33786896f6e486 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2132722 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 16 +++++++++++++- compiler_wrapper/disable_werror_flag_test.go | 33 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 3decbf29..2800c5fa 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -41,6 +41,20 @@ func disableWerrorFlags(originalArgs []string) []string { return noErrors } +func isLikelyAConfTest(cfg *config, cmd *command) bool { + // Android doesn't do mid-build `configure`s, so we don't need to worry about this there. + if cfg.isAndroidWrapper { + return false + } + + for _, a := range cmd.Args { + if strings.HasPrefix(a, "conftest.c") { + return true + } + } + return false +} + func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, originalCmd *command) (exitCode int, err error) { originalStdoutBuffer := &bytes.Buffer{} originalStderrBuffer := &bytes.Buffer{} @@ -62,7 +76,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin } // The only way we can do anything useful is if it looks like the failure // was -Werror-related. - if originalExitCode == 0 || !bytes.Contains(originalStderrBuffer.Bytes(), []byte("-Werror")) { + if originalExitCode == 0 || !bytes.Contains(originalStderrBuffer.Bytes(), []byte("-Werror")) || isLikelyAConfTest(cfg, originalCmd) { originalStdoutBuffer.WriteTo(env.stdout()) originalStderrBuffer.WriteTo(env.stderr()) return originalExitCode, nil diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index bd4d376e..9d762599 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -71,6 +71,39 @@ func TestDoubleBuildWithWNoErrorFlag(t *testing.T) { }) } +func TestKnownConfigureFileParsing(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + for _, f := range []string{"conftest.c", "conftest.cpp"} { + if !isLikelyAConfTest(ctx.cfg, ctx.newCommand(clangX86_64, f)) { + t.Errorf("%q isn't considered a conf test file", f) + } + } + }) +} + +func TestDoubleBuildWithKnownConfigureFile(t *testing.T) { + withForceDisableWErrorTestContext(t, func(ctx *testContext) { + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyArgCount(cmd, 0, "-Wno-error"); err != nil { + return err + } + fmt.Fprint(stderr, "-Werror originalerror") + return newExitCodeError(1) + default: + t.Fatalf("unexpected command: %#v", cmd) + return nil + } + } + + ctx.mustFail(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, "conftest.c"))) + if ctx.cmdCount != 1 { + t.Errorf("expected 1 call. Got: %d", ctx.cmdCount) + } + }) +} + func TestDoubleBuildWithWNoErrorAndCCache(t *testing.T) { withForceDisableWErrorTestContext(t, func(ctx *testContext) { ctx.cfg.useCCache = true -- cgit v1.2.3 From 7656cef743180d1fa7a2d73b2785c3ff046e1abd Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 1 Apr 2020 14:28:41 -0700 Subject: llvm_tools: Switch to "git -F" Use git commit -F to get a better formatted commit message for the created CLs. BUG=chromium:1067029 TEST=unit tests Change-Id: I72918274d7b565013697201ee2872b8ad33e2648 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2133227 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/update_chromeos_llvm_hash.py | 45 ++++++++++++------------ llvm_tools/update_chromeos_llvm_hash_unittest.py | 42 +++++++++++----------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index ce87db94..d29b605d 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -20,6 +20,7 @@ import argparse import os import re import subprocess +import tempfile from assert_not_in_chroot import VerifyOutsideChroot from failure_modes import FailureModes @@ -445,7 +446,7 @@ def UploadChanges(path_to_repo_dir, branch, commit_messages): Args: path_to_repo_dir: The absolute path to the repo where changes were made. branch: The name of the branch to upload. - commit_messages: A string of commit message(s) (i.e. '-m [message]' + commit_messages: A string of commit message(s) (i.e. '[message]' of the changes made. Returns: @@ -460,13 +461,15 @@ def UploadChanges(path_to_repo_dir, branch, commit_messages): if not os.path.isdir(path_to_repo_dir): raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - commit_cmd = [ - 'git', - 'commit', - ] - commit_cmd.extend(commit_messages) + # Create a git commit. + with tempfile.NamedTemporaryFile(mode='w+t') as commit_msg_file: + commit_msg_file.write('\n'.join(commit_messages)) + commit_msg_file.flush() - ExecCommandAndCaptureOutput(commit_cmd, cwd=path_to_repo_dir, verbose=verbose) + commit_cmd = ['git', 'commit', '-F', commit_msg_file.name] + + ExecCommandAndCaptureOutput( + commit_cmd, cwd=path_to_repo_dir, verbose=verbose) # Upload the changes for review. upload_change_cmd = ( @@ -582,30 +585,30 @@ def StagePackagesPatchResultsForCommit(package_info_dict, commit_messages): if patch_info_dict['disabled_patches'] or \ patch_info_dict['removed_patches'] or \ patch_info_dict['modified_metadata']: - cur_package_header = 'For the package %s:' % package_name - commit_messages.append('-m %s' % cur_package_header) + cur_package_header = '\nFor the package %s:' % package_name + commit_messages.append(cur_package_header) # Add to the commit message that the patch metadata file was modified. if patch_info_dict['modified_metadata']: patch_metadata_path = patch_info_dict['modified_metadata'] - commit_messages.append('-m %s' % 'The patch metadata file %s was ' - 'modified' % os.path.basename(patch_metadata_path)) + commit_messages.append('The patch metadata file %s was modified' % + os.path.basename(patch_metadata_path)) StagePatchMetadataFileForCommit(patch_metadata_path) # Add each disabled patch to the commit message. if patch_info_dict['disabled_patches']: - commit_messages.append('-m %s' % 'The following patches were disabled:') + commit_messages.append('The following patches were disabled:') for patch_path in patch_info_dict['disabled_patches']: - commit_messages.append('-m %s' % os.path.basename(patch_path)) + commit_messages.append(os.path.basename(patch_path)) # Add each removed patch to the commit message. if patch_info_dict['removed_patches']: - commit_messages.append('-m %s' % 'The following patches were removed:') + commit_messages.append('The following patches were removed:') for patch_path in patch_info_dict['removed_patches']: - commit_messages.append('-m %s' % os.path.basename(patch_path)) + commit_messages.append(os.path.basename(patch_path)) RemovePatchesFromFilesDir(patch_info_dict['removed_patches']) @@ -662,9 +665,10 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, commit_message_header += ( ': upgrade to %s (r%d)' % (git_hash, svn_version)) - commit_messages = ['-m %s' % commit_message_header] - - commit_messages.append('-m The following packages have been updated:') + commit_messages = [ + commit_message_header + '\n', + 'The following packages have been updated:', + ] # Holds the list of packages that are updating. packages = [] @@ -686,10 +690,7 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, parent_dir_name = os.path.basename(os.path.dirname(path_to_ebuild_dir)) packages.append('%s/%s' % (parent_dir_name, cur_dir_name)) - - new_commit_message = '%s/%s' % (parent_dir_name, cur_dir_name) - - commit_messages.append('-m %s' % new_commit_message) + commit_messages.append('%s/%s' % (parent_dir_name, cur_dir_name)) # Handle the patches for each package. package_info_dict = llvm_patch_management.UpdatePackagesPatchMetadataFile( diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index 84717ac7..13cdedd1 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -420,7 +420,7 @@ class UpdateLLVMHashTest(unittest.TestCase): def testFailedToUploadChangesForInvalidPathDirectory(self, mock_isdir): path_to_repo = '/some/path/to/repo' branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['-m Test message'] + commit_messages = ['Test message'] # Verify exception is raised when on an invalid repo path. with self.assertRaises(ValueError) as err: @@ -457,7 +457,7 @@ class UpdateLLVMHashTest(unittest.TestCase): path_to_repo = '/some/path/to/repo' branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['-m Test message'] + commit_messages = ['Test message'] # Verify exception is raised when failed to upload the changes for review. with self.assertRaises(ValueError) as err: @@ -469,6 +469,11 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_isdir.assert_called_once_with(path_to_repo) mock_command_output.assert_called_once() + mock_command_output_args = mock_command_output.call_args_list[0][0][0] + expected_mock_command_output_prefix = ['git', 'commit', '-F'] + self.assertEqual( + mock_command_output_args[:len(expected_mock_command_output_prefix)], + expected_mock_command_output_prefix) mock_repo_upload.assert_called_once() @@ -501,7 +506,7 @@ class UpdateLLVMHashTest(unittest.TestCase): path_to_repo = '/some/path/to/repo' branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['-m Test message'] + commit_messages = ['Test message'] change_list = update_chromeos_llvm_hash.UploadChanges( path_to_repo, branch, commit_messages) @@ -689,7 +694,7 @@ class UpdateLLVMHashTest(unittest.TestCase): 'test-packages/package2': package_2_patch_info_dict } - test_commit_message = ['-m %s' % 'Updated packages'] + test_commit_message = ['Updated packages'] self.assertListEqual( update_chromeos_llvm_hash.StagePackagesPatchResultsForCommit( @@ -724,18 +729,15 @@ class UpdateLLVMHashTest(unittest.TestCase): 'test-packages/package2': package_2_patch_info_dict } - test_commit_message = ['-m %s' % 'Updated packages'] + test_commit_message = ['Updated packages'] expected_commit_messages = [ - '-m %s' % 'Updated packages', - '-m %s' % 'For the package test-packages/package1:', - '-m %s' % 'The patch metadata file PATCHES.json was modified', - '-m %s' % 'The following patches were disabled:', - '-m %s' % 'fixes_output.patch', - '-m %s' % 'For the package test-packages/package2:', - '-m %s' % 'The patch metadata file PATCHES.json was modified', - '-m %s' % 'The following patches were removed:', - '-m %s' % 'redirect_stdout.patch' + 'Updated packages', '\nFor the package test-packages/package1:', + 'The patch metadata file PATCHES.json was modified', + 'The following patches were disabled:', 'fixes_output.patch', + '\nFor the package test-packages/package2:', + 'The patch metadata file PATCHES.json was modified', + 'The following patches were removed:', 'redirect_stdout.patch' ] self.assertListEqual( @@ -972,13 +974,11 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) expected_commit_messages = [ - '-m %s' % 'llvm-next/tot: upgrade to a123testhash5 (r1000)', - '-m %s' % 'The following packages have been updated:', - '-m %s' % 'path/to', - '-m %s' % 'For the package path/to:', - '-m %s' % 'The patch metadata file PATCHES.json was modified', - '-m %s' % 'The following patches were disabled:', - '-m %s' % 'fix_stdout.patch' + 'llvm-next/tot: upgrade to a123testhash5 (r1000)\n', + 'The following packages have been updated:', 'path/to', + '\nFor the package path/to:', + 'The patch metadata file PATCHES.json was modified', + 'The following patches were disabled:', 'fix_stdout.patch' ] mock_update_package_metadata_file.assert_called_once() -- cgit v1.2.3 From d3c078a39da8d4fabd9d3466311e084ee1783e76 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Thu, 2 Apr 2020 02:21:34 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R83-12974.2-1584956174 to R83-12997.0-1585560976 Change-Id: I1b74e406792fce583713158dda2a4357f01f965e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2131939 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 801e2f00..56689b0e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R83-12974.2-1584956046" }, "chromeos-kernel-4_14": { - "name": "R83-12974.2-1584956174" + "name": "R83-12997.0-1585560976" }, "chromeos-kernel-4_19": { "name": "R83-12997.0-1585560870" -- cgit v1.2.3 From 5a1fd9fb57f00498eb301b5e2c685f0509367e56 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 1 Apr 2020 17:43:39 -0700 Subject: llvm_tools: Add feature to specify a terminating commit message Allow sepcifying a terminating commit message. This will be useful to specify CL dependency information e.g. "Cq-Depend: chromium:NNN". BUG=chromium:1067029 TEST=unit tests Change-Id: I2dfa751b28f64df50169cd424d39a3f3f4f1de6a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2133241 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/modify_a_tryjob.py | 12 +++++++++--- llvm_tools/update_chromeos_llvm_hash.py | 18 ++++++++++++++---- llvm_tools/update_chromeos_llvm_hash_unittest.py | 11 ++++++++--- llvm_tools/update_packages_and_run_tryjobs.py | 12 +++++++++--- 4 files changed, 40 insertions(+), 13 deletions(-) diff --git a/llvm_tools/modify_a_tryjob.py b/llvm_tools/modify_a_tryjob.py index 96478321..5d04e7f4 100755 --- a/llvm_tools/modify_a_tryjob.py +++ b/llvm_tools/modify_a_tryjob.py @@ -118,9 +118,15 @@ def GetCLAfterUpdatingPackages(packages, git_hash, svn_version, chroot_path, """Updates the packages' LLVM_NEXT.""" change_list = update_chromeos_llvm_hash.UpdatePackages( - packages, update_chromeos_llvm_hash.LLVMVariant.next, git_hash, - svn_version, chroot_path, patch_metadata_file, - FailureModes.DISABLE_PATCHES, svn_option) + packages, + update_chromeos_llvm_hash.LLVMVariant.next, + git_hash, + svn_version, + chroot_path, + patch_metadata_file, + FailureModes.DISABLE_PATCHES, + svn_option, + extra_commit_msg=None) print('\nSuccessfully updated packages to %d' % svn_version) print('Gerrit URL: %s' % change_list.url) diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index d29b605d..916eb67b 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -616,7 +616,8 @@ def StagePackagesPatchResultsForCommit(package_info_dict, commit_messages): def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, mode, git_hash_source): + patch_metadata_file, mode, git_hash_source, + extra_commit_msg): """Updates an LLVM hash and uprevs the ebuild of the packages. A temporary repo is created for the changes. The changes are @@ -700,6 +701,9 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, commit_messages = StagePackagesPatchResultsForCommit( package_info_dict, commit_messages) + if extra_commit_msg: + commit_messages.append(extra_commit_msg) + change_list = UploadChanges(repo_path, branch, commit_messages) finally: @@ -728,9 +732,15 @@ def main(): git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(git_hash_source) change_list = UpdatePackages( - args_output.update_packages, llvm_variant, git_hash, svn_version, - args_output.chroot_path, args_output.patch_metadata_file, - FailureModes(args_output.failure_mode), git_hash_source) + args_output.update_packages, + llvm_variant, + git_hash, + svn_version, + args_output.chroot_path, + args_output.patch_metadata_file, + FailureModes(args_output.failure_mode), + git_hash_source, + extra_commit_msg=None) print('Successfully updated packages to %s (%d)' % (git_hash, svn_version)) print('Gerrit URL: %s' % change_list.url) diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index 13cdedd1..b29b0784 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -821,13 +821,15 @@ class UpdateLLVMHashTest(unittest.TestCase): patch_metadata_file = 'PATCHES.json' git_hash_source = 'google3' branch = 'update-LLVM_NEXT_HASH-a123testhash4' + extra_commit_msg = None # Verify exception is raised when an exception is thrown within # the 'try' block by UprevEbuild function. with self.assertRaises(ValueError) as err: update_chromeos_llvm_hash.UpdatePackages( packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, FailureModes.FAIL, git_hash_source) + patch_metadata_file, FailureModes.FAIL, git_hash_source, + extra_commit_msg) self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') @@ -953,10 +955,12 @@ class UpdateLLVMHashTest(unittest.TestCase): patch_metadata_file = 'PATCHES.json' git_hash_source = 'tot' branch = 'update-LLVM_NEXT_HASH-a123testhash5' + extra_commit_msg = '\ncommit-message-end' change_list = update_chromeos_llvm_hash.UpdatePackages( packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, FailureModes.DISABLE_PATCHES, git_hash_source) + patch_metadata_file, FailureModes.DISABLE_PATCHES, git_hash_source, + extra_commit_msg) self.assertEqual(change_list.url, 'https://some_name/path/to/commit/+/12345') @@ -978,7 +982,8 @@ class UpdateLLVMHashTest(unittest.TestCase): 'The following packages have been updated:', 'path/to', '\nFor the package path/to:', 'The patch metadata file PATCHES.json was modified', - 'The following patches were disabled:', 'fix_stdout.patch' + 'The following patches were disabled:', 'fix_stdout.patch', + '\ncommit-message-end' ] mock_update_package_metadata_file.assert_called_once() diff --git a/llvm_tools/update_packages_and_run_tryjobs.py b/llvm_tools/update_packages_and_run_tryjobs.py index c609fcfd..9cb6cfad 100755 --- a/llvm_tools/update_packages_and_run_tryjobs.py +++ b/llvm_tools/update_packages_and_run_tryjobs.py @@ -287,9 +287,15 @@ def main(): update_chromeos_llvm_hash.verbose = args_output.verbose change_list = update_chromeos_llvm_hash.UpdatePackages( - update_packages, update_chromeos_llvm_hash.LLVMVariant.next, git_hash, - svn_version, args_output.chroot_path, patch_metadata_file, - FailureModes.DISABLE_PATCHES, svn_option) + update_packages, + update_chromeos_llvm_hash.LLVMVariant.next, + git_hash, + svn_version, + args_output.chroot_path, + patch_metadata_file, + FailureModes.DISABLE_PATCHES, + svn_option, + extra_commit_msg=None) print('Successfully updated packages to %d' % svn_version) print('Gerrit URL: %s' % change_list.url) -- cgit v1.2.3 From 58582262e483c0909f98f429225cb2498d086143 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 1 Apr 2020 18:06:07 -0700 Subject: llvm_tools: Add tool for CQ dry run for update CL Add tool to update packages and start a CQ dry run on the CL and its dependencies. BUG=chromium:1067029 TEST=unit tests Change-Id: I593b7ee40985d9146f9d16f3e3e7d64bdeb8727a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2133242 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/update_packages_and_test_cq.py | 196 +++++++++++++++++++++ llvm_tools/update_packages_and_test_cq_unittest.py | 130 ++++++++++++++ 2 files changed, 326 insertions(+) create mode 100755 llvm_tools/update_packages_and_test_cq.py create mode 100755 llvm_tools/update_packages_and_test_cq_unittest.py diff --git a/llvm_tools/update_packages_and_test_cq.py b/llvm_tools/update_packages_and_test_cq.py new file mode 100755 index 00000000..0e5e409b --- /dev/null +++ b/llvm_tools/update_packages_and_test_cq.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Runs CQ dry run after updating the packages.""" + +from __future__ import print_function + +import argparse +import datetime +import json +import os + +from assert_not_in_chroot import VerifyOutsideChroot +from failure_modes import FailureModes +from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption +from get_llvm_hash import is_svn_option +from subprocess_helpers import ChrootRunCommand +from subprocess_helpers import ExecCommandAndCaptureOutput +import update_chromeos_llvm_hash + + +def GetCommandLineArgs(): + """Parses the command line for the command line arguments. + + Returns: + The log level to use when retrieving the LLVM hash or google3 LLVM version, + the chroot path to use for executing chroot commands, + a list of a package or packages to update their LLVM next hash, + and the LLVM version to use when retrieving the LLVM hash. + """ + + # Default path to the chroot if a path is not specified. + cros_root = os.path.expanduser('~') + cros_root = os.path.join(cros_root, 'chromiumos') + + # Create parser and add optional command-line arguments. + parser = argparse.ArgumentParser( + description= + 'Runs a tryjob if successfully updated LLVM_NEXT_HASH of packages.') + + # Add argument for the absolute path to the file that contains information on + # the previous tested svn version. + parser.add_argument( + '--last_tested', + help='the absolute path to the file that contains the last tested ' + 'svn version') + + # Add argument for other change lists that want to run alongside the tryjob + # which has a change list of updating a package's git hash. + parser.add_argument( + '--extra_change_lists', + type=int, + nargs='+', + help='change lists that would like to be run alongside the change list ' + 'of updating the packages') + + # Add argument for a specific chroot path. + parser.add_argument( + '--chroot_path', + default=cros_root, + help='the path to the chroot (default: %(default)s)') + + # Add argument for whether to display command contents to `stdout`. + parser.add_argument( + '--verbose', + action='store_true', + help='display contents of a command to the terminal ' + '(default: %(default)s)') + + # Add argument for the LLVM version to use. + parser.add_argument( + '--llvm_version', + type=is_svn_option, + required=True, + help='which git hash of LLVM to find ' + '{google3, ToT, } ' + '(default: finds the git hash of the google3 LLVM ' + 'version)') + + args_output = parser.parse_args() + + return args_output + + +def GetLastTestedSVNVersion(last_tested_file): + """Gets the lasted tested svn version from the file. + + Args: + last_tested_file: The absolute path to the file that contains the last + tested svn version. + + Returns: + The last tested svn version or 'None' if the file did not have a last tested + svn version (the file exists, but failed to convert the contents to an + integer) or the file does not exist. + """ + + if not last_tested_file: + return None + + last_svn_version = None + + # Get the last tested svn version if the file exists. + try: + with open(last_tested_file) as file_obj: + # For now, the first line contains the last tested svn version. + return int(file_obj.read().rstrip()) + + except (IOError, ValueError): + pass + + return last_svn_version + + +def GetCQDependString(dependent_cls): + """Get CQ dependency string e.g. `Cq-Depend: chromium:MM, chromium:NN`.""" + + if not dependent_cls: + return None + + # Cq-Depend must start a new paragraph prefixed with "Cq-Depend". + return '\nCq-Depend: ' + ', '.join(('chromium:%s' % i) for i in dependent_cls) + + +def startCQDryRun(cl, dependent_cls, chroot_path): + """Start CQ dry run for the changelist and dependencies.""" + + gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') + + cl_list = [cl] + cl_list.extend(dependent_cls) + + for changes in cl_list: + cq_dry_run_cmd = [gerrit_abs_path, 'label-cq', str(changes), '1'] + + ExecCommandAndCaptureOutput(cq_dry_run_cmd) + + +def main(): + """Updates the packages' 'LLVM_NEXT_HASH' and submits tryjobs. + + Raises: + AssertionError: The script was run inside the chroot. + """ + + VerifyOutsideChroot() + + args_output = GetCommandLineArgs() + + last_svn_version = GetLastTestedSVNVersion(args_output.last_tested) + + update_packages = [ + 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', + 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' + ] + + patch_metadata_file = 'PATCHES.json' + + svn_option = args_output.llvm_version + + git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(svn_option) + + # There is no need to run tryjobs when the SVN version matches the last tested + # SVN version. + if last_svn_version == svn_version: + print('svn version (%d) matches the last tested svn version (%d) in %s' % + (svn_version, last_svn_version, args_output.last_tested)) + return + + update_chromeos_llvm_hash.verbose = args_output.verbose + extra_commit_msg = GetCQDependString(args_output.extra_change_lists) + + change_list = update_chromeos_llvm_hash.UpdatePackages( + update_packages, update_chromeos_llvm_hash.LLVMVariant.next, git_hash, + svn_version, args_output.chroot_path, patch_metadata_file, + FailureModes.DISABLE_PATCHES, svn_option, extra_commit_msg) + + print('Successfully updated packages to %d' % svn_version) + print('Gerrit URL: %s' % change_list.url) + print('Change list number: %d' % change_list.cl_number) + + startCQDryRun(change_list.cl_number, args_output.extra_change_lists, + args_output.chroot_path) + + # Updated the packages and submitted tryjobs successfully, so the file will + # contain 'svn_version' which will now become the last tested svn version. + if args_output.last_tested: + with open(args_output.last_tested, 'w', encoding='utf-8') as file_obj: + file_obj.write(str(svn_version)) + + +if __name__ == '__main__': + main() diff --git a/llvm_tools/update_packages_and_test_cq_unittest.py b/llvm_tools/update_packages_and_test_cq_unittest.py new file mode 100755 index 00000000..58f99e83 --- /dev/null +++ b/llvm_tools/update_packages_and_test_cq_unittest.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Unittests for running tryjobs after updating packages.""" + +from __future__ import print_function + +import json +import unittest +import unittest.mock as mock + +from test_helpers import ArgsOutputTest +from test_helpers import CreateTemporaryFile +from update_chromeos_llvm_hash import CommitContents +import update_chromeos_llvm_hash +import update_packages_and_test_cq + + +class UpdatePackagesAndRunTestCQTest(unittest.TestCase): + """Unittests for CQ dry run after updating packages.""" + + def testGetCQDependString(self): + test_no_changelists = [] + test_single_changelist = [1234] + test_multiple_changelists = [1234, 5678] + + self.assertEqual( + update_packages_and_test_cq.GetCQDependString(test_no_changelists), + None) + + self.assertEqual( + update_packages_and_test_cq.GetCQDependString(test_single_changelist), + '\nCq-Depend: chromium:1234') + + self.assertEqual( + update_packages_and_test_cq.GetCQDependString( + test_multiple_changelists), + '\nCq-Depend: chromium:1234, chromium:5678') + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_test_cq, + 'ExecCommandAndCaptureOutput', + return_value=None) + def teststartCQDryRunNoDeps(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + test_cl_number = 1000 + + # test with no deps cls. + extra_cls = [] + update_packages_and_test_cq.startCQDryRun(test_cl_number, extra_cls, + chroot_path) + + expected_gerrit_message = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(test_cl_number), '1' + ] + + mock_exec_cmd.assert_called_once_with(expected_gerrit_message) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_test_cq, + 'ExecCommandAndCaptureOutput', + return_value=None) + # test with a single deps cl. + def teststartCQDryRunSingleDep(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + test_cl_number = 1000 + + extra_cls = [2000] + update_packages_and_test_cq.startCQDryRun(test_cl_number, extra_cls, + chroot_path) + + expected_gerrit_cmd_1 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(test_cl_number), '1' + ] + expected_gerrit_cmd_2 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(2000), '1' + ] + + self.assertEqual(mock_exec_cmd.call_count, 2) + self.assertEqual(mock_exec_cmd.call_args_list[0][0][0], + expected_gerrit_cmd_1) + self.assertEqual(mock_exec_cmd.call_args_list[1][0][0], + expected_gerrit_cmd_2) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_test_cq, + 'ExecCommandAndCaptureOutput', + return_value=None) + def teststartCQDryRunMultipleDep(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + test_cl_number = 1000 + + # test with multiple deps cls. + extra_cls = [3000, 4000] + update_packages_and_test_cq.startCQDryRun(test_cl_number, extra_cls, + chroot_path) + + expected_gerrit_cmd_1 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(test_cl_number), '1' + ] + expected_gerrit_cmd_2 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(3000), '1' + ] + expected_gerrit_cmd_3 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(4000), '1' + ] + + self.assertEqual(mock_exec_cmd.call_count, 3) + self.assertEqual(mock_exec_cmd.call_args_list[0][0][0], + expected_gerrit_cmd_1) + self.assertEqual(mock_exec_cmd.call_args_list[1][0][0], + expected_gerrit_cmd_2) + self.assertEqual(mock_exec_cmd.call_args_list[2][0][0], + expected_gerrit_cmd_3) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 8fb2d3d1f70653d340826d561b933c1c4253ff7a Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Thu, 2 Apr 2020 09:46:22 -0700 Subject: llvm_tools: test_cq: Add more features Add more features: 1. Choose between llvn and llvm-next 2. Specify list of reviewers for the update CL. BUG=chromium:1067029 TEST=unit tests Change-Id: I512c5b5fe944dc49954f9ab82faaf86c8eab983f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2134284 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/update_packages_and_test_cq.py | 37 ++++++++++++-- llvm_tools/update_packages_and_test_cq_unittest.py | 56 +++++++++++++++++++--- 2 files changed, 83 insertions(+), 10 deletions(-) diff --git a/llvm_tools/update_packages_and_test_cq.py b/llvm_tools/update_packages_and_test_cq.py index 0e5e409b..bc8a99e4 100755 --- a/llvm_tools/update_packages_and_test_cq.py +++ b/llvm_tools/update_packages_and_test_cq.py @@ -63,6 +63,20 @@ def GetCommandLineArgs(): default=cros_root, help='the path to the chroot (default: %(default)s)') + # Add argument to choose between llvm and llvm-next. + parser.add_argument( + '--is_llvm_next', + action='store_true', + help= + 'which llvm hash to update. Update LLVM_NEXT_HASH if specified. ' + 'Otherwise, update LLVM_HASH' ) + + # Add argument to add reviewers for the created CL. + parser.add_argument( + '--reviewers', + nargs='+', + help='The reviewers for the package update changelist') + # Add argument for whether to display command contents to `stdout`. parser.add_argument( '--verbose', @@ -125,7 +139,17 @@ def GetCQDependString(dependent_cls): return '\nCq-Depend: ' + ', '.join(('chromium:%s' % i) for i in dependent_cls) -def startCQDryRun(cl, dependent_cls, chroot_path): +def AddReviewers(cl, reviewers, chroot_path): + """Add reviewers for the created CL.""" + + gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') + for reviewer in reviewers: + cmd = [gerrit_abs_path, 'reviewers', str(cl), reviewer] + + ExecCommandAndCaptureOutput(cmd) + + +def StartCQDryRun(cl, dependent_cls, chroot_path): """Start CQ dry run for the changelist and dependencies.""" gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') @@ -170,19 +194,24 @@ def main(): (svn_version, last_svn_version, args_output.last_tested)) return + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current + if args_output.is_llvm_next: + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next update_chromeos_llvm_hash.verbose = args_output.verbose extra_commit_msg = GetCQDependString(args_output.extra_change_lists) change_list = update_chromeos_llvm_hash.UpdatePackages( - update_packages, update_chromeos_llvm_hash.LLVMVariant.next, git_hash, - svn_version, args_output.chroot_path, patch_metadata_file, + update_packages, llvm_variant, git_hash, svn_version, + args_output.chroot_path, patch_metadata_file, FailureModes.DISABLE_PATCHES, svn_option, extra_commit_msg) print('Successfully updated packages to %d' % svn_version) print('Gerrit URL: %s' % change_list.url) print('Change list number: %d' % change_list.cl_number) - startCQDryRun(change_list.cl_number, args_output.extra_change_lists, + AddReviewers(change_list.cl_number, args_output.reviewers, + args_output.chroot_path) + StartCQDryRun(change_list.cl_number, args_output.extra_change_lists, args_output.chroot_path) # Updated the packages and submitted tryjobs successfully, so the file will diff --git a/llvm_tools/update_packages_and_test_cq_unittest.py b/llvm_tools/update_packages_and_test_cq_unittest.py index 58f99e83..78f5f136 100755 --- a/llvm_tools/update_packages_and_test_cq_unittest.py +++ b/llvm_tools/update_packages_and_test_cq_unittest.py @@ -45,13 +45,13 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): update_packages_and_test_cq, 'ExecCommandAndCaptureOutput', return_value=None) - def teststartCQDryRunNoDeps(self, mock_exec_cmd): + def testStartCQDryRunNoDeps(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 # test with no deps cls. extra_cls = [] - update_packages_and_test_cq.startCQDryRun(test_cl_number, extra_cls, + update_packages_and_test_cq.StartCQDryRun(test_cl_number, extra_cls, chroot_path) expected_gerrit_message = [ @@ -67,12 +67,12 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): 'ExecCommandAndCaptureOutput', return_value=None) # test with a single deps cl. - def teststartCQDryRunSingleDep(self, mock_exec_cmd): + def testStartCQDryRunSingleDep(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 extra_cls = [2000] - update_packages_and_test_cq.startCQDryRun(test_cl_number, extra_cls, + update_packages_and_test_cq.StartCQDryRun(test_cl_number, extra_cls, chroot_path) expected_gerrit_cmd_1 = [ @@ -95,13 +95,13 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): update_packages_and_test_cq, 'ExecCommandAndCaptureOutput', return_value=None) - def teststartCQDryRunMultipleDep(self, mock_exec_cmd): + def testStartCQDryRunMultipleDep(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 # test with multiple deps cls. extra_cls = [3000, 4000] - update_packages_and_test_cq.startCQDryRun(test_cl_number, extra_cls, + update_packages_and_test_cq.StartCQDryRun(test_cl_number, extra_cls, chroot_path) expected_gerrit_cmd_1 = [ @@ -125,6 +125,50 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): self.assertEqual(mock_exec_cmd.call_args_list[2][0][0], expected_gerrit_cmd_3) + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_test_cq, + 'ExecCommandAndCaptureOutput', + return_value=None) + # test with no reviewers. + def testAddReviewersNone(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + reviewers = [] + test_cl_number = 1000 + + update_packages_and_test_cq.AddReviewers(test_cl_number, reviewers, + chroot_path) + self.assertTrue(mock_exec_cmd.not_called) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_test_cq, + 'ExecCommandAndCaptureOutput', + return_value=None) + # test with multiple reviewers. + def testAddReviewersMultiple(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + reviewers = ['none1@chromium.org', 'none2@chromium.org'] + test_cl_number = 1000 + + update_packages_and_test_cq.AddReviewers(test_cl_number, reviewers, + chroot_path) + + expected_gerrit_cmd_1 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'reviewers', + str(test_cl_number), 'none1@chromium.org' + ] + expected_gerrit_cmd_2 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'reviewers', + str(test_cl_number), 'none2@chromium.org' + ] + + self.assertEqual(mock_exec_cmd.call_count, 2) + self.assertEqual(mock_exec_cmd.call_args_list[0][0][0], + expected_gerrit_cmd_1) + self.assertEqual(mock_exec_cmd.call_args_list[1][0][0], + expected_gerrit_cmd_2) + if __name__ == '__main__': unittest.main() -- cgit v1.2.3 From 2eb33cde680c9ef15b85b1244f0dde3fb6cacadb Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Thu, 2 Apr 2020 15:21:45 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R83-12974.2-1584956046 to R83-12997.0-1585561233 Change-Id: I55b7da1d1828134b365a83082ef11f72678c381d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2134554 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 56689b0e..0974930b 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R83-12998.0-1585561042" }, "chromeos-kernel-3_18": { - "name": "R83-12974.2-1584956046" + "name": "R83-12997.0-1585561233" }, "chromeos-kernel-4_14": { "name": "R83-12997.0-1585560976" -- cgit v1.2.3 From 28b8f7bffbd5b63dc2b1ef24d072be65593d0fe3 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 28 Feb 2020 12:57:01 -0800 Subject: compiler_wrapper: make the update script not die on missing packages Fresh chroots might not have all of these GCCs emerged. Just `continue` if that's not the case. This also fixes failing lints. BUG=None TEST=Ran the script Change-Id: I57a2ca72dfbaea324ddb66423294e1b4dd8989e1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2080660 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/update_compiler_wrapper.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/update_compiler_wrapper.sh b/compiler_wrapper/update_compiler_wrapper.sh index 93de2be4..69484308 100755 --- a/compiler_wrapper/update_compiler_wrapper.sh +++ b/compiler_wrapper/update_compiler_wrapper.sh @@ -1,4 +1,8 @@ #!/bin/bash +# +# Copyright 2020 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. # This script rebuilds and installs compiler wrappers @@ -17,7 +21,14 @@ sudo cp ../binary_search_tool/bisect_driver.py /usr/bin echo "/usr/bin/clang_host_wrapper/bisect_driver.py" # Update the target wrappers for GCC in cross-x86_64-cros-linux-gnu/gcc cross-armv7a-cros-linux-gnueabihf/gcc cross-aarch64-cros-linux-gnu/gcc; do - FILES="$(equery f $GCC)" + if ! FILES="$(equery f $GCC)"; then + if equery l "${GCC}" 2>&1 | grep -q "No installed packages"; then + echo "no $GCC package found; skipping" >&2 + continue + fi + # Something went wrong, and the equery above probably diagnosed it. + exit 1 + fi ./build.py --config=cros.hardened --use_ccache=false --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.noccache sudo mv ./sysroot_wrapper.hardened.noccache "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" echo "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" -- cgit v1.2.3 From 4521791be54f6e1a3eb75e3e3f930dea5f374d3c Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 6 Apr 2020 07:55:33 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R83-12997.0-1585560870 to R84-13015.0-1586166276 Change-Id: Ibd7cd98d53bc36a6dd78d1ec8cf6450800c341c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2137462 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 0974930b..f76a1c90 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R83-12997.0-1585560976" }, "chromeos-kernel-4_19": { - "name": "R83-12997.0-1585560870" + "name": "R84-13015.0-1586166276" } } \ No newline at end of file -- cgit v1.2.3 From 59ae2275be23aeebfa6f47e50c651229bd14f3f4 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 3 Apr 2020 13:29:03 -0700 Subject: cr-os: add a script to fetch Chromium's build structure This uses `gn` to gather a mapping of {gn_target: source_files}, with some additional metadata attached. This is intended to be used with the infra landed in cl/304465353. BUG=chromium:908661 TEST=Ran to generate JSON files. Change-Id: I091ee0cf9ef9a52eac25855ff83fabb7539aa8e2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2136075 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- cwp/cr-os/README.md | 5 ++ cwp/cr-os/fetch_gn_descs.py | 167 +++++++++++++++++++++++++++++++++++++++ cwp/cr-os/fetch_gn_descs_test.py | 83 +++++++++++++++++++ 3 files changed, 255 insertions(+) create mode 100644 cwp/cr-os/README.md create mode 100755 cwp/cr-os/fetch_gn_descs.py create mode 100755 cwp/cr-os/fetch_gn_descs_test.py diff --git a/cwp/cr-os/README.md b/cwp/cr-os/README.md new file mode 100644 index 00000000..35001529 --- /dev/null +++ b/cwp/cr-os/README.md @@ -0,0 +1,5 @@ +This is a directory of scripts to fuel go/cr-os data collection. + +At the moment, all that exists here is `fetch_gn_descs.py`, which is intended to +run regularly on Chrotomation3. The data it produces gets fed into the pipeline +at `//googleclient/chrome/chromeos_toolchain/cwp_hotness/chrome`. diff --git a/cwp/cr-os/fetch_gn_descs.py b/cwp/cr-os/fetch_gn_descs.py new file mode 100755 index 00000000..5cfda2d2 --- /dev/null +++ b/cwp/cr-os/fetch_gn_descs.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Produces a JSON object of `gn desc`'s output for each given arch. + +A full Chromium checkout is required in order to run this script. + +The result is of the form: +{ + "arch1": { + "//gn:target": { + 'configs": ["bar"], + "sources": ["foo"] + } + } +} +""" + +from __future__ import print_function + +import argparse +import json +# pylint: disable=cros-logging-import +import logging +import os +import subprocess +import sys +import tempfile + + +def _create_gn_args_for(arch): + """Creates a `gn args` listing for the given architecture.""" + # FIXME(gbiv): is_chromeos_device = True would be nice to support, as well. + # Requires playing nicely with SimpleChrome though, and this should be "close + # enough" for now. + return '\n'.join(( + 'target_os = "chromeos"', + 'target_cpu = "%s"' % arch, + 'is_official_build = true', + 'is_chrome_branded = true', + )) + + +def _parse_gn_desc_output(output): + """Parses the output of `gn desc --format=json`. + + Args: + output: a seekable file containing the JSON output of `gn desc`. + + Returns: + A tuple of (warnings, gn_desc_json). + """ + warnings = [] + desc_json = None + while True: + start_pos = output.tell() + next_line = next(output, None) + if next_line is None: + raise ValueError('No JSON found in the given gn file') + + if next_line.lstrip().startswith('{'): + output.seek(start_pos) + desc_json = json.load(output) + break + + warnings.append(next_line) + + return ''.join(warnings).strip(), desc_json + + +def _run_gn_desc(in_dir, gn_args): + logging.info('Running `gn gen`...') + subprocess.check_call(['gn', 'gen', '.', '--args=' + gn_args], cwd=in_dir) + + logging.info('Running `gn desc`...') + with tempfile.TemporaryFile(mode='r+', encoding='utf-8') as f: + gn_command = ['gn', 'desc', '--format=json', '.', '//*:*'] + exit_code = subprocess.call(gn_command, stdout=f, cwd=in_dir) + f.seek(0) + if exit_code: + logging.error('gn failed; stdout:\n%s', f.read()) + raise subprocess.CalledProcessError(exit_code, gn_command) + warnings, result = _parse_gn_desc_output(f) + + if warnings: + logging.warning('Encountered warning(s) running `gn desc`:\n%s', warnings) + return result + + +def _fix_result(gn_desc): + """Performs postprocessing on `gn desc` JSON.""" + result = {} + + for target, info in gn_desc.items(): + sources = info.get('sources') + configs = info.get('configs') + if sources and configs: + result[target] = { + 'configs': configs, + 'sources': sources, + } + + return result + + +def main(args): + known_arches = [ + 'arm', + 'arm64', + 'x64', + 'x86', + ] + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + 'arch', + nargs='+', + help='Architecture(s) to fetch `gn desc`s for. ' + 'Supported ones are %s' % known_arches) + parser.add_argument( + '--output', required=True, help='File to write results to.') + parser.add_argument( + '--chromium_out_dir', + required=True, + help='Chromium out/ directory for us to use. This directory will ' + 'be clobbered by this script.') + opts = parser.parse_args(args) + + logging.basicConfig( + format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', + level=logging.INFO, + ) + + arches = opts.arch + for arch in arches: + if arch not in known_arches: + parser.error( + 'unknown architecture: %s; try one of %s' % (arch, known_arches)) + + results_file = os.path.realpath(opts.output) + out_dir = os.path.realpath(opts.chromium_out_dir) + + os.makedirs(out_dir, exist_ok=True) + results = {} + for arch in arches: + logging.info('Getting `gn` desc for %s...', arch) + + results[arch] = _fix_result( + _run_gn_desc( + in_dir=out_dir, + gn_args=_create_gn_args_for(arch), + )) + + os.makedirs(os.path.dirname(results_file), exist_ok=True) + + results_intermed = results_file + '.tmp' + with open(results_intermed, 'w', encoding='utf-8') as f: + json.dump(results, f) + os.rename(results_intermed, results_file) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/cwp/cr-os/fetch_gn_descs_test.py b/cwp/cr-os/fetch_gn_descs_test.py new file mode 100755 index 00000000..dafa0597 --- /dev/null +++ b/cwp/cr-os/fetch_gn_descs_test.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for fetch_gn_descs.py.""" + +from __future__ import print_function + +import io +import unittest + +import fetch_gn_descs + +# pylint: disable=protected-access + + +class Test(unittest.TestCase): + """Tests for fetch_gn_descs.""" + + def test_fix_result_removes_uninteresting_items(self): + items = { + '//uninteresting:a': {}, + '//uninteresting:b': { + 'sources': ['whee'], + }, + '//uninteresting:c': { + 'configs': ['whee'], + }, + '//uninteresting:d': { + 'sources': [], + 'configs': [], + }, + '//interesting:a': { + 'sources': ['a'], + 'configs': ['b'], + }, + '//interesting:b': { + 'sources': ['d'], + 'configs': ['c'], + }, + } + + expected_items = { + '//interesting:a': items['//interesting:a'], + '//interesting:b': items['//interesting:b'], + } + + self.assertDictEqual(fetch_gn_descs._fix_result(items), expected_items) + + def test_gn_desc_output_parsing_skips_pre_json_warnings(self): + gn_desc = io.StringIO('\n'.join(( + 'foo', + 'warning: "{" is bad', + '{"bar": "baz",', + ' "qux": true}', + ))) + + warnings, desc_json = fetch_gn_descs._parse_gn_desc_output(gn_desc) + self.assertEqual(warnings, '\n'.join(( + 'foo', + 'warning: "{" is bad', + ))) + self.assertEqual(desc_json, { + 'bar': 'baz', + 'qux': True, + }) + + def test_gn_desc_output_parsing_issues_no_warnings_if_none_are_present(self): + gn_desc = io.StringIO('{"bar": "baz"}') + warnings, desc_json = fetch_gn_descs._parse_gn_desc_output(gn_desc) + self.assertEqual(warnings, '') + self.assertEqual(desc_json, {'bar': 'baz'}) + + gn_desc = io.StringIO('\n \n\t\n{"bar": "baz"}') + warnings, desc_json = fetch_gn_descs._parse_gn_desc_output(gn_desc) + self.assertEqual(warnings, '') + self.assertEqual(desc_json, {'bar': 'baz'}) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From d8fcbf52d983b340b20ac629e00ff201bdb7930e Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Mon, 6 Apr 2020 16:47:20 -0700 Subject: toolchain-utils: update email sending for nightly test This patch provides follow up to http://crrev.com/c/2119231. Crosperf will return non-zero when terminated or at least one test failed. When tests partially succeed, reports will still be generated, otherwise no reports. We will try to access the report no matter Crosperf's return value, send email and copy json report to archive dir; and then raise error when Crosperf returns non-zero accordingly. Also add date to the email title. BUG=chromium:1063703 TEST=Simply tested the coverage with print. Change-Id: I4b3f3667cf3a0fd9cef4906052de38432684862c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2137941 Reviewed-by: Manoj Gupta Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang --- buildbot_test_toolchains.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 95557344..184a1ecc 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -85,8 +85,8 @@ class ToolchainComparator(object): self._weekday = time.strftime('%a') else: self._weekday = weekday - timestamp = datetime.datetime.strftime(datetime.datetime.now(), - '%Y-%m-%d_%H:%M:%S') + self._date = datetime.date.today().strftime('%Y/%m/%d') + timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S') self._reports_dir = os.path.join( NIGHTLY_TESTS_RESULTS, '%s.%s' % (timestamp, board), @@ -248,13 +248,7 @@ class ToolchainComparator(object): noschedv2_opts=noschedv2_opts, exp_file=experiment_file) - ret = self._ce.RunCommand(command) - if ret != 0: - raise RuntimeError('Crosperf execution error!') - - # Copy json report to pending archives directory. - command = 'cp %s/*.json %s/.' % (self._reports_dir, PENDING_ARCHIVES_DIR) - ret = self._ce.RunCommand(command) + return self._ce.RunCommand(command) def _SendEmail(self): """Find email message generated by crosperf and send it.""" @@ -264,10 +258,20 @@ class ToolchainComparator(object): email_title = 'buildbot llvm test results' if USE_LLVM_NEXT_PATCH in self._patches_string: email_title = 'buildbot llvm_next test results' - command = ('cat %s | %s -s "%s, %s" -team -html' % - (filename, MAIL_PROGRAM, email_title, self._board)) + command = ('cat %s | %s -s "%s, %s %s" -team -html' % + (filename, MAIL_PROGRAM, email_title, self._board, self._date)) self._ce.RunCommand(command) + def _CopyJson(self): + # Copy json report to pending archives directory. + command = 'cp %s/*.json %s/.' % (self._reports_dir, PENDING_ARCHIVES_DIR) + ret = self._ce.RunCommand(command) + # Failing to access json report means that crosperf terminated or all tests + # failed, raise an error. + if ret != 0: + raise RuntimeError( + 'Crosperf failed to run tests, cannot copy json report!') + def DoAll(self): """Main function inside ToolchainComparator class. @@ -295,8 +299,16 @@ class ToolchainComparator(object): print('vanilla_image: %s' % vanilla_image) print('nonafdo_image: %s' % nonafdo_image) - self._TestImages(trybot_image, vanilla_image, nonafdo_image) + ret = self._TestImages(trybot_image, vanilla_image, nonafdo_image) + # Always try to send report email as crosperf will generate report when + # tests partially succeeded. self._SendEmail() + self._CopyJson() + # Non-zero ret here means crosperf tests partially failed, raise error here + # so that toolchain summary report can catch it. + if ret != 0: + raise RuntimeError('Crosperf tests partially failed!') + return 0 -- cgit v1.2.3 From d80da04a9a547802c314c04263a8b42e096ed158 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 6 Apr 2020 20:09:13 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R83-12998.0-1585561042 to R84-13015.0-1586166393 Change-Id: I71c357f3746d3b600e586d842339b0ea1b51bc58 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2138877 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f76a1c90..ec3b3e9e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R83-12998.0-1585561042" + "name": "R84-13015.0-1586166393" }, "chromeos-kernel-3_18": { "name": "R83-12997.0-1585561233" -- cgit v1.2.3 From 85cd836b985d14c8332dc3b0a1241f06af48b5cd Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 7 Apr 2020 02:31:00 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R83-12997.0-1585560976 to R84-13015.0-1586166104 Change-Id: I7d34b4c56b25e05cf503742eda93915b8017ef9c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2139336 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index ec3b3e9e..f907373a 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R83-12997.0-1585561233" }, "chromeos-kernel-4_14": { - "name": "R83-12997.0-1585560976" + "name": "R84-13015.0-1586166104" }, "chromeos-kernel-4_19": { "name": "R84-13015.0-1586166276" -- cgit v1.2.3 From 47158bff1d1fb6e405548538b4a053e5b51d023e Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Mon, 6 Apr 2020 17:17:55 -0700 Subject: toolchain-utils: remove deprecated scripts Per NextAction date in crbug.com/1051236, we would like to remove all deprecated scripts in toolchain-utils for cleanup. BUG=chromium:1051236 TEST=None Change-Id: I06e4f3c39812d33daf47271325b5775c93929ab8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2137942 Reviewed-by: George Burgess Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang Commit-Queue: George Burgess --- deprecated/automation/PRESUBMIT.py | 14 - deprecated/automation/__init__.py | 1 - deprecated/automation/all_tests.py | 16 - deprecated/automation/clients/__init__.py | 1 - deprecated/automation/clients/android.py | 87 - deprecated/automation/clients/chromeos.py | 104 - deprecated/automation/clients/crosstool.py | 102 - deprecated/automation/clients/dejagnu_compiler.py | 98 - deprecated/automation/clients/helper/__init__.py | 1 - deprecated/automation/clients/helper/android.py | 319 - deprecated/automation/clients/helper/chromeos.py | 180 - deprecated/automation/clients/helper/crosstool.py | 168 - deprecated/automation/clients/helper/jobs.py | 11 - deprecated/automation/clients/helper/perforce.py | 215 - deprecated/automation/clients/nightly.py | 51 - deprecated/automation/clients/output_test.py | 29 - deprecated/automation/clients/pwd_test.py | 27 - deprecated/automation/clients/report/dejagnu.sh | 9 - .../automation/clients/report/dejagnu/__init__.py | 1 - .../automation/clients/report/dejagnu/main.py | 137 - .../automation/clients/report/dejagnu/manifest.py | 103 - .../automation/clients/report/dejagnu/report.html | 94 - .../automation/clients/report/dejagnu/report.py | 115 - .../automation/clients/report/dejagnu/summary.py | 262 - .../automation/clients/report/validate_failures.py | 239 - deprecated/automation/common/__init__.py | 1 - deprecated/automation/common/command.py | 241 - deprecated/automation/common/command_executer.py | 230 - .../automation/common/command_executer_test.py | 210 - deprecated/automation/common/events.py | 149 - deprecated/automation/common/job.py | 178 - deprecated/automation/common/job_group.py | 73 - deprecated/automation/common/logger.py | 144 - deprecated/automation/common/machine.py | 70 - deprecated/automation/common/machine_test.py | 26 - deprecated/automation/common/state_machine.py | 54 - deprecated/automation/server/__init__.py | 1 - deprecated/automation/server/job_executer.py | 138 - deprecated/automation/server/job_group_manager.py | 118 - deprecated/automation/server/job_manager.py | 194 - deprecated/automation/server/machine_manager.py | 77 - .../automation/server/machine_manager_test.py | 32 - deprecated/automation/server/monitor/__init__.py | 1 - deprecated/automation/server/monitor/dashboard.py | 259 - deprecated/automation/server/monitor/manage.py | 20 - deprecated/automation/server/monitor/settings.py | 49 - deprecated/automation/server/monitor/start.sh | 7 - .../automation/server/monitor/static/style.css | 101 - .../automation/server/monitor/templates/base.html | 30 - .../automation/server/monitor/templates/job.html | 29 - .../server/monitor/templates/job_group.html | 46 - .../server/monitor/templates/job_group_list.html | 35 - .../server/monitor/templates/job_log.html | 20 - .../server/monitor/templates/machine_list.html | 39 - .../monitor/templates/snippet_attribute_table.html | 36 - .../server/monitor/templates/snippet_code.html | 10 - .../server/monitor/templates/snippet_links.html | 7 - deprecated/automation/server/monitor/urls.py | 21 - deprecated/automation/server/server.py | 125 - deprecated/automation/server/server_test.py | 26 - deprecated/automation/server/test_pool.csv | 4 - deprecated/build-binutils/opts.sh | 0 deprecated/build-gcc/opts.sh | 40 - deprecated/build_benchmarks.py | 306 - deprecated/build_chrome_browser.py | 247 - deprecated/build_tool.py | 849 - deprecated/compare_benchmarks.py | 176 - deprecated/crb/autotest_gatherer.py | 67 - deprecated/crb/autotest_run.py | 317 - deprecated/crb/crb_driver.py | 370 - deprecated/crb/machine_manager_singleton.py | 153 - deprecated/crb/table_formatter.py | 258 - deprecated/cros_login.py | 115 - deprecated/cwp/bartlett/app.yaml | 22 - deprecated/cwp/bartlett/server.py | 153 - deprecated/cwp/bartlett/static/favicon.ico | Bin 198 -> 0 bytes deprecated/cwp/bartlett/test/server_tester.py | 101 - deprecated/cwp/bartlett/update_appengine_server | 1 - deprecated/cwp/demo_pipeline.sh | 55 - deprecated/cwp/interpreter/app_engine_pull.py | 253 - deprecated/cwp/interpreter/symbolizer.py | 129 - deprecated/cwp/performance/experiment_gen.py | 138 - deprecated/dejagnu/__init__.py | 1 - deprecated/dejagnu/boards/chromeos-machine.exp | 13 - deprecated/dejagnu/boards/gdb.exp.in | 133 - deprecated/dejagnu/boards/gdbserver.sh.in | 12 - deprecated/dejagnu/chromeos.exp.in | 175 - .../dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi | 19079 ------------------ deprecated/dejagnu/gdb_baseline/i686-pc-linux-gnu | 19167 ------------------ .../dejagnu/gdb_baseline/x86_64-cros-linux-gnu | 19294 ------------------- deprecated/dejagnu/gdb_dejagnu.py | 357 - deprecated/dejagnu/run_dejagnu.py | 418 - deprecated/dejagnu/site.exp | 1 - .../fdo_scripts/divide_and_merge_profiles.py | 140 - .../fdo_scripts/divide_and_merge_profiles_test.py | 127 - deprecated/fdo_scripts/profile_cycler.py | 199 - deprecated/fdo_scripts/summarize_hot_blocks.py | 187 - deprecated/fdo_scripts/vanilla_vs_fdo.py | 312 - deprecated/generate-waterfall-reports.py | 853 - deprecated/get_common_image_version.py | 93 - deprecated/mem_tests/README.md | 52 - deprecated/mem_tests/clean_data.py | 29 - deprecated/mem_tests/mem_groups.py | 55 - deprecated/mem_tests/total_mem_actual.py | 37 - deprecated/mem_tests/total_mem_sampled.py | 31 - deprecated/mem_tests/utils.py | 22 - deprecated/new-generate-waterfall-reports.py | 410 - deprecated/produce_output.py | 25 - deprecated/remote_gcc_build.py | 479 - deprecated/repo_to_repo.py | 425 - .../repo_to_repo_files/binutils-master.json.rtr | 22 - .../binutils-mobile_toolchain_v16.json.rtr | 23 - deprecated/repo_to_repo_files/crosperf.json.rtr | 38 - .../gcc-branches_google_4_7.json.rtr | 22 - .../gcc-branches_google_main.json.rtr | 22 - deprecated/repo_to_repo_files/gcc-master.json.rtr | 23 - deprecated/repo_to_repo_files/gdb-master.json.rtr | 20 - .../repo_to_repo_files/toolchain-utils.json.rtr | 28 - deprecated/report_generator.py | 145 - deprecated/run_benchmarks.py | 245 - deprecated/sheriff_rotation.py | 130 - deprecated/summarize_results.py | 145 - deprecated/test_gcc_dejagnu.py | 227 - deprecated/test_gdb_dejagnu.py | 170 - deprecated/test_toolchains.py | 364 - deprecated/verify_compiler.py | 233 - deprecated/weekly_report.py | 258 - 127 files changed, 73176 deletions(-) delete mode 100644 deprecated/automation/PRESUBMIT.py delete mode 100644 deprecated/automation/__init__.py delete mode 100644 deprecated/automation/all_tests.py delete mode 100644 deprecated/automation/clients/__init__.py delete mode 100755 deprecated/automation/clients/android.py delete mode 100755 deprecated/automation/clients/chromeos.py delete mode 100755 deprecated/automation/clients/crosstool.py delete mode 100755 deprecated/automation/clients/dejagnu_compiler.py delete mode 100644 deprecated/automation/clients/helper/__init__.py delete mode 100644 deprecated/automation/clients/helper/android.py delete mode 100644 deprecated/automation/clients/helper/chromeos.py delete mode 100644 deprecated/automation/clients/helper/crosstool.py delete mode 100644 deprecated/automation/clients/helper/jobs.py delete mode 100644 deprecated/automation/clients/helper/perforce.py delete mode 100755 deprecated/automation/clients/nightly.py delete mode 100755 deprecated/automation/clients/output_test.py delete mode 100755 deprecated/automation/clients/pwd_test.py delete mode 100755 deprecated/automation/clients/report/dejagnu.sh delete mode 100644 deprecated/automation/clients/report/dejagnu/__init__.py delete mode 100644 deprecated/automation/clients/report/dejagnu/main.py delete mode 100644 deprecated/automation/clients/report/dejagnu/manifest.py delete mode 100644 deprecated/automation/clients/report/dejagnu/report.html delete mode 100644 deprecated/automation/clients/report/dejagnu/report.py delete mode 100644 deprecated/automation/clients/report/dejagnu/summary.py delete mode 100755 deprecated/automation/clients/report/validate_failures.py delete mode 100644 deprecated/automation/common/__init__.py delete mode 100644 deprecated/automation/common/command.py delete mode 100644 deprecated/automation/common/command_executer.py delete mode 100755 deprecated/automation/common/command_executer_test.py delete mode 100644 deprecated/automation/common/events.py delete mode 100644 deprecated/automation/common/job.py delete mode 100644 deprecated/automation/common/job_group.py delete mode 100644 deprecated/automation/common/logger.py delete mode 100644 deprecated/automation/common/machine.py delete mode 100755 deprecated/automation/common/machine_test.py delete mode 100644 deprecated/automation/common/state_machine.py delete mode 100644 deprecated/automation/server/__init__.py delete mode 100644 deprecated/automation/server/job_executer.py delete mode 100644 deprecated/automation/server/job_group_manager.py delete mode 100644 deprecated/automation/server/job_manager.py delete mode 100644 deprecated/automation/server/machine_manager.py delete mode 100755 deprecated/automation/server/machine_manager_test.py delete mode 100644 deprecated/automation/server/monitor/__init__.py delete mode 100644 deprecated/automation/server/monitor/dashboard.py delete mode 100755 deprecated/automation/server/monitor/manage.py delete mode 100644 deprecated/automation/server/monitor/settings.py delete mode 100755 deprecated/automation/server/monitor/start.sh delete mode 100644 deprecated/automation/server/monitor/static/style.css delete mode 100644 deprecated/automation/server/monitor/templates/base.html delete mode 100644 deprecated/automation/server/monitor/templates/job.html delete mode 100644 deprecated/automation/server/monitor/templates/job_group.html delete mode 100644 deprecated/automation/server/monitor/templates/job_group_list.html delete mode 100644 deprecated/automation/server/monitor/templates/job_log.html delete mode 100644 deprecated/automation/server/monitor/templates/machine_list.html delete mode 100644 deprecated/automation/server/monitor/templates/snippet_attribute_table.html delete mode 100644 deprecated/automation/server/monitor/templates/snippet_code.html delete mode 100644 deprecated/automation/server/monitor/templates/snippet_links.html delete mode 100644 deprecated/automation/server/monitor/urls.py delete mode 100755 deprecated/automation/server/server.py delete mode 100755 deprecated/automation/server/server_test.py delete mode 100644 deprecated/automation/server/test_pool.csv delete mode 100644 deprecated/build-binutils/opts.sh delete mode 100644 deprecated/build-gcc/opts.sh delete mode 100755 deprecated/build_benchmarks.py delete mode 100755 deprecated/build_chrome_browser.py delete mode 100755 deprecated/build_tool.py delete mode 100755 deprecated/compare_benchmarks.py delete mode 100644 deprecated/crb/autotest_gatherer.py delete mode 100644 deprecated/crb/autotest_run.py delete mode 100755 deprecated/crb/crb_driver.py delete mode 100644 deprecated/crb/machine_manager_singleton.py delete mode 100644 deprecated/crb/table_formatter.py delete mode 100755 deprecated/cros_login.py delete mode 100644 deprecated/cwp/bartlett/app.yaml delete mode 100755 deprecated/cwp/bartlett/server.py delete mode 100644 deprecated/cwp/bartlett/static/favicon.ico delete mode 100644 deprecated/cwp/bartlett/test/server_tester.py delete mode 100755 deprecated/cwp/bartlett/update_appengine_server delete mode 100644 deprecated/cwp/demo_pipeline.sh delete mode 100644 deprecated/cwp/interpreter/app_engine_pull.py delete mode 100644 deprecated/cwp/interpreter/symbolizer.py delete mode 100644 deprecated/cwp/performance/experiment_gen.py delete mode 100644 deprecated/dejagnu/__init__.py delete mode 100644 deprecated/dejagnu/boards/chromeos-machine.exp delete mode 100644 deprecated/dejagnu/boards/gdb.exp.in delete mode 100644 deprecated/dejagnu/boards/gdbserver.sh.in delete mode 100644 deprecated/dejagnu/chromeos.exp.in delete mode 100644 deprecated/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi delete mode 100644 deprecated/dejagnu/gdb_baseline/i686-pc-linux-gnu delete mode 100644 deprecated/dejagnu/gdb_baseline/x86_64-cros-linux-gnu delete mode 100755 deprecated/dejagnu/gdb_dejagnu.py delete mode 100755 deprecated/dejagnu/run_dejagnu.py delete mode 100644 deprecated/dejagnu/site.exp delete mode 100755 deprecated/fdo_scripts/divide_and_merge_profiles.py delete mode 100755 deprecated/fdo_scripts/divide_and_merge_profiles_test.py delete mode 100755 deprecated/fdo_scripts/profile_cycler.py delete mode 100644 deprecated/fdo_scripts/summarize_hot_blocks.py delete mode 100644 deprecated/fdo_scripts/vanilla_vs_fdo.py delete mode 100755 deprecated/generate-waterfall-reports.py delete mode 100755 deprecated/get_common_image_version.py delete mode 100644 deprecated/mem_tests/README.md delete mode 100755 deprecated/mem_tests/clean_data.py delete mode 100755 deprecated/mem_tests/mem_groups.py delete mode 100755 deprecated/mem_tests/total_mem_actual.py delete mode 100755 deprecated/mem_tests/total_mem_sampled.py delete mode 100644 deprecated/mem_tests/utils.py delete mode 100755 deprecated/new-generate-waterfall-reports.py delete mode 100755 deprecated/produce_output.py delete mode 100755 deprecated/remote_gcc_build.py delete mode 100755 deprecated/repo_to_repo.py delete mode 100644 deprecated/repo_to_repo_files/binutils-master.json.rtr delete mode 100644 deprecated/repo_to_repo_files/binutils-mobile_toolchain_v16.json.rtr delete mode 100644 deprecated/repo_to_repo_files/crosperf.json.rtr delete mode 100644 deprecated/repo_to_repo_files/gcc-branches_google_4_7.json.rtr delete mode 100644 deprecated/repo_to_repo_files/gcc-branches_google_main.json.rtr delete mode 100644 deprecated/repo_to_repo_files/gcc-master.json.rtr delete mode 100644 deprecated/repo_to_repo_files/gdb-master.json.rtr delete mode 100644 deprecated/repo_to_repo_files/toolchain-utils.json.rtr delete mode 100755 deprecated/report_generator.py delete mode 100755 deprecated/run_benchmarks.py delete mode 100755 deprecated/sheriff_rotation.py delete mode 100755 deprecated/summarize_results.py delete mode 100755 deprecated/test_gcc_dejagnu.py delete mode 100755 deprecated/test_gdb_dejagnu.py delete mode 100755 deprecated/test_toolchains.py delete mode 100755 deprecated/verify_compiler.py delete mode 100755 deprecated/weekly_report.py diff --git a/deprecated/automation/PRESUBMIT.py b/deprecated/automation/PRESUBMIT.py deleted file mode 100644 index 56a43e6c..00000000 --- a/deprecated/automation/PRESUBMIT.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# -# Presubmit script for cc'ing c-compiler-chrome on automation related CL's. -# -# PRESUBMIT METADATA: -# [ -# MailTo( -# p4_filespecs = [ -# "//depot2/gcctools/chromeos/v14/automation/...", -# ], -# addresses = ["c-compiler-chrome"], -# owners = ["asharif", "llozano", "bjanakiraman", "yunlian"] -# ), -# ] diff --git a/deprecated/automation/__init__.py b/deprecated/automation/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/all_tests.py b/deprecated/automation/all_tests.py deleted file mode 100644 index e7b70884..00000000 --- a/deprecated/automation/all_tests.py +++ /dev/null @@ -1,16 +0,0 @@ -import glob -import sys -import unittest - -sys.path.insert(0, 'server') -sys.path.insert(0, 'clients') -sys.path.insert(0, 'common') - -test_file_strings = glob.glob('*/*_test.py') -module_strings = [str[0:len(str) - 3] for str in test_file_strings] -for i in range(len(module_strings)): - module_strings[i] = module_strings[i].split('/')[-1] -suites = [unittest.defaultTestLoader.loadTestsFromName(str) - for str in module_strings] -testSuite = unittest.TestSuite(suites) -text_runner = unittest.TextTestRunner().run(testSuite) diff --git a/deprecated/automation/clients/__init__.py b/deprecated/automation/clients/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/clients/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/clients/android.py b/deprecated/automation/clients/android.py deleted file mode 100755 index 06e76d29..00000000 --- a/deprecated/automation/clients/android.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. -"""Client for Android nightly jobs. - -Does the following jobs: - 1. Checkout android toolchain sources - 2. Build Android toolchain - 3. Build Android tree - 4. Checkout/build/run Android benchmarks (TODO) - 5. Generate size/performance dashboard ? (TODO) -""" - -__author__ = 'jingyu@google.com (Jing Yu)' - -import optparse -import pickle -import sys -import xmlrpclib - -from automation.clients.helper import android -from automation.common import job_group -from automation.common import logger - - -class AndroidToolchainNightlyClient(object): - VALID_GCC_VERSIONS = ['4.4.3', '4.6', 'google_main', 'fsf_trunk'] - - def __init__(self, gcc_version, is_release): - assert gcc_version in self.VALID_GCC_VERSIONS - self.gcc_version = gcc_version - if is_release: - self.build_type = 'RELEASE' - else: - self.build_type = 'DEVELOPMENT' - - def Run(self): - server = xmlrpclib.Server('http://localhost:8000') - server.ExecuteJobGroup(pickle.dumps(self.CreateJobGroup())) - - def CreateJobGroup(self): - factory = android.JobsFactory(self.gcc_version, self.build_type) - - p4_androidtc_job, checkout_dir_dep = factory.CheckoutAndroidToolchain() - - tc_build_job, tc_prefix_dep = factory.BuildAndroidToolchain( - checkout_dir_dep) - - tree_build_job = factory.BuildAndroidImage(tc_prefix_dep) - - benchmark_job = factory.Benchmark(tc_prefix_dep) - - all_jobs = [p4_androidtc_job, tc_build_job, tree_build_job, benchmark_job] - - return job_group.JobGroup('androidtoolchain_nightly', all_jobs, True, False) - - -@logger.HandleUncaughtExceptions -def Main(argv): - valid_gcc_versions_string = ', '.join( - AndroidToolchainNightlyClient.VALID_GCC_VERSIONS) - - parser = optparse.OptionParser() - parser.add_option('--with-gcc-version', - dest='gcc_version', - default='4.6', - action='store', - choices=AndroidToolchainNightlyClient.VALID_GCC_VERSIONS, - help='gcc version: %s.' % valid_gcc_versions_string) - parser.add_option('-r', - '--release', - dest='is_release', - default=False, - action='store_true', - help='Build a release toolchain?') - options, _ = parser.parse_args(argv) - - option_list = [opt.dest for opt in parser.option_list if opt.dest] - - kwargs = dict((option, getattr(options, option)) for option in option_list) - - client = AndroidToolchainNightlyClient(**kwargs) - client.Run() - - -if __name__ == '__main__': - Main(sys.argv) diff --git a/deprecated/automation/clients/chromeos.py b/deprecated/automation/clients/chromeos.py deleted file mode 100755 index 572320fd..00000000 --- a/deprecated/automation/clients/chromeos.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. -"""chromeos.py: Build & Test ChromeOS using custom compilers.""" - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import logging -import optparse -import os -import pickle -import sys -import xmlrpclib - -from automation.clients.helper import jobs -from automation.clients.helper import perforce -from automation.common import command as cmd -from automation.common import job_group -from automation.common import logger - - -class ChromeOSNightlyClient(object): - DEPOT2_DIR = '//depot2/' - P4_CHECKOUT_DIR = 'perforce2/' - P4_VERSION_DIR = os.path.join(P4_CHECKOUT_DIR, 'gcctools/chromeos/v14') - - def __init__(self, board, remote, gcc_githash, p4_snapshot=''): - self._board = board - self._remote = remote - self._gcc_githash = gcc_githash - self._p4_snapshot = p4_snapshot - - def Run(self): - server = xmlrpclib.Server('http://localhost:8000') - server.ExecuteJobGroup(pickle.dumps(self.CreateJobGroup())) - - def CheckoutV14Dir(self): - p4view = perforce.View(self.DEPOT2_DIR, [ - perforce.PathMapping('gcctools/chromeos/v14/...') - ]) - return self.GetP4Snapshot(p4view) - - def GetP4Snapshot(self, p4view): - p4client = perforce.CommandsFactory(self.P4_CHECKOUT_DIR, p4view) - - if self._p4_snapshot: - return p4client.CheckoutFromSnapshot(self._p4_snapshot) - else: - return p4client.SetupAndDo(p4client.Sync(), p4client.Remove()) - - def CreateJobGroup(self): - chain = cmd.Chain( - self.CheckoutV14Dir(), - cmd.Shell('python', - os.path.join(self.P4_VERSION_DIR, 'test_toolchains.py'), - '--force-mismatch', - '--clean', - '--public', # crbug.com/145822 - '--board=%s' % self._board, - '--remote=%s' % self._remote, - '--githashes=%s' % self._gcc_githash)) - label = 'testlabel' - job = jobs.CreateLinuxJob(label, chain, timeout=24 * 60 * 60) - - return job_group.JobGroup(label, [job], True, False) - - -@logger.HandleUncaughtExceptions -def Main(argv): - parser = optparse.OptionParser() - parser.add_option('-b', - '--board', - dest='board', - help='Run performance tests on these boards') - parser.add_option('-r', - '--remote', - dest='remote', - help='Run performance tests on these remotes') - parser.add_option('-g', - '--gcc_githash', - dest='gcc_githash', - help='Use this gcc_githash.') - parser.add_option('-p', - '--p4_snapshot', - dest='p4_snapshot', - default='', - help='Use this p4_snapshot.') - options, _ = parser.parse_args(argv) - - if not all([options.board, options.remote, options.gcc_githash]): - logging.error('Specify a board, remote and gcc_githash') - return 1 - - client = ChromeOSNightlyClient(options.board, - options.remote, - options.gcc_githash, - p4_snapshot=options.p4_snapshot) - client.Run() - return 0 - - -if __name__ == '__main__': - logger.SetUpRootLogger(level=logging.DEBUG, display_flags={'name': False}) - sys.exit(Main(sys.argv)) diff --git a/deprecated/automation/clients/crosstool.py b/deprecated/automation/clients/crosstool.py deleted file mode 100755 index 9ba83807..00000000 --- a/deprecated/automation/clients/crosstool.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import logging -import optparse -import pickle -import sys -import xmlrpclib - -from automation.clients.helper import crosstool -from automation.common import job_group -from automation.common import logger - - -class CrosstoolNightlyClient(object): - VALID_TARGETS = ['gcc-4.6.x-ubuntu_lucid-arm', - 'gcc-4.6.x-ubuntu_lucid-x86_64', - 'gcc-4.6.x-grtev2-armv7a-vfpv3.d16-hard', - 'gcc-4.6.x-glibc-2.11.1-grte', - 'gcc-4.6.x-glibc-2.11.1-powerpc'] - VALID_BOARDS = ['qemu', 'pandaboard', 'unix'] - - def __init__(self, target, boards): - assert target in self.VALID_TARGETS - assert all(board in self.VALID_BOARDS for board in boards) - - self._target = target - self._boards = boards - - def Run(self): - server = xmlrpclib.Server('http://localhost:8000') - server.ExecuteJobGroup(pickle.dumps(self.CreateJobGroup())) - - def CreateJobGroup(self): - factory = crosstool.JobsFactory() - - checkout_crosstool_job, checkout_dir, manifests_dir = \ - factory.CheckoutCrosstool(self._target) - - all_jobs = [checkout_crosstool_job] - - # Build crosstool target - build_release_job, build_tree_dir = factory.BuildRelease(checkout_dir, - self._target) - all_jobs.append(build_release_job) - - testruns = [] - - # Perform crosstool tests - for board in self._boards: - for component in ('gcc', 'binutils'): - test_job, testrun_dir = factory.RunTests(checkout_dir, build_tree_dir, - self._target, board, component) - all_jobs.append(test_job) - testruns.append(testrun_dir) - - if testruns: - all_jobs.append(factory.GenerateReport(testruns, manifests_dir, - self._target, self._boards)) - - return job_group.JobGroup('Crosstool Nightly Build (%s)' % self._target, - all_jobs, True, False) - - -@logger.HandleUncaughtExceptions -def Main(argv): - valid_boards_string = ', '.join(CrosstoolNightlyClient.VALID_BOARDS) - - parser = optparse.OptionParser() - parser.add_option( - '-b', - '--board', - dest='boards', - action='append', - choices=CrosstoolNightlyClient.VALID_BOARDS, - default=[], - help=('Run DejaGNU tests on selected boards: %s.' % valid_boards_string)) - options, args = parser.parse_args(argv) - - if len(args) == 2: - target = args[1] - else: - logging.error('Exactly one target required as a command line argument!') - logging.info('List of valid targets:') - for pair in enumerate(CrosstoolNightlyClient.VALID_TARGETS, start=1): - logging.info('%d) %s', pair) - sys.exit(1) - - option_list = [opt.dest for opt in parser.option_list if opt.dest] - - kwargs = dict((option, getattr(options, option)) for option in option_list) - - client = CrosstoolNightlyClient(target, **kwargs) - client.Run() - - -if __name__ == '__main__': - logger.SetUpRootLogger(level=logging.DEBUG, display_flags={'name': False}) - Main(sys.argv) diff --git a/deprecated/automation/clients/dejagnu_compiler.py b/deprecated/automation/clients/dejagnu_compiler.py deleted file mode 100755 index 7448b87e..00000000 --- a/deprecated/automation/clients/dejagnu_compiler.py +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2012 Google Inc. All Rights Reserved. -"""dejagnu_compiler.py: Run dejagnu test.""" - -__author__ = 'shenhan@google.com (Han Shen)' - -import logging -import optparse -import os -import pickle -import sys -import xmlrpclib - -from automation.clients.helper import jobs -from automation.clients.helper import perforce -from automation.common import command as cmd -from automation.common import job_group -from automation.common import logger - - -class DejagnuCompilerNightlyClient: - DEPOT2_DIR = '//depot2/' - P4_CHECKOUT_DIR = 'perforce2/' - P4_VERSION_DIR = os.path.join(P4_CHECKOUT_DIR, 'gcctools/chromeos/v14') - - def __init__(self, board, remote, p4_snapshot, cleanup): - self._board = board - self._remote = remote - self._p4_snapshot = p4_snapshot - self._cleanup = cleanup - - def Run(self): - server = xmlrpclib.Server('http://localhost:8000') - server.ExecuteJobGroup(pickle.dumps(self.CreateJobGroup())) - - def CheckoutV14Dir(self): - p4view = perforce.View(self.DEPOT2_DIR, [ - perforce.PathMapping('gcctools/chromeos/v14/...') - ]) - return self.GetP4Snapshot(p4view) - - def GetP4Snapshot(self, p4view): - p4client = perforce.CommandsFactory(self.P4_CHECKOUT_DIR, p4view) - - if self._p4_snapshot: - return p4client.CheckoutFromSnapshot(self._p4_snapshot) - else: - return p4client.SetupAndDo(p4client.Sync(), p4client.Remove()) - - def CreateJobGroup(self): - chain = cmd.Chain(self.CheckoutV14Dir(), cmd.Shell( - 'python', os.path.join(self.P4_VERSION_DIR, 'test_gcc_dejagnu.py'), - '--board=%s' % self._board, '--remote=%s' % self._remote, - '--cleanup=%s' % self._cleanup)) - label = 'dejagnu' - job = jobs.CreateLinuxJob(label, chain, timeout=8 * 60 * 60) - return job_group.JobGroup(label, - [job], - cleanup_on_failure=True, - cleanup_on_completion=True) - - -@logger.HandleUncaughtExceptions -def Main(argv): - parser = optparse.OptionParser() - parser.add_option('-b', - '--board', - dest='board', - help='Run performance tests on these boards') - parser.add_option('-r', - '--remote', - dest='remote', - help='Run performance tests on these remotes') - parser.add_option('-p', - '--p4_snapshot', - dest='p4_snapshot', - help=('For development only. ' - 'Use snapshot instead of checking out.')) - parser.add_option('--cleanup', - dest='cleanup', - default='mount', - help=('Cleanup test directory, values could be one of ' - '"mount", "chroot" or "chromeos"')) - options, _ = parser.parse_args(argv) - - if not all([options.board, options.remote]): - logging.error('Specify a board and remote.') - return 1 - - client = DejagnuCompilerNightlyClient(options.board, options.remote, - options.p4_snapshot, options.cleanup) - client.Run() - return 0 - - -if __name__ == '__main__': - sys.exit(Main(sys.argv)) diff --git a/deprecated/automation/clients/helper/__init__.py b/deprecated/automation/clients/helper/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/clients/helper/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/clients/helper/android.py b/deprecated/automation/clients/helper/android.py deleted file mode 100644 index 7ff2ac1c..00000000 --- a/deprecated/automation/clients/helper/android.py +++ /dev/null @@ -1,319 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -"""Helper modules for Android toolchain test infrastructure. - -Provides following Android toolchain test jobs and commands. -. Checkout Android toolchain source code -. Build Android toolchain -. Checkout and build Android tree -. Checkout/build/run Android benchmarks, generate size dashboard -. Transform size dashboard to report, send perflab jobid to - perflab dashboard server.(TODO) -""" - -__author__ = 'jingyu@google.com (Jing Yu)' - -import os.path - -from automation.clients.helper import jobs -from automation.clients.helper import perforce -from automation.common import command as cmd -from automation.common import job - - -class JobsFactory(object): - - def __init__(self, gcc_version='4.4.3', build_type='DEVELOPMENT'): - assert gcc_version in ['4.4.3', '4.6', 'google_main', 'fsf_trunk'] - assert build_type in ['DEVELOPMENT', 'RELEASE'] - - self.gcc_version = gcc_version - self.commands = CommandsFactory(gcc_version, build_type) - self.tc_tag = 'gcc-%s-%s' % (gcc_version, build_type) - - def CheckoutAndroidToolchain(self): - """Check out Android toolchain sources by release and gcc version.""" - command = self.commands.CheckoutAndroidToolchain() - new_job = jobs.CreateLinuxJob('AndroidCheckoutToolchain(%s)' % self.tc_tag, - command) - checkout_dir_dep = job.FolderDependency(new_job, self.commands.CHECKOUT_DIR) - return new_job, checkout_dir_dep - - def BuildAndroidToolchain(self, checkout_dir_dep): - """Build Android Toolchain.""" - command = self.commands.BuildAndroidToolchain() - new_job = jobs.CreateLinuxJob('AndroidBuildToolchain(%s)' % self.tc_tag, - command) - new_job.DependsOnFolder(checkout_dir_dep) - tc_prefix_dep = job.FolderDependency(new_job, - self.commands.toolchain_prefix_dir) - return new_job, tc_prefix_dep - - def BuildAndroidImage(self, - tc_prefix_dep, - product='stingray', - branch='ics-release'): - assert product in ['stingray', 'passion', 'trygon', 'soju'] - assert branch in ['honeycomb-release', 'ics-release'] - command = self.commands.BuildAndroidImage(product, branch) - new_job = jobs.CreateLinuxJob('AndroidGetBuildTree(%s)' % self.tc_tag, - command) - new_job.DependsOnFolder(tc_prefix_dep) - return new_job - - def Benchmark(self, tc_prefix_dep, arch='soju'): - assert arch in ['soju', 'stingray'] - script_cmd = self.commands.CheckoutScripts() - experiment_tag = 'android/nightly/%s/%s/$JOB_ID' % (self.tc_tag, arch) - build_run_benchmark_cmd = self.commands.BuildRunBenchmark(arch, - experiment_tag) - command = cmd.Chain(script_cmd, build_run_benchmark_cmd) - new_job = jobs.CreateLinuxJob('AndroidBenchmarking(%s)' % self.tc_tag, - command) - new_job.DependsOnFolder(tc_prefix_dep) - return new_job - - -class CommandsFactory(object): - CHECKOUT_DIR = 'androidtc-checkout-dir' - TOOLCHAIN_SRC_DIR = os.path.join(CHECKOUT_DIR, 'src') - TOOLCHAIN_BUILD_DIR = 'obj' - ANDROID_TREES_DIR = 'android_trees' - TOOLS_DIR = 'android-tools' - BENCHMARK_OUT_DIR = 'results' - - def __init__(self, gcc_version, build_type): - assert gcc_version in ['4.4.3', '4.6', 'google_main', 'fsf_trunk'] - assert build_type in ['DEVELOPMENT', 'RELEASE'] - - self.build_type = build_type - self.gcc_version = gcc_version - self.binutils_version = '2.21' - self.gold_version = '2.21' - self.toolchain_prefix_dir = 'install-gcc-%s-%s' % (gcc_version, build_type) - self.p4client = self._CreatePerforceClient() - self.scripts = ScriptsFactory(self.gcc_version, self.binutils_version, - self.gold_version) - - def _CreatePerforceClient(self): - p4_dev_path = 'gcctools/google_vendor_src_branch' - mobile_rel_branch = ('branches/' - 'mobile_toolchain_v15_release_branch/gcctools/' - 'google_vendor_src_branch') - gcc_443_rel_branch = ('branches/' - 'android_compiler_v14_release_branch/gcctools/' - 'google_vendor_src_branch') - - # Common views for tools - p4view = perforce.View('depot2', perforce.PathMapping.ListFromPathTuples([( - 'gcctools/android/build/...', 'src/build/...'), ( - 'gcctools/android/Tarballs/...', 'src/tarballs/...')])) - for mapping in perforce.PathMapping.ListFromPathDict( - {'gcctools/android': ['tools/scripts/...', 'master/...']}): - p4view.add(mapping) - - # Add views for gdb - p4view.add(perforce.PathMapping(p4_dev_path, 'src', - 'gdb/gdb-7.1.x-android/...')) - - # Add view for binutils for ld and gold - if self.build_type is 'RELEASE': - binutils_branch = mobile_rel_branch - else: - binutils_branch = p4_dev_path - p4view.add(perforce.PathMapping(binutils_branch, 'src', ( - 'binutils/binutils-%s/...' % self.binutils_version))) - if self.binutils_version != self.gold_version: - p4view.add(perforce.PathMapping(binutils_branch, 'src', ( - 'binutils/binutils-%s/...' % self.gold_version))) - - # Add view for gcc if gcc_version is '4.4.3'. - if self.gcc_version == '4.4.3': - gcc443_path = 'gcc/gcc-4.4.3/...' - if self.build_type is 'RELEASE': - p4view.add(perforce.PathMapping(gcc_443_rel_branch, 'src', gcc443_path)) - else: - p4view.add(perforce.PathMapping(p4_dev_path, 'src', gcc443_path)) - - return perforce.CommandsFactory(self.CHECKOUT_DIR, p4view) - - def _CheckoutGCCFromSVN(self): - """Check out gcc from fsf svn. - - Return the command that check out gcc from svn - to gcc_required_dir (=TOOLCHAIN_SRC_DIR/src/gcc/gcc-xxx). - - TODO: - Create a svn class that does these jobs. - Parallelize p4 checkout and svn checkout. - """ - if self.gcc_version == '4.4.3': - return '' - assert self.gcc_version in ['4.6', 'google_main', 'fsf_trunk'] - - gcc_branches_dir = {'4.6': 'branches/google/gcc-4_6', - 'google_main': 'branches/google/main', - 'fsf_trunk': 'trunk'} - - # Find GCC revision number, output it to TOOLCHAIN_SRC_DIR/CLNUM_GCC - svn_get_revision = cmd.Pipe( - cmd.Shell('svn', 'info'), - cmd.Shell('grep', '"Revision:"'), - cmd.Shell('sed', '-E', '"s,Revision: ([0-9]+).*,\\1,"'), - output='../../../CLNUM_GCC') - - svn_co_command = 'svn co svn://gcc.gnu.org/svn/gcc/%s .' % ( - gcc_branches_dir[self.gcc_version]) - - gcc_required_dir = os.path.join(self.TOOLCHAIN_SRC_DIR, 'gcc', - 'gcc-%s' % self.gcc_version) - - return cmd.Chain( - cmd.MakeDir(gcc_required_dir), - cmd.Wrapper( - cmd.Chain(svn_co_command, svn_get_revision), - cwd=gcc_required_dir)) - - def CheckoutAndroidToolchain(self): - p4client = self.p4client - command = p4client.SetupAndDo(p4client.Sync(), - p4client.SaveCurrentCLNumber('CLNUM'), - p4client.Remove()) - if self.gcc_version != '4.4.3': - command.append(self._CheckoutGCCFromSVN()) - - return command - - def BuildAndroidToolchain(self): - script_cmd = self.scripts.BuildAndroidToolchain( - self.toolchain_prefix_dir, self.CHECKOUT_DIR, self.TOOLCHAIN_BUILD_DIR, - self.TOOLCHAIN_SRC_DIR) - - # Record toolchain and gcc CL number - record_cl_cmd = cmd.Copy( - os.path.join(self.CHECKOUT_DIR, 'CLNUM*'), - to_dir=self.toolchain_prefix_dir) - save_cmd = cmd.Tar( - os.path.join('$JOB_TMP', 'results', '%s.tar.bz2' % - self.toolchain_prefix_dir), self.toolchain_prefix_dir) - return cmd.Chain(script_cmd, record_cl_cmd, save_cmd) - - def _BuildAndroidTree(self, local_android_branch_dir, product): - target_tools_prefix = os.path.join('$JOB_TMP', self.toolchain_prefix_dir, - 'bin', 'arm-linux-androideabi-') - java_path = '/usr/lib/jvm/java-6-sun/bin' - build_cmd = cmd.Shell('make', '-j8', 'PRODUCT-%s-userdebug' % product, - 'TARGET_TOOLS_PREFIX=%s' % target_tools_prefix, - 'PATH=%s:$PATH' % java_path) - return cmd.Wrapper(build_cmd, cwd=local_android_branch_dir) - - def BuildAndroidImage(self, product, branch): - assert product in ['stingray', 'passion', 'trygon', 'soju'] - - # Copy the tree from atree.mtv.corp to ANDROID_TREES_DIR/branch - androidtrees_host = 'atree.mtv.corp.google.com' - androidtrees_path = ('/usr/local/google2/home/mobiletc-prebuild/' - 'android_trees') - remote_android_branch_path = os.path.join(androidtrees_path, branch) - local_android_branch_dir = os.path.join(self.ANDROID_TREES_DIR, branch) - gettree_cmd = cmd.RemoteCopyFrom( - androidtrees_host, remote_android_branch_path, local_android_branch_dir) - - # Configure and build the tree - buildtree_cmd = self._BuildAndroidTree(local_android_branch_dir, product) - - # Compress and copy system.img to result - result_system_img = os.path.join(local_android_branch_dir, 'out', 'target', - 'product', product, 'system.img') - copy_img = cmd.Copy(result_system_img, to_dir='results') - compress_img = cmd.Shell('bzip2', os.path.join('results', 'system.img')) - - return cmd.Chain(gettree_cmd, buildtree_cmd, copy_img, compress_img) - - def CheckoutScripts(self): - p4view = perforce.View('depot2', - [perforce.PathMapping('gcctools/android/tools/...', - 'tools/...')]) - p4client = perforce.CommandsFactory(self.TOOLS_DIR, p4view) - return p4client.SetupAndDo(p4client.Sync(), p4client.Remove()) - - def BuildRunBenchmark(self, arch, run_experiment): - # Copy base benchmark binaries from atree.mtv.corp - base_benchbin_host = 'atree.mtv.corp.google.com' - base_benchbin_path = ('/usr/local/google2/home/mobiletc-prebuild/' - 'archive/v3binaries/2011-10-18') - local_basebenchbin_dir = 'base_benchmark_bin' - getbase_cmd = cmd.RemoteCopyFrom(base_benchbin_host, base_benchbin_path, - local_basebenchbin_dir) - - # Build and run benchmark. - android_arch = 'android_%s' % arch - run_label = 'normal' - benchmark_cmd = self.scripts.RunBenchmark( - self.toolchain_prefix_dir, self.TOOLS_DIR, self.BENCHMARK_OUT_DIR, - run_label, run_experiment, android_arch, local_basebenchbin_dir) - - # Extract jobid from BENCHMARK_OUT_DIR/log/jobid_normal.log file. - # Copy jobid to www server to generate performance dashboard. - # TODO(jingyu) - - return cmd.Chain(getbase_cmd, benchmark_cmd) - - -class ScriptsFactory(object): - - def __init__(self, gcc_version, binutils_version, gold_version): - self._gcc_version = gcc_version - self._binutils_version = binutils_version - self._gold_version = gold_version - - def BuildAndroidToolchain(self, toolchain_prefix_dir, checkout_dir, - toolchain_build_dir, androidtc_src_dir): - if self._gcc_version == '4.4.3': - gold_option = 'both/gold' - else: - gold_option = 'default' - - return cmd.Shell( - 'build_androidtoolchain.sh', - '--toolchain-src=%s' % os.path.join('$JOB_TMP', androidtc_src_dir), - '--build-path=%s' % os.path.join('$JOB_TMP', toolchain_build_dir), - '--install-prefix=%s' % os.path.join('$JOB_TMP', toolchain_prefix_dir), - '--target=arm-linux-androideabi', - '--enable-gold=%s' % gold_option, - '--with-gcc-version=%s' % self._gcc_version, - '--with-binutils-version=%s' % self._binutils_version, - '--with-gold-version=%s' % self._gold_version, - '--with-gdb-version=7.1.x-android', - '--log-path=%s/logs' % '$JOB_HOME', - '--android-sysroot=%s' % os.path.join('$JOB_TMP', checkout_dir, - 'gcctools', 'android', 'master', - 'honeycomb_generic_sysroot'), - path=os.path.join(checkout_dir, 'gcctools', 'android', 'tools', - 'scripts')) - - def RunBenchmark(self, - toolchain_prefix_dir, - checkout_dir, - output_dir, - run_label, - run_experiment, - arch, - base_bench_bin=None): - if base_bench_bin: - base_bench_opt = '--base_benchmark_bin=%s' % base_bench_bin - else: - base_bench_opt = '' - - return cmd.Shell( - 'benchmark.sh', - '--android_toolchain=%s' % os.path.join('$JOB_TMP', - toolchain_prefix_dir), - '--bench_space=%s' % os.path.join('$JOB_TMP', 'bench'), - '--benchmark_bin=%s' % os.path.join('$JOB_TMP', output_dir, - 'bench_bin'), - base_bench_opt, - '--log_path=%s' % os.path.join('$JOB_TMP', output_dir, 'log'), - '--arch=%s' % arch, - '--run_label=%s' % run_label, - '--run_experiment=%s' % run_experiment, - path=os.path.join(checkout_dir, 'tools', 'scripts')) diff --git a/deprecated/automation/clients/helper/chromeos.py b/deprecated/automation/clients/helper/chromeos.py deleted file mode 100644 index e7157451..00000000 --- a/deprecated/automation/clients/helper/chromeos.py +++ /dev/null @@ -1,180 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import os.path -import re - -from automation.clients.helper import jobs -from automation.clients.helper import perforce -from automation.common import command as cmd -from automation.common import machine - - -class ScriptsFactory(object): - - def __init__(self, chromeos_root, scripts_path): - self._chromeos_root = chromeos_root - self._scripts_path = scripts_path - - def SummarizeResults(self, logs_path): - return cmd.Shell('summarize_results.py', logs_path, path=self._scripts_path) - - def Buildbot(self, config_name): - buildbot = os.path.join(self._chromeos_root, - 'chromite/cbuildbot/cbuildbot.py') - - return cmd.Shell(buildbot, '--buildroot=%s' % self._chromeos_root, - '--resume', '--noarchive', '--noprebuilts', '--nosync', - '--nouprev', '--notests', '--noclean', config_name) - - def RunBenchmarks(self, board, tests): - image_path = os.path.join(self._chromeos_root, 'src/build/images', board, - 'latest/chromiumos_image.bin') - - return cmd.Shell('cros_run_benchmarks.py', - '--remote=$SECONDARY_MACHINES[0]', - '--board=%s' % board, - '--tests=%s' % tests, - '--full_table', - image_path, - path='/home/mobiletc-prebuild') - - def SetupChromeOS(self, version='latest', use_minilayout=False): - setup_chromeos = cmd.Shell('setup_chromeos.py', - '--public', - '--dir=%s' % self._chromeos_root, - '--version=%s' % version, - path=self._scripts_path) - - if use_minilayout: - setup_chromeos.AddOption('--minilayout') - return setup_chromeos - - -class CommandsFactory(object): - DEPOT2_DIR = '//depot2/' - P4_CHECKOUT_DIR = 'perforce2/' - P4_VERSION_DIR = os.path.join(P4_CHECKOUT_DIR, 'gcctools/chromeos/v14') - - CHROMEOS_ROOT = 'chromeos' - CHROMEOS_SCRIPTS_DIR = os.path.join(CHROMEOS_ROOT, 'src/scripts') - CHROMEOS_BUILDS_DIR = '/home/mobiletc-prebuild/www/chromeos_builds' - - def __init__(self, chromeos_version, board, toolchain, p4_snapshot): - self.chromeos_version = chromeos_version - self.board = board - self.toolchain = toolchain - self.p4_snapshot = p4_snapshot - - self.scripts = ScriptsFactory(self.CHROMEOS_ROOT, self.P4_VERSION_DIR) - - def AddBuildbotConfig(self, config_name, config_list): - config_header = 'add_config(%r, [%s])' % (config_name, - ', '.join(config_list)) - config_file = os.path.join(self.CHROMEOS_ROOT, - 'chromite/cbuildbot/cbuildbot_config.py') - quoted_config_header = '%r' % config_header - quoted_config_header = re.sub("'", "\\\"", quoted_config_header) - - return cmd.Pipe( - cmd.Shell('echo', quoted_config_header), - cmd.Shell('tee', '--append', config_file)) - - def RunBuildbot(self): - config_dict = {'board': self.board, - 'build_tests': True, - 'chrome_tests': True, - 'unittests': False, - 'vm_tests': False, - 'prebuilts': False, - 'latest_toolchain': True, - 'useflags': ['chrome_internal'], - 'usepkg_chroot': True, - self.toolchain: True} - config_name = '%s-toolchain-test' % self.board - if 'arm' in self.board: - config_list = ['arm'] - else: - config_list = [] - config_list.extend(['internal', 'full', 'official', str(config_dict)]) - - add_config_shell = self.AddBuildbotConfig(config_name, config_list) - return cmd.Chain(add_config_shell, self.scripts.Buildbot(config_name)) - - def BuildAndBenchmark(self): - return cmd.Chain( - self.CheckoutV14Dir(), - self.SetupChromeOSCheckout(self.chromeos_version, True), - self.RunBuildbot(), - self.scripts.RunBenchmarks(self.board, 'BootPerfServer,10:Page,3')) - - def GetP4Snapshot(self, p4view): - p4client = perforce.CommandsFactory(self.P4_CHECKOUT_DIR, p4view) - - if self.p4_snapshot: - return p4client.CheckoutFromSnapshot(self.p4_snapshot) - else: - return p4client.SetupAndDo(p4client.Sync(), p4client.Remove()) - - def CheckoutV14Dir(self): - p4view = perforce.View(self.DEPOT2_DIR, [ - perforce.PathMapping('gcctools/chromeos/v14/...') - ]) - return self.GetP4Snapshot(p4view) - - def SetupChromeOSCheckout(self, version, use_minilayout=False): - version_re = '^\d+\.\d+\.\d+\.[a-zA-Z0-9]+$' - - location = os.path.join(self.CHROMEOS_BUILDS_DIR, version) - - if version in ['weekly', 'quarterly']: - assert os.path.islink(location), 'Symlink %s does not exist.' % location - - location_expanded = os.path.abspath(os.path.realpath(location)) - version = os.path.basename(location_expanded) - - if version in ['top', 'latest'] or re.match(version_re, version): - return self.scripts.SetupChromeOS(version, use_minilayout) - - elif version.endswith('bz2') or version.endswith('gz'): - return cmd.UnTar(location_expanded, self.CHROMEOS_ROOT) - - else: - signature_file_location = os.path.join(location, - 'src/scripts/enter_chroot.sh') - assert os.path.exists(signature_file_location), ( - 'Signature file %s does not exist.' % signature_file_location) - - return cmd.Copy(location, to_dir=self.CHROMEOS_ROOT, recursive=True) - - -class JobsFactory(object): - - def __init__(self, - chromeos_version='top', - board='x86-mario', - toolchain='trunk', - p4_snapshot=''): - self.chromeos_version = chromeos_version - self.board = board - self.toolchain = toolchain - - self.commands = CommandsFactory(chromeos_version, board, toolchain, - p4_snapshot) - - def BuildAndBenchmark(self): - command = self.commands.BuildAndBenchmark() - - label = 'BuildAndBenchmark(%s,%s,%s)' % (self.toolchain, self.board, - self.chromeos_version) - - machine_label = 'chromeos-%s' % self.board - - job = jobs.CreateLinuxJob(label, command) - job.DependsOnMachine( - machine.MachineSpecification(label=machine_label, - lock_required=True), - False) - - return job diff --git a/deprecated/automation/clients/helper/crosstool.py b/deprecated/automation/clients/helper/crosstool.py deleted file mode 100644 index 80154b25..00000000 --- a/deprecated/automation/clients/helper/crosstool.py +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import os.path -import time - -from automation.clients.helper import jobs -from automation.clients.helper import perforce -from automation.common import command as cmd -from automation.common import job - - -class JobsFactory(object): - - def __init__(self): - self.commands = CommandsFactory() - - def CheckoutCrosstool(self, target): - command = self.commands.CheckoutCrosstool() - new_job = jobs.CreateLinuxJob('CheckoutCrosstool(%s)' % target, command) - checkout_dir_dep = job.FolderDependency(new_job, - CommandsFactory.CHECKOUT_DIR) - manifests_dir_dep = job.FolderDependency( - new_job, os.path.join(self.commands.buildit_path, target), 'manifests') - return new_job, checkout_dir_dep, manifests_dir_dep - - def BuildRelease(self, checkout_dir, target): - command = self.commands.BuildRelease(target) - new_job = jobs.CreateLinuxJob('BuildRelease(%s)' % target, command) - new_job.DependsOnFolder(checkout_dir) - build_tree_dep = job.FolderDependency(new_job, - self.commands.buildit_work_dir_path) - return new_job, build_tree_dep - - def RunTests(self, checkout_dir, build_tree_dir, target, board, component): - command = self.commands.RunTests(target, board, component) - new_job = jobs.CreateLinuxJob('RunTests(%s, %s, %s)' % - (target, component, board), command) - new_job.DependsOnFolder(checkout_dir) - new_job.DependsOnFolder(build_tree_dir) - testrun_dir_dep = job.FolderDependency( - new_job, self.commands.dejagnu_output_path, board) - return new_job, testrun_dir_dep - - def GenerateReport(self, testrun_dirs, manifests_dir, target, boards): - command = self.commands.GenerateReport(boards) - new_job = jobs.CreateLinuxJob('GenerateReport(%s)' % target, command) - new_job.DependsOnFolder(manifests_dir) - for testrun_dir in testrun_dirs: - new_job.DependsOnFolder(testrun_dir) - return new_job - - -class CommandsFactory(object): - CHECKOUT_DIR = 'crosstool-checkout-dir' - - def __init__(self): - self.buildit_path = os.path.join(self.CHECKOUT_DIR, 'gcctools', 'crosstool', - 'v15') - - self.buildit_work_dir = 'buildit-tmp' - self.buildit_work_dir_path = os.path.join('$JOB_TMP', self.buildit_work_dir) - self.dejagnu_output_path = os.path.join(self.buildit_work_dir_path, - 'dejagnu-output') - - paths = { - 'gcctools': [ - 'crosstool/v15/...', 'scripts/...' - ], - 'gcctools/google_vendor_src_branch': [ - 'binutils/binutils-2.21/...', 'gdb/gdb-7.2.x/...', - 'zlib/zlib-1.2.3/...' - ], - 'gcctools/vendor_src': [ - 'gcc/google/gcc-4_6/...' - ] - } - - p4view = perforce.View('depot2', - perforce.PathMapping.ListFromPathDict(paths)) - - self.p4client = perforce.CommandsFactory(self.CHECKOUT_DIR, p4view) - - def CheckoutCrosstool(self): - p4client = self.p4client - - return p4client.SetupAndDo(p4client.Sync(), - p4client.SaveCurrentCLNumber('CLNUM'), - p4client.Remove()) - - def BuildRelease(self, target): - clnum_path = os.path.join('$JOB_TMP', self.CHECKOUT_DIR, 'CLNUM') - - toolchain_root = os.path.join('/google/data/rw/projects/toolchains', target, - 'unstable') - toolchain_path = os.path.join(toolchain_root, '${CLNUM}') - - build_toolchain = cmd.Wrapper( - cmd.Chain( - cmd.MakeDir(toolchain_path), - cmd.Shell('buildit', - '--keep-work-dir', - '--build-type=release', - '--work-dir=%s' % self.buildit_work_dir_path, - '--results-dir=%s' % toolchain_path, - '--force-release=%s' % '${CLNUM}', - target, - path='.')), - cwd=self.buildit_path, - umask='0022', - env={'CLNUM': '$(< %s)' % clnum_path}) - - # remove all but 10 most recent directories - remove_old_toolchains_from_x20 = cmd.Wrapper( - cmd.Pipe( - cmd.Shell('ls', '-1', '-r'), cmd.Shell('sed', '-e', '1,10d'), - cmd.Shell('xargs', 'rm', '-r', '-f')), - cwd=toolchain_root) - - return cmd.Chain(build_toolchain, remove_old_toolchains_from_x20) - - def RunTests(self, target, board, component='gcc'): - dejagnu_flags = ['--outdir=%s' % self.dejagnu_output_path, - '--target_board=%s' % board] - - # Look for {pandaboard,qemu}.exp files in - # //depot/google3/experimental/users/kbaclawski/dejagnu/boards - - site_exp_file = os.path.join('/google/src/head/depot/google3', - 'experimental/users/kbaclawski', - 'dejagnu/site.exp') - - build_dir_path = os.path.join(target, 'rpmbuild/BUILD/crosstool*-0.0', - 'build-%s' % component) - - run_dejagnu = cmd.Wrapper( - cmd.Chain( - cmd.MakeDir(self.dejagnu_output_path), - cmd.Shell('make', - 'check', - '-k', - '-j $(grep -c processor /proc/cpuinfo)', - 'RUNTESTFLAGS="%s"' % ' '.join(dejagnu_flags), - 'DEJAGNU="%s"' % site_exp_file, - ignore_error=True)), - cwd=os.path.join(self.buildit_work_dir_path, build_dir_path), - env={'REMOTE_TMPDIR': 'job-$JOB_ID'}) - - save_results = cmd.Copy(self.dejagnu_output_path, - to_dir='$JOB_TMP/results', - recursive=True) - - return cmd.Chain(run_dejagnu, save_results) - - def GenerateReport(self, boards): - sumfiles = [os.path.join('$JOB_TMP', board, '*.sum') for board in boards] - - return cmd.Wrapper( - cmd.Shell('dejagnu.sh', - 'report', - '-m', - '$JOB_TMP/manifests/*.xfail', - '-o', - '$JOB_TMP/results/report.html', - *sumfiles, - path='.'), - cwd='$HOME/automation/clients/report') diff --git a/deprecated/automation/clients/helper/jobs.py b/deprecated/automation/clients/helper/jobs.py deleted file mode 100644 index 96a1c408..00000000 --- a/deprecated/automation/clients/helper/jobs.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. - -from automation.common import job -from automation.common import machine - - -def CreateLinuxJob(label, command, lock=False, timeout=4 * 60 * 60): - to_return = job.Job(label, command, timeout) - to_return.DependsOnMachine(machine.MachineSpecification(os='linux', - lock_required=lock)) - return to_return diff --git a/deprecated/automation/clients/helper/perforce.py b/deprecated/automation/clients/helper/perforce.py deleted file mode 100644 index 1f2dfe79..00000000 --- a/deprecated/automation/clients/helper/perforce.py +++ /dev/null @@ -1,215 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import collections -import os.path - -from automation.common import command as cmd - - -class PathMapping(object): - """Stores information about relative path mapping (remote to local).""" - - @classmethod - def ListFromPathDict(cls, prefix_path_dict): - """Takes {'prefix1': ['path1',...], ...} and returns a list of mappings.""" - - mappings = [] - - for prefix, paths in sorted(prefix_path_dict.items()): - for path in sorted(paths): - mappings.append(cls(os.path.join(prefix, path))) - - return mappings - - @classmethod - def ListFromPathTuples(cls, tuple_list): - """Takes a list of tuples and returns a list of mappings. - - Args: - tuple_list: [('remote_path1', 'local_path1'), ...] - - Returns: - a list of mapping objects - """ - mappings = [] - for remote_path, local_path in tuple_list: - mappings.append(cls(remote_path, local_path)) - - return mappings - - def __init__(self, remote, local=None, common_suffix=None): - suffix = self._FixPath(common_suffix or '') - - self.remote = os.path.join(remote, suffix) - self.local = os.path.join(local or remote, suffix) - - @staticmethod - def _FixPath(path_s): - parts = [part for part in path_s.strip('/').split('/') if part] - - if not parts: - return '' - - return os.path.join(*parts) - - def _GetRemote(self): - return self._remote - - def _SetRemote(self, path_s): - self._remote = self._FixPath(path_s) - - remote = property(_GetRemote, _SetRemote) - - def _GetLocal(self): - return self._local - - def _SetLocal(self, path_s): - self._local = self._FixPath(path_s) - - local = property(_GetLocal, _SetLocal) - - def GetAbsolute(self, depot, client): - return (os.path.join('//', depot, self.remote), - os.path.join('//', client, self.local)) - - def __str__(self): - return '%s(%s => %s)' % (self.__class__.__name__, self.remote, self.local) - - -class View(collections.MutableSet): - """Keeps all information about local client required to work with perforce.""" - - def __init__(self, depot, mappings=None, client=None): - self.depot = depot - - if client: - self.client = client - - self._mappings = set(mappings or []) - - @staticmethod - def _FixRoot(root_s): - parts = root_s.strip('/').split('/', 1) - - if len(parts) != 1: - return None - - return parts[0] - - def _GetDepot(self): - return self._depot - - def _SetDepot(self, depot_s): - depot = self._FixRoot(depot_s) - assert depot, 'Not a valid depot name: "%s".' % depot_s - self._depot = depot - - depot = property(_GetDepot, _SetDepot) - - def _GetClient(self): - return self._client - - def _SetClient(self, client_s): - client = self._FixRoot(client_s) - assert client, 'Not a valid client name: "%s".' % client_s - self._client = client - - client = property(_GetClient, _SetClient) - - def add(self, mapping): - assert type(mapping) is PathMapping - self._mappings.add(mapping) - - def discard(self, mapping): - assert type(mapping) is PathMapping - self._mappings.discard(mapping) - - def __contains__(self, value): - return value in self._mappings - - def __len__(self): - return len(self._mappings) - - def __iter__(self): - return iter(mapping for mapping in self._mappings) - - def AbsoluteMappings(self): - return iter(mapping.GetAbsolute(self.depot, self.client) - for mapping in self._mappings) - - -class CommandsFactory(object): - """Creates shell commands used for interaction with Perforce.""" - - def __init__(self, checkout_dir, p4view, name=None, port=None): - self.port = port or 'perforce2:2666' - self.view = p4view - self.view.client = name or 'p4-automation-$HOSTNAME-$JOB_ID' - self.checkout_dir = checkout_dir - self.p4config_path = os.path.join(self.checkout_dir, '.p4config') - - def Initialize(self): - return cmd.Chain('mkdir -p %s' % self.checkout_dir, 'cp ~/.p4config %s' % - self.checkout_dir, 'chmod u+w %s' % self.p4config_path, - 'echo "P4PORT=%s" >> %s' % (self.port, self.p4config_path), - 'echo "P4CLIENT=%s" >> %s' % - (self.view.client, self.p4config_path)) - - def Create(self): - # TODO(kbaclawski): Could we support value list for options consistently? - mappings = ['-a \"%s %s\"' % mapping - for mapping in self.view.AbsoluteMappings()] - - # First command will create client with default mappings. Second one will - # replace default mapping with desired. Unfortunately, it seems that it - # cannot be done in one step. P4EDITOR is defined to /bin/true because we - # don't want "g4 client" to enter real editor and wait for user actions. - return cmd.Wrapper( - cmd.Chain( - cmd.Shell('g4', 'client'), - cmd.Shell('g4', 'client', '--replace', *mappings)), - env={'P4EDITOR': '/bin/true'}) - - def SaveSpecification(self, filename=None): - return cmd.Pipe(cmd.Shell('g4', 'client', '-o'), output=filename) - - def Sync(self, revision=None): - sync_arg = '...' - if revision: - sync_arg = '%s@%s' % (sync_arg, revision) - return cmd.Shell('g4', 'sync', sync_arg) - - def SaveCurrentCLNumber(self, filename=None): - return cmd.Pipe( - cmd.Shell('g4', 'changes', '-m1', '...#have'), - cmd.Shell('sed', '-E', '"s,Change ([0-9]+) .*,\\1,"'), - output=filename) - - def Remove(self): - return cmd.Shell('g4', 'client', '-d', self.view.client) - - def SetupAndDo(self, *commands): - return cmd.Chain(self.Initialize(), - self.InCheckoutDir(self.Create(), *commands)) - - def InCheckoutDir(self, *commands): - return cmd.Wrapper(cmd.Chain(*commands), cwd=self.checkout_dir) - - def CheckoutFromSnapshot(self, snapshot): - cmds = cmd.Chain() - - for mapping in self.view: - local_path, file_part = mapping.local.rsplit('/', 1) - - if file_part == '...': - remote_dir = os.path.join(snapshot, local_path) - local_dir = os.path.join(self.checkout_dir, os.path.dirname(local_path)) - - cmds.extend([ - cmd.Shell('mkdir', '-p', local_dir), cmd.Shell( - 'rsync', '-lr', remote_dir, local_dir) - ]) - - return cmds diff --git a/deprecated/automation/clients/nightly.py b/deprecated/automation/clients/nightly.py deleted file mode 100755 index d35c4eca..00000000 --- a/deprecated/automation/clients/nightly.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -import optparse -import pickle -import sys -import xmlrpclib - -from automation.clients.helper import chromeos -from automation.common import job_group - - -def Main(argv): - parser = optparse.OptionParser() - parser.add_option('-c', - '--chromeos_version', - dest='chromeos_version', - default='quarterly', - help='ChromeOS version to use.') - parser.add_option('-t', - '--toolchain', - dest='toolchain', - default='latest-toolchain', - help='Toolchain to use {latest-toolchain,gcc_46}.') - parser.add_option('-b', - '--board', - dest='board', - default='x86-generic', - help='Board to use for the nightly job.') - options = parser.parse_args(argv)[0] - - toolchain = options.toolchain - board = options.board - chromeos_version = options.chromeos_version - - # Build toolchain - jobs_factory = chromeos.JobsFactory(chromeos_version=chromeos_version, - board=board, - toolchain=toolchain) - benchmark_job = jobs_factory.BuildAndBenchmark() - - group_label = 'nightly_client_%s' % board - group = job_group.JobGroup(group_label, [benchmark_job], True, False) - - server = xmlrpclib.Server('http://localhost:8000') - server.ExecuteJobGroup(pickle.dumps(group)) - - -if __name__ == '__main__': - Main(sys.argv) diff --git a/deprecated/automation/clients/output_test.py b/deprecated/automation/clients/output_test.py deleted file mode 100755 index 73c26eed..00000000 --- a/deprecated/automation/clients/output_test.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -import os.path -import pickle -import sys -import xmlrpclib - -from automation.common import job -from automation.common import job_group -from automation.common import machine - - -def Main(): - server = xmlrpclib.Server('http://localhost:8000') - - command = os.path.join( - os.path.dirname(sys.argv[0]), '../../produce_output.py') - - pwd_job = job.Job('pwd_job', command) - pwd_job.DependsOnMachine(machine.MachineSpecification(os='linux')) - - group = job_group.JobGroup('pwd_client', [pwd_job]) - server.ExecuteJobGroup(pickle.dumps(group)) - - -if __name__ == '__main__': - Main() diff --git a/deprecated/automation/clients/pwd_test.py b/deprecated/automation/clients/pwd_test.py deleted file mode 100755 index 493444d5..00000000 --- a/deprecated/automation/clients/pwd_test.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -import pickle -import xmlrpclib - -from automation.common import job -from automation.common import job_group -from automation.common import machine - - -def Main(): - server = xmlrpclib.Server('http://localhost:8000') - - command = ['echo These following 3 lines should be the same', 'pwd', '$(pwd)', - 'echo ${PWD}'] - - pwd_job = job.Job('pwd_job', ' && '.join(command)) - pwd_job.DependsOnMachine(machine.MachineSpecification(os='linux')) - - group = job_group.JobGroup('pwd_client', [pwd_job]) - server.ExecuteJobGroup(pickle.dumps(group)) - - -if __name__ == '__main__': - Main() diff --git a/deprecated/automation/clients/report/dejagnu.sh b/deprecated/automation/clients/report/dejagnu.sh deleted file mode 100755 index fadd8a0c..00000000 --- a/deprecated/automation/clients/report/dejagnu.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -export PYTHONPATH="$(pwd)" - -python dejagnu/main.py $@ diff --git a/deprecated/automation/clients/report/dejagnu/__init__.py b/deprecated/automation/clients/report/dejagnu/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/clients/report/dejagnu/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/clients/report/dejagnu/main.py b/deprecated/automation/clients/report/dejagnu/main.py deleted file mode 100644 index 62f095e1..00000000 --- a/deprecated/automation/clients/report/dejagnu/main.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -from contextlib import contextmanager -import glob -from itertools import chain -import logging -import optparse -import os.path -import sys - -from manifest import Manifest -import report -from summary import DejaGnuTestRun - - -def ExpandGlobExprList(paths): - """Returns an iterator that goes over expanded glob paths.""" - return chain.from_iterable(map(glob.glob, paths)) - - -@contextmanager -def OptionChecker(parser): - """Provides scoped environment for command line option checking.""" - try: - yield - except SystemExit as ex: - parser.print_help() - print '' - sys.exit('ERROR: %s' % str(ex)) - - -def ManifestCommand(argv): - parser = optparse.OptionParser( - description= - ('Read in one or more DejaGNU summary files (.sum), parse their ' - 'content and generate manifest files. Manifest files store a list ' - 'of failed tests that should be ignored. Generated files are ' - 'stored in current directory under following name: ' - '${tool}-${board}.xfail (e.g. "gcc-unix.xfail").'), - usage='Usage: %prog manifest [file.sum] (file2.sum ...)') - - _, args = parser.parse_args(argv[2:]) - - with OptionChecker(parser): - if not args: - sys.exit('At least one *.sum file required.') - - for filename in chain.from_iterable(map(glob.glob, args)): - test_run = DejaGnuTestRun.FromFile(filename) - - manifest = Manifest.FromDejaGnuTestRun(test_run) - manifest_filename = '%s-%s.xfail' % (test_run.tool, test_run.board) - - with open(manifest_filename, 'w') as manifest_file: - manifest_file.write(manifest.Generate()) - - logging.info('Wrote manifest to "%s" file.', manifest_filename) - - -def ReportCommand(argv): - parser = optparse.OptionParser( - description= - ('Read in one or more DejaGNU summary files (.sum), parse their ' - 'content and generate a single report file in selected format ' - '(currently only HTML).'), - usage=('Usage: %prog report (-m manifest.xfail) [-o report.html] ' - '[file.sum (file2.sum ...)')) - parser.add_option( - '-o', - dest='output', - type='string', - default=None, - help=('Suppress failures for test listed in provided manifest files. ' - '(use -m for each manifest file you want to read)')) - parser.add_option( - '-m', - dest='manifests', - type='string', - action='append', - default=None, - help=('Suppress failures for test listed in provided manifest files. ' - '(use -m for each manifest file you want to read)')) - - opts, args = parser.parse_args(argv[2:]) - - with OptionChecker(parser): - if not args: - sys.exit('At least one *.sum file required.') - - if not opts.output: - sys.exit('Please provide name for report file.') - - manifests = [] - - for filename in ExpandGlobExprList(opts.manifests or []): - logging.info('Using "%s" manifest.', filename) - manifests.append(Manifest.FromFile(filename)) - - test_runs = [DejaGnuTestRun.FromFile(filename) - for filename in chain.from_iterable(map(glob.glob, args))] - - html = report.Generate(test_runs, manifests) - - if html: - with open(opts.output, 'w') as html_file: - html_file.write(html) - logging.info('Wrote report to "%s" file.', opts.output) - else: - sys.exit(1) - - -def HelpCommand(argv): - sys.exit('\n'.join([ - 'Usage: %s command [options]' % os.path.basename(argv[ - 0]), '', 'Commands:', - ' manifest - manage files containing a list of suppressed test failures', - ' report - generate report file for selected test runs' - ])) - - -def Main(argv): - try: - cmd_name = argv[1] - except IndexError: - cmd_name = None - - cmd_map = {'manifest': ManifestCommand, 'report': ReportCommand} - cmd_map.get(cmd_name, HelpCommand)(argv) - - -if __name__ == '__main__': - FORMAT = '%(asctime)-15s %(levelname)s %(message)s' - logging.basicConfig(format=FORMAT, level=logging.INFO) - - Main(sys.argv) diff --git a/deprecated/automation/clients/report/dejagnu/manifest.py b/deprecated/automation/clients/report/dejagnu/manifest.py deleted file mode 100644 index 5831d1b0..00000000 --- a/deprecated/automation/clients/report/dejagnu/manifest.py +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -from collections import namedtuple -from cStringIO import StringIO -import logging - -from summary import DejaGnuTestResult - - -class Manifest(namedtuple('Manifest', 'tool board results')): - """Stores a list of unsuccessful tests. - - Any line that starts with '#@' marker carries auxiliary data in form of a - key-value pair, for example: - - #@ tool: * - #@ board: unix - - So far tool and board parameters are recognized. Their value can contain - arbitrary glob expression. Based on aforementioned parameters given manifest - will be applied for all test results, but only in selected test runs. Note - that all parameters are optional. Their default value is '*' (i.e. for all - tools/boards). - - The meaning of lines above is as follows: corresponding test results to follow - should only be suppressed if test run was performed on "unix" board. - - The summary line used to build the test result should have this format: - - attrlist | UNRESOLVED: gcc.dg/unroll_1.c (test for excess errors) - ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ - optional result name variant - attributes - """ - SUPPRESSIBLE_RESULTS = ['FAIL', 'UNRESOLVED', 'XPASS', 'ERROR'] - - @classmethod - def FromDejaGnuTestRun(cls, test_run): - results = [result - for result in test_run.results - if result.result in cls.SUPPRESSIBLE_RESULTS] - - return cls(test_run.tool, test_run.board, results) - - @classmethod - def FromFile(cls, filename): - """Creates manifest instance from a file in format described above.""" - params = {} - results = [] - - with open(filename, 'r') as manifest_file: - for line in manifest_file: - if line.startswith('#@'): - # parse a line with a parameter - try: - key, value = line[2:].split(':', 1) - except ValueError: - logging.warning('Malformed parameter line: "%s".', line) - else: - params[key.strip()] = value.strip() - else: - # remove comment - try: - line, _ = line.split('#', 1) - except ValueError: - pass - - line = line.strip() - - if line: - # parse a line with a test result - result = DejaGnuTestResult.FromLine(line) - - if result: - results.append(result) - else: - logging.warning('Malformed test result line: "%s".', line) - - tool = params.get('tool', '*') - board = params.get('board', '*') - - return cls(tool, board, results) - - def Generate(self): - """Dumps manifest to string.""" - text = StringIO() - - for name in ['tool', 'board']: - text.write('#@ {0}: {1}\n'.format(name, getattr(self, name))) - - text.write('\n') - - for result in sorted(self.results, key=lambda r: r.result): - text.write('{0}\n'.format(result)) - - return text.getvalue() - - def __iter__(self): - return iter(self.results) diff --git a/deprecated/automation/clients/report/dejagnu/report.html b/deprecated/automation/clients/report/dejagnu/report.html deleted file mode 100644 index 39b39e09..00000000 --- a/deprecated/automation/clients/report/dejagnu/report.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -
- - - {% for test_run in test_runs %} -
-
    - {% for result_type, group in test_run.groups.items %} -
  • - {{ result_type }} -
  • - {% endfor %} -
- {% for result_type, group in test_run.groups.items %} -
-
-
- {% for description, test_list in group.tests %} - {% if test_list %} -

{{ description }}

-
- {% endif %} - {% endfor %} -
-
- {% endfor %} -
-{% endfor %} -
diff --git a/deprecated/automation/clients/report/dejagnu/report.py b/deprecated/automation/clients/report/dejagnu/report.py deleted file mode 100644 index 191a5389..00000000 --- a/deprecated/automation/clients/report/dejagnu/report.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -import logging -import os.path - -RESULT_DESCRIPTION = { - 'ERROR': 'DejaGNU errors', - 'FAIL': 'Failed tests', - 'NOTE': 'DejaGNU notices', - 'PASS': 'Passed tests', - 'UNRESOLVED': 'Unresolved tests', - 'UNSUPPORTED': 'Unsupported tests', - 'UNTESTED': 'Not executed tests', - 'WARNING': 'DejaGNU warnings', - 'XFAIL': 'Expected test failures', - 'XPASS': 'Unexpectedly passed tests' -} - -RESULT_GROUPS = { - 'Successes': ['PASS', 'XFAIL'], - 'Failures': ['FAIL', 'XPASS', 'UNRESOLVED'], - 'Suppressed': ['!FAIL', '!XPASS', '!UNRESOLVED', '!ERROR'], - 'Framework': ['UNTESTED', 'UNSUPPORTED', 'ERROR', 'WARNING', 'NOTE'] -} - -ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) - - -def _GetResultDescription(name): - if name.startswith('!'): - name = name[1:] - - try: - return RESULT_DESCRIPTION[name] - except KeyError: - raise ValueError('Unknown result: "%s"' % name) - - -def _PrepareSummary(res_types, summary): - - def GetResultCount(res_type): - return summary.get(res_type, 0) - - return [(_GetResultDescription(rt), GetResultCount(rt)) for rt in res_types] - - -def _PrepareTestList(res_types, tests): - - def GetTestsByResult(res_type): - return [(test.name, test.variant or '') - for test in sorted(tests) if test.result == res_type] - - return [(_GetResultDescription(rt), GetTestsByResult(rt)) - for rt in res_types if rt != 'PASS'] - - -def Generate(test_runs, manifests): - """Generate HTML report from provided test runs. - - Args: - test_runs: DejaGnuTestRun objects list. - manifests: Manifest object list that will drive test result suppression. - - Returns: - String to which the HTML report was rendered. - """ - tmpl_args = [] - - for test_run_id, test_run in enumerate(test_runs): - logging.info('Generating report for: %s.', test_run) - - test_run.CleanUpTestResults() - test_run.SuppressTestResults(manifests) - - # Generate summary and test list for each result group - groups = {} - - for res_group, res_types in RESULT_GROUPS.items(): - summary_all = _PrepareSummary(res_types, test_run.summary) - tests_all = _PrepareTestList(res_types, test_run.results) - - has_2nd = lambda tuple2: bool(tuple2[1]) - summary = filter(has_2nd, summary_all) - tests = filter(has_2nd, tests_all) - - if summary or tests: - groups[res_group] = {'summary': summary, 'tests': tests} - - tmpl_args.append({ - 'id': test_run_id, - 'name': '%s @%s' % (test_run.tool, test_run.board), - 'groups': groups - }) - - logging.info('Rendering report in HTML format.') - - try: - from django import template - from django.template import loader - from django.conf import settings - except ImportError: - logging.error('Django framework not installed!') - logging.error('Failed to generate report in HTML format!') - return '' - - settings.configure(DEBUG=True, - TEMPLATE_DEBUG=True, - TEMPLATE_DIRS=(ROOT_PATH,)) - - tmpl = loader.get_template('report.html') - ctx = template.Context({'test_runs': tmpl_args}) - - return tmpl.render(ctx) diff --git a/deprecated/automation/clients/report/dejagnu/summary.py b/deprecated/automation/clients/report/dejagnu/summary.py deleted file mode 100644 index d573c691..00000000 --- a/deprecated/automation/clients/report/dejagnu/summary.py +++ /dev/null @@ -1,262 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -from collections import defaultdict -from collections import namedtuple -from datetime import datetime -from fnmatch import fnmatch -from itertools import groupby -import logging -import os.path -import re - - -class DejaGnuTestResult(namedtuple('Result', 'name variant result flaky')): - """Stores the result of a single test case.""" - - # avoid adding __dict__ to the class - __slots__ = () - - LINE_RE = re.compile(r'([A-Z]+):\s+([\w/+.-]+)(.*)') - - @classmethod - def FromLine(cls, line): - """Alternate constructor which takes a string and parses it.""" - try: - attrs, line = line.split('|', 1) - - if attrs.strip() != 'flaky': - return None - - line = line.strip() - flaky = True - except ValueError: - flaky = False - - fields = cls.LINE_RE.match(line.strip()) - - if fields: - result, path, variant = fields.groups() - - # some of the tests are generated in build dir and are issued from there, - # because every test run is performed in randomly named tmp directory we - # need to remove random part - try: - # assume that 2nd field is a test path - path_parts = path.split('/') - - index = path_parts.index('testsuite') - path = '/'.join(path_parts[index + 1:]) - except ValueError: - path = '/'.join(path_parts) - - # Remove junk from test description. - variant = variant.strip(', ') - - substitutions = [ - # remove include paths - they contain name of tmp directory - ('-I\S+', ''), - # compress white spaces - ('\s+', ' ') - ] - - for pattern, replacement in substitutions: - variant = re.sub(pattern, replacement, variant) - - # Some tests separate last component of path by space, so actual filename - # ends up in description instead of path part. Correct that. - try: - first, rest = variant.split(' ', 1) - except ValueError: - pass - else: - if first.endswith('.o'): - path = os.path.join(path, first) - variant = rest - - # DejaGNU framework errors don't contain path part at all, so description - # part has to be reconstructed. - if not any(os.path.basename(path).endswith('.%s' % suffix) - for suffix in ['h', 'c', 'C', 'S', 'H', 'cc', 'i', 'o']): - variant = '%s %s' % (path, variant) - path = '' - - # Some tests are picked up from current directory (presumably DejaGNU - # generates some test files). Remove the prefix for these files. - if path.startswith('./'): - path = path[2:] - - return cls(path, variant or '', result, flaky=flaky) - - def __str__(self): - """Returns string representation of a test result.""" - if self.flaky: - fmt = 'flaky | ' - else: - fmt = '' - fmt += '{2}: {0}' - if self.variant: - fmt += ' {1}' - return fmt.format(*self) - - -class DejaGnuTestRun(object): - """Container for test results that were a part of single test run. - - The class stores also metadata related to the test run. - - Attributes: - board: Name of DejaGNU board, which was used to run the tests. - date: The date when the test run was started. - target: Target triple. - host: Host triple. - tool: The tool that was tested (e.g. gcc, binutils, g++, etc.) - results: a list of DejaGnuTestResult objects. - """ - - __slots__ = ('board', 'date', 'target', 'host', 'tool', 'results') - - def __init__(self, **kwargs): - assert all(name in self.__slots__ for name in kwargs) - - self.results = set() - self.date = kwargs.get('date', datetime.now()) - - for name in ('board', 'target', 'tool', 'host'): - setattr(self, name, kwargs.get(name, 'unknown')) - - @classmethod - def FromFile(cls, filename): - """Alternate constructor - reads a DejaGNU output file.""" - test_run = cls() - test_run.FromDejaGnuOutput(filename) - test_run.CleanUpTestResults() - return test_run - - @property - def summary(self): - """Returns a summary as {ResultType -> Count} dictionary.""" - summary = defaultdict(int) - - for r in self.results: - summary[r.result] += 1 - - return summary - - def _ParseBoard(self, fields): - self.board = fields.group(1).strip() - - def _ParseDate(self, fields): - self.date = datetime.strptime(fields.group(2).strip(), '%a %b %d %X %Y') - - def _ParseTarget(self, fields): - self.target = fields.group(2).strip() - - def _ParseHost(self, fields): - self.host = fields.group(2).strip() - - def _ParseTool(self, fields): - self.tool = fields.group(1).strip() - - def FromDejaGnuOutput(self, filename): - """Read in and parse DejaGNU output file.""" - - logging.info('Reading "%s" DejaGNU output file.', filename) - - with open(filename, 'r') as report: - lines = [line.strip() for line in report.readlines() if line.strip()] - - parsers = ((re.compile(r'Running target (.*)'), self._ParseBoard), - (re.compile(r'Test Run By (.*) on (.*)'), self._ParseDate), - (re.compile(r'=== (.*) tests ==='), self._ParseTool), - (re.compile(r'Target(\s+)is (.*)'), self._ParseTarget), - (re.compile(r'Host(\s+)is (.*)'), self._ParseHost)) - - for line in lines: - result = DejaGnuTestResult.FromLine(line) - - if result: - self.results.add(result) - else: - for regexp, parser in parsers: - fields = regexp.match(line) - if fields: - parser(fields) - break - - logging.debug('DejaGNU output file parsed successfully.') - logging.debug(self) - - def CleanUpTestResults(self): - """Remove certain test results considered to be spurious. - - 1) Large number of test reported as UNSUPPORTED are also marked as - UNRESOLVED. If that's the case remove latter result. - 2) If a test is performed on compiler output and for some reason compiler - fails, we don't want to report all failures that depend on the former. - """ - name_key = lambda v: v.name - results_by_name = sorted(self.results, key=name_key) - - for name, res_iter in groupby(results_by_name, key=name_key): - results = set(res_iter) - - # If DejaGnu was unable to compile a test it will create following result: - failed = DejaGnuTestResult(name, '(test for excess errors)', 'FAIL', - False) - - # If a test compilation failed, remove all results that are dependent. - if failed in results: - dependants = set(filter(lambda r: r.result != 'FAIL', results)) - - self.results -= dependants - - for res in dependants: - logging.info('Removed {%s} dependance.', res) - - # Remove all UNRESOLVED results that were also marked as UNSUPPORTED. - unresolved = [res._replace(result='UNRESOLVED') - for res in results if res.result == 'UNSUPPORTED'] - - for res in unresolved: - if res in self.results: - self.results.remove(res) - logging.info('Removed {%s} duplicate.', res) - - def _IsApplicable(self, manifest): - """Checks if test results need to be reconsidered based on the manifest.""" - check_list = [(self.tool, manifest.tool), (self.board, manifest.board)] - - return all(fnmatch(text, pattern) for text, pattern in check_list) - - def SuppressTestResults(self, manifests): - """Suppresses all test results listed in manifests.""" - - # Get a set of tests results that are going to be suppressed if they fail. - manifest_results = set() - - for manifest in filter(self._IsApplicable, manifests): - manifest_results |= set(manifest.results) - - suppressed_results = self.results & manifest_results - - for result in sorted(suppressed_results): - logging.debug('Result suppressed for {%s}.', result) - - new_result = '!' + result.result - - # Mark result suppression as applied. - manifest_results.remove(result) - - # Rewrite test result. - self.results.remove(result) - self.results.add(result._replace(result=new_result)) - - for result in sorted(manifest_results): - logging.warning('Result {%s} listed in manifest but not suppressed.', - result) - - def __str__(self): - return '{0}, {1} @{2} on {3}'.format(self.target, self.tool, self.board, - self.date) diff --git a/deprecated/automation/clients/report/validate_failures.py b/deprecated/automation/clients/report/validate_failures.py deleted file mode 100755 index d8776ba5..00000000 --- a/deprecated/automation/clients/report/validate_failures.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/python2 - -# Script to compare testsuite failures against a list of known-to-fail -# tests. - -# Contributed by Diego Novillo -# Overhaul by Krystian Baclawski -# -# Copyright (C) 2011 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC 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, or (at your option) -# any later version. -# -# GCC 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 GCC; see the file COPYING. If not, write to -# the Free Software Foundation, 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -"""This script provides a coarser XFAILing mechanism that requires no -detailed DejaGNU markings. This is useful in a variety of scenarios: - -- Development branches with many known failures waiting to be fixed. -- Release branches with known failures that are not considered - important for the particular release criteria used in that branch. - -The script must be executed from the toplevel build directory. When -executed it will: - -1) Determine the target built: TARGET -2) Determine the source directory: SRCDIR -3) Look for a failure manifest file in - /contrib/testsuite-management/.xfail -4) Collect all the .sum files from the build tree. -5) Produce a report stating: - a) Failures expected in the manifest but not present in the build. - b) Failures in the build not expected in the manifest. -6) If all the build failures are expected in the manifest, it exits - with exit code 0. Otherwise, it exits with error code 1. -""" - -import optparse -import logging -import os -import sys - -sys.path.append(os.path.dirname(os.path.abspath(__file__))) - -from dejagnu.manifest import Manifest -from dejagnu.summary import DejaGnuTestResult -from dejagnu.summary import DejaGnuTestRun - -# Pattern for naming manifest files. The first argument should be -# the toplevel GCC source directory. The second argument is the -# target triple used during the build. -_MANIFEST_PATH_PATTERN = '%s/contrib/testsuite-management/%s.xfail' - - -def GetMakefileVars(makefile_path): - assert os.path.exists(makefile_path) - - with open(makefile_path) as lines: - kvs = [line.split('=', 1) for line in lines if '=' in line] - - return dict((k.strip(), v.strip()) for k, v in kvs) - - -def GetSumFiles(build_dir): - summaries = [] - - for root, _, filenames in os.walk(build_dir): - summaries.extend([os.path.join(root, filename) - for filename in filenames if filename.endswith('.sum')]) - - return map(os.path.normpath, summaries) - - -def ValidBuildDirectory(build_dir, target): - mandatory_paths = [build_dir, os.path.join(build_dir, 'Makefile')] - - extra_paths = [os.path.join(build_dir, target), - os.path.join(build_dir, 'build-%s' % target)] - - return (all(map(os.path.exists, mandatory_paths)) and - any(map(os.path.exists, extra_paths))) - - -def GetManifestPath(build_dir): - makefile = GetMakefileVars(os.path.join(build_dir, 'Makefile')) - srcdir = makefile['srcdir'] - target = makefile['target'] - - if not ValidBuildDirectory(build_dir, target): - target = makefile['target_alias'] - - if not ValidBuildDirectory(build_dir, target): - logging.error('%s is not a valid GCC top level build directory.', build_dir) - sys.exit(1) - - logging.info('Discovered source directory: "%s"', srcdir) - logging.info('Discovered build target: "%s"', target) - - return _MANIFEST_PATH_PATTERN % (srcdir, target) - - -def CompareResults(manifest, actual): - """Compare sets of results and return two lists: - - List of results present in MANIFEST but missing from ACTUAL. - - List of results present in ACTUAL but missing from MANIFEST. - """ - # Report all the actual results not present in the manifest. - actual_vs_manifest = actual - manifest - - # Filter out tests marked flaky. - manifest_without_flaky_tests = set(filter(lambda result: not result.flaky, - manifest)) - - # Simlarly for all the tests in the manifest. - manifest_vs_actual = manifest_without_flaky_tests - actual - - return actual_vs_manifest, manifest_vs_actual - - -def LogResults(level, results): - log_fun = getattr(logging, level) - - for num, result in enumerate(sorted(results), start=1): - log_fun(' %d) %s', num, result) - - -def CheckExpectedResults(manifest_path, build_dir): - logging.info('Reading manifest file: "%s"', manifest_path) - - manifest = set(Manifest.FromFile(manifest_path)) - - logging.info('Getting actual results from build directory: "%s"', - os.path.realpath(build_dir)) - - summaries = GetSumFiles(build_dir) - - actual = set() - - for summary in summaries: - test_run = DejaGnuTestRun.FromFile(summary) - failures = set(Manifest.FromDejaGnuTestRun(test_run)) - actual.update(failures) - - if manifest: - logging.debug('Tests expected to fail:') - LogResults('debug', manifest) - - if actual: - logging.debug('Actual test failures:') - LogResults('debug', actual) - - actual_vs_manifest, manifest_vs_actual = CompareResults(manifest, actual) - - if actual_vs_manifest: - logging.info('Build results not in the manifest:') - LogResults('info', actual_vs_manifest) - - if manifest_vs_actual: - logging.info('Manifest results not present in the build:') - LogResults('info', manifest_vs_actual) - logging.info('NOTE: This is not a failure! ', - 'It just means that the manifest expected these tests to ' - 'fail, but they worked in this configuration.') - - if actual_vs_manifest or manifest_vs_actual: - sys.exit(1) - - logging.info('No unexpected failures.') - - -def ProduceManifest(manifest_path, build_dir, overwrite): - if os.path.exists(manifest_path) and not overwrite: - logging.error('Manifest file "%s" already exists.', manifest_path) - logging.error('Use --force to overwrite.') - sys.exit(1) - - testruns = map(DejaGnuTestRun.FromFile, GetSumFiles(build_dir)) - manifests = map(Manifest.FromDejaGnuTestRun, testruns) - - with open(manifest_path, 'w') as manifest_file: - manifest_strings = [manifest.Generate() for manifest in manifests] - logging.info('Writing manifest to "%s".', manifest_path) - manifest_file.write('\n'.join(manifest_strings)) - - -def Main(argv): - parser = optparse.OptionParser(usage=__doc__) - parser.add_option( - '-b', - '--build_dir', - dest='build_dir', - action='store', - metavar='PATH', - default=os.getcwd(), - help='Build directory to check. (default: current directory)') - parser.add_option('-m', - '--manifest', - dest='manifest', - action='store_true', - help='Produce the manifest for the current build.') - parser.add_option( - '-f', - '--force', - dest='force', - action='store_true', - help=('Overwrite an existing manifest file, if user requested creating ' - 'new one. (default: False)')) - parser.add_option('-v', - '--verbose', - dest='verbose', - action='store_true', - help='Increase verbosity.') - options, _ = parser.parse_args(argv[1:]) - - if options.verbose: - logging.root.setLevel(logging.DEBUG) - - manifest_path = GetManifestPath(options.build_dir) - - if options.manifest: - ProduceManifest(manifest_path, options.build_dir, options.force) - else: - CheckExpectedResults(manifest_path, options.build_dir) - - -if __name__ == '__main__': - logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO) - Main(sys.argv) diff --git a/deprecated/automation/common/__init__.py b/deprecated/automation/common/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/common/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/common/command.py b/deprecated/automation/common/command.py deleted file mode 100644 index c56e9fad..00000000 --- a/deprecated/automation/common/command.py +++ /dev/null @@ -1,241 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import abc -import collections -import os.path - - -class Shell(object): - """Class used to build a string representation of a shell command.""" - - def __init__(self, cmd, *args, **kwargs): - assert all(key in ['path', 'ignore_error'] for key in kwargs) - - self._cmd = cmd - self._args = list(args) - self._path = kwargs.get('path', '') - self._ignore_error = bool(kwargs.get('ignore_error', False)) - - def __str__(self): - cmdline = [os.path.join(self._path, self._cmd)] - cmdline.extend(self._args) - - cmd = ' '.join(cmdline) - - if self._ignore_error: - cmd = '{ %s; true; }' % cmd - - return cmd - - def AddOption(self, option): - self._args.append(option) - - -class Wrapper(object): - """Wraps a command with environment which gets cleaned up after execution.""" - - _counter = 1 - - def __init__(self, command, cwd=None, env=None, umask=None): - # @param cwd: temporary working directory - # @param env: dictionary of environment variables - self._command = command - self._prefix = Chain() - self._suffix = Chain() - - if cwd: - self._prefix.append(Shell('pushd', cwd)) - self._suffix.insert(0, Shell('popd')) - - if env: - for env_var, value in env.items(): - self._prefix.append(Shell('%s=%s' % (env_var, value))) - self._suffix.insert(0, Shell('unset', env_var)) - - if umask: - umask_save_var = 'OLD_UMASK_%d' % self.counter - - self._prefix.append(Shell('%s=$(umask)' % umask_save_var)) - self._prefix.append(Shell('umask', umask)) - self._suffix.insert(0, Shell('umask', '$%s' % umask_save_var)) - - @property - def counter(self): - counter = self._counter - self._counter += 1 - return counter - - def __str__(self): - return str(Chain(self._prefix, self._command, self._suffix)) - - -class AbstractCommandContainer(collections.MutableSequence): - """Common base for all classes that behave like command container.""" - - def __init__(self, *commands): - self._commands = list(commands) - - def __contains__(self, command): - return command in self._commands - - def __iter__(self): - return iter(self._commands) - - def __len__(self): - return len(self._commands) - - def __getitem__(self, index): - return self._commands[index] - - def __setitem__(self, index, command): - self._commands[index] = self._ValidateCommandType(command) - - def __delitem__(self, index): - del self._commands[index] - - def insert(self, index, command): - self._commands.insert(index, self._ValidateCommandType(command)) - - @abc.abstractmethod - def __str__(self): - pass - - @abc.abstractproperty - def stored_types(self): - pass - - def _ValidateCommandType(self, command): - if type(command) not in self.stored_types: - raise TypeError('Command cannot have %s type.' % type(command)) - else: - return command - - def _StringifyCommands(self): - cmds = [] - - for cmd in self: - if isinstance(cmd, AbstractCommandContainer) and len(cmd) > 1: - cmds.append('{ %s; }' % cmd) - else: - cmds.append(str(cmd)) - - return cmds - - -class Chain(AbstractCommandContainer): - """Container that chains shell commands using (&&) shell operator.""" - - @property - def stored_types(self): - return [str, Shell, Chain, Pipe] - - def __str__(self): - return ' && '.join(self._StringifyCommands()) - - -class Pipe(AbstractCommandContainer): - """Container that chains shell commands using pipe (|) operator.""" - - def __init__(self, *commands, **kwargs): - assert all(key in ['input', 'output'] for key in kwargs) - - AbstractCommandContainer.__init__(self, *commands) - - self._input = kwargs.get('input', None) - self._output = kwargs.get('output', None) - - @property - def stored_types(self): - return [str, Shell] - - def __str__(self): - pipe = self._StringifyCommands() - - if self._input: - pipe.insert(str(Shell('cat', self._input), 0)) - - if self._output: - pipe.append(str(Shell('tee', self._output))) - - return ' | '.join(pipe) - -# TODO(kbaclawski): Unfortunately we don't have any policy describing which -# directories can or cannot be touched by a job. Thus, I cannot decide how to -# protect a system against commands that are considered to be dangerous (like -# RmTree("${HOME}")). AFAIK we'll have to execute some commands with root access -# (especially for ChromeOS related jobs, which involve chroot-ing), which is -# even more scary. - - -def Copy(*args, **kwargs): - assert all(key in ['to_dir', 'recursive'] for key in kwargs.keys()) - - options = [] - - if 'to_dir' in kwargs: - options.extend(['-t', kwargs['to_dir']]) - - if 'recursive' in kwargs: - options.append('-r') - - options.extend(args) - - return Shell('cp', *options) - - -def RemoteCopyFrom(from_machine, from_path, to_path, username=None): - from_path = os.path.expanduser(from_path) + '/' - to_path = os.path.expanduser(to_path) + '/' - - if not username: - login = from_machine - else: - login = '%s@%s' % (username, from_machine) - - return Chain( - MakeDir(to_path), Shell('rsync', '-a', '%s:%s' % - (login, from_path), to_path)) - - -def MakeSymlink(to_path, link_name): - return Shell('ln', '-f', '-s', '-T', to_path, link_name) - - -def MakeDir(*dirs, **kwargs): - options = ['-p'] - - mode = kwargs.get('mode', None) - - if mode: - options.extend(['-m', str(mode)]) - - options.extend(dirs) - - return Shell('mkdir', *options) - - -def RmTree(*dirs): - return Shell('rm', '-r', '-f', *dirs) - - -def UnTar(tar_file, dest_dir): - return Chain( - MakeDir(dest_dir), Shell('tar', '-x', '-f', tar_file, '-C', dest_dir)) - - -def Tar(tar_file, *args): - options = ['-c'] - - if tar_file.endswith('.tar.bz2'): - options.append('-j') - elif tar_file.endswith('.tar.gz'): - options.append('-z') - else: - assert tar_file.endswith('.tar') - - options.extend(['-f', tar_file]) - options.extend(args) - - return Chain(MakeDir(os.path.dirname(tar_file)), Shell('tar', *options)) diff --git a/deprecated/automation/common/command_executer.py b/deprecated/automation/common/command_executer.py deleted file mode 100644 index c0f314f5..00000000 --- a/deprecated/automation/common/command_executer.py +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# -"""Classes that help running commands in a subshell. - -Commands can be run locally, or remotly using SSH connection. You may log the -output of a command to a terminal or a file, or any other destination. -""" - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import fcntl -import logging -import os -import select -import subprocess -import time - -from automation.common import logger - - -class CommandExecuter(object): - DRY_RUN = False - - def __init__(self, dry_run=False): - self._logger = logging.getLogger(self.__class__.__name__) - self._dry_run = dry_run or self.DRY_RUN - - @classmethod - def Configure(cls, dry_run): - cls.DRY_RUN = dry_run - - def RunCommand(self, - cmd, - machine=None, - username=None, - command_terminator=None, - command_timeout=None): - cmd = str(cmd) - - if self._dry_run: - return 0 - - if not command_terminator: - command_terminator = CommandTerminator() - - if command_terminator.IsTerminated(): - self._logger.warning('Command has been already terminated!') - return 1 - - # Rewrite command for remote execution. - if machine: - if username: - login = '%s@%s' % (username, machine) - else: - login = machine - - self._logger.debug("Executing '%s' on %s.", cmd, login) - - # FIXME(asharif): Remove this after crosbug.com/33007 is fixed. - cmd = "ssh -t -t %s -- '%s'" % (login, cmd) - else: - self._logger.debug("Executing: '%s'.", cmd) - - child = self._SpawnProcess(cmd, command_terminator, command_timeout) - - self._logger.debug('{PID: %d} Finished with %d code.', child.pid, - child.returncode) - - return child.returncode - - def _Terminate(self, child, command_timeout, wait_timeout=10): - """Gracefully shutdown the child by sending SIGTERM.""" - - if command_timeout: - self._logger.warning('{PID: %d} Timeout of %s seconds reached since ' - 'process started.', child.pid, command_timeout) - - self._logger.warning('{PID: %d} Terminating child.', child.pid) - - try: - child.terminate() - except OSError: - pass - - wait_started = time.time() - - while not child.poll(): - if time.time() - wait_started >= wait_timeout: - break - time.sleep(0.1) - - return child.poll() - - def _Kill(self, child): - """Kill the child with immediate result.""" - self._logger.warning('{PID: %d} Process still alive.', child.pid) - self._logger.warning('{PID: %d} Killing child.', child.pid) - child.kill() - child.wait() - - def _SpawnProcess(self, cmd, command_terminator, command_timeout): - # Create a child process executing provided command. - child = subprocess.Popen(cmd, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - stdin=subprocess.PIPE, - shell=True) - - # Close stdin so the child won't be able to block on read. - child.stdin.close() - - started_time = time.time() - - # Watch for data on process stdout, stderr. - pipes = [child.stdout, child.stderr] - - # Put pipes into non-blocking mode. - for pipe in pipes: - fd = pipe.fileno() - fd_flags = fcntl.fcntl(fd, fcntl.F_GETFL) - fcntl.fcntl(fd, fcntl.F_SETFL, fd_flags | os.O_NONBLOCK) - - already_terminated = False - - while pipes: - # Maybe timeout reached? - if command_timeout and time.time() - started_time > command_timeout: - command_terminator.Terminate() - - # Check if terminate request was received. - if command_terminator.IsTerminated() and not already_terminated: - if not self._Terminate(child, command_timeout): - self._Kill(child) - # Don't exit the loop immediately. Firstly try to read everything that - # was left on stdout and stderr. - already_terminated = True - - # Wait for pipes to become ready. - ready_pipes, _, _ = select.select(pipes, [], [], 0.1) - - # Handle file descriptors ready to be read. - for pipe in ready_pipes: - fd = pipe.fileno() - - data = os.read(fd, 4096) - - # check for end-of-file - if not data: - pipes.remove(pipe) - continue - - # read all data that's available - while data: - if pipe == child.stdout: - self.DataReceivedOnOutput(data) - elif pipe == child.stderr: - self.DataReceivedOnError(data) - - try: - data = os.read(fd, 4096) - except OSError: - # terminate loop if EWOULDBLOCK (EAGAIN) is received - data = '' - - if not already_terminated: - self._logger.debug('Waiting for command to finish.') - child.wait() - - return child - - def DataReceivedOnOutput(self, data): - """Invoked when the child process wrote data to stdout.""" - sys.stdout.write(data) - - def DataReceivedOnError(self, data): - """Invoked when the child process wrote data to stderr.""" - sys.stderr.write(data) - - -class LoggingCommandExecuter(CommandExecuter): - - def __init__(self, *args, **kwargs): - super(LoggingCommandExecuter, self).__init__(*args, **kwargs) - - # Create a logger for command's stdout/stderr streams. - self._output = logging.getLogger('%s.%s' % (self._logger.name, 'Output')) - - def OpenLog(self, log_path): - """The messages are going to be saved to gzip compressed file.""" - formatter = logging.Formatter('%(asctime)s %(prefix)s: %(message)s', - '%Y-%m-%d %H:%M:%S') - handler = logger.CompressedFileHandler(log_path, delay=True) - handler.setFormatter(formatter) - self._output.addHandler(handler) - - # Set a flag to prevent log records from being propagated up the logger - # hierarchy tree. We don't want for command output messages to appear in - # the main log. - self._output.propagate = 0 - - def CloseLog(self): - """Remove handlers and reattach the logger to its parent.""" - for handler in list(self._output.handlers): - self._output.removeHandler(handler) - handler.flush() - handler.close() - - self._output.propagate = 1 - - def DataReceivedOnOutput(self, data): - """Invoked when the child process wrote data to stdout.""" - for line in data.splitlines(): - self._output.info(line, extra={'prefix': 'STDOUT'}) - - def DataReceivedOnError(self, data): - """Invoked when the child process wrote data to stderr.""" - for line in data.splitlines(): - self._output.warning(line, extra={'prefix': 'STDERR'}) - - -class CommandTerminator(object): - - def __init__(self): - self.terminated = False - - def Terminate(self): - self.terminated = True - - def IsTerminated(self): - return self.terminated diff --git a/deprecated/automation/common/command_executer_test.py b/deprecated/automation/common/command_executer_test.py deleted file mode 100755 index 2caaa146..00000000 --- a/deprecated/automation/common/command_executer_test.py +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import cStringIO -import logging -import os -import signal -import socket -import sys -import time -import unittest - - -def AddScriptDirToPath(): - """Required for remote python script execution.""" - path = os.path.abspath(__file__) - - for _ in range(3): - path, _ = os.path.split(path) - - if not path in sys.path: - sys.path.append(path) - - -AddScriptDirToPath() - -from automation.common.command_executer import CommandExecuter - - -class LoggerMock(object): - - def LogCmd(self, cmd, machine='', user=''): - if machine: - logging.info('[%s] Executing: %s', machine, cmd) - else: - logging.info('Executing: %s', cmd) - - def LogError(self, msg): - logging.error(msg) - - def LogWarning(self, msg): - logging.warning(msg) - - def LogOutput(self, msg): - logging.info(msg) - - -class CommandExecuterUnderTest(CommandExecuter): - - def __init__(self): - CommandExecuter.__init__(self, logger_to_set=LoggerMock()) - - # We will record stdout and stderr. - self._stderr = cStringIO.StringIO() - self._stdout = cStringIO.StringIO() - - @property - def stdout(self): - return self._stdout.getvalue() - - @property - def stderr(self): - return self._stderr.getvalue() - - def DataReceivedOnOutput(self, data): - self._stdout.write(data) - - def DataReceivedOnError(self, data): - self._stderr.write(data) - - -class CommandExecuterLocalTests(unittest.TestCase): - HOSTNAME = None - - def setUp(self): - self._executer = CommandExecuterUnderTest() - - def tearDown(self): - pass - - def RunCommand(self, method, **kwargs): - program = os.path.abspath(sys.argv[0]) - - return self._executer.RunCommand('%s runHelper %s' % (program, method), - machine=self.HOSTNAME, - **kwargs) - - def testCommandTimeout(self): - exit_code = self.RunCommand('SleepForMinute', command_timeout=3) - - self.assertTrue(-exit_code in [signal.SIGTERM, signal.SIGKILL], - 'Invalid exit code: %d' % exit_code) - - def testCommandTimeoutIfSigTermIgnored(self): - exit_code = self.RunCommand('IgnoreSigTerm', command_timeout=3) - - self.assertTrue(-exit_code in [signal.SIGTERM, signal.SIGKILL]) - - def testCommandSucceeded(self): - self.assertFalse(self.RunCommand('ReturnTrue')) - - def testCommandFailed(self): - self.assertTrue(self.RunCommand('ReturnFalse')) - - def testStringOnOutputStream(self): - self.assertFalse(self.RunCommand('EchoToOutputStream')) - self.assertEquals(self._executer.stderr, '') - self.assertEquals(self._executer.stdout, 'test') - - def testStringOnErrorStream(self): - self.assertFalse(self.RunCommand('EchoToErrorStream')) - self.assertEquals(self._executer.stderr, 'test') - self.assertEquals(self._executer.stdout, '') - - def testOutputStreamNonInteractive(self): - self.assertFalse( - self.RunCommand('IsOutputStreamInteractive'), - 'stdout stream is a terminal!') - - def testErrorStreamNonInteractive(self): - self.assertFalse( - self.RunCommand('IsErrorStreamInteractive'), - 'stderr stream is a terminal!') - - def testAttemptToRead(self): - self.assertFalse(self.RunCommand('WaitForInput', command_timeout=3)) - - def testInterruptedProcess(self): - self.assertEquals(self.RunCommand('TerminateBySigAbrt'), -signal.SIGABRT) - - -class CommandExecuterRemoteTests(CommandExecuterLocalTests): - HOSTNAME = socket.gethostname() - - def testCommandTimeoutIfSigTermIgnored(self): - exit_code = self.RunCommand('IgnoreSigTerm', command_timeout=6) - - self.assertEquals(exit_code, 255) - - lines = self._executer.stdout.splitlines() - pid = int(lines[0]) - - try: - with open('/proc/%d/cmdline' % pid) as f: - cmdline = f.read() - except IOError: - cmdline = '' - - self.assertFalse('IgnoreSigTerm' in cmdline, 'Process is still alive.') - - -class CommandExecuterTestHelpers(object): - - def SleepForMinute(self): - time.sleep(60) - return 1 - - def ReturnTrue(self): - return 0 - - def ReturnFalse(self): - return 1 - - def EchoToOutputStream(self): - sys.stdout.write('test') - return 0 - - def EchoToErrorStream(self): - sys.stderr.write('test') - return 0 - - def IsOutputStreamInteractive(self): - return sys.stdout.isatty() - - def IsErrorStreamInteractive(self): - return sys.stderr.isatty() - - def IgnoreSigTerm(self): - os.write(1, '%d' % os.getpid()) - signal.signal(signal.SIGTERM, signal.SIG_IGN) - time.sleep(30) - return 0 - - def WaitForInput(self): - try: - # can only read end-of-file marker - return os.read(0, 1) != '' - except OSError: - # that means that stdin descriptor is closed - return 0 - - def TerminateBySigAbrt(self): - os.kill(os.getpid(), signal.SIGABRT) - return 0 - - -if __name__ == '__main__': - FORMAT = '%(asctime)-15s %(levelname)s %(message)s' - logging.basicConfig(format=FORMAT, level=logging.DEBUG) - - if len(sys.argv) > 1: - if sys.argv[1] == 'runHelper': - helpers = CommandExecuterTestHelpers() - sys.exit(getattr(helpers, sys.argv[2])()) - - unittest.main() diff --git a/deprecated/automation/common/events.py b/deprecated/automation/common/events.py deleted file mode 100644 index ad3ec844..00000000 --- a/deprecated/automation/common/events.py +++ /dev/null @@ -1,149 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2011 Google Inc. All Rights Reserved. -# -"""Tools for recording and reporting timeline of abstract events. - -You can store any events provided that they can be stringified. -""" - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import collections -import datetime -import time - - -class _EventRecord(object): - """Internal class. Attaches extra information to an event.""" - - def __init__(self, event, time_started=None, time_elapsed=None): - self._event = event - self._time_started = time_started or time.time() - self._time_elapsed = None - - if time_elapsed: - self.time_elapsed = time_elapsed - - @property - def event(self): - return self._event - - @property - def time_started(self): - return self._time_started - - def _TimeElapsedGet(self): - if self.has_finished: - time_elapsed = self._time_elapsed - else: - time_elapsed = time.time() - self._time_started - - return datetime.timedelta(seconds=time_elapsed) - - def _TimeElapsedSet(self, time_elapsed): - if isinstance(time_elapsed, datetime.timedelta): - self._time_elapsed = time_elapsed.seconds - else: - self._time_elapsed = time_elapsed - - time_elapsed = property(_TimeElapsedGet, _TimeElapsedSet) - - @property - def has_finished(self): - return self._time_elapsed is not None - - def GetTimeStartedFormatted(self): - return time.strftime('%m/%d/%Y %H:%M:%S', time.gmtime(self._time_started)) - - def GetTimeElapsedRounded(self): - return datetime.timedelta(seconds=int(self.time_elapsed.seconds)) - - def Finish(self): - if not self.has_finished: - self._time_elapsed = time.time() - self._time_started - - -class _Transition(collections.namedtuple('_Transition', ('from_', 'to_'))): - """Internal class. Represents transition point between events / states.""" - - def __str__(self): - return '%s => %s' % (self.from_, self.to_) - - -class EventHistory(collections.Sequence): - """Records events and provides human readable events timeline.""" - - def __init__(self, records=None): - self._records = records or [] - - def __len__(self): - return len(self._records) - - def __iter__(self): - return iter(self._records) - - def __getitem__(self, index): - return self._records[index] - - @property - def last(self): - if self._records: - return self._records[-1] - - def AddEvent(self, event): - if self.last: - self.last.Finish() - - evrec = _EventRecord(event) - self._records.append(evrec) - return evrec - - def GetTotalTime(self): - if self._records: - total_time_elapsed = sum(evrec.time_elapsed.seconds - for evrec in self._records) - - return datetime.timedelta(seconds=int(total_time_elapsed)) - - def GetTransitionEventHistory(self): - records = [] - - if self._records: - for num, next_evrec in enumerate(self._records[1:], start=1): - evrec = self._records[num - 1] - - records.append(_EventRecord( - _Transition(evrec.event, next_evrec.event), evrec.time_started, - evrec.time_elapsed)) - - if not self.last.has_finished: - records.append(_EventRecord( - _Transition(self.last.event, - 'NOW'), self.last.time_started, self.last.time_elapsed)) - - return EventHistory(records) - - @staticmethod - def _GetReport(history, report_name): - report = [report_name] - - for num, evrec in enumerate(history, start=1): - time_elapsed = str(evrec.GetTimeElapsedRounded()) - - if not evrec.has_finished: - time_elapsed.append(' (not finished)') - - report.append('%d) %s: %s: %s' % (num, evrec.GetTimeStartedFormatted(), - evrec.event, time_elapsed)) - - report.append('Total Time: %s' % history.GetTotalTime()) - - return '\n'.join(report) - - def GetEventReport(self): - return EventHistory._GetReport(self, 'Timeline of events:') - - def GetTransitionEventReport(self): - return EventHistory._GetReport(self.GetTransitionEventHistory(), - 'Timeline of transition events:') diff --git a/deprecated/automation/common/job.py b/deprecated/automation/common/job.py deleted file mode 100644 index e845ab25..00000000 --- a/deprecated/automation/common/job.py +++ /dev/null @@ -1,178 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. -# -"""A module for a job in the infrastructure.""" - -__author__ = 'raymes@google.com (Raymes Khoury)' - -import os.path - -from automation.common import state_machine - -STATUS_NOT_EXECUTED = 'NOT_EXECUTED' -STATUS_SETUP = 'SETUP' -STATUS_COPYING = 'COPYING' -STATUS_RUNNING = 'RUNNING' -STATUS_SUCCEEDED = 'SUCCEEDED' -STATUS_FAILED = 'FAILED' - - -class FolderDependency(object): - - def __init__(self, job, src, dest=None): - if not dest: - dest = src - - # TODO(kbaclawski): rename to producer - self.job = job - self.src = src - self.dest = dest - - @property - def read_only(self): - return self.dest == self.src - - -class JobStateMachine(state_machine.BasicStateMachine): - state_machine = { - STATUS_NOT_EXECUTED: [STATUS_SETUP], - STATUS_SETUP: [STATUS_COPYING, STATUS_FAILED], - STATUS_COPYING: [STATUS_RUNNING, STATUS_FAILED], - STATUS_RUNNING: [STATUS_SUCCEEDED, STATUS_FAILED] - } - - final_states = [STATUS_SUCCEEDED, STATUS_FAILED] - - -class JobFailure(Exception): - - def __init__(self, message, exit_code): - Exception.__init__(self, message) - self.exit_code = exit_code - - -class Job(object): - """A class representing a job whose commands will be executed.""" - - WORKDIR_PREFIX = '/usr/local/google/tmp/automation' - - def __init__(self, label, command, timeout=4 * 60 * 60): - self._state = JobStateMachine(STATUS_NOT_EXECUTED) - self.predecessors = set() - self.successors = set() - self.machine_dependencies = [] - self.folder_dependencies = [] - self.id = 0 - self.machines = [] - self.command = command - self._has_primary_machine_spec = False - self.group = None - self.dry_run = None - self.label = label - self.timeout = timeout - - def _StateGet(self): - return self._state - - def _StateSet(self, new_state): - self._state.Change(new_state) - - status = property(_StateGet, _StateSet) - - @property - def timeline(self): - return self._state.timeline - - def __repr__(self): - return '{%s: %s}' % (self.__class__.__name__, self.id) - - def __str__(self): - res = [] - res.append('%d' % self.id) - res.append('Predecessors:') - res.extend(['%d' % pred.id for pred in self.predecessors]) - res.append('Successors:') - res.extend(['%d' % succ.id for succ in self.successors]) - res.append('Machines:') - res.extend(['%s' % machine for machine in self.machines]) - res.append(self.PrettyFormatCommand()) - res.append('%s' % self.status) - res.append(self.timeline.GetTransitionEventReport()) - return '\n'.join(res) - - @staticmethod - def _FormatCommand(cmd, substitutions): - for pattern, replacement in substitutions: - cmd = cmd.replace(pattern, replacement) - - return cmd - - def GetCommand(self): - substitutions = [ - ('$JOB_ID', str(self.id)), ('$JOB_TMP', self.work_dir), - ('$JOB_HOME', self.home_dir), - ('$PRIMARY_MACHINE', self.primary_machine.hostname) - ] - - if len(self.machines) > 1: - for num, machine in enumerate(self.machines[1:]): - substitutions.append(('$SECONDARY_MACHINES[%d]' % num, machine.hostname - )) - - return self._FormatCommand(str(self.command), substitutions) - - def PrettyFormatCommand(self): - # TODO(kbaclawski): This method doesn't belong here, but rather to - # non existing Command class. If one is created then PrettyFormatCommand - # shall become its method. - return self._FormatCommand(self.GetCommand(), [ - ('\{ ', ''), ('; \}', ''), ('\} ', '\n'), ('\s*&&\s*', '\n') - ]) - - def DependsOnFolder(self, dependency): - self.folder_dependencies.append(dependency) - self.DependsOn(dependency.job) - - @property - def results_dir(self): - return os.path.join(self.work_dir, 'results') - - @property - def logs_dir(self): - return os.path.join(self.home_dir, 'logs') - - @property - def log_filename_prefix(self): - return 'job-%d.log' % self.id - - @property - def work_dir(self): - return os.path.join(self.WORKDIR_PREFIX, 'job-%d' % self.id) - - @property - def home_dir(self): - return os.path.join(self.group.home_dir, 'job-%d' % self.id) - - @property - def primary_machine(self): - return self.machines[0] - - def DependsOn(self, job): - """Specifies Jobs to be finished before this job can be launched.""" - self.predecessors.add(job) - job.successors.add(self) - - @property - def is_ready(self): - """Check that all our dependencies have been executed.""" - return all(pred.status == STATUS_SUCCEEDED for pred in self.predecessors) - - def DependsOnMachine(self, machine_spec, primary=True): - # Job will run on arbitrarily chosen machine specified by - # MachineSpecification class instances passed to this method. - if primary: - if self._has_primary_machine_spec: - raise RuntimeError('Only one primary machine specification allowed.') - self._has_primary_machine_spec = True - self.machine_dependencies.insert(0, machine_spec) - else: - self.machine_dependencies.append(machine_spec) diff --git a/deprecated/automation/common/job_group.py b/deprecated/automation/common/job_group.py deleted file mode 100644 index 96912fc1..00000000 --- a/deprecated/automation/common/job_group.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. -# - -import getpass -import os - -from automation.common.state_machine import BasicStateMachine - -STATUS_NOT_EXECUTED = 'NOT_EXECUTED' -STATUS_EXECUTING = 'EXECUTING' -STATUS_SUCCEEDED = 'SUCCEEDED' -STATUS_FAILED = 'FAILED' - - -class JobGroupStateMachine(BasicStateMachine): - state_machine = { - STATUS_NOT_EXECUTED: [STATUS_EXECUTING], - STATUS_EXECUTING: [STATUS_SUCCEEDED, STATUS_FAILED] - } - - final_states = [STATUS_SUCCEEDED, STATUS_FAILED] - - -class JobGroup(object): - HOMEDIR_PREFIX = os.path.join('/home', getpass.getuser(), 'www', 'automation') - - def __init__(self, - label, - jobs=None, - cleanup_on_completion=True, - cleanup_on_failure=False, - description=''): - self._state = JobGroupStateMachine(STATUS_NOT_EXECUTED) - self.id = 0 - self.label = label - self.jobs = [] - self.cleanup_on_completion = cleanup_on_completion - self.cleanup_on_failure = cleanup_on_failure - self.description = description - - if jobs: - for job in jobs: - self.AddJob(job) - - def _StateGet(self): - return self._state - - def _StateSet(self, new_state): - self._state.Change(new_state) - - status = property(_StateGet, _StateSet) - - @property - def home_dir(self): - return os.path.join(self.HOMEDIR_PREFIX, 'job-group-%d' % self.id) - - @property - def time_submitted(self): - try: - return self.status.timeline[1].time_started - except IndexError: - return None - - def __repr__(self): - return '{%s: %s}' % (self.__class__.__name__, self.id) - - def __str__(self): - return '\n'.join(['Job-Group:', 'ID: %s' % self.id] + [str( - job) for job in self.jobs]) - - def AddJob(self, job): - self.jobs.append(job) - job.group = self diff --git a/deprecated/automation/common/logger.py b/deprecated/automation/common/logger.py deleted file mode 100644 index 4aeee052..00000000 --- a/deprecated/automation/common/logger.py +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. - -from itertools import chain -import gzip -import logging -import logging.handlers -import time -import traceback - - -def SetUpRootLogger(filename=None, level=None, display_flags={}): - console_handler = logging.StreamHandler() - console_handler.setFormatter(CustomFormatter(AnsiColorCoder(), display_flags)) - logging.root.addHandler(console_handler) - - if filename: - file_handler = logging.handlers.RotatingFileHandler( - filename, - maxBytes=10 * 1024 * 1024, - backupCount=9, - delay=True) - file_handler.setFormatter(CustomFormatter(NullColorCoder(), display_flags)) - logging.root.addHandler(file_handler) - - if level: - logging.root.setLevel(level) - - -class NullColorCoder(object): - - def __call__(self, *args): - return '' - - -class AnsiColorCoder(object): - CODES = {'reset': (0,), - 'bold': (1, 22), - 'italics': (3, 23), - 'underline': (4, 24), - 'inverse': (7, 27), - 'strikethrough': (9, 29), - 'black': (30, 40), - 'red': (31, 41), - 'green': (32, 42), - 'yellow': (33, 43), - 'blue': (34, 44), - 'magenta': (35, 45), - 'cyan': (36, 46), - 'white': (37, 47)} - - def __call__(self, *args): - codes = [] - - for arg in args: - if arg.startswith('bg-') or arg.startswith('no-'): - codes.append(self.CODES[arg[3:]][1]) - else: - codes.append(self.CODES[arg][0]) - - return '\033[%sm' % ';'.join(map(str, codes)) - - -class CustomFormatter(logging.Formatter): - COLORS = {'DEBUG': ('white',), - 'INFO': ('green',), - 'WARN': ('yellow', 'bold'), - 'ERROR': ('red', 'bold'), - 'CRIT': ('red', 'inverse', 'bold')} - - def __init__(self, coder, display_flags={}): - items = [] - - if display_flags.get('datetime', True): - items.append('%(asctime)s') - if display_flags.get('level', True): - items.append('%(levelname)s') - if display_flags.get('name', True): - items.append(coder('cyan') + '[%(threadName)s:%(name)s]' + coder('reset')) - items.append('%(prefix)s%(message)s') - - logging.Formatter.__init__(self, fmt=' '.join(items)) - - self._coder = coder - - def formatTime(self, record): - ct = self.converter(record.created) - t = time.strftime('%Y-%m-%d %H:%M:%S', ct) - return '%s.%02d' % (t, record.msecs / 10) - - def formatLevelName(self, record): - if record.levelname in ['WARNING', 'CRITICAL']: - levelname = record.levelname[:4] - else: - levelname = record.levelname - - return ''.join([self._coder(*self.COLORS[levelname]), levelname, - self._coder('reset')]) - - def formatMessagePrefix(self, record): - try: - return ' %s%s:%s ' % (self._coder('black', 'bold'), record.prefix, - self._coder('reset')) - except AttributeError: - return '' - - def format(self, record): - if record.exc_info: - if not record.exc_text: - record.exc_text = self.formatException(record.exc_info) - else: - record.exc_text = '' - - fmt = record.__dict__.copy() - fmt.update({'levelname': self.formatLevelName(record), - 'asctime': self.formatTime(record), - 'prefix': self.formatMessagePrefix(record)}) - - s = [] - - for line in chain(record.getMessage().splitlines(), - record.exc_text.splitlines()): - fmt['message'] = line - - s.append(self._fmt % fmt) - - return '\n'.join(s) - - -class CompressedFileHandler(logging.FileHandler): - - def _open(self): - return gzip.open(self.baseFilename + '.gz', self.mode, 9) - - -def HandleUncaughtExceptions(fun): - """Catches all exceptions that would go outside decorated fun scope.""" - - def _Interceptor(*args, **kwargs): - try: - return fun(*args, **kwargs) - except StandardError: - logging.exception('Uncaught exception:') - - return _Interceptor diff --git a/deprecated/automation/common/machine.py b/deprecated/automation/common/machine.py deleted file mode 100644 index 4db0db0d..00000000 --- a/deprecated/automation/common/machine.py +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -from fnmatch import fnmatch - - -class Machine(object): - """Stores information related to machine and its state.""" - - def __init__(self, hostname, label, cpu, cores, os, username): - self.hostname = hostname - self.label = label - self.cpu = cpu - self.cores = cores - self.os = os - self.username = username - - # MachineManager related attributes. - self.uses = 0 - self.locked = False - - def Acquire(self, exclusively): - assert not self.locked - - if exclusively: - self.locked = True - self.uses += 1 - - def Release(self): - assert self.uses > 0 - - self.uses -= 1 - - if not self.uses: - self.locked = False - - def __repr__(self): - return '{%s: %s@%s}' % (self.__class__.__name__, self.username, - self.hostname) - - def __str__(self): - return '\n'.join( - ['Machine Information:', 'Hostname: %s' % self.hostname, 'Label: %s' % - self.label, 'CPU: %s' % self.cpu, 'Cores: %d' % self.cores, 'OS: %s' % - self.os, 'Uses: %d' % self.uses, 'Locked: %s' % self.locked]) - - -class MachineSpecification(object): - """Helper class used to find a machine matching your requirements.""" - - def __init__(self, hostname='*', label='*', os='*', lock_required=False): - self.hostname = hostname - self.label = label - self.os = os - self.lock_required = lock_required - self.preferred_machines = [] - - def __str__(self): - return '\n'.join(['Machine Specification:', 'Name: %s' % self.name, 'OS: %s' - % self.os, 'Lock required: %s' % self.lock_required]) - - def IsMatch(self, machine): - return all([not machine.locked, fnmatch(machine.hostname, self.hostname), - fnmatch(machine.label, self.label), fnmatch(machine.os, - self.os)]) - - def AddPreferredMachine(self, hostname): - if hostname not in self.preferred_machines: - self.preferred_machines.append(hostname) diff --git a/deprecated/automation/common/machine_test.py b/deprecated/automation/common/machine_test.py deleted file mode 100755 index f66299f5..00000000 --- a/deprecated/automation/common/machine_test.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Machine manager unittest. - -MachineManagerTest tests MachineManager. -""" - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import machine -import unittest - - -class MachineTest(unittest.TestCase): - - def setUp(self): - pass - - def testPrintMachine(self): - mach = machine.Machine('ahmad.mtv', 'core2duo', 4, 'linux', 'asharif') - self.assertTrue('ahmad.mtv' in str(mach)) - - -if __name__ == '__main__': - unittest.main() diff --git a/deprecated/automation/common/state_machine.py b/deprecated/automation/common/state_machine.py deleted file mode 100644 index d1cf42c8..00000000 --- a/deprecated/automation/common/state_machine.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2011 Google Inc. All Rights Reserved. -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -from automation.common import events - - -class BasicStateMachine(object): - """Generic class for constructing state machines. - - Keeps all states and possible transition of a state machine. Ensures that - transition between two states is always valid. Also stores transition events - in a timeline object. - """ - state_machine = {} - final_states = [] - - def __init__(self, initial_state): - assert initial_state in self.state_machine,\ - 'Initial state does not belong to this state machine' - - self._state = initial_state - - self.timeline = events.EventHistory() - self.timeline.AddEvent(self._state) - - def __str__(self): - return self._state - - def __eq__(self, value): - if isinstance(value, BasicStateMachine): - value = str(value) - - return self._state == value - - def __ne__(self, value): - return not self == value - - def _TransitionAllowed(self, to_state): - return to_state in self.state_machine.get(self._state, []) - - def Change(self, new_state): - assert self._TransitionAllowed(new_state),\ - 'Transition from %s to %s not possible' % (self._state, new_state) - - self._state = new_state - - self.timeline.AddEvent(self._state) - - if self._state in self.final_states: - self.timeline.last.Finish() diff --git a/deprecated/automation/server/__init__.py b/deprecated/automation/server/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/server/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/server/job_executer.py b/deprecated/automation/server/job_executer.py deleted file mode 100644 index 30b59463..00000000 --- a/deprecated/automation/server/job_executer.py +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. -# - -import logging -import os.path -import threading - -from automation.common import command as cmd -from automation.common import job -from automation.common import logger -from automation.common.command_executer import LoggingCommandExecuter -from automation.common.command_executer import CommandTerminator - - -class JobExecuter(threading.Thread): - - def __init__(self, job_to_execute, machines, listeners): - threading.Thread.__init__(self) - - assert machines - - self.job = job_to_execute - self.listeners = listeners - self.machines = machines - - # Set Thread name. - self.name = '%s-%s' % (self.__class__.__name__, self.job.id) - - self._logger = logging.getLogger(self.__class__.__name__) - self._executer = LoggingCommandExecuter(self.job.dry_run) - self._terminator = CommandTerminator() - - def _RunRemotely(self, command, fail_msg, command_timeout=1 * 60 * 60): - exit_code = self._executer.RunCommand(command, - self.job.primary_machine.hostname, - self.job.primary_machine.username, - command_terminator=self._terminator, - command_timeout=command_timeout) - if exit_code: - raise job.JobFailure(fail_msg, exit_code) - - def _RunLocally(self, command, fail_msg, command_timeout=1 * 60 * 60): - exit_code = self._executer.RunCommand(command, - command_terminator=self._terminator, - command_timeout=command_timeout) - if exit_code: - raise job.JobFailure(fail_msg, exit_code) - - def Kill(self): - self._terminator.Terminate() - - def CleanUpWorkDir(self): - self._logger.debug('Cleaning up %r work directory.', self.job) - self._RunRemotely(cmd.RmTree(self.job.work_dir), 'Cleanup workdir failed.') - - def CleanUpHomeDir(self): - self._logger.debug('Cleaning up %r home directory.', self.job) - self._RunLocally(cmd.RmTree(self.job.home_dir), 'Cleanup homedir failed.') - - def _PrepareRuntimeEnvironment(self): - self._RunRemotely( - cmd.MakeDir(self.job.work_dir, self.job.logs_dir, self.job.results_dir), - 'Creating new job directory failed.') - - # The log directory is ready, so we can prepare to log command's output. - self._executer.OpenLog(os.path.join(self.job.logs_dir, - self.job.log_filename_prefix)) - - def _SatisfyFolderDependencies(self): - for dependency in self.job.folder_dependencies: - to_folder = os.path.join(self.job.work_dir, dependency.dest) - from_folder = os.path.join(dependency.job.work_dir, dependency.src) - from_machine = dependency.job.primary_machine - - if from_machine == self.job.primary_machine and dependency.read_only: - # No need to make a copy, just symlink it - self._RunRemotely( - cmd.MakeSymlink(from_folder, to_folder), - 'Failed to create symlink to required directory.') - else: - self._RunRemotely( - cmd.RemoteCopyFrom(from_machine.hostname, - from_folder, - to_folder, - username=from_machine.username), - 'Failed to copy required files.') - - def _LaunchJobCommand(self): - command = self.job.GetCommand() - - self._RunRemotely('%s; %s' % ('PS1=. TERM=linux source ~/.bashrc', - cmd.Wrapper(command, - cwd=self.job.work_dir)), - "Command failed to execute: '%s'." % command, - self.job.timeout) - - def _CopyJobResults(self): - """Copy test results back to directory.""" - self._RunLocally( - cmd.RemoteCopyFrom(self.job.primary_machine.hostname, - self.job.results_dir, - self.job.home_dir, - username=self.job.primary_machine.username), - 'Failed to copy results.') - - def run(self): - self.job.status = job.STATUS_SETUP - self.job.machines = self.machines - self._logger.debug('Executing %r on %r in directory %s.', self.job, - self.job.primary_machine.hostname, self.job.work_dir) - - try: - self.CleanUpWorkDir() - - self._PrepareRuntimeEnvironment() - - self.job.status = job.STATUS_COPYING - - self._SatisfyFolderDependencies() - - self.job.status = job.STATUS_RUNNING - - self._LaunchJobCommand() - self._CopyJobResults() - - # If we get here, the job succeeded. - self.job.status = job.STATUS_SUCCEEDED - except job.JobFailure as ex: - self._logger.error('Job failed. Exit code %s. %s', ex.exit_code, ex) - if self._terminator.IsTerminated(): - self._logger.info('%r was killed', self.job) - - self.job.status = job.STATUS_FAILED - - self._executer.CloseLog() - - for listener in self.listeners: - listener.NotifyJobComplete(self.job) diff --git a/deprecated/automation/server/job_group_manager.py b/deprecated/automation/server/job_group_manager.py deleted file mode 100644 index d66f5e07..00000000 --- a/deprecated/automation/server/job_group_manager.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. -# - -import copy -import logging -import threading - -from automation.common import command as cmd -from automation.common import logger -from automation.common.command_executer import CommandExecuter -from automation.common import job -from automation.common import job_group -from automation.server.job_manager import IdProducerPolicy - - -class JobGroupManager(object): - - def __init__(self, job_manager): - self.all_job_groups = [] - - self.job_manager = job_manager - self.job_manager.AddListener(self) - - self._lock = threading.Lock() - self._job_group_finished = threading.Condition(self._lock) - - self._id_producer = IdProducerPolicy() - self._id_producer.Initialize(job_group.JobGroup.HOMEDIR_PREFIX, - 'job-group-(?P\d+)') - - self._logger = logging.getLogger(self.__class__.__name__) - - def GetJobGroup(self, group_id): - with self._lock: - for group in self.all_job_groups: - if group.id == group_id: - return group - - return None - - def GetAllJobGroups(self): - with self._lock: - return copy.deepcopy(self.all_job_groups) - - def AddJobGroup(self, group): - with self._lock: - group.id = self._id_producer.GetNextId() - - self._logger.debug('Creating runtime environment for %r.', group) - - CommandExecuter().RunCommand(cmd.Chain( - cmd.RmTree(group.home_dir), cmd.MakeDir(group.home_dir))) - - with self._lock: - self.all_job_groups.append(group) - - for job_ in group.jobs: - self.job_manager.AddJob(job_) - - group.status = job_group.STATUS_EXECUTING - - self._logger.info('Added %r to queue.', group) - - return group.id - - def KillJobGroup(self, group): - with self._lock: - self._logger.debug('Killing all jobs that belong to %r.', group) - - for job_ in group.jobs: - self.job_manager.KillJob(job_) - - self._logger.debug('Waiting for jobs to quit.') - - # Lets block until the group is killed so we know it is completed - # when we return. - while group.status not in [job_group.STATUS_SUCCEEDED, - job_group.STATUS_FAILED]: - self._job_group_finished.wait() - - def NotifyJobComplete(self, job_): - self._logger.debug('Handling %r completion event.', job_) - - group = job_.group - - with self._lock: - # We need to perform an action only if the group hasn't already failed. - if group.status != job_group.STATUS_FAILED: - if job_.status == job.STATUS_FAILED: - # We have a failed job, abort the job group - group.status = job_group.STATUS_FAILED - if group.cleanup_on_failure: - for job_ in group.jobs: - # TODO(bjanakiraman): We should probably only kill dependent jobs - # instead of the whole job group. - self.job_manager.KillJob(job_) - self.job_manager.CleanUpJob(job_) - else: - # The job succeeded successfully -- lets check to see if we are done. - assert job_.status == job.STATUS_SUCCEEDED - finished = True - for other_job in group.jobs: - assert other_job.status != job.STATUS_FAILED - if other_job.status != job.STATUS_SUCCEEDED: - finished = False - break - - if finished and group.status != job_group.STATUS_SUCCEEDED: - # TODO(kbaclawski): Without check performed above following code - # could be called more than once. This would trigger StateMachine - # crash, because it cannot transition from STATUS_SUCCEEDED to - # STATUS_SUCCEEDED. Need to address that bug in near future. - group.status = job_group.STATUS_SUCCEEDED - if group.cleanup_on_completion: - for job_ in group.jobs: - self.job_manager.CleanUpJob(job_) - - self._job_group_finished.notifyAll() diff --git a/deprecated/automation/server/job_manager.py b/deprecated/automation/server/job_manager.py deleted file mode 100644 index 7a65b918..00000000 --- a/deprecated/automation/server/job_manager.py +++ /dev/null @@ -1,194 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. -# - -import logging -import os -import re -import threading - -from automation.common import job -from automation.common import logger -from automation.server.job_executer import JobExecuter - - -class IdProducerPolicy(object): - """Produces series of unique integer IDs. - - Example: - id_producer = IdProducerPolicy() - id_a = id_producer.GetNextId() - id_b = id_producer.GetNextId() - assert id_a != id_b - """ - - def __init__(self): - self._counter = 1 - - def Initialize(self, home_prefix, home_pattern): - """Find first available ID based on a directory listing. - - Args: - home_prefix: A directory to be traversed. - home_pattern: A regexp describing all files/directories that will be - considered. The regexp must contain exactly one match group with name - "id", which must match an integer number. - - Example: - id_producer.Initialize(JOBDIR_PREFIX, 'job-(?P\d+)') - """ - harvested_ids = [] - - if os.path.isdir(home_prefix): - for filename in os.listdir(home_prefix): - path = os.path.join(home_prefix, filename) - - if os.path.isdir(path): - match = re.match(home_pattern, filename) - - if match: - harvested_ids.append(int(match.group('id'))) - - self._counter = max(harvested_ids or [0]) + 1 - - def GetNextId(self): - """Calculates another ID considered to be unique.""" - new_id = self._counter - self._counter += 1 - return new_id - - -class JobManager(threading.Thread): - - def __init__(self, machine_manager): - threading.Thread.__init__(self, name=self.__class__.__name__) - self.all_jobs = [] - self.ready_jobs = [] - self.job_executer_mapping = {} - - self.machine_manager = machine_manager - - self._lock = threading.Lock() - self._jobs_available = threading.Condition(self._lock) - self._exit_request = False - - self.listeners = [] - self.listeners.append(self) - - self._id_producer = IdProducerPolicy() - self._id_producer.Initialize(job.Job.WORKDIR_PREFIX, 'job-(?P\d+)') - - self._logger = logging.getLogger(self.__class__.__name__) - - def StartJobManager(self): - self._logger.info('Starting...') - - with self._lock: - self.start() - self._jobs_available.notifyAll() - - def StopJobManager(self): - self._logger.info('Shutdown request received.') - - with self._lock: - for job_ in self.all_jobs: - self._KillJob(job_.id) - - # Signal to die - self._exit_request = True - self._jobs_available.notifyAll() - - # Wait for all job threads to finish - for executer in self.job_executer_mapping.values(): - executer.join() - - def KillJob(self, job_id): - """Kill a job by id. - - Does not block until the job is completed. - """ - with self._lock: - self._KillJob(job_id) - - def GetJob(self, job_id): - for job_ in self.all_jobs: - if job_.id == job_id: - return job_ - return None - - def _KillJob(self, job_id): - self._logger.info('Killing [Job: %d].', job_id) - - if job_id in self.job_executer_mapping: - self.job_executer_mapping[job_id].Kill() - for job_ in self.ready_jobs: - if job_.id == job_id: - self.ready_jobs.remove(job_) - break - - def AddJob(self, job_): - with self._lock: - job_.id = self._id_producer.GetNextId() - - self.all_jobs.append(job_) - # Only queue a job as ready if it has no dependencies - if job_.is_ready: - self.ready_jobs.append(job_) - - self._jobs_available.notifyAll() - - return job_.id - - def CleanUpJob(self, job_): - with self._lock: - if job_.id in self.job_executer_mapping: - self.job_executer_mapping[job_.id].CleanUpWorkDir() - del self.job_executer_mapping[job_.id] - # TODO(raymes): remove job from self.all_jobs - - def NotifyJobComplete(self, job_): - self.machine_manager.ReturnMachines(job_.machines) - - with self._lock: - self._logger.debug('Handling %r completion event.', job_) - - if job_.status == job.STATUS_SUCCEEDED: - for succ in job_.successors: - if succ.is_ready: - if succ not in self.ready_jobs: - self.ready_jobs.append(succ) - - self._jobs_available.notifyAll() - - def AddListener(self, listener): - self.listeners.append(listener) - - @logger.HandleUncaughtExceptions - def run(self): - self._logger.info('Started.') - - while not self._exit_request: - with self._lock: - # Get the next ready job, block if there are none - self._jobs_available.wait() - - while self.ready_jobs: - ready_job = self.ready_jobs.pop() - - required_machines = ready_job.machine_dependencies - for pred in ready_job.predecessors: - required_machines[0].AddPreferredMachine( - pred.primary_machine.hostname) - - machines = self.machine_manager.GetMachines(required_machines) - if not machines: - # If we can't get the necessary machines right now, simply wait - # for some jobs to complete - self.ready_jobs.insert(0, ready_job) - break - else: - # Mark as executing - executer = JobExecuter(ready_job, machines, self.listeners) - executer.start() - self.job_executer_mapping[ready_job.id] = executer - - self._logger.info('Stopped.') diff --git a/deprecated/automation/server/machine_manager.py b/deprecated/automation/server/machine_manager.py deleted file mode 100644 index b7186077..00000000 --- a/deprecated/automation/server/machine_manager.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -from operator import attrgetter -import copy -import csv -import threading -import os.path - -from automation.common import machine - -DEFAULT_MACHINES_FILE = os.path.join(os.path.dirname(__file__), 'test_pool.csv') - - -class MachineManager(object): - """Container for list of machines one can run jobs on.""" - - @classmethod - def FromMachineListFile(cls, filename): - # Read the file and skip header - csv_file = csv.reader(open(filename, 'rb'), delimiter=',', quotechar='"') - csv_file.next() - - return cls([machine.Machine(hostname, label, cpu, int(cores), os, user) - for hostname, label, cpu, cores, os, user in csv_file]) - - def __init__(self, machines): - self._machine_pool = machines - self._lock = threading.RLock() - - def _GetMachine(self, mach_spec): - available_pool = [m for m in self._machine_pool if mach_spec.IsMatch(m)] - - if available_pool: - # find a machine with minimum uses - uses = attrgetter('uses') - - mach = min(available_pool, key=uses) - - if mach_spec.preferred_machines: - preferred_pool = [m - for m in available_pool - if m.hostname in mach_spec.preferred_machines] - if preferred_pool: - mach = min(preferred_pool, key=uses) - - mach.Acquire(mach_spec.lock_required) - - return mach - - def GetMachines(self, required_machines): - """Acquire machines for use by a job.""" - - with self._lock: - acquired_machines = [self._GetMachine(ms) for ms in required_machines] - - if not all(acquired_machines): - # Roll back acquires - while acquired_machines: - mach = acquired_machines.pop() - if mach: - mach.Release() - - return acquired_machines - - def GetMachineList(self): - with self._lock: - return copy.deepcopy(self._machine_pool) - - def ReturnMachines(self, machines): - with self._lock: - for m in machines: - m.Release() - - def __str__(self): - return str(self._machine_pool) diff --git a/deprecated/automation/server/machine_manager_test.py b/deprecated/automation/server/machine_manager_test.py deleted file mode 100755 index 2fa5bb4b..00000000 --- a/deprecated/automation/server/machine_manager_test.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import unittest -from automation.common import machine -from automation.server import machine_manager - - -class MachineManagerTest(unittest.TestCase): - - def setUp(self): - self.machine_manager = machine_manager.MachineManager() - - def testPrint(self): - print self.machine_manager - - def testGetLinuxBox(self): - mach_spec_list = [machine.MachineSpecification(os='linux')] - machines = self.machine_manager.GetMachines(mach_spec_list) - self.assertTrue(machines) - - def testGetChromeOSBox(self): - mach_spec_list = [machine.MachineSpecification(os='chromeos')] - machines = self.machine_manager.GetMachines(mach_spec_list) - self.assertTrue(machines) - - -if __name__ == '__main__': - unittest.main() diff --git a/deprecated/automation/server/monitor/__init__.py b/deprecated/automation/server/monitor/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/automation/server/monitor/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/automation/server/monitor/dashboard.py b/deprecated/automation/server/monitor/dashboard.py deleted file mode 100644 index f6befed8..00000000 --- a/deprecated/automation/server/monitor/dashboard.py +++ /dev/null @@ -1,259 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -from collections import namedtuple -import glob -import gzip -import os.path -import pickle -import time -import xmlrpclib - -from django import forms -from django.http import HttpResponseRedirect -from django.shortcuts import render_to_response -from django.template import Context -from django.views import static - -Link = namedtuple('Link', 'href name') - - -def GetServerConnection(): - return xmlrpclib.Server('http://localhost:8000') - - -def MakeDefaultContext(*args): - context = Context({'links': [ - Link('/job-group', 'Job Groups'), Link('/machine', 'Machines') - ]}) - - for arg in args: - context.update(arg) - - return context - - -class JobInfo(object): - - def __init__(self, job_id): - self._job = pickle.loads(GetServerConnection().GetJob(job_id)) - - def GetAttributes(self): - job = self._job - - group = [Link('/job-group/%d' % job.group.id, job.group.label)] - - predecessors = [Link('/job/%d' % pred.id, pred.label) - for pred in job.predecessors] - - successors = [Link('/job/%d' % succ.id, succ.label) - for succ in job.successors] - - machines = [Link('/machine/%s' % mach.hostname, mach.hostname) - for mach in job.machines] - - logs = [Link('/job/%d/log' % job.id, 'Log')] - - commands = enumerate(job.PrettyFormatCommand().split('\n'), start=1) - - return {'text': [('Label', job.label), ('Directory', job.work_dir)], - 'link': [('Group', group), ('Predecessors', predecessors), - ('Successors', successors), ('Machines', machines), - ('Logs', logs)], - 'code': [('Command', commands)]} - - def GetTimeline(self): - return [{'started': evlog.GetTimeStartedFormatted(), - 'state_from': evlog.event.from_, - 'state_to': evlog.event.to_, - 'elapsed': evlog.GetTimeElapsedRounded()} - for evlog in self._job.timeline.GetTransitionEventHistory()] - - def GetLog(self): - log_path = os.path.join(self._job.logs_dir, - '%s.gz' % self._job.log_filename_prefix) - - try: - log = gzip.open(log_path, 'r') - except IOError: - content = [] - else: - # There's a good chance that file is not closed yet, so EOF handling - # function and CRC calculation will fail, thus we need to monkey patch the - # _read_eof method. - log._read_eof = lambda: None - - def SplitLine(line): - prefix, msg = line.split(': ', 1) - datetime, stream = prefix.rsplit(' ', 1) - - return datetime, stream, msg - - content = map(SplitLine, log.readlines()) - finally: - log.close() - - return content - - -class JobGroupInfo(object): - - def __init__(self, job_group_id): - self._job_group = pickle.loads(GetServerConnection().GetJobGroup( - job_group_id)) - - def GetAttributes(self): - group = self._job_group - - home_dir = [Link('/job-group/%d/files/' % group.id, group.home_dir)] - - return {'text': [('Label', group.label), - ('Time submitted', time.ctime(group.time_submitted)), - ('State', group.status), - ('Cleanup on completion', group.cleanup_on_completion), - ('Cleanup on failure', group.cleanup_on_failure)], - 'link': [('Directory', home_dir)]} - - def _GetJobStatus(self, job): - status_map = {'SUCCEEDED': 'success', 'FAILED': 'failure'} - return status_map.get(str(job.status), None) - - def GetJobList(self): - return [{'id': job.id, - 'label': job.label, - 'state': job.status, - 'status': self._GetJobStatus(job), - 'elapsed': job.timeline.GetTotalTime()} - for job in self._job_group.jobs] - - def GetHomeDirectory(self): - return self._job_group.home_dir - - def GetReportList(self): - job_dir_pattern = os.path.join(self._job_group.home_dir, 'job-*') - - filenames = [] - - for job_dir in glob.glob(job_dir_pattern): - filename = os.path.join(job_dir, 'report.html') - - if os.access(filename, os.F_OK): - filenames.append(filename) - - reports = [] - - for filename in sorted(filenames, key=lambda f: os.stat(f).st_ctime): - try: - with open(filename, 'r') as report: - reports.append(report.read()) - except IOError: - pass - - return reports - - -class JobGroupListInfo(object): - - def __init__(self): - self._all_job_groups = pickle.loads(GetServerConnection().GetAllJobGroups()) - - def _GetJobGroupState(self, group): - return str(group.status) - - def _GetJobGroupStatus(self, group): - status_map = {'SUCCEEDED': 'success', 'FAILED': 'failure'} - return status_map.get(self._GetJobGroupState(group), None) - - def GetList(self): - return [{'id': group.id, - 'label': group.label, - 'submitted': time.ctime(group.time_submitted), - 'state': self._GetJobGroupState(group), - 'status': self._GetJobGroupStatus(group)} - for group in self._all_job_groups] - - def GetLabelList(self): - return sorted(set(group.label for group in self._all_job_groups)) - - -def JobPageHandler(request, job_id): - job = JobInfo(int(job_id)) - - ctx = MakeDefaultContext({ - 'job_id': job_id, - 'attributes': job.GetAttributes(), - 'timeline': job.GetTimeline() - }) - - return render_to_response('job.html', ctx) - - -def LogPageHandler(request, job_id): - job = JobInfo(int(job_id)) - - ctx = MakeDefaultContext({'job_id': job_id, 'log_lines': job.GetLog()}) - - return render_to_response('job_log.html', ctx) - - -def JobGroupPageHandler(request, job_group_id): - group = JobGroupInfo(int(job_group_id)) - - ctx = MakeDefaultContext({ - 'group_id': job_group_id, - 'attributes': group.GetAttributes(), - 'job_list': group.GetJobList(), - 'reports': group.GetReportList() - }) - - return render_to_response('job_group.html', ctx) - - -def JobGroupFilesPageHandler(request, job_group_id, path): - group = JobGroupInfo(int(job_group_id)) - - return static.serve(request, - path, - document_root=group.GetHomeDirectory(), - show_indexes=True) - - -class FilterJobGroupsForm(forms.Form): - label = forms.ChoiceField(label='Filter by label:', required=False) - - -def JobGroupListPageHandler(request): - groups = JobGroupListInfo() - group_list = groups.GetList() - - field = FilterJobGroupsForm.base_fields['label'] - field.choices = [('*', '--- no filtering ---')] - field.choices.extend([(label, label) for label in groups.GetLabelList()]) - - if request.method == 'POST': - form = FilterJobGroupsForm(request.POST) - - if form.is_valid(): - label = form.cleaned_data['label'] - - if label != '*': - group_list = [group for group in group_list if group['label'] == label] - else: - form = FilterJobGroupsForm({'initial': '*'}) - - ctx = MakeDefaultContext({'filter': form, 'groups': group_list}) - - return render_to_response('job_group_list.html', ctx) - - -def MachineListPageHandler(request): - machine_list = pickle.loads(GetServerConnection().GetMachineList()) - - return render_to_response('machine_list.html', - MakeDefaultContext({'machines': machine_list})) - - -def DefaultPageHandler(request): - return HttpResponseRedirect('/job-group') diff --git a/deprecated/automation/server/monitor/manage.py b/deprecated/automation/server/monitor/manage.py deleted file mode 100755 index 59f6e216..00000000 --- a/deprecated/automation/server/monitor/manage.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -from django.core.management import execute_manager - -try: - import settings # Assumed to be in the same directory. -except ImportError: - import sys - - sys.stderr.write('Error: Can\'t find settings.py file in the directory ' - 'containing %r.' % __file__) - sys.exit(1) - -if __name__ == '__main__': - execute_manager(settings) diff --git a/deprecated/automation/server/monitor/settings.py b/deprecated/automation/server/monitor/settings.py deleted file mode 100644 index 8cd20e35..00000000 --- a/deprecated/automation/server/monitor/settings.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# -# Django settings for monitor project. -# -# For explanation look here: http://docs.djangoproject.com/en/dev/ref/settings -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import os.path -import sys - -# Path to the root of application. It's a custom setting, not related to Django. -ROOT_PATH = os.path.dirname(os.path.realpath(sys.argv[0])) - -# Print useful information during runtime if possible. -DEBUG = True -TEMPLATE_DEBUG = DEBUG - -# Sqlite3 database configuration, though we don't use it right now. -DATABASE_ENGINE = 'sqlite3' -DATABASE_NAME = os.path.join(ROOT_PATH, 'monitor.db') - -# Local time zone for this installation. -TIME_ZONE = 'America/Los_Angeles' - -# Language code for this installation. -LANGUAGE_CODE = 'en-us' - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# Absolute path to the directory that holds media. -MEDIA_ROOT = os.path.join(ROOT_PATH, 'static') + '/' - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash if there is a path component (optional in other cases). -MEDIA_URL = '/static/' - -# Used to provide a seed in secret-key hashing algorithms. Make this unique, -# and don't share it with anybody. -SECRET_KEY = '13p5p_4q91*8@yo+tvvt#2k&6#d_&e_zvxdpdil53k419i5sop' - -# A string representing the full Python import path to your root URLconf. -ROOT_URLCONF = 'monitor.urls' - -# List of locations of the template source files, in search order. -TEMPLATE_DIRS = (os.path.join(ROOT_PATH, 'templates'),) diff --git a/deprecated/automation/server/monitor/start.sh b/deprecated/automation/server/monitor/start.sh deleted file mode 100755 index 4fc53bef..00000000 --- a/deprecated/automation/server/monitor/start.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -./manage.py runserver "$HOSTNAME":8080 diff --git a/deprecated/automation/server/monitor/static/style.css b/deprecated/automation/server/monitor/static/style.css deleted file mode 100644 index b571b059..00000000 --- a/deprecated/automation/server/monitor/static/style.css +++ /dev/null @@ -1,101 +0,0 @@ -* { font-family: sans-serif; } - -.left { text-align: left; } -.right { text-align: right; } - -.code { font-family: monospace; text-align: left; } -.line1 { background-color: Gainsboro; } -.line2 { background-color: WhiteSmoke; } - -.title { margin-bottom: 0.25em; } - -.success { background-color: LightGreen; } -.failure { background-color: LightPink; } - -pre.code { margin: 0px; } - -div.header p.title { - border: 1px solid black; - font-size: 32px; - font-style: bold; - background-color: LightBlue; - text-align: center; - margin: 0px; - padding: 10px; - font-weight: bold; -} - -div.links { - background-color: Azure; - margin-top: 2px; - padding: 8px 4px 8px 4px; - border: solid 1px; -} - -div.content { - margin-top: 2px; - padding: 8px; - border: solid 1px; -} - -div.content p.title { - font-size: 28px; - text-align: left; - margin: 0px; - margin-bottom: 8px; - padding: 12px; - font-weight: bold; -} - -table { border-collapse: collapse; } -td, th { text-align: center; } - -table.list td, th { padding: 3px 8px 2px 8px; border:1px solid black; } -table.list td { font-family: monospace; } -table.list th { background-color: LightGray; } - -table.attributes td { text-align: left; } -table.attributes > tbody > tr > td:first-child { font-family: sans-serif; } - -table.raw { border-style: none; } -table.raw td { - padding: 0em 0.5em 0em 0.5em; - border-style: none; - vertical-align: top; - text-align: right; - font-family: monospace; -} -table.raw > tbody > tr > td:first-child { border-left: 0px; } -table.raw > tbody > tr > td { border-left: 1px solid; } - -a.button { - background-color: PeachPuff; - text-decoration: underline; - text-align: center; - color: Black; - padding: 4px; - border: solid 1px; -} - -a.small { - padding: 2px 4px 2px 4px; - font-size: small; - border-color: Gray; - background-color: PapayaWhip; -} - -a.button:hover { background-color: LightYellow; } -a.button:active { background-color: Yellow; } - -a.column { - border-style: none; - display: block; - margin: -3px -8px -2px -8px; -} - -div.warning { - background-color: MistyRose; - border: 1px solid Crimson; - padding: 0.5em; - font-size: x-large; -} diff --git a/deprecated/automation/server/monitor/templates/base.html b/deprecated/automation/server/monitor/templates/base.html deleted file mode 100644 index 95ffc222..00000000 --- a/deprecated/automation/server/monitor/templates/base.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {% block title %}Automation Dashboard{% endblock %} - - - -
- {% block header %} -

Automation Dashboard

- {% endblock %} -
- - - -
- {% block content %} - {% endblock %} -
- - diff --git a/deprecated/automation/server/monitor/templates/job.html b/deprecated/automation/server/monitor/templates/job.html deleted file mode 100644 index 90acd969..00000000 --- a/deprecated/automation/server/monitor/templates/job.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -

Job {{ job_id }}

- -

General information

-{% include "snippet_attribute_table.html" %} - -

Timeline of status events

- - - - - - - - - {% for entry in timeline %} - - - - - - - {% endfor %} - -
StartedFrom StateTo StateElapsed
{{ entry.started }}{{ entry.state_from }}{{ entry.state_to }}{{ entry.elapsed }}
- -{% endblock %} diff --git a/deprecated/automation/server/monitor/templates/job_group.html b/deprecated/automation/server/monitor/templates/job_group.html deleted file mode 100644 index b6ed8ea8..00000000 --- a/deprecated/automation/server/monitor/templates/job_group.html +++ /dev/null @@ -1,46 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -

Job Group {{ group_id }}

- -

General information

-{% include "snippet_attribute_table.html" %} - -

Job Listing

- - - - - - - - - {% for job in job_list %} - - - - - {% if job.status %} - - {% else %} - - {% endif %} - - {% endfor %} - -
Job IDLabelTurnaround TimeState
- {{ job.id }} - {{ job.label }}{{ job.elapsed }}{{ job.state }}{{ job.state }}
- -

Report

-{% if reports %} -{% autoescape off %} -{% for report in reports %} -{{ report }} -{% endfor %} -{% endautoescape %} -{% else %} -
No reports found!
-{% endif %} - -{% endblock %} diff --git a/deprecated/automation/server/monitor/templates/job_group_list.html b/deprecated/automation/server/monitor/templates/job_group_list.html deleted file mode 100644 index b82fa730..00000000 --- a/deprecated/automation/server/monitor/templates/job_group_list.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -

Job Groups

- -
-{{ filter.as_p }} -

-
- - - - - - - - - - {% for group in groups %} - - - - - {% if group.status %} - - {% else %} - - {% endif %} - - {% endfor %} - -
Group IDLabelTime SubmittedStatus
- {{ group.id }} - {{ group.label }}{{ group.submitted }}{{ group.state }}{{ group.state }}
-{% endblock %} diff --git a/deprecated/automation/server/monitor/templates/job_log.html b/deprecated/automation/server/monitor/templates/job_log.html deleted file mode 100644 index 937b21b0..00000000 --- a/deprecated/automation/server/monitor/templates/job_log.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -

Job {{ job_id }}

- -

Command output:

- - - -{% for datetime, stream, line in log_lines %} - - - - - -{% endfor %} - -
{{ datetime }}{{ stream }}
{{ line|wordwrap:80 }}
- -{% endblock %} diff --git a/deprecated/automation/server/monitor/templates/machine_list.html b/deprecated/automation/server/monitor/templates/machine_list.html deleted file mode 100644 index f81422d3..00000000 --- a/deprecated/automation/server/monitor/templates/machine_list.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -

Machines

- - - - - - - - - - - - -{% for machine in machines %} - - - - - - - - {% if machine.locked %} - - {% else %} - - {% endif %} - -{% endfor %} - -
HostnameLabelCPUCoresOperating SystemJobs RunningLocked
- - {{ machine.hostname }} - - {{ machine.label }}{{ machine.cpu }}{{ machine.cores }}{{ machine.os }}{{ machine.uses }}YesNo
- -{% endblock %} diff --git a/deprecated/automation/server/monitor/templates/snippet_attribute_table.html b/deprecated/automation/server/monitor/templates/snippet_attribute_table.html deleted file mode 100644 index 24bacc17..00000000 --- a/deprecated/automation/server/monitor/templates/snippet_attribute_table.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - {% for name, value in attributes.text %} - - - - - {% endfor %} - - {% for name, links in attributes.link %} - - - - - {% endfor %} - - {% for name, code in attributes.code %} - - - - - {% endfor %} - -
AttributeValue
{{ name }}{{ value }}
{{ name }} - {% if links %} - {% for link in links %} - {{ link.name }} - {% endfor %} - {% else %} - None - {% endif %} -
{{ name }}{% include "snippet_code.html" %}
diff --git a/deprecated/automation/server/monitor/templates/snippet_code.html b/deprecated/automation/server/monitor/templates/snippet_code.html deleted file mode 100644 index 281754d6..00000000 --- a/deprecated/automation/server/monitor/templates/snippet_code.html +++ /dev/null @@ -1,10 +0,0 @@ - - -{% for num, line in code %} - - - - -{% endfor %} - -
{{ num }}
{{ line|wordwrap:120 }}
diff --git a/deprecated/automation/server/monitor/templates/snippet_links.html b/deprecated/automation/server/monitor/templates/snippet_links.html deleted file mode 100644 index f19fa6e5..00000000 --- a/deprecated/automation/server/monitor/templates/snippet_links.html +++ /dev/null @@ -1,7 +0,0 @@ -{% if param %} -{% for link in param %} -{{ link.name }} -{% endfor %} -{% else %} -None -{% endif %} diff --git a/deprecated/automation/server/monitor/urls.py b/deprecated/automation/server/monitor/urls.py deleted file mode 100644 index 1a6b2485..00000000 --- a/deprecated/automation/server/monitor/urls.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -from django.conf import settings -from django.conf.urls.defaults import patterns - -urlpatterns = patterns( - 'dashboard', (r'^job-group$', 'JobGroupListPageHandler'), - (r'^machine$', 'MachineListPageHandler'), - (r'^job/(?P\d+)/log$', 'LogPageHandler'), - (r'^job/(?P\d+)$', 'JobPageHandler'), ( - r'^job-group/(?P\d+)/files/(?P.*)$', - 'JobGroupFilesPageHandler'), - (r'^job-group/(?P\d+)$', 'JobGroupPageHandler'), - (r'^$', 'DefaultPageHandler')) - -urlpatterns += patterns('', - (r'^static/(?P.*)$', 'django.views.static.serve', - {'document_root': settings.MEDIA_ROOT})) diff --git a/deprecated/automation/server/server.py b/deprecated/automation/server/server.py deleted file mode 100755 index c8f22521..00000000 --- a/deprecated/automation/server/server.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -import logging -import optparse -import pickle -import signal -from SimpleXMLRPCServer import SimpleXMLRPCServer -import sys - -from automation.common import logger -from automation.common.command_executer import CommandExecuter -from automation.server import machine_manager -from automation.server.job_group_manager import JobGroupManager -from automation.server.job_manager import JobManager - - -class Server(object): - """Plays a role of external interface accessible over XMLRPC.""" - - def __init__(self, machines_file=None, dry_run=False): - """Default constructor. - - Args: - machines_file: Path to file storing a list of machines. - dry_run: If True, the server only simulates command execution. - """ - CommandExecuter.Configure(dry_run) - - self.job_manager = JobManager( - machine_manager.MachineManager.FromMachineListFile( - machines_file or machine_manager.DEFAULT_MACHINES_FILE)) - - self.job_group_manager = JobGroupManager(self.job_manager) - - self._logger = logging.getLogger(self.__class__.__name__) - - def ExecuteJobGroup(self, job_group, dry_run=False): - job_group = pickle.loads(job_group) - self._logger.info('Received ExecuteJobGroup(%r, dry_run=%s) request.', - job_group, dry_run) - - for job in job_group.jobs: - job.dry_run = dry_run - return self.job_group_manager.AddJobGroup(job_group) - - def GetAllJobGroups(self): - self._logger.info('Received GetAllJobGroups() request.') - return pickle.dumps(self.job_group_manager.GetAllJobGroups()) - - def KillJobGroup(self, job_group_id): - self._logger.info('Received KillJobGroup(%d) request.', job_group_id) - self.job_group_manager.KillJobGroup(pickle.loads(job_group_id)) - - def GetJobGroup(self, job_group_id): - self._logger.info('Received GetJobGroup(%d) request.', job_group_id) - - return pickle.dumps(self.job_group_manager.GetJobGroup(job_group_id)) - - def GetJob(self, job_id): - self._logger.info('Received GetJob(%d) request.', job_id) - - return pickle.dumps(self.job_manager.GetJob(job_id)) - - def GetMachineList(self): - self._logger.info('Received GetMachineList() request.') - - return pickle.dumps(self.job_manager.machine_manager.GetMachineList()) - - def StartServer(self): - self.job_manager.StartJobManager() - - def StopServer(self): - self.job_manager.StopJobManager() - self.job_manager.join() - - -def GetServerOptions(): - """Get server's settings from command line options.""" - parser = optparse.OptionParser() - parser.add_option('-m', - '--machines-file', - dest='machines_file', - help='The location of the file ' - 'containing the machines database', - default=machine_manager.DEFAULT_MACHINES_FILE) - parser.add_option('-n', - '--dry-run', - dest='dry_run', - help='Start the server in dry-run mode, where jobs will ' - 'not actually be executed.', - action='store_true', - default=False) - return parser.parse_args()[0] - - -def Main(): - logger.SetUpRootLogger(filename='server.log', level=logging.DEBUG) - - options = GetServerOptions() - server = Server(options.machines_file, options.dry_run) - server.StartServer() - - def _HandleKeyboardInterrupt(*_): - server.StopServer() - sys.exit(1) - - signal.signal(signal.SIGINT, _HandleKeyboardInterrupt) - - try: - xmlserver = SimpleXMLRPCServer( - ('localhost', 8000), - allow_none=True, - logRequests=False) - xmlserver.register_instance(server) - xmlserver.serve_forever() - except Exception as ex: - logging.error(ex) - server.StopServer() - sys.exit(1) - - -if __name__ == '__main__': - Main() diff --git a/deprecated/automation/server/server_test.py b/deprecated/automation/server/server_test.py deleted file mode 100755 index 131ebb3b..00000000 --- a/deprecated/automation/server/server_test.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Machine manager unittest. - -MachineManagerTest tests MachineManager. -""" - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import server -import unittest - - -class ServerTest(unittest.TestCase): - - def setUp(self): - pass - - def testGetAllJobs(self): - s = server.Server() - print s.GetAllJobs() - - -if __name__ == '__main__': - unittest.main() diff --git a/deprecated/automation/server/test_pool.csv b/deprecated/automation/server/test_pool.csv deleted file mode 100644 index b0700c9b..00000000 --- a/deprecated/automation/server/test_pool.csv +++ /dev/null @@ -1,4 +0,0 @@ -hostname,label,cpu,cores,os,username -"chrotomation.mtv.corp.google.com","pc-workstation","core2duo",8,"linux","mobiletc-prebuild" -"chromeos-test1.mtv.corp.google.com","cr48","atom",1,"chromeos","chromeos" -"chromeos-test2.mtv.corp.google.com","cr48","atom",1,"chromeos","chromeos" diff --git a/deprecated/build-binutils/opts.sh b/deprecated/build-binutils/opts.sh deleted file mode 100644 index e69de29b..00000000 diff --git a/deprecated/build-gcc/opts.sh b/deprecated/build-gcc/opts.sh deleted file mode 100644 index d1e6fadb..00000000 --- a/deprecated/build-gcc/opts.sh +++ /dev/null @@ -1,40 +0,0 @@ -get_gcc_configure_options() -{ - local CTARGET=$1; shift - local confgcc=$(get_gcc_common_options) - case ${CTARGET} in - arm*) #264534 - local arm_arch="${CTARGET%%-*}" - # Only do this if arm_arch is armv* - if [[ ${arm_arch} == armv* ]] ; then - # Convert armv7{a,r,m} to armv7-{a,r,m} - [[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-} - # Remove endian ('l' / 'eb') - [[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l} - [[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb} - confgcc="${confgcc} --with-arch=${arm_arch}" - confgcc="${confgcc} --disable-esp" - fi - ;; - i?86*) - # Hardened is enabled for x86, but disabled for ARM. - confgcc="${confgcc} --with-arch=atom" - confgcc="${confgcc} --enable-esp" - ;; - esac - echo ${confgcc} -} - -get_gcc_common_options() -{ - local confgcc - # TODO(asharif): Build without these options. - confgcc="${confgcc} --disable-libmudflap" - confgcc="${confgcc} --disable-libssp" - confgcc="${confgcc} --disable-libgomp" - confgcc="${confgcc} --enable-__cxa_atexit" - confgcc="${confgcc} --enable-checking=release" - confgcc="${confgcc} --disable-libquadmath" - echo ${confgcc} -} - diff --git a/deprecated/build_benchmarks.py b/deprecated/build_benchmarks.py deleted file mode 100755 index c10c74d1..00000000 --- a/deprecated/build_benchmarks.py +++ /dev/null @@ -1,306 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to build ChromeOS benchmarks - -Inputs: - chromeos_root - toolchain_root - board - [chromeos/cpu/ | - chromeos/browser/[pagecycler|sunspider] | - chromeos/startup] - - This script assumes toolchain has already been built in toolchain_root. - - chromeos/cpu/ - - Execute bench.py script within chroot to build benchmark - - Copy build results to perflab-bin - - chromeos/startup - - Call build_chromeos to build image. - - Copy image to perflab-bin - - chromeos/browser/* - - Call build_chromebrowser to build image with new browser - - Copy image to perflab-bin - -""" - -from __future__ import print_function - -__author__ = 'bjanakiraman@google.com (Bhaskar Janakiraman)' - -import argparse -import os -import sys -import re - -import build_chromeos -from cros_utils import command_executer -from cros_utils import logger - -KNOWN_BENCHMARKS = [ - 'chromeos/startup', 'chromeos/browser/pagecycler', - 'chromeos/browser/sunspider', 'chromeos/browser/v8bench', - 'chromeos/cpu/bikjmp' -] - -# Commands to build CPU benchmarks. - -CPU_BUILDCMD_CLEAN = ('cd /usr/local/toolchain_root/third_party/android_bench/' - 'v2_0/CLOSED_SOURCE/%s; python ../../scripts/bench.py ' - '--toolchain=/usr/bin --action=clean;') - -CPU_BUILDCMD_BUILD = ('cd /usr/local/toolchain_root/third_party/android_bench/' - 'v2_0/CLOSED_SOURCE/%s; python ../../scripts/bench.py ' - '--toolchain=/usr/bin --add_cflags=%s --add_ldflags=%s ' - '--makeopts=%s --action=build') - -# Common initializations -cmd_executer = command_executer.GetCommandExecuter() - - -def Usage(parser, message): - print('ERROR: %s' % message) - parser.print_help() - sys.exit(0) - - -def CreateRunsh(destdir, benchmark): - """Create run.sh script to run benchmark. - - Perflab needs a run.sh that runs the benchmark. - """ - run_cmd = os.path.dirname(os.path.abspath(__file__)) + '/run_benchmarks.py' - contents = '#!/bin/sh\n%s $@ %s\n' % (run_cmd, benchmark) - runshfile = destdir + '/run.sh' - f = open(runshfile, 'w') - f.write(contents) - f.close() - retval = cmd_executer.RunCommand('chmod +x %s' % runshfile) - return retval - - -def CreateBinaryCopy(sourcedir, destdir, copy=None): - """Create links in perflab-bin/destdir/* to sourcedir/*, instead of copies - - Args: - sourcedir: directory from which to copy. - destdir: directory to which to copy. - copy: when none, make soft links to everything under sourcedir, otherwise - copy all to destdir. - TODO: remove this parameter if it's determined that CopyFiles can use - rsync -L. - """ - retval = 0 - # check if sourcedir exists - if not os.path.exists(sourcedir): - logger.GetLogger().LogError('benchmark results %s does not exist.' % - sourcedir) - return 1 - - # Deal with old copies - save off old ones for now. - # Note - if its a link, it doesn't save anything. - if os.path.exists(destdir): - command = 'rm -rf %s.old' % destdir - retval = cmd_executer.RunCommand(command) - if retval != 0: - return retval - command = 'mv %s %s.old' % (destdir, destdir) - retval = cmd_executer.RunCommand(command) - if retval != 0: - return retval - os.makedirs(destdir) - sourcedir = os.path.abspath(sourcedir) - if copy is None: - command = 'ln -s %s/* %s' % (sourcedir, destdir) - else: - command = 'cp -fr %s/* %s' % (sourcedir, destdir) - retval = cmd_executer.RunCommand(command) - return retval - - -def Main(argv): - """Build ChromeOS.""" - # Common initializations - - parser = argparse.ArgumentParser() - parser.add_argument('-c', - '--chromeos_root', - dest='chromeos_root', - help='Target directory for ChromeOS installation.') - parser.add_argument('-t', - '--toolchain_root', - dest='toolchain_root', - help='This is obsolete. Do not use.') - parser.add_argument('-r', - '--third_party', - dest='third_party', - help='The third_party dir containing android ' - 'benchmarks.') - parser.add_argument('-C', - '--clean', - dest='clean', - action='store_true', - default=False, - help='Clean up build.') - parser.add_argument('-B', - '--build', - dest='build', - action='store_true', - default=False, - help='Build benchmark.') - parser.add_argument('-O', - '--only_copy', - dest='only_copy', - action='store_true', - default=False, - help='Only copy to perflab-bin - no builds.') - parser.add_argument('--workdir', - dest='workdir', - default='.', - help='Work directory for perflab outputs.') - parser.add_argument('--clobber_chroot', - dest='clobber_chroot', - action='store_true', - help='Delete the chroot and start fresh', - default=False) - parser.add_argument('--clobber_board', - dest='clobber_board', - action='store_true', - help='Delete the board and start fresh', - default=False) - parser.add_argument('--cflags', - dest='cflags', - default='', - help='CFLAGS for the ChromeOS packages') - parser.add_argument('--cxxflags', - dest='cxxflags', - default='', - help='CXXFLAGS for the ChromeOS packages') - parser.add_argument('--ldflags', - dest='ldflags', - default='', - help='LDFLAGS for the ChromeOS packages') - parser.add_argument('--makeopts', - dest='makeopts', - default='', - help='Make options for the ChromeOS packages') - parser.add_argument('--board', - dest='board', - help='ChromeOS target board, e.g. x86-generic') - # Leftover positional arguments - parser.add_argument('args', nargs='+', help='benchmarks') - - options = parser.parse_args(argv[1:]) - - # validate args - for arg in options.args: - if arg not in KNOWN_BENCHMARKS: - logger.GetLogger().LogFatal('Bad benchmark %s specified' % arg) - - if options.chromeos_root is None: - Usage(parser, '--chromeos_root must be set') - - if options.board is None: - Usage(parser, '--board must be set') - - if options.toolchain_root: - logger.GetLogger().LogWarning('--toolchain_root should not be set') - - options.chromeos_root = os.path.expanduser(options.chromeos_root) - options.workdir = os.path.expanduser(options.workdir) - - retval = 0 - if options.third_party: - third_party = options.third_party - else: - third_party = '%s/../../../third_party' % os.path.dirname(__file__) - third_party = os.path.realpath(third_party) - for arg in options.args: - # CPU benchmarks - if re.match('chromeos/cpu', arg): - comps = re.split('/', arg) - benchname = comps[2] - - tec_options = [] - if third_party: - tec_options.append('--third_party=%s' % third_party) - if options.clean: - retval = cmd_executer.ChrootRunCommand(options.chromeos_root, - CPU_BUILDCMD_CLEAN % benchname, - tec_options=tec_options) - logger.GetLogger().LogErrorIf(retval, - 'clean of benchmark %s failed.' % arg) - if options.build: - retval = cmd_executer.ChrootRunCommand( - options.chromeos_root, - CPU_BUILDCMD_BUILD % (benchname, options.cflags, options.ldflags, - options.makeopts), - tec_options=tec_options) - logger.GetLogger().LogErrorIf(retval, - 'Build of benchmark %s failed.' % arg) - if retval == 0 and (options.build or options.only_copy): - benchdir = ('%s/android_bench/v2_0/CLOSED_SOURCE/%s' % - (third_party, benchname)) - linkdir = '%s/perflab-bin/%s' % (options.workdir, arg) - - # For cpu/*, we need to copy (not symlinks) of all the contents, - # because they are part of the test fixutre. - retval = CreateBinaryCopy(benchdir, linkdir, True) - if retval != 0: - return retval - retval = CreateRunsh(linkdir, arg) - if retval != 0: - return retval - elif re.match('chromeos/startup', arg): - if options.build: - # Clean for chromeos/browser and chromeos/startup is a Nop - # since builds are always from scratch. - build_args = [ - os.path.dirname(os.path.abspath(__file__)) + '/build_chromeos.py', - '--chromeos_root=' + options.chromeos_root, - '--board=' + options.board, '--cflags=' + options.cflags, - '--cxxflags=' + options.cxxflags, '--ldflags=' + options.ldflags, - '--clobber_board' - ] - retval = build_chromeos.Main(build_args) - logger.GetLogger().LogErrorIf(retval, 'Build of ChromeOS failed.') - if retval == 0 and (options.build or options.only_copy): - benchdir = '%s/src/build/images/%s/latest' % (options.chromeos_root, - options.board) - linkdir = '%s/perflab-bin/%s' % (options.workdir, arg) - retval = CreateBinaryCopy(benchdir, linkdir) - if retval != 0: - return retval - CreateRunsh(linkdir, arg) - if retval != 0: - return retval - elif re.match('chromeos/browser', arg): - if options.build: - # For now, re-build os. TBD: Change to call build_browser - build_args = [os.path.dirname(os.path.abspath(__file__)) + - '/build_chrome_browser.py', - '--chromeos_root=' + options.chromeos_root, - '--board=' + options.board, '--cflags=' + options.cflags, - '--cxxflags=' + options.cxxflags, - '--ldflags=' + options.ldflags] - retval = build_chromeos.Main(build_args) - logger.GetLogger().LogErrorIf(retval, 'Build of ChromeOS failed.') - if retval == 0 and (options.build or options.only_copy): - benchdir = '%s/src/build/images/%s/latest' % (options.chromeos_root, - options.board) - linkdir = '%s/perflab-bin/%s' % (options.workdir, arg) - retval = CreateBinaryCopy(benchdir, linkdir) - if retval != 0: - return retval - retval = CreateRunsh(linkdir, arg) - if retval != 0: - return retval - - return 0 - - -if __name__ == '__main__': - sys.exit(Main(sys.argv)) diff --git a/deprecated/build_chrome_browser.py b/deprecated/build_chrome_browser.py deleted file mode 100755 index c3b78870..00000000 --- a/deprecated/build_chrome_browser.py +++ /dev/null @@ -1,247 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to checkout the ChromeOS source. - -This script sets up the ChromeOS source in the given directory, matching a -particular release of ChromeOS. -""" - -from __future__ import print_function - -__author__ = 'raymes@google.com (Raymes Khoury)' - -import argparse -import os -import sys - -from cros_utils import command_executer -from cros_utils import logger -from cros_utils import misc - - -def Usage(parser, message): - print('ERROR: %s' % message) - parser.print_help() - sys.exit(0) - - -def Main(argv): - """Build Chrome browser.""" - - cmd_executer = command_executer.GetCommandExecuter() - - parser = argparse.ArgumentParser() - parser.add_argument( - '--chromeos_root', - dest='chromeos_root', - help='Target directory for ChromeOS installation.') - parser.add_argument('--version', dest='version') - parser.add_argument( - '--clean', - dest='clean', - default=False, - action='store_true', - help=('Clean the /var/cache/chromeos-chrome/' - 'chrome-src/src/out_$board dir')) - parser.add_argument( - '--env', dest='env', default='', help='Use the following env') - parser.add_argument( - '--ebuild_version', - dest='ebuild_version', - help='Use this ebuild instead of the default one.') - parser.add_argument( - '--cflags', - dest='cflags', - default='', - help='CFLAGS for the ChromeOS packages') - parser.add_argument( - '--cxxflags', - dest='cxxflags', - default='', - help='CXXFLAGS for the ChromeOS packages') - parser.add_argument( - '--ldflags', - dest='ldflags', - default='', - help='LDFLAGS for the ChromeOS packages') - parser.add_argument( - '--board', dest='board', help='ChromeOS target board, e.g. x86-generic') - parser.add_argument( - '--no_build_image', - dest='no_build_image', - default=False, - action='store_true', - help=('Skip build image after building browser.' - 'Defaults to False.')) - parser.add_argument( - '--label', - dest='label', - help='Optional label to apply to the ChromeOS image.') - parser.add_argument( - '--build_image_args', - default='', - dest='build_image_args', - help='Optional arguments to build_image.') - parser.add_argument( - '--cros_workon', - dest='cros_workon', - help='Build using external source tree.') - parser.add_argument( - '--dev', - dest='dev', - default=False, - action='store_true', - help=('Build a dev (eg. writable/large) image. ' - 'Defaults to False.')) - parser.add_argument( - '--debug', - dest='debug', - default=False, - action='store_true', - help=('Build chrome browser using debug mode. ' - 'This option implies --dev. Defaults to false.')) - parser.add_argument( - '--verbose', - dest='verbose', - default=False, - action='store_true', - help='Build with verbose information.') - - options = parser.parse_args(argv) - - if options.chromeos_root is None: - Usage(parser, '--chromeos_root must be set') - - if options.board is None: - Usage(parser, '--board must be set') - - if options.version is None: - logger.GetLogger().LogOutput('No Chrome version given so ' - 'using the default checked in version.') - chrome_version = '' - else: - chrome_version = 'CHROME_VERSION=%s' % options.version - - if options.dev and options.no_build_image: - logger.GetLogger().LogOutput( - "\"--dev\" is meaningless if \"--no_build_image\" is given.") - - if options.debug: - options.dev = True - - options.chromeos_root = misc.CanonicalizePath(options.chromeos_root) - - unmask_env = 'ACCEPT_KEYWORDS=~*' - if options.ebuild_version: - ebuild_version = '=%s' % options.ebuild_version - options.env = '%s %s' % (options.env, unmask_env) - else: - ebuild_version = 'chromeos-chrome' - - if options.cros_workon and not ( - os.path.isdir(options.cros_workon) and os.path.exists( - os.path.join(options.cros_workon, 'src/chromeos/BUILD.gn'))): - Usage(parser, '--cros_workon must be a valid chromium browser checkout.') - - if options.verbose: - options.env = misc.MergeEnvStringWithDict( - options.env, {'USE': 'chrome_internal verbose'}) - else: - options.env = misc.MergeEnvStringWithDict(options.env, - {'USE': 'chrome_internal'}) - if options.debug: - options.env = misc.MergeEnvStringWithDict(options.env, - {'BUILDTYPE': 'Debug'}) - - if options.clean: - misc.RemoveChromeBrowserObjectFiles(options.chromeos_root, options.board) - - chrome_origin = 'SERVER_SOURCE' - if options.cros_workon: - chrome_origin = 'LOCAL_SOURCE' - command = 'cros_workon --board={0} start chromeos-chrome'.format( - options.board) - ret = cmd_executer.ChrootRunCommandWOutput(options.chromeos_root, command) - - # cros_workon start returns non-zero if chromeos-chrome is already a - # cros_workon package. - if ret[0] and ret[2].find( - 'WARNING : Already working on chromeos-base/chromeos-chrome') == -1: - logger.GetLogger().LogFatal('cros_workon chromeos-chrome failed.') - - # Return value is non-zero means we do find the "Already working on..." - # message, keep the information, so later on we do not revert the - # cros_workon status. - cros_workon_keep = (ret[0] != 0) - - # Emerge the browser - emerge_browser_command = ('CHROME_ORIGIN={0} {1} ' - 'CFLAGS="$(portageq-{2} envvar CFLAGS) {3}" ' - 'LDFLAGS="$(portageq-{2} envvar LDFLAGS) {4}" ' - 'CXXFLAGS="$(portageq-{2} envvar CXXFLAGS) {5}" ' - '{6} emerge-{2} --buildpkg {7}').format( - chrome_origin, chrome_version, options.board, - options.cflags, options.ldflags, - options.cxxflags, options.env, ebuild_version) - - cros_sdk_options = '' - if options.cros_workon: - cros_sdk_options = '--chrome_root={0}'.format(options.cros_workon) - - ret = cmd_executer.ChrootRunCommand( - options.chromeos_root, - emerge_browser_command, - cros_sdk_options=cros_sdk_options) - - logger.GetLogger().LogFatalIf(ret, 'build_packages failed') - - if options.cros_workon and not cros_workon_keep: - command = 'cros_workon --board={0} stop chromeos-chrome'.format( - options.board) - ret = cmd_executer.ChrootRunCommand(options.chromeos_root, command) - # cros_workon failed, not a fatal one, just report it. - if ret: - print('cros_workon stop chromeos-chrome failed.') - - if options.no_build_image: - return ret - - # Finally build the image - ret = cmd_executer.ChrootRunCommand(options.chromeos_root, - '{0} {1} {2} {3}'.format( - unmask_env, options.env, - misc.GetBuildImageCommand( - options.board, dev=options.dev), - options.build_image_args)) - - logger.GetLogger().LogFatalIf(ret, 'build_image failed') - - flags_file_name = 'chrome_flags.txt' - flags_file_path = '{0}/src/build/images/{1}/latest/{2}'.format( - options.chromeos_root, options.board, flags_file_name) - flags_file = open(flags_file_path, 'wb') - flags_file.write('CFLAGS={0}\n'.format(options.cflags)) - flags_file.write('CXXFLAGS={0}\n'.format(options.cxxflags)) - flags_file.write('LDFLAGS={0}\n'.format(options.ldflags)) - flags_file.close() - - if options.label: - image_dir_path = '{0}/src/build/images/{1}/latest'.format( - options.chromeos_root, options.board) - real_image_dir_path = os.path.realpath(image_dir_path) - command = 'ln -sf -T {0} {1}/{2}'.format( - os.path.basename(real_image_dir_path),\ - os.path.dirname(real_image_dir_path),\ - options.label) - - ret = cmd_executer.RunCommand(command) - logger.GetLogger().LogFatalIf( - ret, 'Failed to apply symlink label %s' % options.label) - - return ret - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/build_tool.py b/deprecated/build_tool.py deleted file mode 100755 index 0c2fff65..00000000 --- a/deprecated/build_tool.py +++ /dev/null @@ -1,849 +0,0 @@ -#!/usr/bin/env python2 -"""Script to bootstrap the chroot using new toolchain. - -This script allows you to build/install a customized version of gcc/binutils, -either by specifying branch or a local directory. - -This script must be executed outside chroot. - -Below is some typical usage - - -## Build gcc located at /local/gcc/dir and do a bootstrap using the new -## compiler for the chromeos root. The script tries to find a valid chromeos -## tree all the way up from your current working directory. -./build_tool.py --gcc_dir=/loca/gcc/dir --bootstrap - -## Build binutils, using remote branch "mobile_toolchain_v17" and do a -## bootstrap using the new binutils for the chromeos root. The script tries to -## find a valid chromeos tree all the way up from your current working -## directory. -./build_tool.py --binutils_branch=cros/mobile_toolchain_v17 \ - --chromeos_root=/chromeos/dir --bootstrap - -## Same as above except only do it for board daisy - no bootstrapping involved. -./build_tool.py --binutils_branch=cros/mobile_toolchain_v16 \ - --chromeos_root=/chromeos/dir --board=daisy -""" - -from __future__ import print_function - -__author__ = 'shenhan@google.com (Han Shen)' - -import argparse -import os -import re -import sys - -from cros_utils import command_executer -from cros_utils import logger -from cros_utils import misc -import repo_to_repo - -REPO_PATH_PATTERN = 'src/third_party/{0}' -TEMP_BRANCH_NAME = 'internal_testing_branch_no_use' -CHROMIUMOS_OVERLAY_PATH = 'src/third_party/chromiumos-overlay' -EBUILD_PATH_PATTERN = 'src/third_party/chromiumos-overlay/sys-devel/{0}' - - -class Bootstrapper(object): - """Class that handles bootstrap process.""" - - def __init__(self, - chromeos_root, - ndk_dir, - gcc_branch=None, - gcc_dir=None, - binutils_branch=None, - binutils_dir=None, - board=None, - disable_2nd_bootstrap=False, - setup_tool_ebuild_file_only=False): - self._chromeos_root = chromeos_root - self._ndk_dir = ndk_dir - - self._gcc_branch = gcc_branch - self._gcc_branch_tree = None - self._gcc_dir = gcc_dir - self._gcc_ebuild_file = None - self._gcc_ebuild_file_name = None - - self._binutils_branch = binutils_branch - self._binutils_branch_tree = None - self._binutils_dir = binutils_dir - self._binutils_ebuild_file = None - self._binutils_ebuild_file_name = None - - self._setup_tool_ebuild_file_only = setup_tool_ebuild_file_only - - self._ce = command_executer.GetCommandExecuter() - self._logger = logger.GetLogger() - self._board = board - self._disable_2nd_bootstrap = disable_2nd_bootstrap - - def IsTreeSame(self, t1, t2): - diff = 'diff -qr -x .git -x .svn "{0}" "{1}"'.format(t1, t2) - if self._ce.RunCommand(diff, print_to_console=False) == 0: - self._logger.LogOutput('"{0}" and "{1}" are the same."'.format(t1, t2)) - return True - self._logger.LogWarning('"{0}" and "{1}" are different."'.format(t1, t2)) - return False - - def SubmitToLocalBranch(self): - """Copy source code to the chromium source tree and submit it locally.""" - if self._gcc_dir: - if not self.SubmitToolToLocalBranch( - tool_name='gcc', tool_dir=self._gcc_dir): - return False - self._gcc_branch = TEMP_BRANCH_NAME - - if self._binutils_dir: - if not self.SubmitToolToLocalBranch( - tool_name='binutils', tool_dir=self._binutils_dir): - return False - self._binutils_branch = TEMP_BRANCH_NAME - - return True - - def SubmitToolToLocalBranch(self, tool_name, tool_dir): - """Copy the source code to local chromium source tree. - - Args: - tool_name: either 'gcc' or 'binutils' - tool_dir: the tool source dir to be used - - Returns: - True if all succeeded False otherwise. - """ - - # The next few steps creates an internal branch to sync with the tool dir - # user provided. - chrome_tool_dir = self.GetChromeOsToolDir(tool_name) - - # 0. Test to see if git tree is free of local changes. - if not misc.IsGitTreeClean(chrome_tool_dir): - self._logger.LogError( - 'Git repository "{0}" not clean, aborted.'.format(chrome_tool_dir)) - return False - - # 1. Checkout/create a (new) branch for testing. - command = 'cd "{0}" && git checkout -B {1}'.format(chrome_tool_dir, - TEMP_BRANCH_NAME) - ret = self._ce.RunCommand(command) - if ret: - self._logger.LogError('Failed to create a temp branch for test, aborted.') - return False - - if self.IsTreeSame(tool_dir, chrome_tool_dir): - self._logger.LogOutput('"{0}" and "{1}" are the same, sync skipped.'. - format(tool_dir, chrome_tool_dir)) - return True - - # 2. Sync sources from user provided tool dir to chromiumos tool git. - local_tool_repo = repo_to_repo.FileRepo(tool_dir) - chrome_tool_repo = repo_to_repo.GitRepo(chrome_tool_dir, TEMP_BRANCH_NAME) - chrome_tool_repo.SetRoot(chrome_tool_dir) - # Delete all stuff except '.git' before start mapping. - self._ce.RunCommand( - 'cd {0} && find . -maxdepth 1 -not -name ".git" -not -name "." ' - r'\( -type f -exec rm {{}} \; -o ' - r' -type d -exec rm -fr {{}} \; \)'.format(chrome_tool_dir)) - local_tool_repo.MapSources(chrome_tool_repo.GetRoot()) - - # 3. Ensure after sync tree is the same. - if self.IsTreeSame(tool_dir, chrome_tool_dir): - self._logger.LogOutput('Sync successfully done.') - else: - self._logger.LogError('Sync not successful, aborted.') - return False - - # 4. Commit all changes. - # 4.1 Try to get some information about the tool dir we are using. - cmd = 'cd {0} && git log -1 --pretty=oneline'.format(tool_dir) - tool_dir_extra_info = None - ret, tool_dir_extra_info, _ = self._ce.RunCommandWOutput( - cmd, print_to_console=False) - commit_message = 'Synced with tool source tree at - "{0}".'.format(tool_dir) - if not ret: - commit_message += '\nGit log for {0}:\n{1}'.format( - tool_dir, tool_dir_extra_info.strip()) - - if chrome_tool_repo.CommitLocally(commit_message): - self._logger.LogError('Commit to local branch "{0}" failed, aborted.'. - format(TEMP_BRANCH_NAME)) - return False - return True - - def CheckoutBranch(self): - """Checkout working branch for the tools. - - Returns: - True: if operation succeeds. - """ - - if self._gcc_branch: - rv = self.CheckoutToolBranch('gcc', self._gcc_branch) - if rv: - self._gcc_branch_tree = rv - else: - return False - - if self._binutils_branch: - rv = self.CheckoutToolBranch('binutils', self._binutils_branch) - if rv: - self._binutils_branch_tree = rv - else: - return False - - return True - - def CheckoutToolBranch(self, tool_name, tool_branch): - """Checkout the tool branch for a certain tool. - - Args: - tool_name: either 'gcc' or 'binutils' - tool_branch: tool branch to use - - Returns: - True: if operation succeeds. Otherwise False. - """ - - chrome_tool_dir = self.GetChromeOsToolDir(tool_name) - command = 'cd "{0}" && git checkout {1}'.format(chrome_tool_dir, - tool_branch) - if not self._ce.RunCommand(command, print_to_console=True): - # Get 'TREE' value of this commit - command = ('cd "{0}" && git cat-file -p {1} ' - '| grep -E "^tree [a-f0-9]+$" ' - '| cut -d" " -f2').format(chrome_tool_dir, tool_branch) - ret, stdout, _ = self._ce.RunCommandWOutput( - command, print_to_console=False) - # Pipe operation always has a zero return value. So need to check if - # stdout is valid. - if not ret and stdout and re.match('[0-9a-h]{40}', - stdout.strip(), re.IGNORECASE): - tool_branch_tree = stdout.strip() - self._logger.LogOutput('Find tree for {0} branch "{1}" - "{2}"'.format( - tool_name, tool_branch, tool_branch_tree)) - return tool_branch_tree - self._logger.LogError(('Failed to checkout "{0}" or failed to ' - 'get tree value, aborted.').format(tool_branch)) - return None - - def FindEbuildFile(self): - """Find the ebuild files for the tools. - - Returns: - True: if operation succeeds. - """ - - if self._gcc_branch: - (rv, ef, efn) = self.FindToolEbuildFile('gcc') - if rv: - self._gcc_ebuild_file = ef - self._gcc_ebuild_file_name = efn - else: - return False - - if self._binutils_branch: - (rv, ef, efn) = self.FindToolEbuildFile('binutils') - if rv: - self._binutils_ebuild_file = ef - self._binutils_ebuild_file_name = efn - else: - return False - - return True - - def FindToolEbuildFile(self, tool_name): - """Find ebuild file for a specific tool. - - Args: - tool_name: either "gcc" or "binutils". - - Returns: - A triplet that consisits of whether operation succeeds or not, - tool ebuild file full path and tool ebuild file name. - """ - - # To get the active gcc ebuild file, we need a workable chroot first. - if not os.path.exists( - os.path.join(self._chromeos_root, 'chroot')) and self._ce.RunCommand( - 'cd "{0}" && cros_sdk --create'.format(self._chromeos_root)): - self._logger.LogError(('Failed to install a initial chroot, aborted.\n' - 'If previous bootstrap failed, do a ' - '"cros_sdk --delete" to remove ' - 'in-complete chroot.')) - return (False, None, None) - - rv, stdout, _ = self._ce.ChrootRunCommandWOutput( - self._chromeos_root, - 'equery w sys-devel/{0}'.format(tool_name), - print_to_console=True) - if rv: - self._logger.LogError( - ('Failed to execute inside chroot ' - '"equery w sys-devel/{0}", aborted.').format(tool_name)) - return (False, None, None) - m = re.match(r'^.*/({0}/(.*\.ebuild))$'.format( - EBUILD_PATH_PATTERN.format(tool_name)), stdout) - if not m: - self._logger.LogError( - ('Failed to find {0} ebuild file, aborted. ' - 'If previous bootstrap failed, do a "cros_sdk --delete" to remove ' - 'in-complete chroot.').format(tool_name)) - return (False, None, None) - tool_ebuild_file = os.path.join(self._chromeos_root, m.group(1)) - tool_ebuild_file_name = m.group(2) - - return (True, tool_ebuild_file, tool_ebuild_file_name) - - def InplaceModifyEbuildFile(self): - """Modify the ebuild file. - - Returns: - True if operation succeeds. - """ - - # Note we shall not use remote branch name (eg. "cros/gcc.gnu.org/...") in - # CROS_WORKON_COMMIT, we have to use GITHASH. So we call GitGetCommitHash on - # tool_branch. - tool = None - toolbranch = None - if self._gcc_branch: - tool = 'gcc' - toolbranch = self._gcc_branch - tooltree = self._gcc_branch_tree - toolebuild = self._gcc_ebuild_file - elif self._binutils_branch: - tool = 'binutils' - toolbranch = self._binutils_branch - tooltree = self._binutils_branch_tree - toolebuild = self._binutils_ebuild_file - - assert tool - - # An example for the following variables would be: - # tooldir = '~/android/master-ndk/toolchain/gcc/gcc-4.9' - # tool_branch_githash = xxxxx - # toolcomponents = toolchain/gcc - tooldir = self.GetChromeOsToolDir(tool) - toolgithash = misc.GitGetCommitHash(tooldir, toolbranch) - if not toolgithash: - return False - toolcomponents = 'toolchain/{}'.format(tool) - return self.InplaceModifyToolEbuildFile(toolcomponents, toolgithash, - tooltree, toolebuild) - - @staticmethod - def ResetToolEbuildFile(chromeos_root, tool_name): - """Reset tool ebuild file to clean state. - - Args: - chromeos_root: chromeos source tree - tool_name: either "gcc" or "binutils" - - Returns: - True if operation succeds. - """ - rv = misc.GetGitChangesAsList( - os.path.join(chromeos_root, CHROMIUMOS_OVERLAY_PATH), - path=('sys-devel/{0}/{0}-*.ebuild'.format(tool_name)), - staged=False) - if rv: - cmd = 'cd {0} && git checkout --'.format( - os.path.join(chromeos_root, CHROMIUMOS_OVERLAY_PATH)) - for g in rv: - cmd += ' ' + g - rv = command_executer.GetCommandExecuter().RunCommand(cmd) - if rv: - logger.GetLogger().LogWarning( - 'Failed to reset the ebuild file. Please refer to log above.') - return False - else: - logger.GetLogger().LogWarning( - 'Note - did not find any modified {0} ebuild file.'.format(tool_name)) - # Fall through - return True - - def GetChromeOsToolDir(self, tool_name): - """Return the chromeos git dir for a specific tool. - - Note, after we unified ChromeOs and Android, the tool dir is under - ndk_dir/toolchain/[gcc,binutils]. - - Args: - tool_name: either 'gcc' or 'binutils'. - - Returns: - Absolute git path for the tool. - """ - - tool_toppath = os.path.join(self._ndk_dir, 'toolchain', tool_name) - # There may be sub-directories like 'binutils-2.25', 'binutils-2.24', - # 'gcc-4.9', 'gcc-4.8', etc. find the newest binutils version. - cmd = ('find {} -maxdepth 1 -type d -name "{}-*" ' - '| sort -r | head -1').format(tool_toppath, tool_name) - rv, out, _ = self._ce.RunCommandWOutput(cmd, print_to_console=False) - if rv: - return None - repo = out.strip() - - # cros-workon eclass expects every CROS_WORKON_PROJECT ends with ".git". - self._ce.RunCommand(('cd $(dirname {0}) && ' - 'ln -sf $(basename {0}) $(basename {0}).git').format( - repo, print_to_console=True)) - return repo - - def InplaceModifyToolEbuildFile(self, tool_components, tool_branch_githash, - tool_branch_tree, tool_ebuild_file): - """Using sed to fill properly values into the ebuild file. - - Args: - tool_components: either "toolchain/gcc" or "toolchain/binutils" - tool_branch_githash: githash for tool_branch - tool_branch_tree: treeish for the tool branch - tool_ebuild_file: tool ebuild file - - Returns: - True: if operation succeeded. - """ - - command = ('sed -i ' - '-e \'/^CROS_WORKON_REPO=".*"/i' - ' # The following line is modified by script.\' ' - '-e \'s!^CROS_WORKON_REPO=".*"$!CROS_WORKON_REPO="{0}"!\' ' - '-e \'/^CROS_WORKON_PROJECT=".*"/i' - ' # The following line is modified by script.\' ' - '-e \'s!^CROS_WORKON_PROJECT=.*$!CROS_WORKON_PROJECT="{1}"!\' ' - '-e \'/^CROS_WORKON_COMMIT=".*"/i' - ' # The following line is modified by script.\' ' - '-e \'s!^CROS_WORKON_COMMIT=".*"$!CROS_WORKON_COMMIT="{2}"!\' ' - '-e \'/^CROS_WORKON_TREE=".*"/i' - ' # The following line is modified by script.\' ' - '-e \'s!^CROS_WORKON_TREE=".*"$!CROS_WORKON_TREE="{3}"!\' ' - '{4}').format('/home/{}/ndk-root'.format(os.environ['USER']), - tool_components, tool_branch_githash, - tool_branch_tree, tool_ebuild_file) - rv = self._ce.RunCommand(command) - if rv: - self._logger.LogError( - 'Failed to modify commit and tree value for "{0}"", aborted.'.format( - tool_ebuild_file)) - return False - - # Warn that the ebuild file has been modified. - self._logger.LogWarning( - ('Ebuild file "{0}" is modified, to revert the file - \n' - 'bootstrap_compiler.py --chromeos_root={1} ' - '--reset_tool_ebuild_file').format(tool_ebuild_file, - self._chromeos_root)) - return True - - def DoBuildForBoard(self): - """Build tool for a specific board. - - Returns: - True if operation succeeds. - """ - - if self._gcc_branch: - if not self.DoBuildToolForBoard('gcc'): - return False - if self._binutils_branch: - if not self.DoBuildToolForBoard('binutils'): - return False - return True - - def DoBuildToolForBoard(self, tool_name): - """Build a specific tool for a specific board. - - Args: - tool_name: either "gcc" or "binutils" - - Returns: - True if operation succeeds. - """ - - chroot_ndk_root = os.path.join(self._chromeos_root, 'chroot', 'home', - os.environ['USER'], 'ndk-root') - self._ce.RunCommand('mkdir -p {}'.format(chroot_ndk_root)) - if self._ce.RunCommand( - 'sudo mount --bind {} {}'.format(self._ndk_dir, chroot_ndk_root)): - self._logger.LogError('Failed to mount ndk dir into chroot') - return False - - try: - boards_to_build = self._board.split(',') - target_built = set() - failed = [] - for board in boards_to_build: - if board == 'host': - command = 'sudo emerge sys-devel/{0}'.format(tool_name) - else: - target = misc.GetCtargetFromBoard(board, self._chromeos_root) - if not target: - self._logger.LogError( - 'Unsupported board "{0}", skip.'.format(board)) - failed.append(board) - continue - # Skip this board if we have already built for a board that has the - # same target. - if target in target_built: - self._logger.LogWarning( - 'Skipping toolchain for board "{}"'.format(board)) - continue - target_built.add(target) - command = 'sudo emerge cross-{0}/{1}'.format(target, tool_name) - - rv = self._ce.ChrootRunCommand( - self._chromeos_root, command, print_to_console=True) - if rv: - self._logger.LogError( - 'Build {0} failed for {1}, aborted.'.format(tool_name, board)) - failed.append(board) - else: - self._logger.LogOutput( - 'Successfully built {0} for board {1}.'.format(tool_name, board)) - finally: - # Make sure we un-mount ndk-root before we leave here, regardless of the - # build result of the tool. Otherwise we may inadvertently delete ndk-root - # dir, which is not part of the chroot and could be disastrous. - if chroot_ndk_root: - if self._ce.RunCommand('sudo umount {}'.format(chroot_ndk_root)): - self._logger.LogWarning( - ('Failed to umount "{}", please check ' - 'before deleting chroot.').format(chroot_ndk_root)) - - # Clean up soft links created during build. - self._ce.RunCommand('cd {}/toolchain/{} && git clean -df'.format( - self._ndk_dir, tool_name)) - - if failed: - self._logger.LogError( - 'Failed to build {0} for the following board(s): "{1}"'.format( - tool_name, ' '.join(failed))) - return False - # All boards build successfully - return True - - def DoBootstrapping(self): - """Do bootstrapping the chroot. - - This step firstly downloads a prestine sdk, then use this sdk to build the - new sdk, finally use the new sdk to build every host package. - - Returns: - True if operation succeeds. - """ - - logfile = os.path.join(self._chromeos_root, 'bootstrap.log') - command = 'cd "{0}" && cros_sdk --delete --bootstrap |& tee "{1}"'.format( - self._chromeos_root, logfile) - rv = self._ce.RunCommand(command, print_to_console=True) - if rv: - self._logger.LogError( - 'Bootstrapping failed, log file - "{0}"\n'.format(logfile)) - return False - - self._logger.LogOutput('Bootstrap succeeded.') - return True - - def BuildAndInstallAmd64Host(self): - """Build amd64-host (host) packages. - - Build all host packages in the newly-bootstrapped 'chroot' using *NEW* - toolchain. - - So actually we perform 2 builds of all host packages - - 1. build new toolchain using old toolchain and build all host packages - using the newly built toolchain - 2. build the new toolchain again but using new toolchain built in step 1, - and build all host packages using the newly built toolchain - - Returns: - True if operation succeeds. - """ - - cmd = 'cd {0} && cros_sdk -- -- ./build_sdk_board'.format( - self._chromeos_root) - rv = self._ce.RunCommand(cmd, print_to_console=True) - if rv: - self._logger.LogError('Build amd64-host failed.') - return False - - # Package amd64-host into 'built-sdk.tar.xz'. - sdk_package = os.path.join(self._chromeos_root, 'built-sdk.tar.xz') - cmd = ('cd {0}/chroot/build/amd64-host && sudo XZ_OPT="-e9" ' - 'tar --exclude="usr/lib/debug/*" --exclude="packages/*" ' - '--exclude="tmp/*" --exclude="usr/local/build/autotest/*" ' - '--sparse -I xz -vcf {1} . && sudo chmod a+r {1}').format( - self._chromeos_root, sdk_package) - rv = self._ce.RunCommand(cmd, print_to_console=True) - if rv: - self._logger.LogError('Failed to create "built-sdk.tar.xz".') - return False - - # Install amd64-host into a new chroot. - cmd = ('cd {0} && cros_sdk --chroot new-sdk-chroot --download --replace ' - '--nousepkg --url file://{1}').format(self._chromeos_root, - sdk_package) - rv = self._ce.RunCommand(cmd, print_to_console=True) - if rv: - self._logger.LogError('Failed to install "built-sdk.tar.xz".') - return False - self._logger.LogOutput( - 'Successfully installed built-sdk.tar.xz into a new chroot.\nAll done.') - - # Rename the newly created new-sdk-chroot to chroot. - cmd = ('cd {0} && sudo mv chroot chroot-old && ' - 'sudo mv new-sdk-chroot chroot').format(self._chromeos_root) - rv = self._ce.RunCommand(cmd, print_to_console=True) - return rv == 0 - - def Do(self): - """Entrance of the class. - - Returns: - True if everything is ok. - """ - - if (self.SubmitToLocalBranch() and self.CheckoutBranch() and - self.FindEbuildFile() and self.InplaceModifyEbuildFile()): - if self._setup_tool_ebuild_file_only: - # Everything is done, we are good. - ret = True - else: - if self._board: - ret = self.DoBuildForBoard() - else: - # This implies '--bootstrap'. - ret = (self.DoBootstrapping() and (self._disable_2nd_bootstrap or - self.BuildAndInstallAmd64Host())) - else: - ret = False - return ret - - -def Main(argv): - parser = argparse.ArgumentParser() - parser.add_argument( - '-c', - '--chromeos_root', - dest='chromeos_root', - help=('Optional. ChromeOs root dir. ' - 'When not specified, chromeos root will be deduced' - ' from current working directory.')) - parser.add_argument( - '--ndk_dir', - dest='ndk_dir', - help=('Topmost android ndk dir, required. ' - 'Do not need to include the "toolchain/*" part.')) - parser.add_argument( - '--gcc_branch', - dest='gcc_branch', - help=('The branch to test against. ' - 'This branch must be a local branch ' - 'inside "src/third_party/gcc". ' - 'Notice, this must not be used with "--gcc_dir".')) - parser.add_argument( - '--binutils_branch', - dest='binutils_branch', - help=('The branch to test against binutils. ' - 'This branch must be a local branch ' - 'inside "src/third_party/binutils". ' - 'Notice, this must not be used with ' - '"--binutils_dir".')) - parser.add_argument( - '-g', - '--gcc_dir', - dest='gcc_dir', - help=('Use a local gcc tree to do bootstrapping. ' - 'Notice, this must not be used with ' - '"--gcc_branch".')) - parser.add_argument( - '--binutils_dir', - dest='binutils_dir', - help=('Use a local binutils tree to do bootstrapping. ' - 'Notice, this must not be used with ' - '"--binutils_branch".')) - parser.add_argument( - '--fixperm', - dest='fixperm', - default=False, - action='store_true', - help=('Fix the (notorious) permission error ' - 'while trying to bootstrap the chroot. ' - 'Note this takes an extra 10-15 minutes ' - 'and is only needed once per chromiumos tree.')) - parser.add_argument( - '--setup_tool_ebuild_file_only', - dest='setup_tool_ebuild_file_only', - default=False, - action='store_true', - help=('Setup gcc and/or binutils ebuild file ' - 'to pick up the branch (--gcc/binutils_branch) or ' - 'use gcc and/or binutils source ' - '(--gcc/binutils_dir) and exit. Keep chroot as is.' - ' This should not be used with ' - '--gcc/binutils_dir/branch options.')) - parser.add_argument( - '--reset_tool_ebuild_file', - dest='reset_tool_ebuild_file', - default=False, - action='store_true', - help=('Reset the modification that is done by this ' - 'script. Note, when this script is running, it ' - 'will modify the active gcc/binutils ebuild file. ' - 'Use this option to reset (what this script has ' - 'done) and exit. This should not be used with -- ' - 'gcc/binutils_dir/branch options.')) - parser.add_argument( - '--board', - dest='board', - default=None, - help=('Only build toolchain for specific board(s). ' - 'Use "host" to build for host. ' - 'Use "," to seperate multiple boards. ' - 'This does not perform a chroot bootstrap.')) - parser.add_argument( - '--bootstrap', - dest='bootstrap', - default=False, - action='store_true', - help=('Performs a chroot bootstrap. ' - 'Note, this will *destroy* your current chroot.')) - parser.add_argument( - '--disable-2nd-bootstrap', - dest='disable_2nd_bootstrap', - default=False, - action='store_true', - help=('Disable a second bootstrap ' - '(build of amd64-host stage).')) - - options = parser.parse_args(argv) - # Trying to deduce chromeos root from current directory. - if not options.chromeos_root: - logger.GetLogger().LogOutput('Trying to deduce chromeos root ...') - wdir = os.getcwd() - while wdir and wdir != '/': - if misc.IsChromeOsTree(wdir): - logger.GetLogger().LogOutput('Find chromeos_root: {}'.format(wdir)) - options.chromeos_root = wdir - break - wdir = os.path.dirname(wdir) - - if not options.chromeos_root: - parser.error('Missing or failing to deduce mandatory option "--chromeos".') - return 1 - - options.chromeos_root = os.path.abspath( - os.path.expanduser(options.chromeos_root)) - - if not os.path.isdir(options.chromeos_root): - logger.GetLogger().LogError( - '"{0}" does not exist.'.format(options.chromeos_root)) - return 1 - - options.ndk_dir = os.path.expanduser(options.ndk_dir) - if not options.ndk_dir: - parser.error('Missing mandatory option "--ndk_dir".') - return 1 - - # Some tolerance regarding user input. We only need the ndk_root part, do not - # include toolchain/(gcc|binutils)/ part in this option. - options.ndk_dir = re.sub('/toolchain(/gcc|/binutils)?/?$', '', - options.ndk_dir) - - if not (os.path.isdir(options.ndk_dir) and - os.path.isdir(os.path.join(options.ndk_dir, 'toolchain'))): - logger.GetLogger().LogError( - '"toolchain" directory not found under "{0}".'.format(options.ndk_dir)) - return 1 - - if options.fixperm: - # Fix perm error before continuing. - cmd = (r'sudo find "{0}" \( -name ".cache" -type d -prune \) -o ' - r'\( -name "chroot" -type d -prune \) -o ' - r'\( -type f -exec chmod a+r {{}} \; \) -o ' - r'\( -type d -exec chmod a+rx {{}} \; \)' - ).format(options.chromeos_root) - logger.GetLogger().LogOutput( - 'Fixing perm issues for chromeos root, this might take some time.') - command_executer.GetCommandExecuter().RunCommand(cmd) - - if options.reset_tool_ebuild_file: - if (options.gcc_dir or options.gcc_branch or options.binutils_dir or - options.binutils_branch): - logger.GetLogger().LogWarning( - 'Ignoring any "--gcc/binutils_dir" and/or "--gcc/binutils_branch".') - if options.setup_tool_ebuild_file_only: - logger.GetLogger().LogError( - ('Conflict options "--reset_tool_ebuild_file" ' - 'and "--setup_tool_ebuild_file_only".')) - return 1 - rv = Bootstrapper.ResetToolEbuildFile(options.chromeos_root, 'gcc') - rv1 = Bootstrapper.ResetToolEbuildFile(options.chromeos_root, 'binutils') - return 0 if (rv and rv1) else 1 - - if options.gcc_dir: - options.gcc_dir = os.path.abspath(os.path.expanduser(options.gcc_dir)) - if not os.path.isdir(options.gcc_dir): - logger.GetLogger().LogError( - '"{0}" does not exist.'.format(options.gcc_dir)) - return 1 - - if options.gcc_branch and options.gcc_dir: - parser.error('Only one of "--gcc_dir" and "--gcc_branch" can be specified.') - return 1 - - if options.binutils_dir: - options.binutils_dir = os.path.abspath( - os.path.expanduser(options.binutils_dir)) - if not os.path.isdir(options.binutils_dir): - logger.GetLogger().LogError( - '"{0}" does not exist.'.format(options.binutils_dir)) - return 1 - - if options.binutils_branch and options.binutils_dir: - parser.error('Only one of "--binutils_dir" and ' - '"--binutils_branch" can be specified.') - return 1 - - if (not (options.binutils_branch or options.binutils_dir or - options.gcc_branch or options.gcc_dir)): - parser.error(('At least one of "--gcc_dir", "--gcc_branch", ' - '"--binutils_dir" and "--binutils_branch" must ' - 'be specified.')) - return 1 - - if not options.board and not options.bootstrap: - parser.error('You must specify either "--board" or "--bootstrap".') - return 1 - - if (options.board and options.bootstrap and - not options.setup_tool_ebuild_file_only): - parser.error('You must specify only one of "--board" and "--bootstrap".') - return 1 - - if not options.bootstrap and options.disable_2nd_bootstrap: - parser.error('"--disable-2nd-bootstrap" has no effect ' - 'without specifying "--bootstrap".') - return 1 - - if Bootstrapper( - options.chromeos_root, - options.ndk_dir, - gcc_branch=options.gcc_branch, - gcc_dir=options.gcc_dir, - binutils_branch=options.binutils_branch, - binutils_dir=options.binutils_dir, - board=options.board, - disable_2nd_bootstrap=options.disable_2nd_bootstrap, - setup_tool_ebuild_file_only=options.setup_tool_ebuild_file_only).Do(): - return 0 - return 1 - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/compare_benchmarks.py b/deprecated/compare_benchmarks.py deleted file mode 100755 index b6a30cad..00000000 --- a/deprecated/compare_benchmarks.py +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to compare ChromeOS benchmarks - -Inputs: - - - --csv - comma separated results - -This script doesn't really know much about benchmarks. It simply looks for -similarly names directories and a results.txt file, and compares -the results and presents it, along with a geometric mean. - -""" - -from __future__ import print_function - -__author__ = 'bjanakiraman@google.com (Bhaskar Janakiraman)' - -import glob -import math -import argparse -import re -import sys - -from cros_utils import command_executer - -BENCHDIRS = ('%s/default/default/*/gcc-4.4.3-glibc-2.11.1-grte-k8-opt/ref/*' - '/results.txt') - -# Common initializations -cmd_executer = command_executer.GetCommandExecuter() - - -def Usage(parser, message): - print('ERROR: %s' % message) - parser.print_help() - sys.exit(0) - - -def GetStats(in_file): - """Return stats from file""" - f = open(in_file, 'r') - pairs = [] - for l in f: - line = l.strip() - # Look for match lines like the following: - # METRIC isolated TotalTime_ms (down, scalar) trial_run_0: ['1524.4'] - # METRIC isolated isolated_walltime (down, scalar) trial_run_0: \ - # ['167.407445192'] - m = re.match(r"METRIC\s+isolated\s+(\S+).*\['(\d+(?:\.\d+)?)'\]", line) - if not m: - continue - metric = m.group(1) - if re.match(r'isolated_walltime', metric): - continue - - value = float(m.group(2)) - pairs.append((metric, value)) - - return dict(pairs) - - -def PrintDash(n): - tmpstr = '' - for _ in range(n): - tmpstr += '-' - print(tmpstr) - - -def PrintHeaderCSV(hdr): - tmpstr = '' - for i in range(len(hdr)): - if tmpstr != '': - tmpstr += ',' - tmpstr += hdr[i] - print(tmpstr) - - -def PrintHeader(hdr): - tot_len = len(hdr) - PrintDash(tot_len * 15) - - tmpstr = '' - for i in range(len(hdr)): - tmpstr += '%15.15s' % hdr[i] - - print(tmpstr) - PrintDash(tot_len * 15) - - -def Main(argv): - """Compare Benchmarks.""" - # Common initializations - - parser = argparse.ArgumentParser() - parser.add_argument('-c', - '--csv', - dest='csv_output', - action='store_true', - default=False, - help='Output in csv form.') - parser.add_argument('args', nargs='+', help='positional arguments: ' - ' ') - - options = parser.parse_args(argv[1:]) - - # validate args - if len(options.args) != 2: - Usage(parser, 'Needs ') - - base_dir = options.args[0] - res_dir = options.args[1] - - # find res benchmarks that have results - resbenches_glob = BENCHDIRS % res_dir - resbenches = glob.glob(resbenches_glob) - - basebenches_glob = BENCHDIRS % base_dir - basebenches = glob.glob(basebenches_glob) - - to_compare = [] - for resbench in resbenches: - tmp = resbench.replace(res_dir, base_dir, 1) - if tmp in basebenches: - to_compare.append((resbench, tmp)) - - for (resfile, basefile) in to_compare: - stats = GetStats(resfile) - basestats = GetStats(basefile) - # Print a header - # benchname (remove results.txt), basetime, restime, %speed-up - hdr = [] - benchname = re.split('/', resfile)[-2:-1][0] - benchname = benchname.replace('chromeos__', '', 1) - hdr.append(benchname) - hdr.append('basetime') - hdr.append('restime') - hdr.append('%speed up') - if options.csv_output: - PrintHeaderCSV(hdr) - else: - PrintHeader(hdr) - - # For geomean computations - prod = 1.0 - count = 0 - for key in stats.keys(): - if key in basestats.keys(): - # ignore very small values. - if stats[key] < 0.01: - continue - count = count + 1 - prod = prod * (stats[key] / basestats[key]) - speedup = (basestats[key] - stats[key]) / basestats[key] - speedup = speedup * 100.0 - if options.csv_output: - print('%s,%f,%f,%f' % (key, basestats[key], stats[key], speedup)) - else: - print('%15.15s%15.2f%15.2f%14.2f%%' % (key, basestats[key], - stats[key], speedup)) - - prod = math.exp(1.0 / count * math.log(prod)) - prod = (1.0 - prod) * 100 - if options.csv_output: - print('%s,,,%f' % ('Geomean', prod)) - else: - print('%15.15s%15.15s%15.15s%14.2f%%' % ('Geomean', '', '', prod)) - print('') - return 0 - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/crb/autotest_gatherer.py b/deprecated/crb/autotest_gatherer.py deleted file mode 100644 index f8f7b43f..00000000 --- a/deprecated/crb/autotest_gatherer.py +++ /dev/null @@ -1,67 +0,0 @@ -from table_formatter import TableFormatter as TableFormatter - - -class AutotestGatherer(TableFormatter): - - def __init__(self): - self.runs = [] - TableFormatter.__init__(self) - - def GetFormattedMainTable(self, percents_only, fit_string): - ret = '' - table = self.GetTableValues() - ret += self.GetTableLabels(table) - ret += self.GetFormattedTable(table, - percents_only=percents_only, - fit_string=fit_string) - return ret - - def GetFormattedSummaryTable(self, percents_only, fit_string): - ret = '' - table = self.GetTableValues() - summary_table = self.GetSummaryTableValues(table) - ret += self.GetTableLabels(summary_table) - ret += self.GetFormattedTable(summary_table, - percents_only=percents_only, - fit_string=fit_string) - return ret - - def GetBenchmarksString(self): - ret = 'Benchmarks (in order):' - ret = '\n'.join(self.GetAllBenchmarks()) - return ret - - def GetAllBenchmarks(self): - all_benchmarks = [] - for run in self.runs: - for key in run.results.keys(): - if key not in all_benchmarks: - all_benchmarks.append(key) - all_benchmarks.sort() - return all_benchmarks - - def GetTableValues(self): - table = [] - row = [] - - row.append('Benchmark') - for i in range(len(self.runs)): - run = self.runs[i] - label = run.GetLabel() - label = self.GetLabelWithIteration(label, run.iteration) - row.append(label) - table.append(row) - - all_benchmarks = self.GetAllBenchmarks() - for benchmark in all_benchmarks: - row = [] - row.append(benchmark) - for run in self.runs: - results = run.results - if benchmark in results: - row.append(results[benchmark]) - else: - row.append('') - table.append(row) - - return table diff --git a/deprecated/crb/autotest_run.py b/deprecated/crb/autotest_run.py deleted file mode 100644 index 380c578b..00000000 --- a/deprecated/crb/autotest_run.py +++ /dev/null @@ -1,317 +0,0 @@ -import datetime -import getpass -import glob -import os -import pickle -import re -import threading -import time -import image_chromeos -import machine_manager_singleton -import table_formatter -from cros_utils import command_executer -from cros_utils import logger - -SCRATCH_DIR = '/home/%s/cros_scratch' % getpass.getuser() -PICKLE_FILE = 'pickle.txt' -VERSION = '1' - - -def ConvertToFilename(text): - ret = text - ret = re.sub('/', '__', ret) - ret = re.sub(' ', '_', ret) - ret = re.sub('=', '', ret) - ret = re.sub("\"", '', ret) - return ret - - -class AutotestRun(threading.Thread): - - def __init__(self, - autotest, - chromeos_root='', - chromeos_image='', - board='', - remote='', - iteration=0, - image_checksum='', - exact_remote=False, - rerun=False, - rerun_if_failed=False): - self.autotest = autotest - self.chromeos_root = chromeos_root - self.chromeos_image = chromeos_image - self.board = board - self.remote = remote - self.iteration = iteration - l = logger.GetLogger() - l.LogFatalIf(not image_checksum, "Checksum shouldn't be None") - self.image_checksum = image_checksum - self.results = {} - threading.Thread.__init__(self) - self.terminate = False - self.retval = None - self.status = 'PENDING' - self.run_completed = False - self.exact_remote = exact_remote - self.rerun = rerun - self.rerun_if_failed = rerun_if_failed - self.results_dir = None - self.full_name = None - - @staticmethod - def MeanExcludingSlowest(array): - mean = sum(array) / len(array) - array2 = [] - - for v in array: - if mean != 0 and abs(v - mean) / mean < 0.2: - array2.append(v) - - if array2: - return sum(array2) / len(array2) - else: - return mean - - @staticmethod - def AddComposite(results_dict): - composite_keys = [] - composite_dict = {} - for key in results_dict: - mo = re.match('(.*){\d+}', key) - if mo: - composite_keys.append(mo.group(1)) - for key in results_dict: - for composite_key in composite_keys: - if (key.count(composite_key) != 0 and - table_formatter.IsFloat(results_dict[key])): - if composite_key not in composite_dict: - composite_dict[composite_key] = [] - composite_dict[composite_key].append(float(results_dict[key])) - break - - for composite_key in composite_dict: - v = composite_dict[composite_key] - results_dict['%s[c]' % composite_key] = sum(v) / len(v) - mean_excluding_slowest = AutotestRun.MeanExcludingSlowest(v) - results_dict['%s[ce]' % composite_key] = mean_excluding_slowest - - return results_dict - - def ParseOutput(self): - p = re.compile('^-+.*?^-+', re.DOTALL | re.MULTILINE) - matches = p.findall(self.out) - for i in range(len(matches)): - results = matches[i] - results_dict = {} - for line in results.splitlines()[1:-1]: - mo = re.match('(.*\S)\s+\[\s+(PASSED|FAILED)\s+\]', line) - if mo: - results_dict[mo.group(1)] = mo.group(2) - continue - mo = re.match('(.*\S)\s+(.*)', line) - if mo: - results_dict[mo.group(1)] = mo.group(2) - - # Add a composite keyval for tests like startup. - results_dict = AutotestRun.AddComposite(results_dict) - - self.results = results_dict - - # This causes it to not parse the table again - # Autotest recently added a secondary table - # That reports errors and screws up the final pretty output. - break - mo = re.search('Results placed in (\S+)', self.out) - if mo: - self.results_dir = mo.group(1) - self.full_name = os.path.basename(self.results_dir) - - def GetCacheHashBase(self): - ret = ('%s %s %s' % - (self.image_checksum, self.autotest.name, self.iteration)) - if self.autotest.args: - ret += ' %s' % self.autotest.args - ret += '-%s' % VERSION - return ret - - def GetLabel(self): - ret = '%s %s remote:%s' % (self.chromeos_image, self.autotest.name, - self.remote) - return ret - - def TryToLoadFromCache(self): - base = self.GetCacheHashBase() - if self.exact_remote: - if not self.remote: - return False - cache_dir_glob = '%s_%s' % (ConvertToFilename(base), self.remote) - else: - cache_dir_glob = '%s*' % ConvertToFilename(base) - cache_path_glob = os.path.join(SCRATCH_DIR, cache_dir_glob) - matching_dirs = glob.glob(cache_path_glob) - if matching_dirs: - matching_dir = matching_dirs[0] - cache_file = os.path.join(matching_dir, PICKLE_FILE) - assert os.path.isfile(cache_file) - self._logger.LogOutput('Trying to read from cache file: %s' % cache_file) - return self.ReadFromCache(cache_file) - self._logger.LogOutput('Cache miss. AM going to run: %s for: %s' % - (self.autotest.name, self.chromeos_image)) - return False - - def ReadFromCache(self, cache_file): - with open(cache_file, 'rb') as f: - self.retval = pickle.load(f) - self.out = pickle.load(f) - self.err = pickle.load(f) - self._logger.LogOutput(self.out) - return True - return False - - def StoreToCache(self): - base = self.GetCacheHashBase() - self.cache_dir = os.path.join(SCRATCH_DIR, - '%s_%s' % (ConvertToFilename(base), - self.remote)) - cache_file = os.path.join(self.cache_dir, PICKLE_FILE) - command = 'mkdir -p %s' % os.path.dirname(cache_file) - ret = self._ce.RunCommand(command) - assert ret == 0, "Couldn't create cache dir" - with open(cache_file, 'wb') as f: - pickle.dump(self.retval, f) - pickle.dump(self.out, f) - pickle.dump(self.err, f) - - def run(self): - self._logger = logger.Logger( - os.path.dirname(__file__), '%s.%s' % (os.path.basename(__file__), - self.name), True) - self._ce = command_executer.GetCommandExecuter(self._logger) - self.RunCached() - - def RunCached(self): - self.status = 'WAITING' - cache_hit = False - if not self.rerun: - cache_hit = self.TryToLoadFromCache() - else: - self._logger.LogOutput('--rerun passed. Not using cached results.') - if self.rerun_if_failed and self.retval: - self._logger.LogOutput('--rerun_if_failed passed and existing test ' - 'failed. Rerunning...') - cache_hit = False - if not cache_hit: - # Get machine - while True: - if self.terminate: - return 1 - self.machine = (machine_manager_singleton.MachineManagerSingleton( - ).AcquireMachine(self.image_checksum)) - if self.machine: - self._logger.LogOutput('%s: Machine %s acquired at %s' % - (self.name, self.machine.name, - datetime.datetime.now())) - break - else: - sleep_duration = 10 - time.sleep(sleep_duration) - try: - self.remote = self.machine.name - - if self.machine.checksum != self.image_checksum: - self.retval = self.ImageTo(self.machine.name) - if self.retval: - return self.retval - self.machine.checksum = self.image_checksum - self.machine.image = self.chromeos_image - self.status = 'RUNNING: %s' % self.autotest.name - [self.retval, self.out, self.err] = self.RunTestOn(self.machine.name) - self.run_completed = True - - finally: - self._logger.LogOutput('Releasing machine: %s' % self.machine.name) - machine_manager_singleton.MachineManagerSingleton().ReleaseMachine( - self.machine) - self._logger.LogOutput('Released machine: %s' % self.machine.name) - - self.StoreToCache() - - if not self.retval: - self.status = 'SUCCEEDED' - else: - self.status = 'FAILED' - - self.ParseOutput() - # Copy results directory to the scratch dir - if (not cache_hit and not self.retval and self.autotest.args and - '--profile' in self.autotest.args): - results_dir = os.path.join(self.chromeos_root, 'chroot', - self.results_dir.lstrip('/')) - tarball = os.path.join( - self.cache_dir, os.path.basename(os.path.dirname(self.results_dir))) - command = ('cd %s && tar cjf %s.tbz2 .' % (results_dir, tarball)) - self._ce.RunCommand(command) - perf_data_file = os.path.join(self.results_dir, self.full_name, - 'profiling/iteration.1/perf.data') - - # Attempt to build a perf report and keep it with the results. - command = ('cd %s/src/scripts &&' - ' cros_sdk -- /usr/sbin/perf report --symfs=/build/%s' - ' -i %s --stdio' % (self.chromeos_root, self.board, - perf_data_file)) - ret, out, err = self._ce.RunCommandWOutput(command) - with open(os.path.join(self.cache_dir, 'perf.report'), 'wb') as f: - f.write(out) - return self.retval - - def ImageTo(self, machine_name): - image_args = [image_chromeos.__file__, '--chromeos_root=%s' % - self.chromeos_root, '--image=%s' % self.chromeos_image, - '--remote=%s' % machine_name] - if self.board: - image_args.append('--board=%s' % self.board) - -### devserver_port = 8080 -### mo = re.search("\d+", self.name) -### if mo: -### to_add = int(mo.group(0)) -### assert to_add < 100, "Too many threads launched!" -### devserver_port += to_add - -### # I tried --noupdate_stateful, but that still fails when run in parallel. -### image_args.append("--image_to_live_args=\"--devserver_port=%s" -### " --noupdate_stateful\"" % devserver_port) -### image_args.append("--image_to_live_args=--devserver_port=%s" % -### devserver_port) - -# Currently can't image two machines at once. -# So have to serialized on this lock. - self.status = 'WAITING ON IMAGE_LOCK' - with machine_manager_singleton.MachineManagerSingleton().image_lock: - self.status = 'IMAGING' - retval = self._ce.RunCommand(' '.join(['python'] + image_args)) - machine_manager_singleton.MachineManagerSingleton().num_reimages += 1 - if retval: - self.status = 'ABORTED DUE TO IMAGE FAILURE' - return retval - - def DoPowerdHack(self): - command = 'sudo initctl stop powerd' - self._ce.CrosRunCommand(command, - machine=self.machine.name, - chromeos_root=self.chromeos_root) - - def RunTestOn(self, machine_name): - command = 'cd %s/src/scripts' % self.chromeos_root - options = '' - if self.board: - options += ' --board=%s' % self.board - if self.autotest.args: - options += " --args='%s'" % self.autotest.args - if 'tegra2' in self.board: - self.DoPowerdHack() - command += ('&& cros_sdk -- /usr/bin/test_that %s %s %s' % - (options, machine_name, self.autotest.name)) - return self._ce.RunCommand(command, True) diff --git a/deprecated/crb/crb_driver.py b/deprecated/crb/crb_driver.py deleted file mode 100755 index c6403462..00000000 --- a/deprecated/crb/crb_driver.py +++ /dev/null @@ -1,370 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -import datetime -import optparse -import os -import smtplib -import sys -import time -from email.mime.text import MIMEText - -from autotest_gatherer import AutotestGatherer as AutotestGatherer -from autotest_run import AutotestRun as AutotestRun -from machine_manager_singleton import MachineManagerSingleton as MachineManagerSingleton -from cros_utils import logger -from cros_utils.file_utils import FileUtils - - -def CanonicalizeChromeOSRoot(chromeos_root): - chromeos_root = os.path.expanduser(chromeos_root) - if os.path.isfile(os.path.join(chromeos_root, 'src/scripts/enter_chroot.sh')): - return chromeos_root - else: - return None - - -class Autotest(object): - - def __init__(self, autotest_string): - self.name = None - self.iterations = None - self.args = None - fields = autotest_string.split(',', 1) - self.name = fields[0] - if len(fields) > 1: - autotest_string = fields[1] - fields = autotest_string.split(',', 1) - else: - return - self.iterations = int(fields[0]) - if len(fields) > 1: - self.args = fields[1] - else: - return - - def __str__(self): - return '\n'.join([self.name, self.iterations, self.args]) - - -def CreateAutotestListFromString(autotest_strings, default_iterations=None): - autotest_list = [] - for autotest_string in autotest_strings.split(':'): - autotest = Autotest(autotest_string) - if default_iterations and not autotest.iterations: - autotest.iterations = default_iterations - - autotest_list.append(autotest) - return autotest_list - - -def CreateAutotestRuns(images, - autotests, - remote, - board, - exact_remote, - rerun, - rerun_if_failed, - main_chromeos_root=None): - autotest_runs = [] - for image in images: - logger.GetLogger().LogOutput('Computing md5sum of: %s' % image) - image_checksum = FileUtils().Md5File(image) - logger.GetLogger().LogOutput('md5sum %s: %s' % (image, image_checksum)) - ### image_checksum = "abcdefghi" - - chromeos_root = main_chromeos_root - if not main_chromeos_root: - image_chromeos_root = os.path.join( - os.path.dirname(image), '../../../../..') - chromeos_root = CanonicalizeChromeOSRoot(image_chromeos_root) - assert chromeos_root, 'chromeos_root: %s invalid' % image_chromeos_root - else: - chromeos_root = CanonicalizeChromeOSRoot(main_chromeos_root) - assert chromeos_root, 'chromeos_root: %s invalid' % main_chromeos_root - - # We just need a single ChromeOS root in the MachineManagerSingleton. It is - # needed because we can save re-image time by checking the image checksum at - # the beginning and assigning autotests to machines appropriately. - if not MachineManagerSingleton().chromeos_root: - MachineManagerSingleton().chromeos_root = chromeos_root - - for autotest in autotests: - for iteration in range(autotest.iterations): - autotest_run = AutotestRun(autotest, - chromeos_root=chromeos_root, - chromeos_image=image, - board=board, - remote=remote, - iteration=iteration, - image_checksum=image_checksum, - exact_remote=exact_remote, - rerun=rerun, - rerun_if_failed=rerun_if_failed) - autotest_runs.append(autotest_run) - return autotest_runs - - -def GetNamesAndIterations(autotest_runs): - strings = [] - for autotest_run in autotest_runs: - strings.append('%s:%s' % (autotest_run.autotest.name, - autotest_run.iteration)) - return ' %s (%s)' % (len(strings), ' '.join(strings)) - - -def GetStatusString(autotest_runs): - status_bins = {} - for autotest_run in autotest_runs: - if autotest_run.status not in status_bins: - status_bins[autotest_run.status] = [] - status_bins[autotest_run.status].append(autotest_run) - - status_strings = [] - for key, val in status_bins.items(): - status_strings.append('%s: %s' % (key, GetNamesAndIterations(val))) - return 'Thread Status:\n%s' % '\n'.join(status_strings) - - -def GetProgressBar(num_done, num_total): - ret = 'Done: %s%%' % int(100.0 * num_done / num_total) - bar_length = 50 - done_char = '>' - undone_char = ' ' - num_done_chars = bar_length * num_done / num_total - num_undone_chars = bar_length - num_done_chars - ret += ' [%s%s]' % (num_done_chars * done_char, - num_undone_chars * undone_char) - return ret - - -def GetProgressString(start_time, num_remain, num_total): - current_time = time.time() - elapsed_time = current_time - start_time - try: - eta_seconds = float(num_remain) * elapsed_time / (num_total - num_remain) - eta_seconds = int(eta_seconds) - eta = datetime.timedelta(seconds=eta_seconds) - except ZeroDivisionError: - eta = 'Unknown' - strings = [] - strings.append('Current time: %s Elapsed: %s ETA: %s' % - (datetime.datetime.now(), - datetime.timedelta(seconds=int(elapsed_time)), eta)) - strings.append(GetProgressBar(num_total - num_remain, num_total)) - return '\n'.join(strings) - - -def RunAutotestRunsInParallel(autotest_runs): - start_time = time.time() - active_threads = [] - for autotest_run in autotest_runs: - # Set threads to daemon so program exits when ctrl-c is pressed. - autotest_run.daemon = True - autotest_run.start() - active_threads.append(autotest_run) - - print_interval = 30 - last_printed_time = time.time() - while active_threads: - try: - active_threads = [t for t in active_threads - if t is not None and t.isAlive()] - for t in active_threads: - t.join(1) - if time.time() - last_printed_time > print_interval: - border = '==============================' - logger.GetLogger().LogOutput(border) - logger.GetLogger().LogOutput(GetProgressString(start_time, len( - [t for t in autotest_runs if t.status not in ['SUCCEEDED', 'FAILED'] - ]), len(autotest_runs))) - logger.GetLogger().LogOutput(GetStatusString(autotest_runs)) - logger.GetLogger().LogOutput('%s\n' % - MachineManagerSingleton().AsString()) - logger.GetLogger().LogOutput(border) - last_printed_time = time.time() - except KeyboardInterrupt: - print 'C-c received... cleaning up threads.' - for t in active_threads: - t.terminate = True - return 1 - return 0 - - -def RunAutotestRunsSerially(autotest_runs): - for autotest_run in autotest_runs: - retval = autotest_run.Run() - if retval: - return retval - - -def ProduceTables(autotest_runs, full_table, fit_string): - l = logger.GetLogger() - ags_dict = {} - for autotest_run in autotest_runs: - name = autotest_run.full_name - if name not in ags_dict: - ags_dict[name] = AutotestGatherer() - ags_dict[name].runs.append(autotest_run) - output = '' - for b, ag in ags_dict.items(): - output += 'Benchmark: %s\n' % b - output += ag.GetFormattedMainTable(percents_only=not full_table, - fit_string=fit_string) - output += '\n' - - summary = '' - for b, ag in ags_dict.items(): - summary += 'Benchmark Summary Table: %s\n' % b - summary += ag.GetFormattedSummaryTable(percents_only=not full_table, - fit_string=fit_string) - summary += '\n' - - output += summary - output += ('Number of re-images performed: %s' % - MachineManagerSingleton().num_reimages) - l.LogOutput(output) - - if autotest_runs: - board = autotest_runs[0].board - else: - board = '' - - subject = '%s: %s' % (board, ', '.join(ags_dict.keys())) - - if any(autotest_run.run_completed for autotest_run in autotest_runs): - SendEmailToUser(subject, summary) - - -def SendEmailToUser(subject, text_to_send): - # Email summary to the current user. - msg = MIMEText(text_to_send) - - # me == the sender's email address - # you == the recipient's email address - me = os.path.basename(__file__) - you = os.getlogin() - msg['Subject'] = '[%s] %s' % (os.path.basename(__file__), subject) - msg['From'] = me - msg['To'] = you - - # Send the message via our own SMTP server, but don't include the - # envelope header. - s = smtplib.SMTP('localhost') - s.sendmail(me, [you], msg.as_string()) - s.quit() - - -def Main(argv): - """The main function.""" - # Common initializations - ### command_executer.InitCommandExecuter(True) - l = logger.GetLogger() - - parser = optparse.OptionParser() - parser.add_option('-t', - '--tests', - dest='tests', - help=('Tests to compare.' - 'Optionally specify per-test iterations by:' - ',:')) - parser.add_option('-c', - '--chromeos_root', - dest='chromeos_root', - help='A *single* chromeos_root where scripts can be found.') - parser.add_option('-n', - '--iterations', - dest='iterations', - help='Iterations to run per benchmark.', - default=1) - parser.add_option('-r', - '--remote', - dest='remote', - help='The remote chromeos machine.') - parser.add_option('-b', '--board', dest='board', help='The remote board.') - parser.add_option('--full_table', - dest='full_table', - help='Print full tables.', - action='store_true', - default=True) - parser.add_option('--exact_remote', - dest='exact_remote', - help='Run tests on the exact remote.', - action='store_true', - default=False) - parser.add_option('--fit_string', - dest='fit_string', - help='Fit strings to fixed sizes.', - action='store_true', - default=False) - parser.add_option('--rerun', - dest='rerun', - help='Re-run regardless of cache hit.', - action='store_true', - default=False) - parser.add_option('--rerun_if_failed', - dest='rerun_if_failed', - help='Re-run if previous run was a failure.', - action='store_true', - default=False) - parser.add_option('--no_lock', - dest='no_lock', - help='Do not lock the machine before running the tests.', - action='store_true', - default=False) - l.LogOutput(' '.join(argv)) - [options, args] = parser.parse_args(argv) - - if options.remote is None: - l.LogError('No remote machine specified.') - parser.print_help() - return 1 - - if not options.board: - l.LogError('No board specified.') - parser.print_help() - return 1 - - remote = options.remote - tests = options.tests - board = options.board - exact_remote = options.exact_remote - iterations = int(options.iterations) - - autotests = CreateAutotestListFromString(tests, iterations) - - main_chromeos_root = options.chromeos_root - images = args[1:] - fit_string = options.fit_string - full_table = options.full_table - rerun = options.rerun - rerun_if_failed = options.rerun_if_failed - - MachineManagerSingleton().no_lock = options.no_lock - - # Now try creating all the Autotests - autotest_runs = CreateAutotestRuns(images, autotests, remote, board, - exact_remote, rerun, rerun_if_failed, - main_chromeos_root) - - try: - # At this point we have all the autotest runs. - for machine in remote.split(','): - MachineManagerSingleton().AddMachine(machine) - - retval = RunAutotestRunsInParallel(autotest_runs) - if retval: - return retval - - # Now print tables - ProduceTables(autotest_runs, full_table, fit_string) - finally: - # not sure why this isn't called at the end normally... - MachineManagerSingleton().__del__() - - return 0 - - -if __name__ == '__main__': - sys.exit(Main(sys.argv)) diff --git a/deprecated/crb/machine_manager_singleton.py b/deprecated/crb/machine_manager_singleton.py deleted file mode 100644 index 6ffe9684..00000000 --- a/deprecated/crb/machine_manager_singleton.py +++ /dev/null @@ -1,153 +0,0 @@ -import image_chromeos -import lock_machine -import sys -import threading -import time -from cros_utils import command_executer -from cros_utils import logger - - -class CrosMachine(object): - - def __init__(self, name): - self.name = name - self.image = None - self.checksum = None - self.locked = False - self.released_time = time.time() - self.autotest_run = None - - def __str__(self): - l = [] - l.append(self.name) - l.append(str(self.image)) - l.append(str(self.checksum)) - l.append(str(self.locked)) - l.append(str(self.released_time)) - return ', '.join(l) - - -class MachineManagerSingleton(object): - _instance = None - _lock = threading.RLock() - _all_machines = [] - _machines = [] - image_lock = threading.Lock() - num_reimages = 0 - chromeos_root = None - no_lock = False - - def __new__(cls, *args, **kwargs): - with cls._lock: - if not cls._instance: - cls._instance = super(MachineManagerSingleton, cls).__new__(cls, *args, - **kwargs) - return cls._instance - - def TryToLockMachine(self, cros_machine): - with self._lock: - assert cros_machine, "Machine can't be None" - for m in self._machines: - assert m.name != cros_machine.name, ('Tried to double-lock %s' % - cros_machine.name) - if self.no_lock: - locked = True - else: - locked = lock_machine.Machine(cros_machine.name).Lock(True, sys.argv[0]) - if locked: - ce = command_executer.GetCommandExecuter() - command = 'cat %s' % image_chromeos.checksum_file - ret, out, err = ce.CrosRunCommandWOutput( - command, - chromeos_root=self.chromeos_root, - machine=cros_machine.name) - if ret == 0: - cros_machine.checksum = out.strip() - self._machines.append(cros_machine) - else: - logger.GetLogger().LogOutput("Warning: Couldn't lock: %s" % - cros_machine.name) - - # This is called from single threaded mode. - def AddMachine(self, machine_name): - with self._lock: - for m in self._all_machines: - assert m.name != machine_name, 'Tried to double-add %s' % machine_name - self._all_machines.append(CrosMachine(machine_name)) - - def AcquireMachine(self, image_checksum): - with self._lock: - # Lazily external lock machines - if not self._machines: - for m in self._all_machines: - self.TryToLockMachine(m) - assert self._machines, ('Could not lock any machine in %s' % - self._all_machines) - - ### for m in self._machines: - ### if (m.locked and time.time() - m.released_time < 10 and - ### m.checksum == image_checksum): - ### return None - for m in [machine for machine in self._machines if not machine.locked]: - if m.checksum == image_checksum: - m.locked = True - m.autotest_run = threading.current_thread() - return m - for m in [machine for machine in self._machines if not machine.locked]: - if not m.checksum: - m.locked = True - m.autotest_run = threading.current_thread() - return m - for m in [machine for machine in self._machines if not machine.locked]: - if time.time() - m.released_time > 20: - m.locked = True - m.autotest_run = threading.current_thread() - return m - return None - - def ReleaseMachine(self, machine): - with self._lock: - for m in self._machines: - if machine.name == m.name: - assert m.locked == True, 'Tried to double-release %s' % m.name - m.released_time = time.time() - m.locked = False - m.status = 'Available' - break - - def __del__(self): - with self._lock: - # Unlock all machines. - for m in self._machines: - if not self.no_lock: - assert lock_machine.Machine(m.name).Unlock(True) == True, ( - "Couldn't unlock machine: %s" % m.name) - - def __str__(self): - with self._lock: - l = ['MachineManager Status:'] - for m in self._machines: - l.append(str(m)) - return '\n'.join(l) - - def AsString(self): - with self._lock: - stringify_fmt = '%-30s %-10s %-4s %-25s %-32s' - header = stringify_fmt % ('Machine', 'Thread', 'Lock', 'Status', - 'Checksum') - table = [header] - for m in self._machines: - if m.autotest_run: - autotest_name = m.autotest_run.name - autotest_status = m.autotest_run.status - else: - autotest_name = '' - autotest_status = '' - - try: - machine_string = stringify_fmt % (m.name, autotest_name, m.locked, - autotest_status, m.checksum) - except: - machine_string = '' - table.append(machine_string) - return 'Machine Status:\n%s' % '\n'.join(table) diff --git a/deprecated/crb/table_formatter.py b/deprecated/crb/table_formatter.py deleted file mode 100644 index b8e25d5f..00000000 --- a/deprecated/crb/table_formatter.py +++ /dev/null @@ -1,258 +0,0 @@ -import numpy -import re - - -def IsFloat(text): - if text is None: - return False - try: - float(text) - return True - except ValueError: - return False - - -def RemoveTrailingZeros(x): - ret = x - ret = re.sub('\.0*$', '', ret) - ret = re.sub('(\.[1-9]*)0+$', '\\1', ret) - return ret - - -def HumanizeFloat(x, n=2): - if not IsFloat(x): - return x - digits = re.findall('[0-9.]', str(x)) - decimal_found = False - ret = '' - sig_figs = 0 - for digit in digits: - if digit == '.': - decimal_found = True - elif sig_figs != 0 or digit != '0': - sig_figs += 1 - if decimal_found and sig_figs >= n: - break - ret += digit - return ret - - -def GetNSigFigs(x, n=2): - if not IsFloat(x): - return x - my_fmt = '%.' + str(n - 1) + 'e' - x_string = my_fmt % x - f = float(x_string) - return f - - -def GetFormattedPercent(baseline, other, bad_result='--'): - result = '%8s' % GetPercent(baseline, other, bad_result) - return result - - -def GetPercent(baseline, other, bad_result='--'): - result = bad_result - if IsFloat(baseline) and IsFloat(other): - try: - pct = (float(other) / float(baseline) - 1) * 100 - result = '%+1.1f' % pct - except ZeroDivisionError: - pass - return result - - -def FitString(text, length): - if len(text) == length: - return text - elif len(text) > length: - return text[-length:] - else: - fmt = '%%%ds' % length - return fmt % text - - -class TableFormatter(object): - - def __init__(self): - self.d = '\t' - self.bad_result = 'x' - - def GetTablePercents(self, table): - # Assumes table is not transposed. - pct_table = [] - - pct_table.append(table[0]) - for i in range(1, len(table)): - row = [] - row.append(table[i][0]) - for j in range(1, len(table[0])): - c = table[i][j] - b = table[i][1] - p = GetPercent(b, c, self.bad_result) - row.append(p) - pct_table.append(row) - return pct_table - - def FormatFloat(self, c, max_length=8): - if not IsFloat(c): - return c - f = float(c) - ret = HumanizeFloat(f, 4) - ret = RemoveTrailingZeros(ret) - if len(ret) > max_length: - ret = '%1.1ef' % f - return ret - - def TransposeTable(self, table): - transposed_table = [] - for i in range(len(table[0])): - row = [] - for j in range(len(table)): - row.append(table[j][i]) - transposed_table.append(row) - return transposed_table - - def GetTableLabels(self, table): - ret = '' - header = table[0] - for i in range(1, len(header)): - ret += '%d: %s\n' % (i, header[i]) - return ret - - def GetFormattedTable(self, - table, - transposed=False, - first_column_width=30, - column_width=14, - percents_only=True, - fit_string=True): - o = '' - pct_table = self.GetTablePercents(table) - if transposed == True: - table = self.TransposeTable(table) - pct_table = self.TransposeTable(table) - - for i in range(0, len(table)): - for j in range(len(table[0])): - if j == 0: - width = first_column_width - else: - width = column_width - - c = table[i][j] - p = pct_table[i][j] - - # Replace labels with numbers: 0... n - if IsFloat(c): - c = self.FormatFloat(c) - - if IsFloat(p) and not percents_only: - p = '%s%%' % p - - # Print percent values side by side. - if j != 0: - if percents_only: - c = '%s' % p - else: - c = '%s (%s)' % (c, p) - - if i == 0 and j != 0: - c = str(j) - - if fit_string: - o += FitString(c, width) + self.d - else: - o += c + self.d - o += '\n' - return o - - def GetGroups(self, table): - labels = table[0] - groups = [] - group_dict = {} - for i in range(1, len(labels)): - label = labels[i] - stripped_label = self.GetStrippedLabel(label) - if stripped_label not in group_dict: - group_dict[stripped_label] = len(groups) - groups.append([]) - groups[group_dict[stripped_label]].append(i) - return groups - - def GetSummaryTableValues(self, table): - # First get the groups - groups = self.GetGroups(table) - - summary_table = [] - - labels = table[0] - - summary_labels = ['Summary Table'] - for group in groups: - label = labels[group[0]] - stripped_label = self.GetStrippedLabel(label) - group_label = '%s (%d runs)' % (stripped_label, len(group)) - summary_labels.append(group_label) - summary_table.append(summary_labels) - - for i in range(1, len(table)): - row = table[i] - summary_row = [row[0]] - for group in groups: - group_runs = [] - for index in group: - group_runs.append(row[index]) - group_run = self.AggregateResults(group_runs) - summary_row.append(group_run) - summary_table.append(summary_row) - - return summary_table - - # Drop N% slowest and M% fastest numbers, and return arithmean of - # the remaining. - @staticmethod - def AverageWithDrops(numbers, slow_percent=20, fast_percent=20): - sorted_numbers = list(numbers) - sorted_numbers.sort() - num_slow = int(slow_percent / 100.0 * len(sorted_numbers)) - num_fast = int(fast_percent / 100.0 * len(sorted_numbers)) - sorted_numbers = sorted_numbers[num_slow:] - if num_fast: - sorted_numbers = sorted_numbers[:-num_fast] - return numpy.average(sorted_numbers) - - @staticmethod - def AggregateResults(group_results): - ret = '' - if not group_results: - return ret - all_floats = True - all_passes = True - all_fails = True - for group_result in group_results: - if not IsFloat(group_result): - all_floats = False - if group_result != 'PASSED': - all_passes = False - if group_result != 'FAILED': - all_fails = False - if all_floats == True: - float_results = [float(v) for v in group_results] - ret = '%f' % TableFormatter.AverageWithDrops(float_results) - # Add this line for standard deviation. - ### ret += " %f" % numpy.std(float_results) - elif all_passes == True: - ret = 'ALL_PASS' - elif all_fails == True: - ret = 'ALL_FAILS' - return ret - - @staticmethod - def GetStrippedLabel(label): - return re.sub('\s*\S+:\S+\s*', '', label) -### return re.sub("\s*remote:\S*\s*i:\d+$", "", label) - - @staticmethod - def GetLabelWithIteration(label, iteration): - return '%s i:%d' % (label, iteration) diff --git a/deprecated/cros_login.py b/deprecated/cros_login.py deleted file mode 100755 index 06ff8ff0..00000000 --- a/deprecated/cros_login.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2010~2015 Google Inc. All Rights Reserved. -"""Script to get past the login screen of ChromeOS.""" - -from __future__ import print_function - -import argparse -import os -import sys -import tempfile - -from cros_utils import command_executer - -LOGIN_PROMPT_VISIBLE_MAGIC_FILE = '/tmp/uptime-login-prompt-visible' -LOGGED_IN_MAGIC_FILE = '/var/run/state/logged-in' - -script_header = """ -import os -import autox -import time -""" - -wait_for_login_screen = """ - -while True: - print 'Waiting for login screen to appear...' - if os.path.isfile('%s'): - break - time.sleep(1) - print 'Done' - -time.sleep(20) -""" % LOGIN_PROMPT_VISIBLE_MAGIC_FILE - -do_login = """ -xauth_filename = '/home/chronos/.Xauthority' -os.environ.setdefault('XAUTHORITY', xauth_filename) -os.environ.setdefault('DISPLAY', ':0.0') - -print 'Now sending the hotkeys for logging in.' -ax = autox.AutoX() -# navigate to login screen -ax.send_hotkey('Ctrl+Shift+q') -ax.send_hotkey('Ctrl+Alt+l') -# escape out of any login screen menus (e.g., the network select menu) -time.sleep(2) -ax.send_hotkey('Escape') -time.sleep(2) -ax.send_hotkey('Tab') -time.sleep(0.5) -ax.send_hotkey('Tab') -time.sleep(0.5) -ax.send_hotkey('Tab') -time.sleep(0.5) -ax.send_hotkey('Tab') -time.sleep(0.5) -ax.send_hotkey('Return') -print 'Waiting for Chrome to appear...' -while True: - if os.path.isfile('%s'): - break - time.sleep(1) -print 'Done' -""" % LOGGED_IN_MAGIC_FILE - - -def RestartUI(remote, chromeos_root, login=True): - chromeos_root = os.path.expanduser(chromeos_root) - ce = command_executer.GetCommandExecuter() - # First, restart ui. - command = 'rm -rf %s && restart ui' % LOGIN_PROMPT_VISIBLE_MAGIC_FILE - ce.CrosRunCommand(command, machine=remote, chromeos_root=chromeos_root) - host_login_script = tempfile.mktemp() - device_login_script = '/tmp/login.py' - login_script_list = [script_header, wait_for_login_screen] - if login: - login_script_list.append(do_login) - - full_login_script_contents = '\n'.join(login_script_list) - - with open(host_login_script, 'w') as f: - f.write(full_login_script_contents) - ce.CopyFiles( - host_login_script, - device_login_script, - dest_machine=remote, - chromeos_root=chromeos_root, - recursive=False, - dest_cros=True) - ret = ce.CrosRunCommand( - 'python %s' % device_login_script, - chromeos_root=chromeos_root, - machine=remote) - if os.path.exists(host_login_script): - os.remove(host_login_script) - return ret - - -def Main(argv): - """The main function.""" - parser = argparse.ArgumentParser() - parser.add_argument( - '-r', '--remote', dest='remote', help='The remote ChromeOS box.') - parser.add_argument( - '-c', '--chromeos_root', dest='chromeos_root', help='The ChromeOS root.') - - options = parser.parse_args(argv) - - return RestartUI(options.remote, options.chromeos_root) - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/cwp/bartlett/app.yaml b/deprecated/cwp/bartlett/app.yaml deleted file mode 100644 index 60010f70..00000000 --- a/deprecated/cwp/bartlett/app.yaml +++ /dev/null @@ -1,22 +0,0 @@ -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/deprecated/cwp/bartlett/server.py b/deprecated/cwp/bartlett/server.py deleted file mode 100755 index 8fb7d61e..00000000 --- a/deprecated/cwp/bartlett/server.py +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/python2 -# 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/deprecated/cwp/bartlett/static/favicon.ico b/deprecated/cwp/bartlett/static/favicon.ico deleted file mode 100644 index 19b58c2e..00000000 Binary files a/deprecated/cwp/bartlett/static/favicon.ico and /dev/null differ diff --git a/deprecated/cwp/bartlett/test/server_tester.py b/deprecated/cwp/bartlett/test/server_tester.py deleted file mode 100644 index 585da43a..00000000 --- a/deprecated/cwp/bartlett/test/server_tester.py +++ /dev/null @@ -1,101 +0,0 @@ -# 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/deprecated/cwp/bartlett/update_appengine_server b/deprecated/cwp/bartlett/update_appengine_server deleted file mode 100755 index f3812057..00000000 --- a/deprecated/cwp/bartlett/update_appengine_server +++ /dev/null @@ -1 +0,0 @@ -appcfg.py --oauth2 update . diff --git a/deprecated/cwp/demo_pipeline.sh b/deprecated/cwp/demo_pipeline.sh deleted file mode 100644 index d45c5c44..00000000 --- a/deprecated/cwp/demo_pipeline.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/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/deprecated/cwp/interpreter/app_engine_pull.py b/deprecated/cwp/interpreter/app_engine_pull.py deleted file mode 100644 index d092e2a3..00000000 --- a/deprecated/cwp/interpreter/app_engine_pull.py +++ /dev/null @@ -1,253 +0,0 @@ -# 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/deprecated/cwp/interpreter/symbolizer.py b/deprecated/cwp/interpreter/symbolizer.py deleted file mode 100644 index 4ece480d..00000000 --- a/deprecated/cwp/interpreter/symbolizer.py +++ /dev/null @@ -1,129 +0,0 @@ -# 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/deprecated/cwp/performance/experiment_gen.py b/deprecated/cwp/performance/experiment_gen.py deleted file mode 100644 index a12da2c5..00000000 --- a/deprecated/cwp/performance/experiment_gen.py +++ /dev/null @@ -1,138 +0,0 @@ -# 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/deprecated/dejagnu/__init__.py b/deprecated/dejagnu/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/deprecated/dejagnu/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deprecated/dejagnu/boards/chromeos-machine.exp b/deprecated/dejagnu/boards/chromeos-machine.exp deleted file mode 100644 index b168b677..00000000 --- a/deprecated/dejagnu/boards/chromeos-machine.exp +++ /dev/null @@ -1,13 +0,0 @@ -# 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/deprecated/dejagnu/boards/gdb.exp.in b/deprecated/dejagnu/boards/gdb.exp.in deleted file mode 100644 index e4bbab39..00000000 --- a/deprecated/dejagnu/boards/gdb.exp.in +++ /dev/null @@ -1,133 +0,0 @@ -# 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/deprecated/dejagnu/boards/gdbserver.sh.in b/deprecated/dejagnu/boards/gdbserver.sh.in deleted file mode 100644 index b74c685c..00000000 --- a/deprecated/dejagnu/boards/gdbserver.sh.in +++ /dev/null @@ -1,12 +0,0 @@ -#!/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/deprecated/dejagnu/chromeos.exp.in b/deprecated/dejagnu/chromeos.exp.in deleted file mode 100644 index 02fc3af2..00000000 --- a/deprecated/dejagnu/chromeos.exp.in +++ /dev/null @@ -1,175 +0,0 @@ -# -# 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/deprecated/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi b/deprecated/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi deleted file mode 100644 index e94a7905..00000000 --- a/deprecated/dejagnu/gdb_baseline/armv7a-cros-linux-gnueabi +++ /dev/null @@ -1,19079 +0,0 @@ -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; call 17 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tc -PASS: gdb.base/structs.exp: return foo; return 1 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 3 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 3 structs-tc -PASS: gdb.base/structs.exp: return foo; return 3 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 3 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 3 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 3 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 3 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 3 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 4 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 4 structs-tc -PASS: gdb.base/structs.exp: return foo; return 4 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 4 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 4 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 4 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 4 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 4 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 5 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 5 structs-tc -PASS: gdb.base/structs.exp: return foo; return 5 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 5 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 5 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 5 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 5 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 5 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 5 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 6 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 6 structs-tc -PASS: gdb.base/structs.exp: return foo; return 6 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 6 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 6 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 6 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 6 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 6 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 6 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 7 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 7 structs-tc -PASS: gdb.base/structs.exp: return foo; return 7 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 7 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 7 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 7 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 7 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 7 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 7 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 8 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 8 structs-tc -PASS: gdb.base/structs.exp: return foo; return 8 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 8 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 8 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 8 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 8 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 8 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 8 structs-tc -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: ptype foo1; structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 1 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-ts -PASS: gdb.base/structs.exp: return foo; return 1 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 1 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ts -PASS: gdb.base/structs.exp: return foo; return 2 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 3 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 3 structs-ts -PASS: gdb.base/structs.exp: return foo; return 3 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 3 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 3 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 3 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 3 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 3 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 4 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 4 structs-ts -PASS: gdb.base/structs.exp: return foo; return 4 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 4 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 4 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 4 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 4 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 4 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-ts -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: ptype foo1; structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 1 structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-ti -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-ti -PASS: gdb.base/structs.exp: return foo; return 1 structs-ti -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-ti -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-ti -PASS: gdb.base/structs.exp: finish foo; return 1 structs-ti -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ti -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ti -PASS: gdb.base/structs.exp: return foo; return 2 structs-ti -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ti -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ti -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ti -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti -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: ptype foo1; structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tl -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tl -PASS: gdb.base/structs.exp: return foo; return 1 structs-tl -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tl -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tl -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tl -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tl -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tl -PASS: gdb.base/structs.exp: return foo; return 2 structs-tl -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tl -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tl -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tl -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl -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: ptype foo1; structs-tll -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tll -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tll -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tll -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tll -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tll -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tll -PASS: gdb.base/structs.exp: return foo; return 1 structs-tll -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tll -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tll -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tll -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tll -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tll -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tll -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: ptype foo1; structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tf -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tf -PASS: gdb.base/structs.exp: return foo; return 1 structs-tf -FAIL: gdb.base/structs.exp: value foo returned; return 1 structs-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tf -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tf -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tf -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf -FAIL: gdb.base/structs.exp: value foo returned; return 2 structs-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf -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: ptype foo1; structs-td -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-td -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-td -PASS: gdb.base/structs.exp: p/c L; call 1 structs-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-td -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-td -PASS: gdb.base/structs.exp: return foo; return 1 structs-td -FAIL: gdb.base/structs.exp: value foo returned; return 1 structs-td -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-td -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-td -PASS: gdb.base/structs.exp: finish foo; return 1 structs-td -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-td -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-td -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: ptype foo1; structs-tld -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tld -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tld -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tld -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tld -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tld -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tld -PASS: gdb.base/structs.exp: return foo; return 1 structs-tld -FAIL: gdb.base/structs.exp: value foo returned; return 1 structs-tld -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tld -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tld -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tld -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tld -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tld -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: ptype foo2; structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 7 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 7 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 7 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 8 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 8 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 8 structs-ts-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts-tc -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: ptype foo2; structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-ti-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti-tc -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: ptype foo2; structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tl-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl-tc -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: ptype foo2; structs-tll-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tll-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tll-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tll-tc -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: ptype foo2; structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tf-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-tc -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: ptype foo2; structs-td-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td-tc -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: ptype foo2; structs-tld-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tld-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tld-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tld-tc -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: ptype foo2; structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tc-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ts -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: ptype foo2; structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ti -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: ptype foo2; structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-tl -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: ptype foo2; structs-tc-tll -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tll -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tll -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: ptype foo2; structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-tf -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: ptype foo2; structs-tc-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-td -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: ptype foo2; structs-tc-tld -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tld -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tld -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: ptype foo2; structs-td-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-td-tf -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-td-tf -PASS: gdb.base/structs.exp: return foo; return 2 structs-td-tf -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-td-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-td-tf -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-td-tf -PASS: gdb.base/structs.exp: finish foo; return 2 structs-td-tf -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-td-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-td-tf -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: ptype foo2; structs-tf-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf-td -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf-td -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf-td -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-td -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-td -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf-td -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf-td -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf-td -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf-td -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-td -Running ./gdb.base/subst.exp ... -PASS: gdb.base/subst.exp: deactivate GDB's confirmation interface -PASS: gdb.base/subst.exp: show substitute-path, no rule entered yet -PASS: gdb.base/subst.exp: show substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: show substitute-path, too many arguments -PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path, too many arguments -PASS: gdb.base/subst.exp: set substitute-path, too many arguments -PASS: gdb.base/subst.exp: set substitute-path, too few arguments -PASS: gdb.base/subst.exp: set substitute-path, first argument is empty string -PASS: gdb.base/subst.exp: add from -> to substitution rule -PASS: gdb.base/subst.exp: add from1 -> to1 substitution rule -PASS: gdb.base/subst.exp: add source -> destination substitution rule -PASS: gdb.base/subst.exp: add depuis -> vers substitution rule -PASS: gdb.base/subst.exp: add substitution rule to empty string -PASS: gdb.base/subst.exp: show substitute-path after all paths added -PASS: gdb.base/subst.exp: show substitute-path from, after all paths added -PASS: gdb.base/subst.exp: show substitute-path depuis, after all paths added -PASS: gdb.base/subst.exp: show substitute-path garbage, after all paths added -PASS: gdb.base/subst.exp: unset substitute-path from -PASS: gdb.base/subst.exp: show substitute-path from, after unsetting it -PASS: gdb.base/subst.exp: show substitute-path after from rule removed -PASS: gdb.base/subst.exp: unset substitute-path from after the rule was removed -PASS: gdb.base/subst.exp: unset substitute-path depuis (middle of list) -PASS: gdb.base/subst.exp: show substitute-path after depuis rule removed -PASS: gdb.base/subst.exp: unset substitute-path empty (end of list) -PASS: gdb.base/subst.exp: show substitute-path after empty rule removed -PASS: gdb.base/subst.exp: remove all remaining substitution rules -PASS: gdb.base/subst.exp: show substitute-path after all remaining rules removed -Running ./gdb.base/symbol-without-target_section.exp ... -PASS: gdb.base/symbol-without-target_section.exp: add-symbol-file -PASS: gdb.base/symbol-without-target_section.exp: list main -PASS: gdb.base/symbol-without-target_section.exp: print symbol_without_target_section -Running ./gdb.base/term.exp ... -Running ./gdb.base/testenv.exp ... -Running ./gdb.base/trace-commands.exp ... -PASS: gdb.base/trace-commands.exp: show trace-commands says off -PASS: gdb.base/trace-commands.exp: source -v -PASS: gdb.base/trace-commands.exp: set trace-commands -PASS: gdb.base/trace-commands.exp: show trace-commands says on -PASS: gdb.base/trace-commands.exp: simple trace-commands test -PASS: gdb.base/trace-commands.exp: nested trace-commands test -PASS: gdb.base/trace-commands.exp: define user command -PASS: gdb.base/trace-commands.exp: nested trace-commands test with source -PASS: gdb.base/trace-commands.exp: depth resets on error part 1 -PASS: gdb.base/trace-commands.exp: depth resets on error part 2 -Running ./gdb.base/tui-layout.exp ... -PASS: gdb.base/tui-layout.exp: layout asm -Running ./gdb.base/twice.exp ... -PASS: gdb.base/twice.exp: step -Running ./gdb.base/type-opaque.exp ... -FAIL: gdb.base/type-opaque.exp: opaque struct type resolving -PASS: gdb.base/type-opaque.exp: empty struct type resolving -PASS: gdb.base/type-opaque.exp: filled struct type resolving -FAIL: gdb.base/type-opaque.exp: opaque union type resolving -PASS: gdb.base/type-opaque.exp: empty union type resolving -PASS: gdb.base/type-opaque.exp: filled union type resolving -Running ./gdb.base/ui-redirect.exp ... -PASS: gdb.base/ui-redirect.exp: commands -PASS: gdb.base/ui-redirect.exp: print 1 -PASS: gdb.base/ui-redirect.exp: end -PASS: gdb.base/ui-redirect.exp: set logging file /dev/null -PASS: gdb.base/ui-redirect.exp: set logging on -PASS: gdb.base/ui-redirect.exp: save breakpoints /dev/null -PASS: gdb.base/ui-redirect.exp: set logging off -PASS: gdb.base/ui-redirect.exp: help -Running ./gdb.base/unload.exp ... -PASS: gdb.base/unload.exp: pending breakpoint info before run -FAIL: gdb.base/unload.exp: running program (the program exited) -FAIL: gdb.base/unload.exp: pending breakpoint info on first run at shrfunc1 -FAIL: gdb.base/unload.exp: continuing to unloaded libfile (the program is no longer running) -FAIL: gdb.base/unload.exp: print y from libfile -FAIL: gdb.base/unload.exp: rerun to shared library breakpoint -FAIL: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc1 -FAIL: gdb.base/unload.exp: continuing to unloaded libfile (the program exited) -FAIL: gdb.base/unload.exp: continue to shrfunc2 (the program is no longer running) -FAIL: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc2 -FAIL: gdb.base/unload.exp: continuing to unloaded libfile2 (the program is no longer running) -FAIL: gdb.base/unload.exp: print y from libfile2 -Running ./gdb.base/until.exp ... -PASS: gdb.base/until.exp: until line number -PASS: gdb.base/until.exp: malformed until -PASS: gdb.base/until.exp: until factorial, recursive function -PASS: gdb.base/until.exp: until func, not called by current frame -Running ./gdb.base/unwindonsignal.exp ... -Running ./gdb.base/valgrind-db-attach.exp ... -Running ./gdb.base/valgrind-infcall.exp ... -Running ./gdb.base/value-double-free.exp ... -FAIL: gdb.base/value-double-free.exp: watch var -PASS: gdb.base/value-double-free.exp: continue -PASS: gdb.base/value-double-free.exp: print empty() -PASS: gdb.base/value-double-free.exp: help help -Running ./gdb.base/varargs.exp ... -PASS: gdb.base/varargs.exp: set print sevenbit-strings -PASS: gdb.base/varargs.exp: set print address off -PASS: gdb.base/varargs.exp: set width 0 -Running ./gdb.base/volatile.exp ... -PASS: gdb.base/volatile.exp: continue to marker1 -PASS: gdb.base/volatile.exp: up from marker1 -PASS: gdb.base/volatile.exp: ptype vox -PASS: gdb.base/volatile.exp: ptype victuals -PASS: gdb.base/volatile.exp: ptype vixen -PASS: gdb.base/volatile.exp: ptype vitriol -PASS: gdb.base/volatile.exp: ptype vellum -PASS: gdb.base/volatile.exp: ptype valve -PASS: gdb.base/volatile.exp: ptype vacuity -PASS: gdb.base/volatile.exp: ptype vertigo -PASS: gdb.base/volatile.exp: ptype vampire -PASS: gdb.base/volatile.exp: ptype viper -PASS: gdb.base/volatile.exp: ptype vigour -PASS: gdb.base/volatile.exp: ptype vapour -PASS: gdb.base/volatile.exp: ptype ventricle -PASS: gdb.base/volatile.exp: ptype vigintillion -PASS: gdb.base/volatile.exp: ptype vocation -PASS: gdb.base/volatile.exp: ptype veracity -PASS: gdb.base/volatile.exp: ptype vapidity -PASS: gdb.base/volatile.exp: ptype velocity -PASS: gdb.base/volatile.exp: ptype veneer -PASS: gdb.base/volatile.exp: ptype video -PASS: gdb.base/volatile.exp: ptype vacuum -PASS: gdb.base/volatile.exp: ptype veniality -PASS: gdb.base/volatile.exp: ptype vitality -PASS: gdb.base/volatile.exp: ptype voracity -PASS: gdb.base/volatile.exp: ptype victor -PASS: gdb.base/volatile.exp: ptype vicar -PASS: gdb.base/volatile.exp: ptype victory -PASS: gdb.base/volatile.exp: ptype vicarage -PASS: gdb.base/volatile.exp: ptype vein -PASS: gdb.base/volatile.exp: ptype vogue -PASS: gdb.base/volatile.exp: ptype cavern -PASS: gdb.base/volatile.exp: ptype coverlet -PASS: gdb.base/volatile.exp: ptype caveat -PASS: gdb.base/volatile.exp: ptype covenant -PASS: gdb.base/volatile.exp: ptype vizier -PASS: gdb.base/volatile.exp: ptype vanadium -PASS: gdb.base/volatile.exp: ptype vane -PASS: gdb.base/volatile.exp: ptype veldt -PASS: gdb.base/volatile.exp: ptype cove -PASS: gdb.base/volatile.exp: ptype cavity -PASS: gdb.base/volatile.exp: ptype vagus -PASS: gdb.base/volatile.exp: ptype vagrancy -PASS: gdb.base/volatile.exp: ptype vagary -PASS: gdb.base/volatile.exp: ptype vendor -PASS: gdb.base/volatile.exp: ptype qux2 -Running ./gdb.base/watch-cond.exp ... -PASS: gdb.base/watch-cond.exp: set write watchpoint on global variable, local condition -PASS: gdb.base/watch-cond.exp: watchpoint with global expression, local condition evaluates in correct frame -PASS: gdb.base/watch-cond.exp: set write watchpoint on local variable, local condition -PASS: gdb.base/watch-cond.exp: watchpoint with local expression, local condition evaluates in correct frame -PASS: gdb.base/watch-cond.exp: set write watchpoint on global2 variable -PASS: gdb.base/watch-cond.exp: watchpoint on global2 variable triggers -PASS: gdb.base/watch-cond.exp: condition of watchpoint 2 changes -PASS: gdb.base/watch-cond.exp: watchpoint stops with untestable local expression -Running ./gdb.base/watch-cond-infcall.exp ... -PASS: gdb.base/watch-cond-infcall.exp: sw: watch var if return_1 () -PASS: gdb.base/watch-cond-infcall.exp: sw: continue -Running ./gdb.base/watch-non-mem.exp ... -PASS: gdb.base/watch-non-mem.exp: set write watchpoint on $pc -PASS: gdb.base/watch-non-mem.exp: watchpoint on $pc works -Running ./gdb.base/watchpoint-cond-gone.exp ... -PASS: gdb.base/watchpoint-cond-gone.exp: set can-use-hw-watchpoints 0 -PASS: gdb.base/watchpoint-cond-gone.exp: continue to breakpoint: Place to set the watchpoint -PASS: gdb.base/watchpoint-cond-gone.exp: Place the watchpoint -PASS: gdb.base/watchpoint-cond-gone.exp: Catch the no longer valid watchpoint -Running ./gdb.base/watchpoint-delete.exp ... -PASS: gdb.base/watchpoint-delete.exp: set can-use-hw-watchpoints 0 -PASS: gdb.base/watchpoint-delete.exp: continue to breakpoint: break-here -PASS: gdb.base/watchpoint-delete.exp: watch x -PASS: gdb.base/watchpoint-delete.exp: delete $bpnum -Running ./gdb.base/watchpoint.exp ... -PASS: gdb.base/watchpoint.exp: disable fast watches -PASS: gdb.base/watchpoint.exp: show disable fast watches -PASS: gdb.base/watchpoint.exp: set slow conditional watch -PASS: gdb.base/watchpoint.exp: trigger slow conditional watch -PASS: gdb.base/watchpoint.exp: delete watch ival3 -PASS: gdb.base/watchpoint.exp: set slow condition watch w/thread -PASS: gdb.base/watchpoint.exp: delete watch w/condition and thread -PASS: gdb.base/watchpoint.exp: rwatch disallowed when can-set-hw-watchpoints cleared -PASS: gdb.base/watchpoint.exp: set breakpoint at marker1 -PASS: gdb.base/watchpoint.exp: set breakpoint at marker2 -PASS: gdb.base/watchpoint.exp: info break in watchpoint.exp -PASS: gdb.base/watchpoint.exp: set watchpoint on ival3 -PASS: gdb.base/watchpoint.exp: watchpoint found in watchpoint/breakpoint table -PASS: gdb.base/watchpoint.exp: disable watchpoint -PASS: gdb.base/watchpoint.exp: disable watchpoint in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: run to marker1 in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: enable watchpoint -PASS: gdb.base/watchpoint.exp: break func1 -PASS: gdb.base/watchpoint.exp: set $func1_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: continue to breakpoint at func1 -PASS: gdb.base/watchpoint.exp: watchpoint hit, first time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 1 -PASS: gdb.base/watchpoint.exp: delete $func1_breakpoint_number -PASS: gdb.base/watchpoint.exp: watchpoint hit, second time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 2 -PASS: gdb.base/watchpoint.exp: watchpoint hit, third time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 3 -PASS: gdb.base/watchpoint.exp: watchpoint hit, fourth time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 4 -PASS: gdb.base/watchpoint.exp: watchpoint hit, fifth time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 5 -PASS: gdb.base/watchpoint.exp: continue to marker2 -PASS: gdb.base/watchpoint.exp: watchpoint disabled -FAIL: gdb.base/watchpoint.exp: setting breakpoint at exit -PASS: gdb.base/watchpoint.exp: watchpoints found in watchpoint/breakpoint table -PASS: gdb.base/watchpoint.exp: disable watchpoint in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: run to marker1 in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watchpoint enabled -PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, first time -PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, second time -PASS: gdb.base/watchpoint.exp: disable watchpoint #2 in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watchpoint disabled in table -PASS: gdb.base/watchpoint.exp: disabled watchpoint skipped -FAIL: gdb.base/watchpoint.exp: setting breakpoint at exit -PASS: gdb.base/watchpoint.exp: watch ival2 -PASS: gdb.base/watchpoint.exp: break func2 if 0 -PASS: gdb.base/watchpoint.exp: p $func2_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: calling function with watchpoint enabled -PASS: gdb.base/watchpoint.exp: finish from marker1 -PASS: gdb.base/watchpoint.exp: back at main from marker1 -PASS: gdb.base/watchpoint.exp: next to `for' in watchpoint.exp -PASS: gdb.base/watchpoint.exp: until to ival1 assignment -PASS: gdb.base/watchpoint.exp: until to ival3 assignment -PASS: gdb.base/watchpoint.exp: until out of loop -PASS: gdb.base/watchpoint.exp: step to ival2 assignment -PASS: gdb.base/watchpoint.exp: watch ptr1->val -PASS: gdb.base/watchpoint.exp: break marker5 -PASS: gdb.base/watchpoint.exp: Test complex watchpoint -PASS: gdb.base/watchpoint.exp: did not trigger wrong watchpoint -PASS: gdb.base/watchpoint.exp: disable in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: break marker6 -PASS: gdb.base/watchpoint.exp: continue to marker6 -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set local watch -PASS: gdb.base/watchpoint.exp: trigger local watch -PASS: gdb.base/watchpoint.exp: self-delete local watch -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set partially local watch -PASS: gdb.base/watchpoint.exp: trigger1 partially local watch -PASS: gdb.base/watchpoint.exp: trigger2 partially local watch -PASS: gdb.base/watchpoint.exp: self-delete partially local watch -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set static local watch -PASS: gdb.base/watchpoint.exp: trigger static local watch -PASS: gdb.base/watchpoint.exp: continue after trigger static local watch -PASS: gdb.base/watchpoint.exp: static local watch did not self-delete -PASS: gdb.base/watchpoint.exp: tbreak recurser -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: next past local_x initialization -PASS: gdb.base/watchpoint.exp: set local watch in recursive call -PASS: gdb.base/watchpoint.exp: trigger local watch in recursive call -PASS: gdb.base/watchpoint.exp: self-delete local watch in recursive call -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: tbreak recurser -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: next past local_x initialization -PASS: gdb.base/watchpoint.exp: set local watch in recursive call with explicit scope -PASS: gdb.base/watchpoint.exp: trigger local watch with explicit scope in recursive call -PASS: gdb.base/watchpoint.exp: self-delete local watch with explicit scope in recursive call (2) -PASS: gdb.base/watchpoint.exp: disable in test_complex_watchpoint -FAIL: gdb.base/watchpoint.exp: setting breakpoint at exit -PASS: gdb.base/watchpoint.exp: watchpoint refused to insert on nonexistent struct member -PASS: gdb.base/watchpoint.exp: watch global_ptr -PASS: gdb.base/watchpoint.exp: watch *(int *) 0 -PASS: gdb.base/watchpoint.exp: watch -location *global_ptr -PASS: gdb.base/watchpoint.exp: watch *global_ptr -PASS: gdb.base/watchpoint.exp: set $global_ptr_breakpoint_number = $bpnum -FAIL: gdb.base/watchpoint.exp: global_ptr next -FAIL: gdb.base/watchpoint.exp: next over ptr init -FAIL: gdb.base/watchpoint.exp: next over buffer set -PASS: gdb.base/watchpoint.exp: delete $global_ptr_breakpoint_number -PASS: gdb.base/watchpoint.exp: watch **global_ptr_ptr -PASS: gdb.base/watchpoint.exp: set $global_ptr_ptr_breakpoint_number = $bpnum -FAIL: gdb.base/watchpoint.exp: global_ptr_ptr next -FAIL: gdb.base/watchpoint.exp: next over global_ptr_ptr init -FAIL: gdb.base/watchpoint.exp: next over global_ptr_ptr buffer set -FAIL: gdb.base/watchpoint.exp: next over global_ptr_ptr pointer advance -PASS: gdb.base/watchpoint.exp: delete $global_ptr_ptr_breakpoint_number -PASS: gdb.base/watchpoint.exp: continue to breakpoint: second x assignment -PASS: gdb.base/watchpoint.exp: watch x -PASS: gdb.base/watchpoint.exp: next after watch x -PASS: gdb.base/watchpoint.exp: delete watch x -PASS: gdb.base/watchpoint.exp: watch buf -PASS: gdb.base/watchpoint.exp: watchpoint on buf hit -PASS: gdb.base/watchpoint.exp: delete watch buf -PASS: gdb.base/watchpoint.exp: number is constant -PASS: gdb.base/watchpoint.exp: number with cast is constant -PASS: gdb.base/watchpoint.exp: marker1 is constant -PASS: gdb.base/watchpoint.exp: watch count + 6 -PASS: gdb.base/watchpoint.exp: delete watchpoint `count + 6' -PASS: gdb.base/watchpoint.exp: watch 7 + count -PASS: gdb.base/watchpoint.exp: delete watchpoint `7 + count' -PASS: gdb.base/watchpoint.exp: watch $pc -PASS: gdb.base/watchpoint.exp: disable watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: reenable watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: watchpoint `$pc' is enabled -PASS: gdb.base/watchpoint.exp: delete watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func5 breakpoint here -PASS: gdb.base/watchpoint.exp: watch -location .x -PASS: gdb.base/watchpoint.exp: continue with watch -location -PASS: gdb.base/watchpoint.exp: delete watch -location -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func6 breakpoint here -PASS: gdb.base/watchpoint.exp: watch foo2 -PASS: gdb.base/watchpoint.exp: continue with watch foo2 -PASS: gdb.base/watchpoint.exp: delete watch foo2 -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func7 breakpoint here -PASS: gdb.base/watchpoint.exp: watch foo4 -PASS: gdb.base/watchpoint.exp: continue with watch foo4 -PASS: gdb.base/watchpoint.exp: delete watch foo4 -Running ./gdb.base/watchpoint-hw.exp ... -Running ./gdb.base/watchpoint-hw-hit-once.exp ... -Running ./gdb.base/watchpoints.exp ... -PASS: gdb.base/watchpoints.exp: watchpoint hit, first time -PASS: gdb.base/watchpoints.exp: watchpoint hit, first time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 1 -PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, second time -PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 2 -PASS: gdb.base/watchpoints.exp: watchpoint hit, second time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 2 -PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, third time -PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 3 -PASS: gdb.base/watchpoints.exp: watchpoint hit, third time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 3 -PASS: gdb.base/watchpoints.exp: watchpoint hit, fourth time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 4 -PASS: gdb.base/watchpoints.exp: watchpoint hit, fifth time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 5 -Running ./gdb.base/watchpoint-solib.exp ... -PASS: gdb.base/watchpoint-solib.exp: set pending breakpoint -FAIL: gdb.base/watchpoint-solib.exp: continue to foo (the program exited) -FAIL: gdb.base/watchpoint-solib.exp: set watchpoint on g -FAIL: gdb.base/watchpoint-solib.exp: continue to watchpoint hit (the program is no longer running) -PASS: gdb.base/watchpoint-solib.exp: rerun to main -FAIL: gdb.base/watchpoint-solib.exp: continue to foo again (the program exited) -FAIL: gdb.base/watchpoint-solib.exp: continue to watchpoint hit again (the program is no longer running) -Running ./gdb.base/watch-read.exp ... -Running ./gdb.base/watch_thread_num.exp ... -Running ./gdb.base/watch-vfork.exp ... -Running ./gdb.base/wchar.exp ... -PASS: gdb.base/wchar.exp: print narrow -PASS: gdb.base/wchar.exp: print single -PASS: gdb.base/wchar.exp: print simple -PASS: gdb.base/wchar.exp: print difficile -PASS: gdb.base/wchar.exp: print simple[2] -PASS: gdb.base/wchar.exp: print difficile[2] -PASS: gdb.base/wchar.exp: print repeat -PASS: gdb.base/wchar.exp: print repeat_p -PASS: gdb.base/wchar.exp: set print null on -PASS: gdb.base/wchar.exp: print repeat (print null on) -PASS: gdb.base/wchar.exp: set print elements 3 -PASS: gdb.base/wchar.exp: print repeat (print elements 3) -PASS: gdb.base/wchar.exp: print repeat_p (print elements 3) -Running ./gdb.base/whatis.exp ... -PASS: gdb.base/whatis.exp: whatis char -PASS: gdb.base/whatis.exp: whatis signed char -PASS: gdb.base/whatis.exp: whatis unsigned char -PASS: gdb.base/whatis.exp: whatis short -PASS: gdb.base/whatis.exp: whatis signed short -PASS: gdb.base/whatis.exp: whatis unsigned short -PASS: gdb.base/whatis.exp: whatis int -PASS: gdb.base/whatis.exp: whatis signed int -PASS: gdb.base/whatis.exp: whatis unsigned int -PASS: gdb.base/whatis.exp: whatis long -PASS: gdb.base/whatis.exp: whatis signed long -PASS: gdb.base/whatis.exp: whatis unsigned long -PASS: gdb.base/whatis.exp: whatis unsigned long long -PASS: gdb.base/whatis.exp: whatis float -PASS: gdb.base/whatis.exp: whatis double -PASS: gdb.base/whatis.exp: whatis char array -PASS: gdb.base/whatis.exp: whatis signed char array -PASS: gdb.base/whatis.exp: whatis unsigned char array -PASS: gdb.base/whatis.exp: whatis short array -PASS: gdb.base/whatis.exp: whatis signed short array -PASS: gdb.base/whatis.exp: whatis unsigned short array -PASS: gdb.base/whatis.exp: whatis int array -PASS: gdb.base/whatis.exp: whatis signed int array -PASS: gdb.base/whatis.exp: whatis unsigned int array -PASS: gdb.base/whatis.exp: whatis long array -PASS: gdb.base/whatis.exp: whatis signed long array -PASS: gdb.base/whatis.exp: whatis unsigned long array -PASS: gdb.base/whatis.exp: whatis unsigned long array -PASS: gdb.base/whatis.exp: whatis float array -PASS: gdb.base/whatis.exp: whatis double array -PASS: gdb.base/whatis.exp: whatis char pointer -PASS: gdb.base/whatis.exp: whatis signed char pointer -PASS: gdb.base/whatis.exp: whatis unsigned char pointer -PASS: gdb.base/whatis.exp: whatis short pointer -PASS: gdb.base/whatis.exp: whatis signed short pointer -PASS: gdb.base/whatis.exp: whatis unsigned short pointer -PASS: gdb.base/whatis.exp: whatis int pointer -PASS: gdb.base/whatis.exp: whatis signed int pointer -PASS: gdb.base/whatis.exp: whatis unsigned int pointer -PASS: gdb.base/whatis.exp: whatis long pointer -PASS: gdb.base/whatis.exp: whatis signed long pointer -PASS: gdb.base/whatis.exp: whatis unsigned long pointer -PASS: gdb.base/whatis.exp: whatis long long pointer -PASS: gdb.base/whatis.exp: whatis signed long long pointer -PASS: gdb.base/whatis.exp: whatis unsigned long long pointer -PASS: gdb.base/whatis.exp: whatis float pointer -PASS: gdb.base/whatis.exp: whatis double pointer -PASS: gdb.base/whatis.exp: whatis named structure -PASS: gdb.base/whatis.exp: whatis named structure using type name -PASS: gdb.base/whatis.exp: whatis unnamed structure -PASS: gdb.base/whatis.exp: whatis named union -PASS: gdb.base/whatis.exp: whatis named union using type name -PASS: gdb.base/whatis.exp: whatis unnamed union -PASS: gdb.base/whatis.exp: whatis char function -PASS: gdb.base/whatis.exp: whatis signed char function -PASS: gdb.base/whatis.exp: whatis unsigned char function -PASS: gdb.base/whatis.exp: whatis short function -PASS: gdb.base/whatis.exp: whatis signed short function -PASS: gdb.base/whatis.exp: whatis unsigned short function -PASS: gdb.base/whatis.exp: whatis int function -PASS: gdb.base/whatis.exp: whatis signed int function -PASS: gdb.base/whatis.exp: whatis unsigned int function -PASS: gdb.base/whatis.exp: whatis long function -PASS: gdb.base/whatis.exp: whatis signed long function -PASS: gdb.base/whatis.exp: whatis unsigned long function -PASS: gdb.base/whatis.exp: whatis long long function -PASS: gdb.base/whatis.exp: whatis signed long long function -PASS: gdb.base/whatis.exp: whatis unsigned long long function -PASS: gdb.base/whatis.exp: whatis float function -PASS: gdb.base/whatis.exp: whatis double function -PASS: gdb.base/whatis.exp: whatis complicated structure -PASS: gdb.base/whatis.exp: whatis complicated union -PASS: gdb.base/whatis.exp: whatis enumeration -PASS: gdb.base/whatis.exp: whatis enumeration using type name -PASS: gdb.base/whatis.exp: whatis outer structure -PASS: gdb.base/whatis.exp: whatis outer structure member -PASS: gdb.base/whatis.exp: whatis inner structure -PASS: gdb.base/whatis.exp: whatis inner structure member -PASS: gdb.base/whatis.exp: whatis inner union -PASS: gdb.base/whatis.exp: whatis inner union member -PASS: gdb.base/whatis.exp: whatis using typedef type name -PASS: gdb.base/whatis.exp: whatis applied to variable defined by typedef -PASS: gdb.base/whatis.exp: whatis applied to pointer to pointer to function -PASS: gdb.base/whatis.exp: whatis applied to const pointer to pointer to function -PASS: gdb.base/whatis.exp: whatis applied to pointer to const pointer to function -PASS: gdb.base/whatis.exp: whatis applied to pointer to function returning pointer to int -PASS: gdb.base/whatis.exp: whatis applied to pointer to pointer to function returning pointer to int -PASS: gdb.base/whatis.exp: whatis applied to pointer to function returning pointer to array -PASS: gdb.base/whatis.exp: whatis applied to pointer to function taking int,int and returning int -PASS: gdb.base/whatis.exp: whatis applied to pointer to function taking const int ptr and varargs and returning int -PASS: gdb.base/whatis.exp: whatis applied to function with types trailing 'void' -PASS: gdb.base/whatis.exp: whatis applied to function with 'void' parameter type -Running ./gdb.base/whatis-exp.exp ... -PASS: gdb.base/whatis-exp.exp: set variable x=14 -PASS: gdb.base/whatis-exp.exp: set variable y=2 -PASS: gdb.base/whatis-exp.exp: set variable z=2 -PASS: gdb.base/whatis-exp.exp: set variable w=3 -PASS: gdb.base/whatis-exp.exp: print value of x -PASS: gdb.base/whatis-exp.exp: print value of y -PASS: gdb.base/whatis-exp.exp: print value of z -PASS: gdb.base/whatis-exp.exp: print value of w -PASS: gdb.base/whatis-exp.exp: whatis value of x+y -PASS: gdb.base/whatis-exp.exp: whatis value of x-y -PASS: gdb.base/whatis-exp.exp: whatis value of x*y -PASS: gdb.base/whatis-exp.exp: whatis value of x/y -PASS: gdb.base/whatis-exp.exp: whatis value of x%y -PASS: gdb.base/whatis-exp.exp: whatis value of x=y -PASS: gdb.base/whatis-exp.exp: whatis value of x+=2 -PASS: gdb.base/whatis-exp.exp: whatis value of ++x -PASS: gdb.base/whatis-exp.exp: whatis value of --x -PASS: gdb.base/whatis-exp.exp: whatis value of x++ -PASS: gdb.base/whatis-exp.exp: whatis value of x-- -Running ./gdb.btrace/enable.exp ... -Running ./gdb.btrace/function_call_history.exp ... -Running ./gdb.btrace/instruction_history.exp ... -Running ./gdb.cell/arch.exp ... -Running ./gdb.cell/break.exp ... -Running ./gdb.cell/bt.exp ... -Running ./gdb.cell/core.exp ... -Running ./gdb.cell/data.exp ... -Running ./gdb.cell/dwarfaddr.exp ... -Running ./gdb.cell/ea-cache.exp ... -Running ./gdb.cell/ea-standalone.exp ... -Running ./gdb.cell/ea-test.exp ... -Running ./gdb.cell/fork.exp ... -Running ./gdb.cell/f-regs.exp ... -Running ./gdb.cell/gcore.exp ... -Running ./gdb.cell/mem-access.exp ... -Running ./gdb.cell/ptype.exp ... -Running ./gdb.cell/registers.exp ... -Running ./gdb.cell/sizeof.exp ... -Running ./gdb.cell/solib.exp ... -Running ./gdb.cell/solib-symbol.exp ... -Running ./gdb.cp/abstract-origin.exp ... -PASS: gdb.cp/abstract-origin.exp: continue to breakpoint: break-here -PASS: gdb.cp/abstract-origin.exp: p problem -Running ./gdb.cp/ambiguous.exp ... -Running ./gdb.cp/annota2.exp ... -Running ./gdb.cp/annota3.exp ... -Running ./gdb.cp/anon-ns.exp ... -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::doit(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::doit(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)' -Running ./gdb.cp/anon-struct.exp ... -FAIL: gdb.cp/anon-struct.exp: print type of t::t -PASS: gdb.cp/anon-struct.exp: print type of X::t2 -FAIL: gdb.cp/anon-struct.exp: print type of X::t2::t2 -FAIL: gdb.cp/anon-struct.exp: print type of t3::~t3 -Running ./gdb.cp/anon-union.exp ... -PASS: gdb.cp/anon-union.exp: set width 0 -PASS: gdb.cp/anon-union.exp: next 1 -PASS: gdb.cp/anon-union.exp: print foo 1 -PASS: gdb.cp/anon-union.exp: next 2 -PASS: gdb.cp/anon-union.exp: print foo 2 -PASS: gdb.cp/anon-union.exp: set var foo.cloth -PASS: gdb.cp/anon-union.exp: print foo 3 -PASS: gdb.cp/anon-union.exp: next 3 -PASS: gdb.cp/anon-union.exp: print foo 4 -PASS: gdb.cp/anon-union.exp: set var foo.pebble -PASS: gdb.cp/anon-union.exp: print foo 5 -PASS: gdb.cp/anon-union.exp: set var foo.qux -PASS: gdb.cp/anon-union.exp: print foo 6 -PASS: gdb.cp/anon-union.exp: set var foo.mux -PASS: gdb.cp/anon-union.exp: print foo 7 -PASS: gdb.cp/anon-union.exp: set var foo.x.rock -PASS: gdb.cp/anon-union.exp: print foo 8 -PASS: gdb.cp/anon-union.exp: set var foo.x.rock2 -PASS: gdb.cp/anon-union.exp: print foo 9 -PASS: gdb.cp/anon-union.exp: next 4 -PASS: gdb.cp/anon-union.exp: print w 1 -PASS: gdb.cp/anon-union.exp: print z 1 -PASS: gdb.cp/anon-union.exp: next 5 -PASS: gdb.cp/anon-union.exp: print w 2 -PASS: gdb.cp/anon-union.exp: print z 2 -PASS: gdb.cp/anon-union.exp: set var z -PASS: gdb.cp/anon-union.exp: print w 3 -PASS: gdb.cp/anon-union.exp: print z 3 -Running ./gdb.cp/arg-reference.exp ... -PASS: gdb.cp/arg-reference.exp: No false reference -Running ./gdb.cp/baseenum.exp ... -PASS: gdb.cp/baseenum.exp: continue to breakpoint: breakpoint 1 -PASS: gdb.cp/baseenum.exp: Print enum constant X of class A -PASS: gdb.cp/baseenum.exp: continue to breakpoint: breakpoint 2 -PASS: gdb.cp/baseenum.exp: Print enum constant X of class A in namespace N -Running ./gdb.cp/bool.exp ... -PASS: gdb.cp/bool.exp: print return_true() -PASS: gdb.cp/bool.exp: print return_false() -Running ./gdb.cp/breakpoint.exp ... -PASS: gdb.cp/breakpoint.exp: continue to C1::Nested::foo -PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method -PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method 2 -PASS: gdb.cp/breakpoint.exp: continue to breakpoint -PASS: gdb.cp/breakpoint.exp: check the member variable -PASS: gdb.cp/breakpoint.exp: continue to breakpoint -PASS: gdb.cp/breakpoint.exp: check the member variable -Running ./gdb.cp/bs15503.exp ... -PASS: gdb.cp/bs15503.exp: break StringTest::testFunction -PASS: gdb.cp/bs15503.exp: continue to StringTest -PASS: gdb.cp/bs15503.exp: continue to breakpoint: find position where blank needs to be inserted -FAIL: gdb.cp/bs15503.exp: print s.length() -FAIL: gdb.cp/bs15503.exp: print s[0] -FAIL: gdb.cp/bs15503.exp: print s[s.length()-1] -PASS: gdb.cp/bs15503.exp: print (const char *) s -FAIL: gdb.cp/bs15503.exp: print (const char *) s.substr(0,4) -FAIL: gdb.cp/bs15503.exp: print (const char *) (s=s.substr(0,4)) -Running ./gdb.cp/call-c.exp ... -PASS: gdb.cp/call-c.exp: b 43 -PASS: gdb.cp/call-c.exp: print foo(1) -PASS: gdb.cp/call-c.exp: continue to bp -PASS: gdb.cp/call-c.exp: print rf->func() -PASS: gdb.cp/call-c.exp: print handle->func() -Running ./gdb.cp/casts.exp ... -PASS: gdb.cp/casts.exp: cast base class pointer to derived class pointer -PASS: gdb.cp/casts.exp: let compiler cast base class pointer to derived class pointer -PASS: gdb.cp/casts.exp: cast derived class pointer to base class pointer -PASS: gdb.cp/casts.exp: cast derived class reference to base class reference -PASS: gdb.cp/casts.exp: cast base class reference to derived class reference -PASS: gdb.cp/casts.exp: let compiler cast base class reference to derived class reference -PASS: gdb.cp/casts.exp: basic test of const_cast -PASS: gdb.cp/casts.exp: const_cast of 0 -PASS: gdb.cp/casts.exp: basic test of static_cast -PASS: gdb.cp/casts.exp: static_cast to reference type -PASS: gdb.cp/casts.exp: basic test of reinterpret_cast -PASS: gdb.cp/casts.exp: test invalid reinterpret_cast -PASS: gdb.cp/casts.exp: reinterpret_cast to reference type -PASS: gdb.cp/casts.exp: whatis decltype(5) -PASS: gdb.cp/casts.exp: old-style cast using __typeof__ -PASS: gdb.cp/casts.exp: static_cast using __typeof__ -PASS: gdb.cp/casts.exp: reinterpret_cast using __typeof__ -PASS: gdb.cp/casts.exp: old-style cast using __typeof -PASS: gdb.cp/casts.exp: static_cast using __typeof -PASS: gdb.cp/casts.exp: reinterpret_cast using __typeof -PASS: gdb.cp/casts.exp: old-style cast using __decltype -PASS: gdb.cp/casts.exp: static_cast using __decltype -PASS: gdb.cp/casts.exp: reinterpret_cast using __decltype -PASS: gdb.cp/casts.exp: whatis __decltype(*a) -PASS: gdb.cp/casts.exp: invalid dynamic_cast -PASS: gdb.cp/casts.exp: dynamic_cast of 0 to void* -PASS: gdb.cp/casts.exp: dynamic_cast simple upcast -PASS: gdb.cp/casts.exp: dynamic_cast upcast to unique base -PASS: gdb.cp/casts.exp: dynamic_cast simple upcast to reference -PASS: gdb.cp/casts.exp: dynamic_cast simple downcast -PASS: gdb.cp/casts.exp: dynamic_cast simple downcast to intermediate class -PASS: gdb.cp/casts.exp: dynamic_cast to non-existing base -PASS: gdb.cp/casts.exp: dynamic_cast to reference to non-existing base -PASS: gdb.cp/casts.exp: dynamic_cast unique downcast -PASS: gdb.cp/casts.exp: dynamic_cast to sibling -Running ./gdb.cp/class2.exp ... -PASS: gdb.cp/class2.exp: set print object off -PASS: gdb.cp/class2.exp: print alpha at marker return 0 -PASS: gdb.cp/class2.exp: print beta at marker return 0 -PASS: gdb.cp/class2.exp: print * aap at marker return 0 -PASS: gdb.cp/class2.exp: print * bbp at marker return 0 -PASS: gdb.cp/class2.exp: print * abp at marker return 0, s-p-o off -PASS: gdb.cp/class2.exp: print * (B *) abp at marker return 0 -PASS: gdb.cp/class2.exp: print object with no data fields -PASS: gdb.cp/class2.exp: set print object on -PASS: gdb.cp/class2.exp: p acp -PASS: gdb.cp/class2.exp: p acp->c1 -PASS: gdb.cp/class2.exp: p acp->c2 -Running ./gdb.cp/classes.exp ... -PASS: gdb.cp/classes.exp: ptype struct default_public_struct -PASS: gdb.cp/classes.exp: ptype struct explicit_public_struct -PASS: gdb.cp/classes.exp: ptype struct protected_struct -PASS: gdb.cp/classes.exp: ptype struct private_struct -PASS: gdb.cp/classes.exp: ptype struct mixed_protection_struct -PASS: gdb.cp/classes.exp: ptype class public_class -PASS: gdb.cp/classes.exp: ptype class protected_class -PASS: gdb.cp/classes.exp: ptype class default_private_class -PASS: gdb.cp/classes.exp: ptype class explicit_private_class -PASS: gdb.cp/classes.exp: ptype class mixed_protection_class -PASS: gdb.cp/classes.exp: ptype class A -PASS: gdb.cp/classes.exp: ptype class B -PASS: gdb.cp/classes.exp: ptype class C -PASS: gdb.cp/classes.exp: ptype class D -PASS: gdb.cp/classes.exp: ptype class E -PASS: gdb.cp/classes.exp: ptype class Static -PASS: gdb.cp/classes.exp: ptype class vA -PASS: gdb.cp/classes.exp: ptype class vB -PASS: gdb.cp/classes.exp: ptype class vC -PASS: gdb.cp/classes.exp: ptype class vD -PASS: gdb.cp/classes.exp: ptype class vE -PASS: gdb.cp/classes.exp: ptype class Base1 -PASS: gdb.cp/classes.exp: ptype class Foo -PASS: gdb.cp/classes.exp: ptype class Bar -PASS: gdb.cp/classes.exp: print g_A.a -PASS: gdb.cp/classes.exp: print g_A.x -PASS: gdb.cp/classes.exp: print g_B.b -PASS: gdb.cp/classes.exp: print g_B.x -PASS: gdb.cp/classes.exp: print g_C.c -PASS: gdb.cp/classes.exp: print g_C.x -PASS: gdb.cp/classes.exp: print g_D.d -PASS: gdb.cp/classes.exp: print g_D.x -PASS: gdb.cp/classes.exp: print g_E.e -PASS: gdb.cp/classes.exp: print g_E.x -PASS: gdb.cp/classes.exp: print g_A.b -PASS: gdb.cp/classes.exp: print g_B.c -PASS: gdb.cp/classes.exp: print g_B.d -PASS: gdb.cp/classes.exp: print g_C.b -PASS: gdb.cp/classes.exp: print g_C.d -PASS: gdb.cp/classes.exp: print g_D.e -PASS: gdb.cp/classes.exp: print g_A.y -PASS: gdb.cp/classes.exp: print g_B.z -PASS: gdb.cp/classes.exp: print g_C.q -PASS: gdb.cp/classes.exp: print g_D.p -PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_A) -PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_A) -PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_B) -PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_B) -PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_B) -PASS: gdb.cp/classes.exp: unrelated class *param -PASS: gdb.cp/classes.exp: unrelated class ¶m -PASS: gdb.cp/classes.exp: unrelated class param -PASS: gdb.cp/classes.exp: continue to enums2(\(\)|) -PASS: gdb.cp/classes.exp: print obj_with_enum (1) -PASS: gdb.cp/classes.exp: next -PASS: gdb.cp/classes.exp: print obj_with_enum (2) -PASS: gdb.cp/classes.exp: print obj_with_enum.priv_enum -PASS: gdb.cp/classes.exp: ptype obj_with_enum.priv_enum -PASS: gdb.cp/classes.exp: ptype obj_with_enum -PASS: gdb.cp/classes.exp: print (ClassWithEnum::PrivEnum) 42 -PASS: gdb.cp/classes.exp: print ('ClassWithEnum::PrivEnum') 42 -PASS: gdb.cp/classes.exp: print Bar::z -PASS: gdb.cp/classes.exp: print &Foo::x -PASS: gdb.cp/classes.exp: print (int)&Foo::x -PASS: gdb.cp/classes.exp: print (int)&Bar::y == 2*sizeof(int) -PASS: gdb.cp/classes.exp: ptype Bar::z -PASS: gdb.cp/classes.exp: ptype &Bar::z -PASS: gdb.cp/classes.exp: print (int)pmi == sizeof(int) -PASS: gdb.cp/classes.exp: print Foo::st -PASS: gdb.cp/classes.exp: print bar.st -PASS: gdb.cp/classes.exp: print &foo.st -PASS: gdb.cp/classes.exp: print &Bar::st -PASS: gdb.cp/classes.exp: print *$ -PASS: gdb.cp/classes.exp: set print static-members off -PASS: gdb.cp/classes.exp: print csi without static members -PASS: gdb.cp/classes.exp: print cnsi without static members -PASS: gdb.cp/classes.exp: set print static-members on -PASS: gdb.cp/classes.exp: print csi with static members -PASS: gdb.cp/classes.exp: print cnsi with static members -PASS: gdb.cp/classes.exp: finish from marker_reg1 -PASS: gdb.cp/classes.exp: calling method for small class -FAIL: gdb.cp/classes.exp: print ctor of typedef class -FAIL: gdb.cp/classes.exp: print dtor of typedef class -PASS: gdb.cp/classes.exp: list ByAnyOtherName::times -Running ./gdb.cp/cmpd-minsyms.exp ... -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::a() const' -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::b() volatile' -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::c() const volatile' -PASS: gdb.cp/cmpd-minsyms.exp: set language c++ -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::operator == -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::operator==(GDB const&) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::harder(char) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::harder(int) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at "int GDB::even_harder(char)" -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::simple() -Running ./gdb.cp/converts.exp ... -PASS: gdb.cp/converts.exp: continue to breakpoint: end of main -PASS: gdb.cp/converts.exp: typedef to another typedef -PASS: gdb.cp/converts.exp: typedef to typedef of a typedef -PASS: gdb.cp/converts.exp: Pointer-to-pointer-to-pointer derived to Pointer-to-pointer-to-pointer base. -PASS: gdb.cp/converts.exp: pointer to pointer -PASS: gdb.cp/converts.exp: pointer to array -PASS: gdb.cp/converts.exp: pointer to pointer of wrong type -PASS: gdb.cp/converts.exp: pointer to pointer of wrong type -PASS: gdb.cp/converts.exp: pointer to ancestor pointer -PASS: gdb.cp/converts.exp: pointer to void pointer -PASS: gdb.cp/converts.exp: pointer to void pointer pointer -PASS: gdb.cp/converts.exp: pointer to boolean -PASS: gdb.cp/converts.exp: pointer to long int -PASS: gdb.cp/converts.exp: pointer pointer to void pointer -PASS: gdb.cp/converts.exp: pointer pointer to pointer pointer -PASS: gdb.cp/converts.exp: pointer pointer to array of arrays -PASS: gdb.cp/converts.exp: pointer pointer to array of pointers -PASS: gdb.cp/converts.exp: pointer pointer to array of wrong pointers -PASS: gdb.cp/converts.exp: check all parameters for badness -PASS: gdb.cp/converts.exp: null pointer conversion -PASS: gdb.cp/converts.exp: p foo3_1 (0, 1) -PASS: gdb.cp/converts.exp: p foo3_1 (0, (const char**) 1) -PASS: gdb.cp/converts.exp: p foo3_2 (0, 0) -PASS: gdb.cp/converts.exp: p foo3_2 (0, (char const**) 0) -PASS: gdb.cp/converts.exp: p foo1_7(0) -PASS: gdb.cp/converts.exp: p foo1_7(integer) -PASS: gdb.cp/converts.exp: p foo1_7(long_int) -PASS: gdb.cp/converts.exp: p foo1_7(*a) -PASS: gdb.cp/converts.exp: p foo1_7(MY_A) -PASS: gdb.cp/converts.exp: p foo1_7(&foo1_7) -PASS: gdb.cp/converts.exp: p foo1_7(&A::member_) -PASS: gdb.cp/converts.exp: p foo1_7(a) -PASS: gdb.cp/converts.exp: p foo1_7(fp) -PASS: gdb.cp/converts.exp: p foo1_7(dp) -PASS: gdb.cp/converts.exp: p foo1_7(-1.23) -PASS: gdb.cp/converts.exp: p foo1_7(ta) -PASS: gdb.cp/converts.exp: show check type -PASS: gdb.cp/converts.exp: p foo1_type_check (123) -PASS: gdb.cp/converts.exp: p foo2_type_check (0, 1) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 0) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 0, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 0, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 1) -PASS: gdb.cp/converts.exp: set check type off -PASS: gdb.cp/converts.exp: show check type -PASS: gdb.cp/converts.exp: p foo1_type_check (123) -PASS: gdb.cp/converts.exp: p foo2_type_check (0, 1) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 0) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 0, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 0, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_2 (1,1) -Running ./gdb.cp/cpcompletion.exp ... -PASS: gdb.cp/cpcompletion.exp: complete class methods -PASS: gdb.cp/cpcompletion.exp: complete class methods beginning with F -PASS: gdb.cp/cpcompletion.exp: complete p foo1.g -PASS: gdb.cp/cpcompletion.exp: complete p foo1.base -PASS: gdb.cp/cpcompletion.exp: complete p foo1.Fo -PASS: gdb.cp/cpcompletion.exp: complete p a.g -Running ./gdb.cp/cpexprs.exp ... -PASS: gdb.cp/cpexprs.exp: set listsize 1 -PASS: gdb.cp/cpexprs.exp: print base1::a_function -FAIL: gdb.cp/cpexprs.exp: print base1::base1(int) -FAIL: gdb.cp/cpexprs.exp: print base1::base1(void) -PASS: gdb.cp/cpexprs.exp: print base2::a_function -FAIL: gdb.cp/cpexprs.exp: print base2::base2 -FAIL: gdb.cp/cpexprs.exp: print base::base(int) -FAIL: gdb.cp/cpexprs.exp: print base::base(void) -PASS: gdb.cp/cpexprs.exp: print base::operator char* -PASS: gdb.cp/cpexprs.exp: print base::operator delete -PASS: gdb.cp/cpexprs.exp: print base::operator delete[] -PASS: gdb.cp/cpexprs.exp: print base::operator fluff* -PASS: gdb.cp/cpexprs.exp: print base::operator fluff** -PASS: gdb.cp/cpexprs.exp: print base::operator int -PASS: gdb.cp/cpexprs.exp: print base::operator new -PASS: gdb.cp/cpexprs.exp: print base::operator new[] -PASS: gdb.cp/cpexprs.exp: print base::operator! -PASS: gdb.cp/cpexprs.exp: print base::operator!= -PASS: gdb.cp/cpexprs.exp: print base::operator% -PASS: gdb.cp/cpexprs.exp: print base::operator%= -PASS: gdb.cp/cpexprs.exp: print base::operator& -PASS: gdb.cp/cpexprs.exp: print base::operator&& -PASS: gdb.cp/cpexprs.exp: print base::operator&= -PASS: gdb.cp/cpexprs.exp: print base::operator() -PASS: gdb.cp/cpexprs.exp: print base::operator* -PASS: gdb.cp/cpexprs.exp: print base::operator*= -PASS: gdb.cp/cpexprs.exp: print base::operator+ -PASS: gdb.cp/cpexprs.exp: print base::operator++ -PASS: gdb.cp/cpexprs.exp: print base::operator+= -PASS: gdb.cp/cpexprs.exp: print base::operator- -PASS: gdb.cp/cpexprs.exp: print base::operator-- -PASS: gdb.cp/cpexprs.exp: print base::operator-= -PASS: gdb.cp/cpexprs.exp: print base::operator/ -PASS: gdb.cp/cpexprs.exp: print base::operator/= -PASS: gdb.cp/cpexprs.exp: print base::operator< -PASS: gdb.cp/cpexprs.exp: print base::operator<< -PASS: gdb.cp/cpexprs.exp: print base::operator<<= -PASS: gdb.cp/cpexprs.exp: print base::operator<= -PASS: gdb.cp/cpexprs.exp: print base::operator= -PASS: gdb.cp/cpexprs.exp: print base::operator== -PASS: gdb.cp/cpexprs.exp: print base::operator> -PASS: gdb.cp/cpexprs.exp: print base::operator>= -PASS: gdb.cp/cpexprs.exp: print base::operator>> -PASS: gdb.cp/cpexprs.exp: print base::operator>>= -PASS: gdb.cp/cpexprs.exp: print base::operator[] -PASS: gdb.cp/cpexprs.exp: print base::operator^ -PASS: gdb.cp/cpexprs.exp: print base::operator^= -PASS: gdb.cp/cpexprs.exp: print base::operator| -PASS: gdb.cp/cpexprs.exp: print base::operator|= -PASS: gdb.cp/cpexprs.exp: print base::operator|| -PASS: gdb.cp/cpexprs.exp: print base::operator~ -PASS: gdb.cp/cpexprs.exp: print base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: print base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: print base::overload(int) const -PASS: gdb.cp/cpexprs.exp: print base::overload(long) const -PASS: gdb.cp/cpexprs.exp: print base::overload(short) const -PASS: gdb.cp/cpexprs.exp: print base::overload(void) const -FAIL: gdb.cp/cpexprs.exp: print base::~base -PASS: gdb.cp/cpexprs.exp: print derived::a_function -FAIL: gdb.cp/cpexprs.exp: print derived::derived -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print policy1::function -FAIL: gdb.cp/cpexprs.exp: print policy1::policy -PASS: gdb.cp/cpexprs.exp: print policy2::function -FAIL: gdb.cp/cpexprs.exp: print policy2::policy -PASS: gdb.cp/cpexprs.exp: print policy3::function -FAIL: gdb.cp/cpexprs.exp: print policy3::policy -PASS: gdb.cp/cpexprs.exp: print policy4::function -FAIL: gdb.cp/cpexprs.exp: print policy4::policy -PASS: gdb.cp/cpexprs.exp: print policyd1::function -FAIL: gdb.cp/cpexprs.exp: print policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd2::function -FAIL: gdb.cp/cpexprs.exp: print policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd3::function -FAIL: gdb.cp/cpexprs.exp: print policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd4::function -FAIL: gdb.cp/cpexprs.exp: print policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd5::function -FAIL: gdb.cp/cpexprs.exp: print policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::function -FAIL: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print test_function -PASS: gdb.cp/cpexprs.exp: list base1::a_function -PASS: gdb.cp/cpexprs.exp: list base1::base1(int) -PASS: gdb.cp/cpexprs.exp: list base1::base1(void) -PASS: gdb.cp/cpexprs.exp: list base2::a_function -PASS: gdb.cp/cpexprs.exp: list base2::base2 -PASS: gdb.cp/cpexprs.exp: list base::base(int) -PASS: gdb.cp/cpexprs.exp: list base::base(void) -PASS: gdb.cp/cpexprs.exp: list base::operator char* -PASS: gdb.cp/cpexprs.exp: list base::operator delete -PASS: gdb.cp/cpexprs.exp: list base::operator delete[] -PASS: gdb.cp/cpexprs.exp: list base::operator fluff* -PASS: gdb.cp/cpexprs.exp: list base::operator fluff** -PASS: gdb.cp/cpexprs.exp: list base::operator int -PASS: gdb.cp/cpexprs.exp: list base::operator new -PASS: gdb.cp/cpexprs.exp: list base::operator new[] -PASS: gdb.cp/cpexprs.exp: list base::operator! -PASS: gdb.cp/cpexprs.exp: list base::operator!= -PASS: gdb.cp/cpexprs.exp: list base::operator% -PASS: gdb.cp/cpexprs.exp: list base::operator%= -PASS: gdb.cp/cpexprs.exp: list base::operator& -PASS: gdb.cp/cpexprs.exp: list base::operator&& -PASS: gdb.cp/cpexprs.exp: list base::operator&= -PASS: gdb.cp/cpexprs.exp: list base::operator() -PASS: gdb.cp/cpexprs.exp: list base::operator* -PASS: gdb.cp/cpexprs.exp: list base::operator*= -PASS: gdb.cp/cpexprs.exp: list base::operator+ -PASS: gdb.cp/cpexprs.exp: list base::operator++ -PASS: gdb.cp/cpexprs.exp: list base::operator+= -PASS: gdb.cp/cpexprs.exp: list base::operator- -PASS: gdb.cp/cpexprs.exp: list base::operator-- -PASS: gdb.cp/cpexprs.exp: list base::operator-= -PASS: gdb.cp/cpexprs.exp: list base::operator/ -PASS: gdb.cp/cpexprs.exp: list base::operator/= -PASS: gdb.cp/cpexprs.exp: list base::operator< -PASS: gdb.cp/cpexprs.exp: list base::operator<< -PASS: gdb.cp/cpexprs.exp: list base::operator<<= -PASS: gdb.cp/cpexprs.exp: list base::operator<= -PASS: gdb.cp/cpexprs.exp: list base::operator= -PASS: gdb.cp/cpexprs.exp: list base::operator== -PASS: gdb.cp/cpexprs.exp: list base::operator> -PASS: gdb.cp/cpexprs.exp: list base::operator>= -PASS: gdb.cp/cpexprs.exp: list base::operator>> -PASS: gdb.cp/cpexprs.exp: list base::operator>>= -PASS: gdb.cp/cpexprs.exp: list base::operator[] -PASS: gdb.cp/cpexprs.exp: list base::operator^ -PASS: gdb.cp/cpexprs.exp: list base::operator^= -PASS: gdb.cp/cpexprs.exp: list base::operator| -PASS: gdb.cp/cpexprs.exp: list base::operator|= -PASS: gdb.cp/cpexprs.exp: list base::operator|| -PASS: gdb.cp/cpexprs.exp: list base::operator~ -PASS: gdb.cp/cpexprs.exp: list base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: list base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: list base::overload(int) const -PASS: gdb.cp/cpexprs.exp: list base::overload(long) const -PASS: gdb.cp/cpexprs.exp: list base::overload(short) const -PASS: gdb.cp/cpexprs.exp: list base::overload(void) const -PASS: gdb.cp/cpexprs.exp: list base::~base -PASS: gdb.cp/cpexprs.exp: list derived::a_function -PASS: gdb.cp/cpexprs.exp: list derived::derived -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list policy1::function -PASS: gdb.cp/cpexprs.exp: list policy1::policy -PASS: gdb.cp/cpexprs.exp: list policy2::function -PASS: gdb.cp/cpexprs.exp: list policy2::policy -PASS: gdb.cp/cpexprs.exp: list policy3::function -PASS: gdb.cp/cpexprs.exp: list policy3::policy -PASS: gdb.cp/cpexprs.exp: list policy4::function -PASS: gdb.cp/cpexprs.exp: list policy4::policy -PASS: gdb.cp/cpexprs.exp: list policyd1::function -PASS: gdb.cp/cpexprs.exp: list policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd2::function -PASS: gdb.cp/cpexprs.exp: list policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd3::function -PASS: gdb.cp/cpexprs.exp: list policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd4::function -PASS: gdb.cp/cpexprs.exp: list policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd5::function -PASS: gdb.cp/cpexprs.exp: list policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::function -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list test_function -PASS: gdb.cp/cpexprs.exp: continue to base1::a_function -PASS: gdb.cp/cpexprs.exp: continue to base1::base1(int) -PASS: gdb.cp/cpexprs.exp: continue to base1::base1(void) -PASS: gdb.cp/cpexprs.exp: continue to base2::a_function -PASS: gdb.cp/cpexprs.exp: continue to base2::base2 -PASS: gdb.cp/cpexprs.exp: continue to base::base(int) -PASS: gdb.cp/cpexprs.exp: continue to base::base(void) -PASS: gdb.cp/cpexprs.exp: continue to base::operator char* -PASS: gdb.cp/cpexprs.exp: continue to base::operator delete -PASS: gdb.cp/cpexprs.exp: continue to base::operator delete[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff* -PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff** -PASS: gdb.cp/cpexprs.exp: continue to base::operator int -PASS: gdb.cp/cpexprs.exp: continue to base::operator new -PASS: gdb.cp/cpexprs.exp: continue to base::operator new[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator! -PASS: gdb.cp/cpexprs.exp: continue to base::operator!= -PASS: gdb.cp/cpexprs.exp: continue to base::operator% -PASS: gdb.cp/cpexprs.exp: continue to base::operator%= -PASS: gdb.cp/cpexprs.exp: continue to base::operator& -PASS: gdb.cp/cpexprs.exp: continue to base::operator&& -PASS: gdb.cp/cpexprs.exp: continue to base::operator&= -PASS: gdb.cp/cpexprs.exp: continue to base::operator() -PASS: gdb.cp/cpexprs.exp: continue to base::operator* -PASS: gdb.cp/cpexprs.exp: continue to base::operator*= -PASS: gdb.cp/cpexprs.exp: continue to base::operator+ -PASS: gdb.cp/cpexprs.exp: continue to base::operator++ -PASS: gdb.cp/cpexprs.exp: continue to base::operator+= -PASS: gdb.cp/cpexprs.exp: continue to base::operator- -PASS: gdb.cp/cpexprs.exp: continue to base::operator-- -PASS: gdb.cp/cpexprs.exp: continue to base::operator-= -PASS: gdb.cp/cpexprs.exp: continue to base::operator/ -PASS: gdb.cp/cpexprs.exp: continue to base::operator/= -PASS: gdb.cp/cpexprs.exp: continue to base::operator< -PASS: gdb.cp/cpexprs.exp: continue to base::operator<< -PASS: gdb.cp/cpexprs.exp: continue to base::operator<<= -PASS: gdb.cp/cpexprs.exp: continue to base::operator<= -PASS: gdb.cp/cpexprs.exp: continue to base::operator= -PASS: gdb.cp/cpexprs.exp: continue to base::operator== -PASS: gdb.cp/cpexprs.exp: continue to base::operator> -PASS: gdb.cp/cpexprs.exp: continue to base::operator>= -PASS: gdb.cp/cpexprs.exp: continue to base::operator>> -PASS: gdb.cp/cpexprs.exp: continue to base::operator>>= -PASS: gdb.cp/cpexprs.exp: continue to base::operator[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator^ -PASS: gdb.cp/cpexprs.exp: continue to base::operator^= -PASS: gdb.cp/cpexprs.exp: continue to base::operator| -PASS: gdb.cp/cpexprs.exp: continue to base::operator|= -PASS: gdb.cp/cpexprs.exp: continue to base::operator|| -PASS: gdb.cp/cpexprs.exp: continue to base::operator~ -PASS: gdb.cp/cpexprs.exp: continue to base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(int) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(long) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(short) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(void) const -PASS: gdb.cp/cpexprs.exp: continue to base::~base -PASS: gdb.cp/cpexprs.exp: continue to derived::a_function -PASS: gdb.cp/cpexprs.exp: continue to derived::derived -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to policy1::function -PASS: gdb.cp/cpexprs.exp: continue to policy1::policy -PASS: gdb.cp/cpexprs.exp: continue to policy2::function -PASS: gdb.cp/cpexprs.exp: continue to policy2::policy -PASS: gdb.cp/cpexprs.exp: continue to policy3::function -PASS: gdb.cp/cpexprs.exp: continue to policy3::policy -PASS: gdb.cp/cpexprs.exp: continue to policy4::function -PASS: gdb.cp/cpexprs.exp: continue to policy4::policy -PASS: gdb.cp/cpexprs.exp: continue to policyd1::function -PASS: gdb.cp/cpexprs.exp: continue to policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd1::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd2::function -PASS: gdb.cp/cpexprs.exp: continue to policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd2::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd3::function -PASS: gdb.cp/cpexprs.exp: continue to policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd3::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd4::function -PASS: gdb.cp/cpexprs.exp: continue to policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd4::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd5::function -PASS: gdb.cp/cpexprs.exp: continue to policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd5::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int)' -PASS: gdb.cp/cpexprs.exp: p CV::m(int) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) const' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) volatile' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) volatile (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) const volatile' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const volatile (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p CV_f(int) -PASS: gdb.cp/cpexprs.exp: p CV_f(CV::t) -PASS: gdb.cp/cpexprs.exp: p CV_f(CV::i) -Running ./gdb.cp/cplabel.exp ... -PASS: gdb.cp/cplabel.exp: break foo::bar:to_the_top -PASS: gdb.cp/cplabel.exp: break foo::bar:get_out_of_here -PASS: gdb.cp/cplabel.exp: break foo::baz:to_the_top -PASS: gdb.cp/cplabel.exp: break foo::baz:get_out_of_here -Running ./gdb.cp/cplusfuncs.exp ... -PASS: gdb.cp/cplusfuncs.exp: set width 0 -PASS: gdb.cp/cplusfuncs.exp: set language c++ -PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_comma -PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_char_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_char_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_foo_ref -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_int_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_int -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_short -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_short -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_long -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_typedef -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(void)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(signed char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(short)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned short)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(long)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned long)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(float)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(double)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&&(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator++(int) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator,(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator==(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator||(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator~(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator--(int) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->*(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator[](foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator()(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new[] -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator int(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator char*(void) -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc1 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc2 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc3 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc4 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc5 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc6 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc7 -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator%(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator-(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator!=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator|(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&&(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator!(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator++(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator+=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator%=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator|=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator,(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator/(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator+(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator==(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator^(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator||(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator~(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator--(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator->(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator-=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator/=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator^=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator->\*(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\[\](" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator new(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator delete(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator int(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator()(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator char\*(" -PASS: gdb.cp/cplusfuncs.exp: list foo::operator int* -Running ./gdb.cp/cp-relocate.exp ... -PASS: gdb.cp/cp-relocate.exp: info functions -PASS: gdb.cp/cp-relocate.exp: get address of func<1>(int) -PASS: gdb.cp/cp-relocate.exp: get address of func<2>(int) -PASS: gdb.cp/cp-relocate.exp: get address of caller -PASS: gdb.cp/cp-relocate.exp: C++ functions have different addresses -PASS: gdb.cp/cp-relocate.exp: info file -PASS: gdb.cp/cp-relocate.exp: add-symbol-file cp-relocate.o -PASS: gdb.cp/cp-relocate.exp: break *func<1>(int) -PASS: gdb.cp/cp-relocate.exp: break *func<2>(int) -Running ./gdb.cp/ctti.exp ... -PASS: gdb.cp/ctti.exp: continue to breakpoint: marker add1 -PASS: gdb.cp/ctti.exp: print c -PASS: gdb.cp/ctti.exp: print f -PASS: gdb.cp/ctti.exp: print i -Running ./gdb.cp/debug-expr.exp ... -PASS: gdb.cp/debug-expr.exp: set language c++ -PASS: gdb.cp/debug-expr.exp: set debug expression 1 -PASS: gdb.cp/debug-expr.exp: print static_cast(0) -PASS: gdb.cp/debug-expr.exp: print reinterpret_cast(0) -PASS: gdb.cp/debug-expr.exp: print dynamic_cast(0) -Running ./gdb.cp/demangle.exp ... -PASS: gdb.cp/demangle.exp: set language c++ -PASS: gdb.cp/demangle.exp: set width 0 -PASS: gdb.cp/demangle.exp: lucid: set demangle-style -PASS: gdb.cp/demangle.exp: lucid: check demangling style -PASS: gdb.cp/demangle.exp: lucid: WS__FR7istream -PASS: gdb.cp/demangle.exp: lucid: __aa__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __aad__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ad__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __adv__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __adv__7complexF7complex -PASS: gdb.cp/demangle.exp: lucid: __aer__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __als__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amd__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ami__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amu__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amu__7complexF7complex -PASS: gdb.cp/demangle.exp: lucid: __aor__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __apl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ars__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFR7istream -PASS: gdb.cp/demangle.exp: lucid: __as__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __as__3iosFR3ios -PASS: gdb.cp/demangle.exp: lucid: __cl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __cm__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __co__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPc -PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPci -PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFPciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFv -PASS: gdb.cp/demangle.exp: lucid: __ct__10smanip_intFPFR3iosi_R3iosi -PASS: gdb.cp/demangle.exp: lucid: __ct__11c_exceptionFPcRC7complexT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFi -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFv -PASS: gdb.cp/demangle.exp: lucid: __ct__11smanip_longFPFR3iosl_R3iosl -PASS: gdb.cp/demangle.exp: lucid: __ct__11stdiostreamFP4FILE -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPFl_PvPFPv_v -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPUciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFi -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFv -PASS: gdb.cp/demangle.exp: lucid: __ct__13strstreambaseFPciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiN31 -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiPCc -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiR3fooT1T2T1T2 -PASS: gdb.cp/demangle.exp: lucid: __ct__3iosFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7filebufFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambufiP7ostream -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiT1P7ostream -PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFiPc -PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__Q23foo3barFv -PASS: gdb.cp/demangle.exp: lucid: __ct__Q33foo3bar4bellFv -PASS: gdb.cp/demangle.exp: lucid: __dl__3fooSFPv -PASS: gdb.cp/demangle.exp: lucid: __dl__FPv -PASS: gdb.cp/demangle.exp: lucid: __dt__10istrstreamFv -PASS: gdb.cp/demangle.exp: lucid: __dt__Q23foo3barFv -PASS: gdb.cp/demangle.exp: lucid: __dt__Q33foo3bar4bellFv -PASS: gdb.cp/demangle.exp: lucid: __dv__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __dv__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __er__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ge__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __gt__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __le__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ls__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPCc -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPv -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUi -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUl -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFd -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFf -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFi -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFl -PASS: gdb.cp/demangle.exp: lucid: __ls__FR7ostream7complex -PASS: gdb.cp/demangle.exp: lucid: __lt__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __md__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __mi__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ml__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ml__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: __mm__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __ne__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __nt__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __nw__3fooSFi -PASS: gdb.cp/demangle.exp: lucid: __nw__FUi -PASS: gdb.cp/demangle.exp: lucid: __nw__FUiPv -PASS: gdb.cp/demangle.exp: lucid: __oo__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __opPc__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __opi__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __or__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __pl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __pp__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __pt__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __rm__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __rs__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR7istream_R7istream -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPUc -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPc -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUi -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUl -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUs -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRd -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRf -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRi -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRl -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRs -PASS: gdb.cp/demangle.exp: lucid: __rs__FR7istreamR7complex -PASS: gdb.cp/demangle.exp: lucid: __vc__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __vtbl__10istrstream -PASS: gdb.cp/demangle.exp: lucid: __vtbl__17ostream__iostream__19iostream_withassign -PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios -PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios__13strstreambase -KFAIL: gdb.cp/demangle.exp: lucid: __vtbl__3foo__vt_cc_main_ (PRMS: gdb/945) -PASS: gdb.cp/demangle.exp: lucid: abs__F7complex -PASS: gdb.cp/demangle.exp: lucid: allocate__9streambufFv -PASS: gdb.cp/demangle.exp: lucid: attach__11fstreambaseFi -PASS: gdb.cp/demangle.exp: lucid: bitalloc__3iosSFv -PASS: gdb.cp/demangle.exp: lucid: chr__FiT1 -PASS: gdb.cp/demangle.exp: lucid: complex_error__FR11c_exception -PASS: gdb.cp/demangle.exp: lucid: complexfunc2__FPFPc_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc3__FPFPFPl_s_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc4__FPFPFPc_s_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc5__FPFPc_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc6__FPFPi_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc7__FPFPFPc_i_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complicated_put__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: conv10__FlPc -PASS: gdb.cp/demangle.exp: lucid: conv16__FUlPc -PASS: gdb.cp/demangle.exp: lucid: dec__FR3ios -PASS: gdb.cp/demangle.exp: lucid: dec__Fli -PASS: gdb.cp/demangle.exp: lucid: dofield__FP7ostreamPciT2T3 -PASS: gdb.cp/demangle.exp: lucid: flags__3iosFl -PASS: gdb.cp/demangle.exp: lucid: flags__3iosFv -PASS: gdb.cp/demangle.exp: lucid: foo__FiN31 -PASS: gdb.cp/demangle.exp: lucid: foo__FiR3fooT1T2T1T2 -PASS: gdb.cp/demangle.exp: lucid: foo___3barFl -PASS: gdb.cp/demangle.exp: lucid: form__FPCce -PASS: gdb.cp/demangle.exp: lucid: get__7istreamFPcic -PASS: gdb.cp/demangle.exp: lucid: get__7istreamFR9streambufc -PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRUc -PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRc -PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPUcic -PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPcic -PASS: gdb.cp/demangle.exp: lucid: ignore__7istreamFiT1 -PASS: gdb.cp/demangle.exp: lucid: init__12strstreambufFPciT1 -PASS: gdb.cp/demangle.exp: lucid: init__3iosFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: initcount__13Iostream_init -PASS: gdb.cp/demangle.exp: lucid: ipfx__7istreamFi -PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFUc -PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: open__11fstreambaseFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: open__7filebufFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FSc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUi -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUl -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUs -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fd -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Ff -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fi -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fl -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fs -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fv -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN21 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN31 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN41 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN51 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN61 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN71 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN81 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91N11 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiT1 -PASS: gdb.cp/demangle.exp: lucid: polar__FdT1 -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexd -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexi -PASS: gdb.cp/demangle.exp: lucid: pow__Fd7complex -PASS: gdb.cp/demangle.exp: lucid: pstart__FPciT2 -PASS: gdb.cp/demangle.exp: lucid: put__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: read__7istreamFPci -PASS: gdb.cp/demangle.exp: lucid: resetiosflags__FR3iosl -PASS: gdb.cp/demangle.exp: lucid: restore_errno__FRi -PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRUc -PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRc -PASS: gdb.cp/demangle.exp: lucid: seekg__7istreamFl8seek_dir -PASS: gdb.cp/demangle.exp: lucid: seekoff__12strstreambufFl8seek_diri -PASS: gdb.cp/demangle.exp: lucid: seekoff__9streambufFlQ2_3ios12ios_seek_diri -PASS: gdb.cp/demangle.exp: lucid: seekpos__9streambufFli -PASS: gdb.cp/demangle.exp: lucid: set_new_handler__FPFv_v -PASS: gdb.cp/demangle.exp: lucid: setb__9streambufFPcT1i -PASS: gdb.cp/demangle.exp: lucid: setb__FR3iosi -PASS: gdb.cp/demangle.exp: lucid: setbuf__11fstreambaseFPci -PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPUci -PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPciT2 -PASS: gdb.cp/demangle.exp: lucid: setf__3iosFlT1 -PASS: gdb.cp/demangle.exp: lucid: setfill__FR3iosi -PASS: gdb.cp/demangle.exp: lucid: setg__9streambufFPcN21 -PASS: gdb.cp/demangle.exp: lucid: setp__9streambufFPcT1 -PASS: gdb.cp/demangle.exp: lucid: sputn__9streambufFPCci -PASS: gdb.cp/demangle.exp: lucid: str__FPCci -PASS: gdb.cp/demangle.exp: lucid: tie__3iosFP7ostream -PASS: gdb.cp/demangle.exp: lucid: uconv10__FUlPc -PASS: gdb.cp/demangle.exp: lucid: write__7ostreamFPCci -PASS: gdb.cp/demangle.exp: lucid: xget__7istreamFPc -PASS: gdb.cp/demangle.exp: lucid: xsgetn__9streambufFPci -PASS: gdb.cp/demangle.exp: lucid: xsputn__9streambufFPCci -PASS: gdb.cp/demangle.exp: lucid: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: gnu: set demangle-style -PASS: gdb.cp/demangle.exp: gnu: check demangling style -PASS: gdb.cp/demangle.exp: gnu: Abort__FP6EditoriPCc -PASS: gdb.cp/demangle.exp: gnu: AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue -PASS: gdb.cp/demangle.exp: gnu: Append__15NameChooserViewPCc -PASS: gdb.cp/demangle.exp: gnu: ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic -PASS: gdb.cp/demangle.exp: gnu: AtEnd__13ivRubberGroup -PASS: gdb.cp/demangle.exp: gnu: BgFilter__9ivTSolverP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: BitPatterntoa__FRC10BitPatternccc -PASS: gdb.cp/demangle.exp: gnu: Check__6UArrayi -PASS: gdb.cp/demangle.exp: gnu: CoreConstDecls__8TextCodeR7ostream -PASS: gdb.cp/demangle.exp: gnu: Detach__8StateVarP12StateVarView -PASS: gdb.cp/demangle.exp: gnu: Done__9ComponentG8Iterator -PASS: gdb.cp/demangle.exp: gnu: DrawDestinationTransformedImage__FP7_XImageiiT0iiUlUiiiUiUlUlP4_XGCRC13ivTransformeriiii -PASS: gdb.cp/demangle.exp: gnu: Edit__12StringEditorPCcii -PASS: gdb.cp/demangle.exp: gnu: Effect__11RelateManipR7ivEvent -PASS: gdb.cp/demangle.exp: gnu: FilterName__FPCc -PASS: gdb.cp/demangle.exp: gnu: Filter__6PSTextPCci -PASS: gdb.cp/demangle.exp: gnu: FindColor__7CatalogPCciii -PASS: gdb.cp/demangle.exp: gnu: FindFixed__FRP4CNetP4CNet -PASS: gdb.cp/demangle.exp: gnu: FindFont__7CatalogPCcN21 -PASS: gdb.cp/demangle.exp: gnu: Fix48_abort__FR8twolongs -PASS: gdb.cp/demangle.exp: gnu: GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2 -PASS: gdb.cp/demangle.exp: gnu: GetBgColor__C9ivPainter -PASS: gdb.cp/demangle.exp: gnu: Iisdouble__FPC6IntRep -PASS: gdb.cp/demangle.exp: gnu: InsertBody__15H_PullrightMenuii -PASS: gdb.cp/demangle.exp: gnu: InsertCharacter__9TextManipc -PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1 -PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1iiUi -PASS: gdb.cp/demangle.exp: gnu: IsADirectory__FPCcR4stat -PASS: gdb.cp/demangle.exp: gnu: IsAGroup__FP11GraphicViewP11GraphicComp -PASS: gdb.cp/demangle.exp: gnu: IsA__10ButtonCodeUl -PASS: gdb.cp/demangle.exp: gnu: ReadName__FR7istreamPc -PASS: gdb.cp/demangle.exp: gnu: Redraw__13StringBrowseriiii -PASS: gdb.cp/demangle.exp: gnu: Rotate__13ivTransformerf -PASS: gdb.cp/demangle.exp: gnu: Rotated__C13ivTransformerf -PASS: gdb.cp/demangle.exp: gnu: Round__Ff -PASS: gdb.cp/demangle.exp: gnu: SetExport__16MemberSharedNameUi -PASS: gdb.cp/demangle.exp: gnu: Set__14ivControlState13ControlStatusUi -PASS: gdb.cp/demangle.exp: gnu: Set__5DFacePcii -PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP12ivInteractorRP8TElementT2 -PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP7ivTGlueRP8TElement -PASS: gdb.cp/demangle.exp: gnu: VOrder__9ivTSolverUiRP12ivInteractorT2 -PASS: gdb.cp/demangle.exp: gnu: Valid__7CatalogPCcRP4Tool -PASS: gdb.cp/demangle.exp: gnu: _10PageButton$__both -PASS: gdb.cp/demangle.exp: gnu: _3RNG$singleMantissa -PASS: gdb.cp/demangle.exp: gnu: _5IComp$_release -PASS: gdb.cp/demangle.exp: gnu: _$_10BitmapComp -PASS: gdb.cp/demangle.exp: gnu: _$_9__io_defs -PASS: gdb.cp/demangle.exp: gnu: _$_Q23foo3bar -PASS: gdb.cp/demangle.exp: gnu: _$_Q33foo3bar4bell -PASS: gdb.cp/demangle.exp: gnu: __10ivTelltaleiP7ivGlyph -PASS: gdb.cp/demangle.exp: gnu: __10ivViewportiP12ivInteractorUi -PASS: gdb.cp/demangle.exp: gnu: __10ostrstream -PASS: gdb.cp/demangle.exp: gnu: __10ostrstreamPcii -PASS: gdb.cp/demangle.exp: gnu: __11BasicDialogiPCcP13ivButtonStateN22Ui -PASS: gdb.cp/demangle.exp: gnu: __11BitmapTablei -PASS: gdb.cp/demangle.exp: gnu: __12ViewportCodeP12ViewportComp -PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_BorderiPCci -PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_Borderii -PASS: gdb.cp/demangle.exp: gnu: __12ivBackgroundiP7ivGlyphPC7ivColor -PASS: gdb.cp/demangle.exp: gnu: __12ivBreak_Listl -PASS: gdb.cp/demangle.exp: gnu: __14TextInteractoriPCcUi -PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiPCcP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: __20DisplayList_IteratorR11DisplayList -PASS: gdb.cp/demangle.exp: gnu: __3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __3fooiN31 -PASS: gdb.cp/demangle.exp: gnu: __3fooiPCc -PASS: gdb.cp/demangle.exp: gnu: __3fooiRT0iT2iT2 -PASS: gdb.cp/demangle.exp: gnu: __6GetOptiPPcPCc -PASS: gdb.cp/demangle.exp: gnu: __6KeyMapPT0 -PASS: gdb.cp/demangle.exp: gnu: __7ivWorldPCcRiPPcPC12ivOptionDescPC14ivPropertyData -PASS: gdb.cp/demangle.exp: gnu: __7procbufPCci -PASS: gdb.cp/demangle.exp: gnu: __8ArrowCmdP6EditorUiUi -PASS: gdb.cp/demangle.exp: gnu: __9F_EllipseiiiiP7Graphic -PASS: gdb.cp/demangle.exp: gnu: __9FrameDataP9FrameCompi -PASS: gdb.cp/demangle.exp: gnu: __9HVGraphicP9CanvasVarP7Graphic -PASS: gdb.cp/demangle.exp: gnu: __Q23foo3bar -PASS: gdb.cp/demangle.exp: gnu: __Q33foo3bar4bell -PASS: gdb.cp/demangle.exp: gnu: __aa__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aad__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ad__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __adv__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aer__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __als__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __amd__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ami__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aml__3FixRT0 -PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix16i -PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix32RT0 -PASS: gdb.cp/demangle.exp: gnu: __aor__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __apl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ars__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __as__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __cl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __cl__6Normal -PASS: gdb.cp/demangle.exp: gnu: __cl__6Stringii -PASS: gdb.cp/demangle.exp: gnu: __cm__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __co__3foo -PASS: gdb.cp/demangle.exp: gnu: __dl__3fooPv -PASS: gdb.cp/demangle.exp: gnu: __dv__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __er__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ge__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __gt__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __le__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ls__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamR3Fix -PASS: gdb.cp/demangle.exp: gnu: __lt__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __md__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __mi__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ml__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __mm__3fooi -PASS: gdb.cp/demangle.exp: gnu: __ne__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7ComplexT0 -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7Complexd -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC9SubStringRC6String -PASS: gdb.cp/demangle.exp: gnu: __nt__3foo -PASS: gdb.cp/demangle.exp: gnu: __nw__3fooi -PASS: gdb.cp/demangle.exp: gnu: __oo__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __opPc__3foo -PASS: gdb.cp/demangle.exp: gnu: __opi__3foo -PASS: gdb.cp/demangle.exp: gnu: __or__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __pl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __pp__3fooi -PASS: gdb.cp/demangle.exp: gnu: __rf__3foo -PASS: gdb.cp/demangle.exp: gnu: __rm__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __rs__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __vc__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: _gsub__6StringRC5RegexPCci -PASS: gdb.cp/demangle.exp: gnu: _new_Fix__FUs -PASS: gdb.cp/demangle.exp: gnu: _vt.foo -PASS: gdb.cp/demangle.exp: gnu: _vt.foo.bar -PASS: gdb.cp/demangle.exp: gnu: _vt$foo -PASS: gdb.cp/demangle.exp: gnu: _vt$foo$bar -PASS: gdb.cp/demangle.exp: gnu: append__7ivGlyphPT0 -PASS: gdb.cp/demangle.exp: gnu: arg__FRC7Complex -PASS: gdb.cp/demangle.exp: gnu: clearok__FP7_win_sti -PASS: gdb.cp/demangle.exp: gnu: complexfunc2__FPFPc_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc3__FPFPFPl_s_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc4__FPFPFPc_s_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc5__FPFPc_PFl_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc6__FPFPi_PFl_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc7__FPFPFPc_i_PFl_i -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC10BitPattern -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC12BitSubStringi -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRT0 -PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntRepT0P6IntRep -PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntReplP6IntRep -PASS: gdb.cp/demangle.exp: gnu: div__FRC8RationalT0R8Rational -PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerT0R7IntegerT2 -PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerlR7IntegerRl -PASS: gdb.cp/demangle.exp: gnu: enable__14DocumentViewerPCcUi -PASS: gdb.cp/demangle.exp: gnu: foo__FiN30 -PASS: gdb.cp/demangle.exp: gnu: foo__FiR3fooiT1iT1 -PASS: gdb.cp/demangle.exp: gnu: foo___3barl -PASS: gdb.cp/demangle.exp: gnu: insert__15ivClippingStacklRP8_XRegion -PASS: gdb.cp/demangle.exp: gnu: insert__16ChooserInfo_ListlR11ChooserInfo -PASS: gdb.cp/demangle.exp: gnu: insert__17FontFamilyRepListlRP15ivFontFamilyRep -PASS: gdb.cp/demangle.exp: gnu: leaveok__FP7_win_stc -PASS: gdb.cp/demangle.exp: gnu: left_mover__C7ivMFKitP12ivAdjustableP7ivStyle -PASS: gdb.cp/demangle.exp: gnu: matches__C9BitStringRC10BitPatterni -PASS: gdb.cp/demangle.exp: gnu: matches__C9SubStringRC5Regex -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FSc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUi -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUl -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUs -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fd -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Ff -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fi -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fl -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fs -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fv -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fi -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: pick__13ivCompositionP8ivCanvasRC12ivAllocationiR5ivHit -PASS: gdb.cp/demangle.exp: gnu: pointer__C11ivHScrollerRC7ivEventRC12ivAllocation -PASS: gdb.cp/demangle.exp: gnu: poke__8ivRasterUlUlffff -PASS: gdb.cp/demangle.exp: gnu: polar__Fdd -PASS: gdb.cp/demangle.exp: gnu: read__10osStdInputRPCc -PASS: gdb.cp/demangle.exp: gnu: scale__13ivTransformerff -PASS: gdb.cp/demangle.exp: gnu: scanw__12CursesWindowPCce -PASS: gdb.cp/demangle.exp: gnu: scmp__FPCcT0 -PASS: gdb.cp/demangle.exp: gnu: sgetn__7filebufPci -PASS: gdb.cp/demangle.exp: gnu: shift__FP5_FrepiT0 -PASS: gdb.cp/demangle.exp: gnu: test__C6BitSeti -PASS: gdb.cp/demangle.exp: gnu: test__C6BitSetii -PASS: gdb.cp/demangle.exp: gnu: testbit__FRC7Integerl -PASS: gdb.cp/demangle.exp: gnu: text_source__8Documentl -PASS: gdb.cp/demangle.exp: gnu: variance__6Erlangd -PASS: gdb.cp/demangle.exp: gnu: vform__8iostreamPCcPc -PASS: gdb.cp/demangle.exp: gnu: view__14DocumentViewerP8ItemViewP11TabularItem -PASS: gdb.cp/demangle.exp: gnu: xy_extents__11ivExtensionffff -PASS: gdb.cp/demangle.exp: gnu: zero__8osMemoryPvUi -PASS: gdb.cp/demangle.exp: gnu: _2T4$N -PASS: gdb.cp/demangle.exp: gnu: _Q22T42t1$N -PASS: gdb.cp/demangle.exp: gnu: get__2T1 -PASS: gdb.cp/demangle.exp: gnu: get__Q22T11a -PASS: gdb.cp/demangle.exp: gnu: get__Q32T11a1b -PASS: gdb.cp/demangle.exp: gnu: get__Q42T11a1b1c -PASS: gdb.cp/demangle.exp: gnu: get__Q52T11a1b1c1d -PASS: gdb.cp/demangle.exp: gnu: put__2T1i -PASS: gdb.cp/demangle.exp: gnu: put__Q22T11ai -PASS: gdb.cp/demangle.exp: gnu: put__Q32T11a1bi -PASS: gdb.cp/demangle.exp: gnu: put__Q42T11a1b1ci -PASS: gdb.cp/demangle.exp: gnu: put__Q52T11a1b1c1di -PASS: gdb.cp/demangle.exp: gnu: bar__3fooPv -PASS: gdb.cp/demangle.exp: gnu: bar__3fooPCv -PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPv -PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPCv -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRC3foo -PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooR3foo -PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11ZcUi -PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11Z1tUi -PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11ZcPv -PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11Z1tPv -PASS: gdb.cp/demangle.exp: gnu: __t2T11Zci -PASS: gdb.cp/demangle.exp: gnu: __t2T11Zc -PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1ti -PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1t -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0 -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element -PASS: gdb.cp/demangle.exp: gnu: __cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$D$set -PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$I$set -PASS: gdb.cp/demangle.exp: gnu: __as__t5ListS1ZUiRCt5ListS1ZUi -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCUiPT0 -PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCt10ListS_link1ZUi -PASS: gdb.cp/demangle.exp: gnu: __t5ListS1ZUiRCt5ListS1ZUi -PASS: gdb.cp/demangle.exp: gnu: next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t5SetLS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __t8ListElem1Z5LabelRt4List1Z5Label -PASS: gdb.cp/demangle.exp: gnu: __t8BDDHookV1ZPcRCPc -PASS: gdb.cp/demangle.exp: gnu: _vt$t8BDDHookV1ZPc -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ211BDDFunction4VixB -PASS: gdb.cp/demangle.exp: gnu: __eq__FPvRCQ211BDDFunction4VixB -PASS: gdb.cp/demangle.exp: gnu: relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters -PASS: gdb.cp/demangle.exp: gnu: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: gnu: foo__I40 -PASS: gdb.cp/demangle.exp: gnu: foo__I_200_ -PASS: gdb.cp/demangle.exp: gnu: foo__I_200 -PASS: gdb.cp/demangle.exp: gnu: foo__I_4000000000000000000000000000000000000000000000000000000000000000000000000 -PASS: gdb.cp/demangle.exp: gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator -PASS: gdb.cp/demangle.exp: arm: set demangle-style -PASS: gdb.cp/demangle.exp: arm: check demangling style -PASS: gdb.cp/demangle.exp: arm: __dt__21T5__pt__11_PFiPPdPv_iFv -PASS: gdb.cp/demangle.exp: arm: __ct__1cFi -PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_iFv -PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __ct__2T2Fi -PASS: gdb.cp/demangle.exp: arm: __dt__2T1Fv -PASS: gdb.cp/demangle.exp: arm: __dt__12T5__pt__3_1xFv -PASS: gdb.cp/demangle.exp: arm: __dt__17T5__pt__8_PFcPv_iFv -PASS: gdb.cp/demangle.exp: arm: g__FP1cPC1cT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUlPCUlT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUiPCUiT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUsPCUsT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUcPCUcT1 -PASS: gdb.cp/demangle.exp: arm: g__F1TPlPClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRlRClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPiPCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRiRCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPsPCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRsRCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPcPCcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRcRCcT2 -PASS: gdb.cp/demangle.exp: arm: __ct__21T5__pt__11_PFiPPdPv_iFi -PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __nw__2T1SFUi -PASS: gdb.cp/demangle.exp: arm: __dl__2T1SFPv -PASS: gdb.cp/demangle.exp: arm: put__2T7SFi -PASS: gdb.cp/demangle.exp: arm: __dl__12T5__pt__3_1xSFPv -PASS: gdb.cp/demangle.exp: arm: h__FUc -PASS: gdb.cp/demangle.exp: arm: f__Fic -PASS: gdb.cp/demangle.exp: arm: h__FUi -PASS: gdb.cp/demangle.exp: arm: h__Fci -PASS: gdb.cp/demangle.exp: arm: h__FUl -PASS: gdb.cp/demangle.exp: arm: h__Fcl -PASS: gdb.cp/demangle.exp: arm: h__FUs -PASS: gdb.cp/demangle.exp: arm: h__Fcs -PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUlRPCUlT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUiRPCUiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUsRPCUsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUcRPCUcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPlRPClT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPiRPCiT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPcRPCcT3 -PASS: gdb.cp/demangle.exp: arm: X__12T5__pt__3_1x -PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_cFi -PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: g__FcR1cRC1cT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRPdRPCdT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRPfRPCfT2 -PASS: gdb.cp/demangle.exp: arm: h__FcT1 -PASS: gdb.cp/demangle.exp: arm: f__Ficd -PASS: gdb.cp/demangle.exp: arm: g__F1T1SdRPsRPCsT4 -PASS: gdb.cp/demangle.exp: arm: g__F1cC1cT1 -PASS: gdb.cp/demangle.exp: arm: g__FPdPCdT1 -PASS: gdb.cp/demangle.exp: arm: g__FPfPCfT1 -PASS: gdb.cp/demangle.exp: arm: g__FUlCUlT1 -PASS: gdb.cp/demangle.exp: arm: g__FPlPClT1 -PASS: gdb.cp/demangle.exp: arm: g__FUiCUiT1 -PASS: gdb.cp/demangle.exp: arm: g__FPiPCiT1 -PASS: gdb.cp/demangle.exp: arm: g__FUsCUsT1 -PASS: gdb.cp/demangle.exp: arm: g__FPsPCsT1 -PASS: gdb.cp/demangle.exp: arm: g__FUcCUcT1 -PASS: gdb.cp/demangle.exp: arm: g__FPcPCcT1 -PASS: gdb.cp/demangle.exp: arm: g__F1TlClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TiCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TsCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TcCcT2 -PASS: gdb.cp/demangle.exp: arm: __dl__17T5__pt__8_PFcPv_iSFPv -PASS: gdb.cp/demangle.exp: arm: printf__FPCce -PASS: gdb.cp/demangle.exp: arm: X__17T5__pt__8_PFcPv_i -PASS: gdb.cp/demangle.exp: arm: __ct__12T5__pt__3_1xFi -PASS: gdb.cp/demangle.exp: arm: g__F1SRUlRCUlT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPlRPClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUiRCUiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPiRPCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUsRCUsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPsRPCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUcRCUcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPcRPCcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRlRClT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRiRCiT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRsRCsT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRcRCcT3 -PASS: gdb.cp/demangle.exp: arm: __dl__21T5__pt__11_PFiPPdPv_iSFPv -PASS: gdb.cp/demangle.exp: arm: __std__foo -PASS: gdb.cp/demangle.exp: arm: __sti__bar -PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFci_v -PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFic_v -PASS: gdb.cp/demangle.exp: arm: get__2T7SFv -PASS: gdb.cp/demangle.exp: arm: X__21T5__pt__11_PFiPPdPv_i -PASS: gdb.cp/demangle.exp: arm: g__FcRdRCdT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRfRCfT2 -PASS: gdb.cp/demangle.exp: arm: __md__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_iSFPv -PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_cSFPv -PASS: gdb.cp/demangle.exp: arm: h__Fc -PASS: gdb.cp/demangle.exp: arm: h__Fd -PASS: gdb.cp/demangle.exp: arm: h__Ff -PASS: gdb.cp/demangle.exp: arm: h__Fi -PASS: gdb.cp/demangle.exp: arm: f__Fi -PASS: gdb.cp/demangle.exp: arm: h__Fl -PASS: gdb.cp/demangle.exp: arm: h__Fs -PASS: gdb.cp/demangle.exp: arm: __md__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: g__FcRP1cRPC1cT2 -PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_c -PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_i -PASS: gdb.cp/demangle.exp: arm: g__FdCdT1 -PASS: gdb.cp/demangle.exp: arm: g__FfCfT1 -PASS: gdb.cp/demangle.exp: arm: g__FlClT1 -PASS: gdb.cp/demangle.exp: arm: g__FiCiT1 -PASS: gdb.cp/demangle.exp: arm: g__FsCsT1 -PASS: gdb.cp/demangle.exp: arm: g__FcCcT1 -PASS: gdb.cp/demangle.exp: arm: __ct__17T5__pt__8_PFcPv_iFi -PASS: gdb.cp/demangle.exp: arm: f__FicdPc -PASS: gdb.cp/demangle.exp: arm: __nw__FUi -PASS: gdb.cp/demangle.exp: arm: __ct__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: __dt__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: put__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: get__Q2_2T11aSFv -PASS: gdb.cp/demangle.exp: arm: put__2T1SFi -PASS: gdb.cp/demangle.exp: arm: put__Q5_2T11a1b1c1dSFi -PASS: gdb.cp/demangle.exp: arm: get__Q4_2T11a1b1cSFv -PASS: gdb.cp/demangle.exp: arm: put__Q2_2T11aSFi -PASS: gdb.cp/demangle.exp: arm: put__Q4_2T11a1b1cSFi -PASS: gdb.cp/demangle.exp: arm: get__Q3_2T11a1bSFv -PASS: gdb.cp/demangle.exp: arm: get__2T1SFv -PASS: gdb.cp/demangle.exp: arm: get__Q5_2T11a1b1c1dSFv -PASS: gdb.cp/demangle.exp: arm: __dt__11T1__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __dt__12T1__pt__3_1tFv -PASS: gdb.cp/demangle.exp: arm: __dl__12T1__pt__3_1tSFPv -PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFi -PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFi -PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFv -PASS: gdb.cp/demangle.exp: arm: __dl__11T1__pt__2_cSFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPCv -PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPCv -PASS: gdb.cp/demangle.exp: arm: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooFRC3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFR3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFRC3foo -PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_dFi -PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_dFi -PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2 -PASS: gdb.cp/demangle.exp: arm: bar__3fooFiT16FooBar -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPiN51PdN37PcN211T1iN215 -PASS: gdb.cp/demangle.exp: arm: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: hp: set demangle-style -PASS: gdb.cp/demangle.exp: hp: check demangling style -PASS: gdb.cp/demangle.exp: hp: g__FP1cPC1cT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUlPCUlT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUiPCUiT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUsPCUsT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUcPCUcT1 -PASS: gdb.cp/demangle.exp: hp: g__F1TPlPClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRlRClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPiPCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRiRCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPsPCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRsRCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPcPCcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRcRCcT2 -PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __nw__2T1SFUi -PASS: gdb.cp/demangle.exp: hp: __dl__2T1SFPv -PASS: gdb.cp/demangle.exp: hp: put__2T7SFi -PASS: gdb.cp/demangle.exp: hp: h__FUc -PASS: gdb.cp/demangle.exp: hp: f__Fic -PASS: gdb.cp/demangle.exp: hp: h__FUi -PASS: gdb.cp/demangle.exp: hp: h__Fci -PASS: gdb.cp/demangle.exp: hp: h__FUl -PASS: gdb.cp/demangle.exp: hp: h__Fcl -PASS: gdb.cp/demangle.exp: hp: h__FUs -PASS: gdb.cp/demangle.exp: hp: h__Fcs -PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUlRPCUlT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUiRPCUiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUsRPCUsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUcRPCUcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPlRPClT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPiRPCiT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPcRPCcT3 -PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: g__FcR1cRC1cT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRPdRPCdT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRPfRPCfT2 -PASS: gdb.cp/demangle.exp: hp: h__FcT1 -PASS: gdb.cp/demangle.exp: hp: f__Ficd -PASS: gdb.cp/demangle.exp: hp: g__F1T1SdRPsRPCsT4 -PASS: gdb.cp/demangle.exp: hp: g__F1cC1cT1 -PASS: gdb.cp/demangle.exp: hp: g__FPdPCdT1 -PASS: gdb.cp/demangle.exp: hp: g__FPfPCfT1 -PASS: gdb.cp/demangle.exp: hp: g__FUlCUlT1 -PASS: gdb.cp/demangle.exp: hp: g__FPlPClT1 -PASS: gdb.cp/demangle.exp: hp: g__FUiCUiT1 -PASS: gdb.cp/demangle.exp: hp: g__FPiPCiT1 -PASS: gdb.cp/demangle.exp: hp: g__FUsCUsT1 -PASS: gdb.cp/demangle.exp: hp: g__FPsPCsT1 -PASS: gdb.cp/demangle.exp: hp: g__FUcCUcT1 -PASS: gdb.cp/demangle.exp: hp: g__FPcPCcT1 -PASS: gdb.cp/demangle.exp: hp: g__F1TlClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TiCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TsCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TcCcT2 -PASS: gdb.cp/demangle.exp: hp: printf__FPCce -PASS: gdb.cp/demangle.exp: hp: g__F1SRUlRCUlT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPlRPClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUiRCUiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPiRPCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUsRCUsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPsRPCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUcRCUcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPcRPCcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRlRClT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRiRCiT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRsRCsT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRcRCcT3 -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFic_v -PASS: gdb.cp/demangle.exp: hp: get__2T7SFv -PASS: gdb.cp/demangle.exp: hp: g__FcRdRCdT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRfRCfT2 -PASS: gdb.cp/demangle.exp: hp: __md__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2i -PASS: gdb.cp/demangle.exp: hp: h__Fc -PASS: gdb.cp/demangle.exp: hp: h__Fd -PASS: gdb.cp/demangle.exp: hp: h__Ff -PASS: gdb.cp/demangle.exp: hp: h__Fi -PASS: gdb.cp/demangle.exp: hp: f__Fi -PASS: gdb.cp/demangle.exp: hp: h__Fl -PASS: gdb.cp/demangle.exp: hp: h__Fs -PASS: gdb.cp/demangle.exp: hp: __md__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: g__FcRP1cRPC1cT2 -PASS: gdb.cp/demangle.exp: hp: g__FdCdT1 -PASS: gdb.cp/demangle.exp: hp: g__FfCfT1 -PASS: gdb.cp/demangle.exp: hp: g__FlClT1 -PASS: gdb.cp/demangle.exp: hp: g__FiCiT1 -PASS: gdb.cp/demangle.exp: hp: g__FsCsT1 -PASS: gdb.cp/demangle.exp: hp: g__FcCcT1 -PASS: gdb.cp/demangle.exp: hp: f__FicdPc -PASS: gdb.cp/demangle.exp: hp: __nw__FUi -PASS: gdb.cp/demangle.exp: hp: __ct__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: __dt__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: put__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: get__Q2_2T11aSFv -PASS: gdb.cp/demangle.exp: hp: put__2T1SFi -PASS: gdb.cp/demangle.exp: hp: put__Q5_2T11a1b1c1dSFi -PASS: gdb.cp/demangle.exp: hp: get__Q4_2T11a1b1cSFv -PASS: gdb.cp/demangle.exp: hp: put__Q2_2T11aSFi -PASS: gdb.cp/demangle.exp: hp: put__Q4_2T11a1b1cSFi -PASS: gdb.cp/demangle.exp: hp: get__Q3_2T11a1bSFv -PASS: gdb.cp/demangle.exp: hp: get__2T1SFv -PASS: gdb.cp/demangle.exp: hp: get__Q5_2T11a1b1c1dSFv -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPv -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPCv -PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPv -PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPCv -PASS: gdb.cp/demangle.exp: hp: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooFRC3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFR3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFRC3foo -PASS: gdb.cp/demangle.exp: hp: bar__3fooFiT16FooBar -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPiN51PdN37PcN211T1iN215 -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFiPPdPv_i__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__1cFi -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTi__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T2Fi -PASS: gdb.cp/demangle.exp: hp: __dt__2T1Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XT1x__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFcPv_i__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFiPPdPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XT1x__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XT1x -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTc__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFcPv_i__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFcPv_i -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XT1x__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFiPPdPv_i__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFiPPdPv_i -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTi__SFPv -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTc__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTc -PASS: gdb.cp/demangle.exp: hp: X__2T5XTi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: __dt__2T1XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T1XT1t__Fv -PASS: gdb.cp/demangle.exp: hp: __dl__2T1XT1t__SFPv -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fv -PASS: gdb.cp/demangle.exp: hp: __dl__2T1XTc__SFPv -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTd__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTd__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2 -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiUP34__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXUP2701Td__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSP334__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSM__SCFPPd -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67UP4000TRs__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67TRdTFPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: X__6vectorXTiSN67TdTPvUP5TRs -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3foo__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3fooTPvA5Label__FiPPvT2 -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN42A3foo__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_2 -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_19 -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v_34 -PASS: gdb.cp/demangle.exp: hp: spec__13Spec<%1,%1.*>XTiTPi_FPi -PASS: gdb.cp/demangle.exp: hp: spec__16Spec<%1,%1.&,%1>XTiTRiTi_FPi -PASS: gdb.cp/demangle.exp: hp: add__XTc_FcT1 -PASS: gdb.cp/demangle.exp: hp: add__XTcSP9A5label_FcPPlT1 -PASS: gdb.cp/demangle.exp: hp: add__XTPfTFPd_f_FcT1 -PASS: gdb.cp/demangle.exp: hp: unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv -PASS: gdb.cp/demangle.exp: hp: _Utf390_1__1_9223372036854775807__9223372036854775 -Running ./gdb.cp/derivation.exp ... -PASS: gdb.cp/derivation.exp: before run: ptype A::value_type -PASS: gdb.cp/derivation.exp: before run: whatis A::value_type -PASS: gdb.cp/derivation.exp: before run: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype D::value_type -PASS: gdb.cp/derivation.exp: before run: whatis D::value_type -PASS: gdb.cp/derivation.exp: before run: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype E::value_type -PASS: gdb.cp/derivation.exp: before run: whatis E::value_type -PASS: gdb.cp/derivation.exp: before run: p (E::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype F::value_type -PASS: gdb.cp/derivation.exp: before run: whatis F::value_type -PASS: gdb.cp/derivation.exp: before run: p (F::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype A2::value_type -PASS: gdb.cp/derivation.exp: before run: whatis A2::value_type -PASS: gdb.cp/derivation.exp: before run: p (A2::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype D2::value_type -PASS: gdb.cp/derivation.exp: before run: whatis D2::value_type -PASS: gdb.cp/derivation.exp: before run: p (D2::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype Z::value_type -PASS: gdb.cp/derivation.exp: before run: whatis Z::value_type -PASS: gdb.cp/derivation.exp: before run: p (Z::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype ZZ::value_type -PASS: gdb.cp/derivation.exp: before run: whatis ZZ::value_type -PASS: gdb.cp/derivation.exp: before run: p (ZZ::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype A::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis A::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype D::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis D::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype A2::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis A2::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (A2::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype D2::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis D2::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (D2::value_type) 0 -PASS: gdb.cp/derivation.exp: up from marker1 -PASS: gdb.cp/derivation.exp: print value of a_instance -PASS: gdb.cp/derivation.exp: ptype a_instance -PASS: gdb.cp/derivation.exp: print value of d_instance -PASS: gdb.cp/derivation.exp: ptype d_instance -PASS: gdb.cp/derivation.exp: print value of e_instance -PASS: gdb.cp/derivation.exp: ptype e_instance -PASS: gdb.cp/derivation.exp: print value of f_instance -PASS: gdb.cp/derivation.exp: ptype f_instance -PASS: gdb.cp/derivation.exp: ptype g_instance -PASS: gdb.cp/derivation.exp: print value of d_instance.a -PASS: gdb.cp/derivation.exp: print value of d_instance.aa -PASS: gdb.cp/derivation.exp: print value of d_instance.b -PASS: gdb.cp/derivation.exp: print value of d_instance.bb -PASS: gdb.cp/derivation.exp: print value of d_instance.c -PASS: gdb.cp/derivation.exp: print value of d_instance.cc -PASS: gdb.cp/derivation.exp: print value of d_instance.d -PASS: gdb.cp/derivation.exp: print value of d_instance.dd -PASS: gdb.cp/derivation.exp: print value of g_instance.a -PASS: gdb.cp/derivation.exp: print value of g_instance.b -PASS: gdb.cp/derivation.exp: print value of g_instance.c -PASS: gdb.cp/derivation.exp: print value of g_instance.afoo() -PASS: gdb.cp/derivation.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/derivation.exp: print value of g_instance.bfoo() -PASS: gdb.cp/derivation.exp: print value of g_instance.cfoo() -PASS: gdb.cp/derivation.exp: whatis c_instance.c -PASS: gdb.cp/derivation.exp: ptype c_instance.c -PASS: gdb.cp/derivation.exp: whatis g_instance.g -PASS: gdb.cp/derivation.exp: ptype g_instance.g -PASS: gdb.cp/derivation.exp: whatis a_instance.a -PASS: gdb.cp/derivation.exp: ptype a_instance.a -PASS: gdb.cp/derivation.exp: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis b_instance.b -PASS: gdb.cp/derivation.exp: ptype b_instance.b -PASS: gdb.cp/derivation.exp: whatis d_instance.d -PASS: gdb.cp/derivation.exp: ptype d_instance.d -PASS: gdb.cp/derivation.exp: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis e_instance.e -PASS: gdb.cp/derivation.exp: ptype e_instance.e -PASS: gdb.cp/derivation.exp: p (E::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis f_instance.f -PASS: gdb.cp/derivation.exp: ptype f_instance.f -PASS: gdb.cp/derivation.exp: p (F::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis z_instance.z -PASS: gdb.cp/derivation.exp: ptype z_instance.z -PASS: gdb.cp/derivation.exp: p (Z::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis zz_instance.zz -PASS: gdb.cp/derivation.exp: ptype zz_instance.zz -PASS: gdb.cp/derivation.exp: p (ZZ::value_type) 0 -PASS: gdb.cp/derivation.exp: ptype vderived -PASS: gdb.cp/derivation.exp: print vderived -PASS: gdb.cp/derivation.exp: ptype N::value_type -PASS: gdb.cp/derivation.exp: ptype N::Derived::value_type -PASS: gdb.cp/derivation.exp: ptype value_type -Running ./gdb.cp/destrprint.exp ... -PASS: gdb.cp/destrprint.exp: continue to breakpoint: Break here -PASS: gdb.cp/destrprint.exp: go up to ~Derived -PASS: gdb.cp/destrprint.exp: set print object on -PASS: gdb.cp/destrprint.exp: print *this with print object = on -PASS: gdb.cp/destrprint.exp: set print object off -PASS: gdb.cp/destrprint.exp: print *this with print object = off -Running ./gdb.cp/dispcxx.exp ... -PASS: gdb.cp/dispcxx.exp: continue to breakpoint: here -PASS: gdb.cp/dispcxx.exp: display k -Running ./gdb.cp/exception.exp ... -PASS: gdb.cp/exception.exp: catch catch (before inferior run) -PASS: gdb.cp/exception.exp: catch throw (before inferior run) -PASS: gdb.cp/exception.exp: info breakpoints (before inferior run) -PASS: gdb.cp/exception.exp: Set temporary breakpoint at main -PASS: gdb.cp/exception.exp: Run to main -FAIL: gdb.cp/exception.exp: info breakpoints (after inferior run) -PASS: gdb.cp/exception.exp: break catcher -FAIL: gdb.cp/exception.exp: continue to first throw -FAIL: gdb.cp/exception.exp: backtrace after first throw -FAIL: gdb.cp/exception.exp: continue to first catch -FAIL: gdb.cp/exception.exp: backtrace after first catch -PASS: gdb.cp/exception.exp: continue to catcher for the first time -FAIL: gdb.cp/exception.exp: continue to second throw -FAIL: gdb.cp/exception.exp: backtrace after second throw -FAIL: gdb.cp/exception.exp: continue to second catch -FAIL: gdb.cp/exception.exp: backtrace after second catch -FAIL: gdb.cp/exception.exp: continue to catcher for the second time (the program is no longer running) -Running ./gdb.cp/expand-psymtabs-cxx.exp ... -PASS: gdb.cp/expand-psymtabs-cxx.exp: set language c++ -PASS: gdb.cp/expand-psymtabs-cxx.exp: before expand -PASS: gdb.cp/expand-psymtabs-cxx.exp: force expand -PASS: gdb.cp/expand-psymtabs-cxx.exp: after expand -Running ./gdb.cp/expand-sals.exp ... -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: func -PASS: gdb.cp/expand-sals.exp: up -PASS: gdb.cp/expand-sals.exp: break -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: caller -PASS: gdb.cp/expand-sals.exp: bt from A -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: next caller func -Running ./gdb.cp/extern-c.exp ... -PASS: gdb.cp/extern-c.exp: setting breakpoint at c_func -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_func -PASS: gdb.cp/extern-c.exp: initialize counter -PASS: gdb.cp/extern-c.exp: rbreak c_funcs -PASS: gdb.cp/extern-c.exp: command details for multiple breakpoints -PASS: gdb.cp/extern-c.exp: set commands on multiple breakpoints -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_1 -PASS: gdb.cp/extern-c.exp: verify counter at first breakpoint -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_2 -PASS: gdb.cp/extern-c.exp: verify counter at second breakpoint -Running ./gdb.cp/formatted-ref.exp ... -PASS: gdb.cp/formatted-ref.exp: print/x s -PASS: gdb.cp/formatted-ref.exp: print/x e -PASS: gdb.cp/formatted-ref.exp: print/x i -PASS: gdb.cp/formatted-ref.exp: print/x &s -PASS: gdb.cp/formatted-ref.exp: print/x &e -PASS: gdb.cp/formatted-ref.exp: print/x &i -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&s)) -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&i)) -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&e)) -PASS: gdb.cp/formatted-ref.exp: print s.x == 13 -Running ./gdb.cp/fpointer.exp ... -PASS: gdb.cp/fpointer.exp: p p1() -PASS: gdb.cp/fpointer.exp: p p2() -PASS: gdb.cp/fpointer.exp: p p[0]() -PASS: gdb.cp/fpointer.exp: p p[1]() -PASS: gdb.cp/fpointer.exp: p p3('a') -PASS: gdb.cp/fpointer.exp: p p4(1) -Running ./gdb.cp/gdb1355.exp ... -PASS: gdb.cp/gdb1355.exp: ptype s1 -PASS: gdb.cp/gdb1355.exp: print s1 -Running ./gdb.cp/gdb2384.exp ... -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here -FAIL: gdb.cp/gdb2384.exp: print d1.meth () -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here -FAIL: gdb.cp/gdb2384.exp: gdb2384 -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second) -FAIL: gdb.cp/gdb2384.exp: print d2.meth() -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second) -FAIL: gdb.cp/gdb2384.exp: gdb2384 (second) -Running ./gdb.cp/gdb2495.exp ... -PASS: gdb.cp/gdb2495.exp: p exceptions.no_throw_function() -PASS: gdb.cp/gdb2495.exp: p exceptions.throw_function_with_handler() -FAIL: gdb.cp/gdb2495.exp: Call a function that raises an exception without a handler. -FAIL: gdb.cp/gdb2495.exp: bt after returning from a popped frame -PASS: gdb.cp/gdb2495.exp: info breakpoints -PASS: gdb.cp/gdb2495.exp: set unwinn-on-terminating-exception off -PASS: gdb.cp/gdb2495.exp: Turn off unwind on terminating exception flag -PASS: gdb.cp/gdb2495.exp: Call a function that raises an exception with unwinding off.. -PASS: gdb.cp/gdb2495.exp: set unwindonsignal on -PASS: gdb.cp/gdb2495.exp: Turn on unwind on signal -PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1) -PASS: gdb.cp/gdb2495.exp: set unwindonsignal off -PASS: gdb.cp/gdb2495.exp: Turn off unwind on signal -PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1) -Running ./gdb.cp/hang.exp ... -PASS: gdb.cp/hang.exp: doesn't overwrite struct type -PASS: gdb.cp/hang.exp: doesn't corrupt cv_type chain -Running ./gdb.cp/infcall-dlopen.exp ... -FAIL: gdb.cp/infcall-dlopen.exp: test 0 (GDB internal error) -PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 1 -PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 2 -PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 3 -PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 4 -PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 5 -PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 6 -PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 7 -PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 8 -PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 2 -FAIL: gdb.cp/infcall-dlopen.exp: test 9 -PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 2 -Running ./gdb.cp/inherit.exp ... -PASS: gdb.cp/inherit.exp: set width 0 -PASS: gdb.cp/inherit.exp: set language c++ -PASS: gdb.cp/inherit.exp: ptype A (FIXME) -PASS: gdb.cp/inherit.exp: ptype class A (FIXME) -PASS: gdb.cp/inherit.exp: ptype g_A (FIXME) -PASS: gdb.cp/inherit.exp: ptype B -PASS: gdb.cp/inherit.exp: ptype class B -PASS: gdb.cp/inherit.exp: ptype g_B -PASS: gdb.cp/inherit.exp: ptype C -PASS: gdb.cp/inherit.exp: ptype class C -PASS: gdb.cp/inherit.exp: ptype g_C -PASS: gdb.cp/inherit.exp: ptype tagless struct -PASS: gdb.cp/inherit.exp: ptype variable of type tagless struct -PASS: gdb.cp/inherit.exp: ptype D -PASS: gdb.cp/inherit.exp: ptype class D -PASS: gdb.cp/inherit.exp: ptype g_D -PASS: gdb.cp/inherit.exp: ptype E -PASS: gdb.cp/inherit.exp: ptype class E -PASS: gdb.cp/inherit.exp: ptype g_E -PASS: gdb.cp/inherit.exp: ptype vA -PASS: gdb.cp/inherit.exp: ptype class vA -PASS: gdb.cp/inherit.exp: ptype g_vA -PASS: gdb.cp/inherit.exp: ptype vB -PASS: gdb.cp/inherit.exp: ptype class vB -PASS: gdb.cp/inherit.exp: ptype g_vB -PASS: gdb.cp/inherit.exp: ptype vC -PASS: gdb.cp/inherit.exp: ptype class vC -PASS: gdb.cp/inherit.exp: ptype g_vC -PASS: gdb.cp/inherit.exp: ptype vD -PASS: gdb.cp/inherit.exp: ptype class vD -PASS: gdb.cp/inherit.exp: ptype g_vD -PASS: gdb.cp/inherit.exp: ptype vE -PASS: gdb.cp/inherit.exp: ptype class vE -PASS: gdb.cp/inherit.exp: ptype g_vE -PASS: gdb.cp/inherit.exp: print g_A.A::a -PASS: gdb.cp/inherit.exp: print g_A.A::x -PASS: gdb.cp/inherit.exp: print g_A.a -PASS: gdb.cp/inherit.exp: print g_A.x -PASS: gdb.cp/inherit.exp: print g_B.A::a -PASS: gdb.cp/inherit.exp: print g_B.A::x -PASS: gdb.cp/inherit.exp: print g_B.B::b -PASS: gdb.cp/inherit.exp: print g_B.B::x -PASS: gdb.cp/inherit.exp: print g_B.a -PASS: gdb.cp/inherit.exp: print g_B.b -PASS: gdb.cp/inherit.exp: print g_B.x -PASS: gdb.cp/inherit.exp: print g_C.A::a -PASS: gdb.cp/inherit.exp: print g_C.A::x -PASS: gdb.cp/inherit.exp: print g_C.C::c -PASS: gdb.cp/inherit.exp: print g_C.C::x -PASS: gdb.cp/inherit.exp: print g_C.a -PASS: gdb.cp/inherit.exp: print g_C.c -PASS: gdb.cp/inherit.exp: print g_C.x -PASS: gdb.cp/inherit.exp: print g_A -PASS: gdb.cp/inherit.exp: print g_B -PASS: gdb.cp/inherit.exp: print g_C -PASS: gdb.cp/inherit.exp: print g_A.A::a -PASS: gdb.cp/inherit.exp: print g_A.A::x -PASS: gdb.cp/inherit.exp: print g_B.A::a -PASS: gdb.cp/inherit.exp: print g_B.A::x -PASS: gdb.cp/inherit.exp: print g_B.B::b -PASS: gdb.cp/inherit.exp: print g_B.B::x -PASS: gdb.cp/inherit.exp: print g_C.A::a -PASS: gdb.cp/inherit.exp: print g_C.A::x -PASS: gdb.cp/inherit.exp: print g_C.C::c -PASS: gdb.cp/inherit.exp: print g_C.C::x -PASS: gdb.cp/inherit.exp: print g_D.A::a -PASS: gdb.cp/inherit.exp: print g_D.C::a -PASS: gdb.cp/inherit.exp: print g_D.B::a -PASS: gdb.cp/inherit.exp: print g_D.A::x -PASS: gdb.cp/inherit.exp: print g_D.B::b -PASS: gdb.cp/inherit.exp: print g_D.B::x -PASS: gdb.cp/inherit.exp: print g_D.C::c -PASS: gdb.cp/inherit.exp: print g_D.C::x -PASS: gdb.cp/inherit.exp: print g_D.D::d -PASS: gdb.cp/inherit.exp: print g_D.D::x -PASS: gdb.cp/inherit.exp: print g_E.A::a -PASS: gdb.cp/inherit.exp: print g_E.A::x -PASS: gdb.cp/inherit.exp: print g_E.B::b -PASS: gdb.cp/inherit.exp: print g_E.B::x -PASS: gdb.cp/inherit.exp: print g_E.C::c -PASS: gdb.cp/inherit.exp: print g_E.C::x -PASS: gdb.cp/inherit.exp: print g_E.D::d -PASS: gdb.cp/inherit.exp: print g_E.D::x -PASS: gdb.cp/inherit.exp: print g_E.E::e -PASS: gdb.cp/inherit.exp: print g_E.E::x -PASS: gdb.cp/inherit.exp: ptype g_D.b -PASS: gdb.cp/inherit.exp: ptype g_D.c -PASS: gdb.cp/inherit.exp: ptype g_D.d -PASS: gdb.cp/inherit.exp: ptype g_A.A::a -PASS: gdb.cp/inherit.exp: ptype g_A.A::x -PASS: gdb.cp/inherit.exp: ptype g_B.A::a -PASS: gdb.cp/inherit.exp: ptype g_B.A::x -PASS: gdb.cp/inherit.exp: ptype g_B.B::b -PASS: gdb.cp/inherit.exp: ptype g_B.B::x -PASS: gdb.cp/inherit.exp: ptype g_C.A::a -PASS: gdb.cp/inherit.exp: ptype g_C.A::x -PASS: gdb.cp/inherit.exp: ptype g_C.C::c -PASS: gdb.cp/inherit.exp: ptype g_C.C::x -PASS: gdb.cp/inherit.exp: ptype g_D.A::a -PASS: gdb.cp/inherit.exp: ptype g_D.A::x -PASS: gdb.cp/inherit.exp: ptype g_D.B::b -PASS: gdb.cp/inherit.exp: ptype g_D.B::x -PASS: gdb.cp/inherit.exp: ptype g_D.C::c -PASS: gdb.cp/inherit.exp: ptype g_D.C::x -PASS: gdb.cp/inherit.exp: ptype g_D.D::d -PASS: gdb.cp/inherit.exp: ptype g_D.D::x -PASS: gdb.cp/inherit.exp: ptype g_E.A::a -PASS: gdb.cp/inherit.exp: ptype g_E.A::x -PASS: gdb.cp/inherit.exp: ptype g_E.B::b -PASS: gdb.cp/inherit.exp: ptype g_E.B::x -PASS: gdb.cp/inherit.exp: ptype g_E.C::c -PASS: gdb.cp/inherit.exp: ptype g_E.C::x -PASS: gdb.cp/inherit.exp: ptype g_E.D::d -PASS: gdb.cp/inherit.exp: ptype g_E.D::x -PASS: gdb.cp/inherit.exp: ptype g_E.E::e -PASS: gdb.cp/inherit.exp: ptype g_E.E::x -PASS: gdb.cp/inherit.exp: print g_D -PASS: gdb.cp/inherit.exp: print g_E -PASS: gdb.cp/inherit.exp: print anonymous union member -PASS: gdb.cp/inherit.exp: print variable of type anonymous union -PASS: gdb.cp/inherit.exp: print type of anonymous union -PASS: gdb.cp/inherit.exp: print g_vA.vA::va -PASS: gdb.cp/inherit.exp: print g_vA.vA::vx -PASS: gdb.cp/inherit.exp: print g_vA.va -PASS: gdb.cp/inherit.exp: print g_vA.vx -PASS: gdb.cp/inherit.exp: print g_vB.vA::va -PASS: gdb.cp/inherit.exp: print g_vB.vA::vx -PASS: gdb.cp/inherit.exp: print g_vB.vB::vb -PASS: gdb.cp/inherit.exp: print g_vB.vB::vx -PASS: gdb.cp/inherit.exp: print g_vB.va -PASS: gdb.cp/inherit.exp: print g_vB.vb -PASS: gdb.cp/inherit.exp: print g_vB.vx -PASS: gdb.cp/inherit.exp: print g_vC.vA::va -PASS: gdb.cp/inherit.exp: print g_vC.vA::vx -PASS: gdb.cp/inherit.exp: print g_vC.vC::vc -PASS: gdb.cp/inherit.exp: print g_vC.vC::vx -PASS: gdb.cp/inherit.exp: print g_vC.va -PASS: gdb.cp/inherit.exp: print g_vC.vc -PASS: gdb.cp/inherit.exp: print g_vC.vx -PASS: gdb.cp/inherit.exp: print g_vA -PASS: gdb.cp/inherit.exp: print g_vB (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vC (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vD.vA::va -PASS: gdb.cp/inherit.exp: print g_vD.vA::vx -PASS: gdb.cp/inherit.exp: print g_vD.vB::vb -PASS: gdb.cp/inherit.exp: print g_vD.vB::vx -PASS: gdb.cp/inherit.exp: print g_vD.vC::vc -PASS: gdb.cp/inherit.exp: print g_vD.vC::vx -PASS: gdb.cp/inherit.exp: print g_vD.vD::vd -PASS: gdb.cp/inherit.exp: print g_vD.vD::vx -PASS: gdb.cp/inherit.exp: print g_vE.vA::va -PASS: gdb.cp/inherit.exp: print g_vE.vA::vx -PASS: gdb.cp/inherit.exp: print g_vE.vB::vb -PASS: gdb.cp/inherit.exp: print g_vE.vB::vx -PASS: gdb.cp/inherit.exp: print g_vE.vC::vc -PASS: gdb.cp/inherit.exp: print g_vE.vC::vx -PASS: gdb.cp/inherit.exp: print g_vE.vD::vd -PASS: gdb.cp/inherit.exp: print g_vE.vD::vx -PASS: gdb.cp/inherit.exp: print g_vE.vE::ve -PASS: gdb.cp/inherit.exp: print g_vE.vE::vx -PASS: gdb.cp/inherit.exp: print g_vD (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vE (FIXME v3 vtbl ptr) -Running ./gdb.cp/koenig.exp ... -PASS: gdb.cp/koenig.exp: p first(c) -PASS: gdb.cp/koenig.exp: p second(0,0,c,0,0) -PASS: gdb.cp/koenig.exp: p entry (c) -PASS: gdb.cp/koenig.exp: p first(0,c) -PASS: gdb.cp/koenig.exp: p first(b.c) -PASS: gdb.cp/koenig.exp: p foo(eo) -PASS: gdb.cp/koenig.exp: p foo(eo, eo) -PASS: gdb.cp/koenig.exp: p foo(eo, eo, 1) -PASS: gdb.cp/koenig.exp: p foo(fo, eo) -PASS: gdb.cp/koenig.exp: p foo(1 ,fo, eo) -PASS: gdb.cp/koenig.exp: p foo(go, fo, eo) -PASS: gdb.cp/koenig.exp: p fake(eo) -PASS: gdb.cp/koenig.exp: p foo (fake) -PASS: gdb.cp/koenig.exp: p foo(io) -PASS: gdb.cp/koenig.exp: p foo(ix) -PASS: gdb.cp/koenig.exp: p foo(ju) -PASS: gdb.cp/koenig.exp: p foo(js) -PASS: gdb.cp/koenig.exp: p foo(je) -XFAIL: gdb.cp/koenig.exp: p foo(jab) -PASS: gdb.cp/koenig.exp: p foo(jap) -PASS: gdb.cp/koenig.exp: p foo(japp) -PASS: gdb.cp/koenig.exp: p foo(jca) -PASS: gdb.cp/koenig.exp: p foo(ko,1) -PASS: gdb.cp/koenig.exp: p foo(ko,1.0f) -XFAIL: gdb.cp/koenig.exp: p bar(ko,1) -PASS: gdb.cp/koenig.exp: p foo(labo) -PASS: gdb.cp/koenig.exp: p ma.foo('a') -PASS: gdb.cp/koenig.exp: p foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::N::foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::FAKE::foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::N::fake(ma,'a') -PASS: gdb.cp/koenig.exp: p M::bar('a') -PASS: gdb.cp/koenig.exp: p M::N::bar('a') -PASS: gdb.cp/koenig.exp: p foo(ttoa, 'a') -PASS: gdb.cp/koenig.exp: p foo (p_union) -PASS: gdb.cp/koenig.exp: p q == 5 -PASS: gdb.cp/koenig.exp: p q == 5.0f -PASS: gdb.cp/koenig.exp: p q != 5 -PASS: gdb.cp/koenig.exp: p q != 5.0f -PASS: gdb.cp/koenig.exp: p q + 5.0f -PASS: gdb.cp/koenig.exp: p q + 5 -PASS: gdb.cp/koenig.exp: p ++q -PASS: gdb.cp/koenig.exp: p r.rfoo() -PASS: gdb.cp/koenig.exp: continue to breakpoint: marker1 -PASS: gdb.cp/koenig.exp: p rfoo() -PASS: gdb.cp/koenig.exp: p this->rfoo() -Running ./gdb.cp/local.exp ... -PASS: gdb.cp/local.exp: up from marker1 -PASS: gdb.cp/local.exp: ptype l -PASS: gdb.cp/local.exp: ptype Local -PASS: gdb.cp/local.exp: break marker2 -PASS: gdb.cp/local.exp: continuing to marker2 -PASS: gdb.cp/local.exp: up from marker2 -PASS: gdb.cp/local.exp: Local out of scope -PASS: gdb.cp/local.exp: ptype InnerLocal (pattern 1) -PASS: gdb.cp/local.exp: ptype NestedInnerLocal -KFAIL: gdb.cp/local.exp: ptype InnerLocal::NestedInnerLocal (PRMS: gdb/482) -Running ./gdb.cp/maint.exp ... -PASS: gdb.cp/maint.exp: help maintenance cplus -PASS: gdb.cp/maint.exp: help maint cp -PASS: gdb.cp/maint.exp: maint cp -PASS: gdb.cp/maint.exp: help maint cp first_component -PASS: gdb.cp/maint.exp: help maint cp namespace -PASS: gdb.cp/maint.exp: set complaints 1000 -PASS: gdb.cp/maint.exp: maint cp first_component foo -PASS: gdb.cp/maint.exp: maint cp first_component operator<< -PASS: gdb.cp/maint.exp: maint cp first_component operator>> -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component operator() -PASS: gdb.cp/maint.exp: maint cp first_component operator> -PASS: gdb.cp/maint.exp: maint cp first_component operator< -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component foo() -PASS: gdb.cp/maint.exp: maint cp first_component foo(int) -PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y) -PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y, A::B) -PASS: gdb.cp/maint.exp: maint cp first_component foo(std::basic_streambuf >) -PASS: gdb.cp/maint.exp: maint cp first_component operator>(X::Y) -PASS: gdb.cp/maint.exp: maint cp first_component int operator<< () -PASS: gdb.cp/maint.exp: maint cp first_component T -PASS: gdb.cp/maint.exp: maint cp first_component int foo<&(operator<<(C, C))>() -PASS: gdb.cp/maint.exp: maint cp first_component int foo<&operator<<(C, C)>() -PASS: gdb.cp/maint.exp: maint cp first_component int foo() -PASS: gdb.cp/maint.exp: maint cp first_component foo::bar -PASS: gdb.cp/maint.exp: maint cp first_component foo::bar::baz -PASS: gdb.cp/maint.exp: maint cp first_component C::bar -PASS: gdb.cp/maint.exp: maint cp first_component C > >::bar -PASS: gdb.cp/maint.exp: maint cp first_component foo< -PASS: gdb.cp/maint.exp: maint cp first_component foo( -PASS: gdb.cp/maint.exp: maint cp first_component bool operator< -PASS: gdb.cp/maint.exp: maint cp namespace -Running ./gdb.cp/mb-ctor.exp ... -PASS: gdb.cp/mb-ctor.exp: set-breakpoint at ctor -PASS: gdb.cp/mb-ctor.exp: set-breakpoint at dtor -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v1 -PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v2 -PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v1 -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v2 -PASS: gdb.cp/mb-ctor.exp: run to exit -Running ./gdb.cp/mb-inline.exp ... -PASS: gdb.cp/mb-inline.exp: set breakpoint -PASS: gdb.cp/mb-inline.exp: info break -PASS: gdb.cp/mb-inline.exp: run to breakpoint -PASS: gdb.cp/mb-inline.exp: run to breakpoint 2 -PASS: gdb.cp/mb-inline.exp: disabling location: disable -PASS: gdb.cp/mb-inline.exp: disabling location: run to breakpoint -PASS: gdb.cp/mb-inline.exp: disabled breakpoint 1.2 -PASS: gdb.cp/mb-inline.exp: set multi_line_foo breakpoint -PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 afn -PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 bfn -Running ./gdb.cp/mb-templates.exp ... -PASS: gdb.cp/mb-templates.exp: initial condition: set breakpoint -PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint -PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: kill -PASS: gdb.cp/mb-templates.exp: separate condition: set breakpoint -PASS: gdb.cp/mb-templates.exp: separate condition: set condition -PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint -PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: disabling location: disable -PASS: gdb.cp/mb-templates.exp: disabling location: run to breakpoint -PASS: gdb.cp/mb-templates.exp: disabling location: enable -PASS: gdb.cp/mb-templates.exp: disable breakpoint: disable -PASS: gdb.cp/mb-templates.exp: disable breakpoint: run to breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: set breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: set multi_line_foo breakpoint -PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 -PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 -Running ./gdb.cp/m-data.exp ... -PASS: gdb.cp/m-data.exp: continue to breakpoint: end of first constructors -PASS: gdb.cp/m-data.exp: simple object, const bool -PASS: gdb.cp/m-data.exp: simple object, const int -PASS: gdb.cp/m-data.exp: simple object, long -PASS: gdb.cp/m-data.exp: simple object, enum -PASS: gdb.cp/m-data.exp: derived template object, base const bool -PASS: gdb.cp/m-data.exp: derived template object, base const int -PASS: gdb.cp/m-data.exp: derived template object, base long -PASS: gdb.cp/m-data.exp: derived template object, base enum -PASS: gdb.cp/m-data.exp: derived template object, derived enum -PASS: gdb.cp/m-data.exp: template object, const bool -PASS: gdb.cp/m-data.exp: template object, const int -PASS: gdb.cp/m-data.exp: template object, long -PASS: gdb.cp/m-data.exp: template object, base enum -PASS: gdb.cp/m-data.exp: template object, derived enum -PASS: gdb.cp/m-data.exp: continue to breakpoint: continue to shadow breakpoint -PASS: gdb.cp/m-data.exp: shadowing member -PASS: gdb.cp/m-data.exp: shadowed global variable -Running ./gdb.cp/member-name.exp ... -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to first breakpoint -PASS: gdb.cp/member-name.exp: print C::x from first breakpoint -PASS: gdb.cp/member-name.exp: print B::b from first breakpoint -PASS: gdb.cp/member-name.exp: print inner::z from first breakpoint -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to second breakpoint -PASS: gdb.cp/member-name.exp: print C::x from second breakpoint -PASS: gdb.cp/member-name.exp: print B::b from second breakpoint -PASS: gdb.cp/member-name.exp: print inner::z from second breakpoint -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to third breakpoint -PASS: gdb.cp/member-name.exp: print Templ::y from third breakpoint -Running ./gdb.cp/member-ptr.exp ... -PASS: gdb.cp/member-ptr.exp: continue to breakpoint: continue to pmi = NULL -PASS: gdb.cp/member-ptr.exp: ptype pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (A::j) -PASS: gdb.cp/member-ptr.exp: set var pmi = &A::jj -PASS: gdb.cp/member-ptr.exp: print pmi (A::jj) -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::jj) -PASS: gdb.cp/member-ptr.exp: set var pmi = &A::j -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (again) -PASS: gdb.cp/member-ptr.exp: print a.*pmi = 33 -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (33) -PASS: gdb.cp/member-ptr.exp: print a (j = 33) -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi = 44 -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (44) -PASS: gdb.cp/member-ptr.exp: print a (j = 44) -PASS: gdb.cp/member-ptr.exp: ptype a.*pmi -PASS: gdb.cp/member-ptr.exp: print *pmi -PASS: gdb.cp/member-ptr.exp: ptype *pmi -PASS: gdb.cp/member-ptr.exp: print (int) pmi -PASS: gdb.cp/member-ptr.exp: print ((int) pmi) == ((char *) &a.j - (char *) &a) -PASS: gdb.cp/member-ptr.exp: ptype diamond_pfunc_ptr -PASS: gdb.cp/member-ptr.exp: ptype diamond.*diamond_pfunc_ptr -PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pfunc_ptr (20) -PASS: gdb.cp/member-ptr.exp: print (diamond.*diamond_pfunc_ptr) (20) -PASS: gdb.cp/member-ptr.exp: print diamond.func_ptr (20) -PASS: gdb.cp/member-ptr.exp: ptype pmf -PASS: gdb.cp/member-ptr.exp: print pmf -PASS: gdb.cp/member-ptr.exp: ptype pmf_p -PASS: gdb.cp/member-ptr.exp: gdb/NNNN -PASS: gdb.cp/member-ptr.exp: print a.*pmf -PASS: gdb.cp/member-ptr.exp: print a_p->*pmf -PASS: gdb.cp/member-ptr.exp: set var pmf = &A::foo -PASS: gdb.cp/member-ptr.exp: print *pmf -PASS: gdb.cp/member-ptr.exp: ptype *pmf -PASS: gdb.cp/member-ptr.exp: print (a.*pmf)(3) -PASS: gdb.cp/member-ptr.exp: ptype a.*pmf -PASS: gdb.cp/member-ptr.exp: ptype (a.*pmf)(3) -PASS: gdb.cp/member-ptr.exp: print diamond_pmi -PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pmi -PASS: gdb.cp/member-ptr.exp: print diamond.*left_pmf -PASS: gdb.cp/member-ptr.exp: print diamond.*right_pmf -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_pmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*right_pmf) () -PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf -PASS: gdb.cp/member-ptr.exp: print diamond.*right_vpmf -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_vpmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_base_vpmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*right_vpmf) () -PASS: gdb.cp/member-ptr.exp: print left_vpmf -PASS: gdb.cp/member-ptr.exp: print right_vpmf -PASS: gdb.cp/member-ptr.exp: print base_vpmf -PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf () -PASS: gdb.cp/member-ptr.exp: print null_pmi -PASS: gdb.cp/member-ptr.exp: print null_pmi = &A::j -PASS: gdb.cp/member-ptr.exp: print null_pmi = 0 -PASS: gdb.cp/member-ptr.exp: print null_pmf -PASS: gdb.cp/member-ptr.exp: print null_pmf = &A::foo -PASS: gdb.cp/member-ptr.exp: print null_pmf = 0 -Running ./gdb.cp/method2.exp ... -PASS: gdb.cp/method2.exp: set multiple-symbols ask -PASS: gdb.cp/method2.exp: setting language c -PASS: gdb.cp/method2.exp: breaking in method (c) -PASS: gdb.cp/method2.exp: setting language c++ -PASS: gdb.cp/method2.exp: breaking in method (c++) -FAIL: gdb.cp/method2.exp: setting breakpoint at exit -Running ./gdb.cp/method.exp ... -PASS: gdb.cp/method.exp: break A::foo -PASS: gdb.cp/method.exp: continue to A::foo -PASS: gdb.cp/method.exp: print x in A::foo -PASS: gdb.cp/method.exp: print this in A::foo -PASS: gdb.cp/method.exp: break A::bar -PASS: gdb.cp/method.exp: continue to A::bar -PASS: gdb.cp/method.exp: print x in A::bar -PASS: gdb.cp/method.exp: print this in A::bar -PASS: gdb.cp/method.exp: break 21 -PASS: gdb.cp/method.exp: continue to 21 -PASS: gdb.cp/method.exp: print data_ in funk::getFunky -PASS: gdb.cp/method.exp: print this in funk::getFunky -PASS: gdb.cp/method.exp: print res in funk::getFunky -PASS: gdb.cp/method.exp: ptype A -PASS: gdb.cp/method.exp: finish program -Running ./gdb.cp/meth-typedefs.exp ... -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(fptr3) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(fptr3) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(fptr3) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(fptr3) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list test(_BAR_&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(_BAR_&)' -PASS: gdb.cp/meth-typedefs.exp: break test(_BAR_&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(_BAR_&)' -PASS: gdb.cp/meth-typedefs.exp: list test(a::b::BAR&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(a::b::BAR&)' -PASS: gdb.cp/meth-typedefs.exp: break test(a::b::BAR&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(a::b::BAR&)' -PASS: gdb.cp/meth-typedefs.exp: list test(a::b::c::d::bar&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(a::b::c::d::bar&)' -PASS: gdb.cp/meth-typedefs.exp: break test(a::b::c::d::bar&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(a::b::c::d::bar&)' -Running ./gdb.cp/minsym-fallback.exp ... -PASS: gdb.cp/minsym-fallback.exp: set breakpoint pending off -PASS: gdb.cp/minsym-fallback.exp: break C::f() -PASS: gdb.cp/minsym-fallback.exp: break C::operator()() -Running ./gdb.cp/misc.exp ... -PASS: gdb.cp/misc.exp: deduced language is C++, before full symbols -PASS: gdb.cp/misc.exp: deduced language is C++, after full symbols -PASS: gdb.cp/misc.exp: print s.a for foo struct (known gcc 2.7.2 and earlier bug) -PASS: gdb.cp/misc.exp: print as bool (setup) -PASS: gdb.cp/misc.exp: print as bool (print 1 == 1) -PASS: gdb.cp/misc.exp: print as bool (print 1 == 2) -PASS: gdb.cp/misc.exp: print a bool var -PASS: gdb.cp/misc.exp: set a bool var (setup) -PASS: gdb.cp/misc.exp: set a bool var (print v_bool) -PASS: gdb.cp/misc.exp: print a bool array -PASS: gdb.cp/misc.exp: set a bool array elem (setup) -PASS: gdb.cp/misc.exp: set a bool array elem (print v_bool_array) -PASS: gdb.cp/misc.exp: print true -PASS: gdb.cp/misc.exp: print false -PASS: gdb.cp/misc.exp: 1 + true -PASS: gdb.cp/misc.exp: 3 + false -PASS: gdb.cp/misc.exp: 1 < 2 < 3 -PASS: gdb.cp/misc.exp: 2 < 1 > 4 -PASS: gdb.cp/misc.exp: (bool)43 -PASS: gdb.cp/misc.exp: (bool)0 -PASS: gdb.cp/misc.exp: (bool)17.93 -PASS: gdb.cp/misc.exp: (bool)0.0 -PASS: gdb.cp/misc.exp: (int)true -PASS: gdb.cp/misc.exp: (int)false -Running ./gdb.cp/m-static.exp ... -PASS: gdb.cp/m-static.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/m-static.exp: simple object, static const int, accessing via 'class::method::variable -PASS: gdb.cp/m-static.exp: simple object, static const bool -PASS: gdb.cp/m-static.exp: simple object, static const int -PASS: gdb.cp/m-static.exp: simple object, static long -PASS: gdb.cp/m-static.exp: simple object, static enum -FAIL: gdb.cp/m-static.exp: simple object instance, print quoted destructor -FAIL: gdb.cp/m-static.exp: simple object class, ptype quoted destructor -PASS: gdb.cp/m-static.exp: derived template object, base static const bool -PASS: gdb.cp/m-static.exp: derived template object, base static const int -PASS: gdb.cp/m-static.exp: derived template object, base static long -PASS: gdb.cp/m-static.exp: derived template object, base static enum -PASS: gdb.cp/m-static.exp: derived template object, static enum -PASS: gdb.cp/m-static.exp: template object, static const bool -PASS: gdb.cp/m-static.exp: template object, static const int -PASS: gdb.cp/m-static.exp: template object, static long -PASS: gdb.cp/m-static.exp: template object, static enum -PASS: gdb.cp/m-static.exp: template object, static derived enum -PASS: gdb.cp/m-static.exp: static const int initialized elsewhere -PASS: gdb.cp/m-static.exp: static const int initialized nowhere -PASS: gdb.cp/m-static.exp: static const int initialized in class definition -PASS: gdb.cp/m-static.exp: static const float initialized in class definition -PASS: gdb.cp/m-static.exp: info variable everywhere -PASS: gdb.cp/m-static.exp: step -FAIL: gdb.cp/m-static.exp: print svar -Running ./gdb.cp/namespace-enum.exp ... -PASS: gdb.cp/namespace-enum.exp: print foo::B::B_B -PASS: gdb.cp/namespace-enum.exp: print foo::B_B -PASS: gdb.cp/namespace-enum.exp: print A_A -Running ./gdb.cp/namespace.exp ... -PASS: gdb.cp/namespace.exp: show lang -PASS: gdb.cp/namespace.exp: up from marker1 -PASS: gdb.cp/namespace.exp: print 'AAA::c' -PASS: gdb.cp/namespace.exp: print AAA::c -PASS: gdb.cp/namespace.exp: print ina -PASS: gdb.cp/namespace.exp: ptype ina -PASS: gdb.cp/namespace.exp: info func xyzq -PASS: gdb.cp/namespace.exp: print 'AAA::xyzq'('x') -PASS: gdb.cp/namespace.exp: print AAA::xyzq('x') -PASS: gdb.cp/namespace.exp: break AAA::xyzq -PASS: gdb.cp/namespace.exp: break ::ensureOtherRefs -PASS: gdb.cp/namespace.exp: print 'BBB::CCC::xyzq'('x') -PASS: gdb.cp/namespace.exp: print BBB::CCC::xyzq('x') -PASS: gdb.cp/namespace.exp: break BBB::CCC::xyzq -PASS: gdb.cp/namespace.exp: break ::BBB::CCC::xyzq -PASS: gdb.cp/namespace.exp: print 'BBB::Class::xyzq' -PASS: gdb.cp/namespace.exp: print BBB::Class::xyzq -PASS: gdb.cp/namespace.exp: break BBB::Class::xyzq -PASS: gdb.cp/namespace.exp: whatis C::cOtherFileType -PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileType -PASS: gdb.cp/namespace.exp: whatis C::cOtherFileVar -PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileVar -PASS: gdb.cp/namespace.exp: print C::cOtherFileVar -PASS: gdb.cp/namespace.exp: print ::C::cOtherFileVar -PASS: gdb.cp/namespace.exp: whatis C::OtherFileClass::cOtherFileClassType -PASS: gdb.cp/namespace.exp: whatis ::C::OtherFileClass::cOtherFileClassType -PASS: gdb.cp/namespace.exp: print C::OtherFileClass::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print ::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print ::C::OtherFileClass::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print c -PASS: gdb.cp/namespace.exp: print cc -PASS: gdb.cp/namespace.exp: print 'C::cc' -PASS: gdb.cp/namespace.exp: print C::cc -PASS: gdb.cp/namespace.exp: print cd -PASS: gdb.cp/namespace.exp: print C::D::cd -PASS: gdb.cp/namespace.exp: print 'E::cde' -PASS: gdb.cp/namespace.exp: print E::cde -PASS: gdb.cp/namespace.exp: print shadow -PASS: gdb.cp/namespace.exp: print E::ce -PASS: gdb.cp/namespace.exp: ptype C -PASS: gdb.cp/namespace.exp: ptype E -PASS: gdb.cp/namespace.exp: ptype CClass -PASS: gdb.cp/namespace.exp: ptype CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype NestedClass -PASS: gdb.cp/namespace.exp: ptype ::C::CClass -PASS: gdb.cp/namespace.exp: ptype ::C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype ::C::NestedClass -PASS: gdb.cp/namespace.exp: ptype C::CClass -PASS: gdb.cp/namespace.exp: ptype C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype C::NestedClass -PASS: gdb.cp/namespace.exp: print cOtherFile -PASS: gdb.cp/namespace.exp: ptype OtherFileClass -PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass -PASS: gdb.cp/namespace.exp: ptype C::OtherFileClass -PASS: gdb.cp/namespace.exp: ptype OtherFileClass typedefs -PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass typedefs -PASS: gdb.cp/namespace.exp: print cX -PASS: gdb.cp/namespace.exp: print 'F::cXf' -PASS: gdb.cp/namespace.exp: print F::cXf -PASS: gdb.cp/namespace.exp: print F::cXfX -PASS: gdb.cp/namespace.exp: print X -PASS: gdb.cp/namespace.exp: print 'G::Xg' -PASS: gdb.cp/namespace.exp: print G::Xg -PASS: gdb.cp/namespace.exp: print G::XgX -PASS: gdb.cp/namespace.exp: print cXOtherFile -PASS: gdb.cp/namespace.exp: print XOtherFile -PASS: gdb.cp/namespace.exp: print AAA::ALPHA -PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass * -Running ./gdb.cp/namespace-nested-import.exp ... -PASS: gdb.cp/namespace-nested-import.exp: print C::x -Running ./gdb.cp/nextoverthrow.exp ... -UNSUPPORTED: gdb.cp/nextoverthrow.exp: nextoverthrow.exp could not find _Unwind_DebugHook -Running ./gdb.cp/no-dmgl-verbose.exp ... -PASS: gdb.cp/no-dmgl-verbose.exp: set breakpoint pending off -PASS: gdb.cp/no-dmgl-verbose.exp: DMGL_VERBOSE-demangled f(std::string) is not defined -Running ./gdb.cp/noparam.exp ... -PASS: gdb.cp/noparam.exp: p C::m (int) -Running ./gdb.cp/nsdecl.exp ... -PASS: gdb.cp/nsdecl.exp: print fakex -Running ./gdb.cp/nsimport.exp ... -PASS: gdb.cp/nsimport.exp: print x -PASS: gdb.cp/nsimport.exp: print xx -PASS: gdb.cp/nsimport.exp: print xxx -Running ./gdb.cp/nsnested.exp ... -PASS: gdb.cp/nsnested.exp: print ab -PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::first -PASS: gdb.cp/nsnested.exp: print ab -PASS: gdb.cp/nsnested.exp: print C::D::ab -PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::D::second -PASS: gdb.cp/nsnested.exp: print ab -Running ./gdb.cp/nsnoimports.exp ... -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print abc -PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::first -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print C::abc -PASS: gdb.cp/nsnoimports.exp: print abc -PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::C::second -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print abc -Running ./gdb.cp/nsrecurs.exp ... -PASS: gdb.cp/nsrecurs.exp: print ax -PASS: gdb.cp/nsrecurs.exp: print dx -PASS: gdb.cp/nsrecurs.exp: print xx -KFAIL: gdb.cp/nsrecurs.exp: ptype G::GF (PRMS: gdb/10541) -KFAIL: gdb.cp/nsrecurs.exp: print G::GF::FE::ex (PRMS: gdb/10541) -Running ./gdb.cp/nsstress.exp ... -PASS: gdb.cp/nsstress.exp: print y -Running ./gdb.cp/nsusing.exp ... -PASS: gdb.cp/nsusing.exp: print _a -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker3 -PASS: gdb.cp/nsusing.exp: Print _a without import -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker1 stop -PASS: gdb.cp/nsusing.exp: print _a in a nested scope -PASS: gdb.cp/nsusing.exp: print cc -PASS: gdb.cp/nsusing.exp: print B::_a -PASS: gdb.cp/nsusing.exp: print _a in namespace alias scope -PASS: gdb.cp/nsusing.exp: print x in namespace alias scope -PASS: gdb.cp/nsusing.exp: Print _a without import -PASS: gdb.cp/nsusing.exp: print dx -PASS: gdb.cp/nsusing.exp: print efx -PASS: gdb.cp/nsusing.exp: print ghx -PASS: gdb.cp/nsusing.exp: print jx -PASS: gdb.cp/nsusing.exp: continue to breakpoint: K::marker9 -PASS: gdb.cp/nsusing.exp: print jx -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker10 stop -PASS: gdb.cp/nsusing.exp: print x (from M::x) -Running ./gdb.cp/operator.exp ... -PASS: gdb.cp/operator.exp: global operator -PASS: gdb.cp/operator.exp: global operator overload -PASS: gdb.cp/operator.exp: ADL operator -PASS: gdb.cp/operator.exp: ADL operator overload -PASS: gdb.cp/operator.exp: Fully qualified explicit operator call -PASS: gdb.cp/operator.exp: anonymous namespace operator -PASS: gdb.cp/operator.exp: anonymous namespace operator overload -PASS: gdb.cp/operator.exp: anonymous namespace operator overload float -PASS: gdb.cp/operator.exp: imported operator -PASS: gdb.cp/operator.exp: imported operator overload -PASS: gdb.cp/operator.exp: imported operator overload float -PASS: gdb.cp/operator.exp: member operator -PASS: gdb.cp/operator.exp: member operator overload -PASS: gdb.cp/operator.exp: namespace alias -PASS: gdb.cp/operator.exp: imported declaration -PASS: gdb.cp/operator.exp: p l == 1 -PASS: gdb.cp/operator.exp: p x[0] -Running ./gdb.cp/oranking.exp ... -PASS: gdb.cp/oranking.exp: continue to breakpoint: end of main -KFAIL: gdb.cp/oranking.exp: p foo0(b) (PRMS: gdb/12096) -PASS: gdb.cp/oranking.exp: p test1() -PASS: gdb.cp/oranking.exp: p foo1(b) -PASS: gdb.cp/oranking.exp: p test2() -KFAIL: gdb.cp/oranking.exp: p foo2(b) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test3() -PASS: gdb.cp/oranking.exp: p foo3(1.0f) -PASS: gdb.cp/oranking.exp: p test4() -KFAIL: gdb.cp/oranking.exp: p foo4(&a) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test5() -PASS: gdb.cp/oranking.exp: p foo5(c) -PASS: gdb.cp/oranking.exp: p test6() -PASS: gdb.cp/oranking.exp: p foo6(bp) -PASS: gdb.cp/oranking.exp: p test7() -PASS: gdb.cp/oranking.exp: p foo7(cp) -PASS: gdb.cp/oranking.exp: p test8() -PASS: gdb.cp/oranking.exp: p foo8(co) -PASS: gdb.cp/oranking.exp: p test9() -PASS: gdb.cp/oranking.exp: p foo9(co) -PASS: gdb.cp/oranking.exp: p test10() -KFAIL: gdb.cp/oranking.exp: p foo10(amp) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test101() -KFAIL: gdb.cp/oranking.exp: p foo101("abc") (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test11() -KFAIL: gdb.cp/oranking.exp: p foo11(d) (PRMS: gdb/12096) -PASS: gdb.cp/oranking.exp: p test12() -PASS: gdb.cp/oranking.exp: p foo12(1) -PASS: gdb.cp/oranking.exp: p test13() -KFAIL: gdb.cp/oranking.exp: p foo13(c) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test14() -KFAIL: gdb.cp/oranking.exp: p foo14(e) (PRMS: gdb/12096) -Running ./gdb.cp/overload-const.exp ... -PASS: gdb.cp/overload-const.exp: set language c++ -PASS: gdb.cp/overload-const.exp: setting breakpoint at myclass::func -Running ./gdb.cp/overload.exp ... -PASS: gdb.cp/overload.exp: up from marker1 -PASS: gdb.cp/overload.exp: print foo_instance1 -PASS: gdb.cp/overload.exp: ptype foo_instance1 (shorter match) -PASS: gdb.cp/overload.exp: print foo_instance2 -PASS: gdb.cp/overload.exp: print foo_instance3 -PASS: gdb.cp/overload.exp: print call overloaded func 1 arg -PASS: gdb.cp/overload.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/overload.exp: print call overloaded func 2 args -PASS: gdb.cp/overload.exp: print call overloaded func 3 args -PASS: gdb.cp/overload.exp: print call overloaded func 4 args -PASS: gdb.cp/overload.exp: print call overloaded func 5 args -PASS: gdb.cp/overload.exp: print call overloaded func 6 args -PASS: gdb.cp/overload.exp: print call overloaded func 7 args -PASS: gdb.cp/overload.exp: print call overloaded func 8 args -PASS: gdb.cp/overload.exp: print call overloaded func 9 args -PASS: gdb.cp/overload.exp: print call overloaded func 10 args -PASS: gdb.cp/overload.exp: print call overloaded func 11 args -PASS: gdb.cp/overload.exp: print call overloaded func void arg -PASS: gdb.cp/overload.exp: print call overloaded func char arg -PASS: gdb.cp/overload.exp: print call overloaded func signed char arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned char arg -PASS: gdb.cp/overload.exp: print call overloaded func short arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned short arg -PASS: gdb.cp/overload.exp: print call overloaded func int arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned int arg -PASS: gdb.cp/overload.exp: print call overloaded func long arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned long arg -PASS: gdb.cp/overload.exp: print call overloaded func float arg -PASS: gdb.cp/overload.exp: print call overloaded func double arg -PASS: gdb.cp/overload.exp: print call overloaded func int\* arg -PASS: gdb.cp/overload.exp: print call overloaded func char\* arg -PASS: gdb.cp/overload.exp: print bar(a) -PASS: gdb.cp/overload.exp: print bar(b) -PASS: gdb.cp/overload.exp: print bar(c) -PASS: gdb.cp/overload.exp: print bar(d) -PASS: gdb.cp/overload.exp: list overloaded function with no args -PASS: gdb.cp/overload.exp: list overloaded function with int arg -PASS: gdb.cp/overload.exp: list overloaded function with function ptr args -PASS: gdb.cp/overload.exp: list overloaded function with function ptr args - quotes around argument -PASS: gdb.cp/overload.exp: list overload.cc:intToChar -PASS: gdb.cp/overload.exp: list overload.cc:intToChar(char) -PASS: gdb.cp/overload.exp: list overload.cc:'intToChar(char)' -PASS: gdb.cp/overload.exp: list 'overload.cc:intToChar(char)' -PASS: gdb.cp/overload.exp: list 'overload.cc':intToChar(char) -PASS: gdb.cp/overload.exp: list 'overload.cc':'intToChar(char)' -PASS: gdb.cp/overload.exp: list overload.cc:foo::overloadfnarg(int) -PASS: gdb.cp/overload.exp: list overload.cc:'foo::overloadfnarg(int)' -PASS: gdb.cp/overload.exp: print overloadNamespace(1) -PASS: gdb.cp/overload.exp: print overloadNamespace('a') -PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) -PASS: gdb.cp/overload.exp: print K::staticoverload () -PASS: gdb.cp/overload.exp: print K::staticoverload (2) -PASS: gdb.cp/overload.exp: print K::staticoverload (2, 3) -PASS: gdb.cp/overload.exp: print N::nsoverload () -PASS: gdb.cp/overload.exp: print N::nsoverload (2) -PASS: gdb.cp/overload.exp: print N::nsoverload (2, 3) -PASS: gdb.cp/overload.exp: print overloadNamespace(1) in XXX -PASS: gdb.cp/overload.exp: print overloadNamespace('a') in XXX -PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) in XXX -PASS: gdb.cp/overload.exp: print intToChar(1) -PASS: gdb.cp/overload.exp: print foo::overload1arg -PASS: gdb.cp/overload.exp: print foo::overload1arg(char***) -PASS: gdb.cp/overload.exp: print foo::overload1arg(void) -PASS: gdb.cp/overload.exp: print foo::overload1arg(char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(signed char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(short) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned short) -PASS: gdb.cp/overload.exp: print foo::overload1arg(int) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned int) -PASS: gdb.cp/overload.exp: print foo::overload1arg(long) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned long) -PASS: gdb.cp/overload.exp: print foo::overload1arg(float) -PASS: gdb.cp/overload.exp: print foo::overload1arg(double) -Running ./gdb.cp/ovldbreak.exp ... -PASS: gdb.cp/ovldbreak.exp: detect void -PASS: gdb.cp/ovldbreak.exp: detect char -PASS: gdb.cp/ovldbreak.exp: detect signed_char -PASS: gdb.cp/ovldbreak.exp: detect unsigned_char -PASS: gdb.cp/ovldbreak.exp: detect short_int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_short_int -PASS: gdb.cp/ovldbreak.exp: detect int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_int -PASS: gdb.cp/ovldbreak.exp: detect long_int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_long_int -PASS: gdb.cp/ovldbreak.exp: detect float -PASS: gdb.cp/ovldbreak.exp: detect double -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols ask -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 2 -PASS: gdb.cp/ovldbreak.exp: set bp 2 on foo::overload1arg 2 line 107 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 3 -PASS: gdb.cp/ovldbreak.exp: set bp 3 on foo::overload1arg 3 line 110 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 4 -PASS: gdb.cp/ovldbreak.exp: set bp 4 on foo::overload1arg 4 line 140 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 5 -PASS: gdb.cp/ovldbreak.exp: set bp 5 on foo::overload1arg 5 line 137 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 6 -PASS: gdb.cp/ovldbreak.exp: set bp 6 on foo::overload1arg 6 line 125 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 7 -PASS: gdb.cp/ovldbreak.exp: set bp 7 on foo::overload1arg 7 line 131 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 8 -PASS: gdb.cp/ovldbreak.exp: set bp 8 on foo::overload1arg 8 line 119 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 9 -PASS: gdb.cp/ovldbreak.exp: set bp 9 on foo::overload1arg 9 line 113 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 10 -PASS: gdb.cp/ovldbreak.exp: set bp 10 on foo::overload1arg 10 line 116 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 11 -PASS: gdb.cp/ovldbreak.exp: set bp 11 on foo::overload1arg 11 line 128 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 12 -PASS: gdb.cp/ovldbreak.exp: set bp 12 on foo::overload1arg 12 line 134 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 13 -PASS: gdb.cp/ovldbreak.exp: set bp 13 on foo::overload1arg 13 line 122 -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting one-by-one) -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice cancel -PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg canceled -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after cancel) -PASS: gdb.cp/ovldbreak.exp: delete all breakpoints -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after delete) -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice all -PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg all -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting on all) -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : void -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : signed_char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : short_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_short_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : long_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_long_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : float -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : double -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols cancel -PASS: gdb.cp/ovldbreak.exp: break foo::foofunc -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols all -PASS: gdb.cp/ovldbreak.exp: break foo::foofunc -FAIL: gdb.cp/ovldbreak.exp: setting breakpoint at exit -Running ./gdb.cp/ovsrch.exp ... -PASS: gdb.cp/ovsrch.exp: break A::stop_here -PASS: gdb.cp/ovsrch.exp: break 'A::stop_here' -PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (void) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (void) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::outer::hibob if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::stop_here_too -PASS: gdb.cp/ovsrch.exp: break 'A::B::stop_here_too' -PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here_too -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (void) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (void) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::hibob if (a_param == 3) -Running ./gdb.cp/paren-type.exp ... -PASS: gdb.cp/paren-type.exp: set breakpoint pending off -PASS: gdb.cp/paren-type.exp: break C::f(long) -PASS: gdb.cp/paren-type.exp: break C::f(short) -Running ./gdb.cp/parse-lang.exp ... -PASS: gdb.cp/parse-lang.exp: breakpoint hit -Running ./gdb.cp/pass-by-ref.exp ... -PASS: gdb.cp/pass-by-ref.exp: call function in obj -PASS: gdb.cp/pass-by-ref.exp: call function in derived -PASS: gdb.cp/pass-by-ref.exp: call function in container -Running ./gdb.cp/pr-1023.exp ... -PASS: gdb.cp/pr-1023.exp: break myClass::performBlocking -PASS: gdb.cp/pr-1023.exp: break myClass::performUnblocking -Running ./gdb.cp/pr10687.exp ... -PASS: gdb.cp/pr10687.exp: continue to breakpoint: marker -PASS: gdb.cp/pr10687.exp: p a -Running ./gdb.cp/pr10728.exp ... -PASS: gdb.cp/pr10728.exp: continue to breakpoint: marker 1 -PASS: gdb.cp/pr10728.exp: print x->y2 - x->y1 -Running ./gdb.cp/pr12028.exp ... -PASS: gdb.cp/pr12028.exp: p D::foo(b) -Running ./gdb.cp/pr-1210.exp ... -PASS: gdb.cp/pr-1210.exp: step past initialization -PASS: gdb.cp/pr-1210.exp: print *obj -PASS: gdb.cp/pr-1210.exp: print obj->myB -Running ./gdb.cp/pr-574.exp ... -PASS: gdb.cp/pr-574.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/pr-574.exp: PR gdb/574 -Running ./gdb.cp/pr9067.exp ... -PASS: gdb.cp/pr9067.exp: print b -Running ./gdb.cp/pr9167.exp ... -PASS: gdb.cp/pr9167.exp: continue to breakpoint: marker -PASS: gdb.cp/pr9167.exp: p b -Running ./gdb.cp/pr9631.exp ... -PASS: gdb.cp/pr9631.exp: continue to breakpoint: after bar tender is initialized -PASS: gdb.cp/pr9631.exp: print tender -Running ./gdb.cp/printmethod.exp ... -PASS: gdb.cp/printmethod.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/printmethod.exp: print virtual method. -PASS: gdb.cp/printmethod.exp: print nonvirtual method. -Running ./gdb.cp/psmang.exp ... -PASS: gdb.cp/psmang.exp: break s::method1 -PASS: gdb.cp/psmang.exp: break s::method2 -Running ./gdb.cp/psymtab-parameter.exp ... -PASS: gdb.cp/psymtab-parameter.exp: set language c++ -PASS: gdb.cp/psymtab-parameter.exp: maintenance info symtabs -PASS: gdb.cp/psymtab-parameter.exp: complete p 'func( -Running ./gdb.cp/ptype-cv-cp.exp ... -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_const_my_int -Running ./gdb.cp/ptype-flags.exp ... -PASS: gdb.cp/ptype-flags.exp: basic test -PASS: gdb.cp/ptype-flags.exp: no methods -PASS: gdb.cp/ptype-flags.exp: no typedefs -PASS: gdb.cp/ptype-flags.exp: no methods or typedefs -PASS: gdb.cp/ptype-flags.exp: raw -PASS: gdb.cp/ptype-flags.exp: raw no methods -PASS: gdb.cp/ptype-flags.exp: raw no typedefs -PASS: gdb.cp/ptype-flags.exp: raw no methods or typedefs -PASS: gdb.cp/ptype-flags.exp: set print type methods off -PASS: gdb.cp/ptype-flags.exp: basic test, default methods off -PASS: gdb.cp/ptype-flags.exp: methods, default methods off -PASS: gdb.cp/ptype-flags.exp: no typedefs, default methods off -PASS: gdb.cp/ptype-flags.exp: methods, no typedefs, default methods off -PASS: gdb.cp/ptype-flags.exp: set print type typedefs off -PASS: gdb.cp/ptype-flags.exp: basic test, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: methods, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: typedefs, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: methods typedefs, default methods+typedefs off -Running ./gdb.cp/punctuator.exp ... -PASS: gdb.cp/punctuator.exp: set lang c++ -PASS: gdb.cp/punctuator.exp: print (0x5a5a bitand 0xaaaa) == (0x5a5a & 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a bitor 0xaaaa) == (0x5a5a | 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a xor 0xaaaa) == (0x5a5a ^ 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a and 0xaaaa) == (0x5a5a && 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a or 0xaaaa) == (0x5a5a || 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (not not 0xaaaa) == (!!0xaaaa) -PASS: gdb.cp/punctuator.exp: print (compl 0xaaaa) == (~0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 1 -PASS: gdb.cp/punctuator.exp: set $v 1 -PASS: gdb.cp/punctuator.exp: print ($u not_eq 0xaaaa) == ($v != 0xaaaa) -PASS: gdb.cp/punctuator.exp: print ($u and_eq 0xaaaa) == ($v &= 0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 2 -PASS: gdb.cp/punctuator.exp: set $v 2 -PASS: gdb.cp/punctuator.exp: print ($u or_eq 0xaaaa) == ($v |= 0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 3 -PASS: gdb.cp/punctuator.exp: set $v 3 -PASS: gdb.cp/punctuator.exp: print ($u xor_eq 0xaaaa) == ($v ^= 0xaaaa) -Running ./gdb.cp/readnow-language.exp ... -PASS: gdb.cp/readnow-language.exp: show language -Running ./gdb.cp/ref-params.exp ... -PASS: gdb.cp/ref-params.exp: print value of a Child in main -PASS: gdb.cp/ref-params.exp: print value of f1 on Child in main -PASS: gdb.cp/ref-params.exp: print value of f2 on Child in main -PASS: gdb.cp/ref-params.exp: print value of f1 on (Child&) in main -PASS: gdb.cp/ref-params.exp: print value of f2 on (Child&) in main -PASS: gdb.cp/ref-params.exp: print value of Child& in f2 -PASS: gdb.cp/ref-params.exp: print value of f1 on Child& in f2 -PASS: gdb.cp/ref-params.exp: print value of Parent& in f1 -PASS: gdb.cp/ref-params.exp: print f1(MQ) -PASS: gdb.cp/ref-params.exp: print mf1(MQ) -PASS: gdb.cp/ref-params.exp: print mf2(MQ) -PASS: gdb.cp/ref-params.exp: print f1(MQR) -PASS: gdb.cp/ref-params.exp: print mf1(MQR) -PASS: gdb.cp/ref-params.exp: print mf2(MQR) -Running ./gdb.cp/ref-types.exp ... -PASS: gdb.cp/ref-types.exp: up from marker1 1 -PASS: gdb.cp/ref-types.exp: print value of s -PASS: gdb.cp/ref-types.exp: ptype s -PASS: gdb.cp/ref-types.exp: print value of ps -PASS: gdb.cp/ref-types.exp: ptype ps -PASS: gdb.cp/ref-types.exp: print value of as[0] -PASS: gdb.cp/ref-types.exp: ptype as -PASS: gdb.cp/ref-types.exp: print value of as[1] -PASS: gdb.cp/ref-types.exp: print value of as[2] -PASS: gdb.cp/ref-types.exp: print value of as[3] -PASS: gdb.cp/ref-types.exp: print value of rs -PASS: gdb.cp/ref-types.exp: ptype rs -PASS: gdb.cp/ref-types.exp: print value of *rps -PASS: gdb.cp/ref-types.exp: examine value at rps -PASS: gdb.cp/ref-types.exp: ptype rps -PASS: gdb.cp/ref-types.exp: print value of ras[0] -PASS: gdb.cp/ref-types.exp: ptype ras -PASS: gdb.cp/ref-types.exp: print value of ras[1] -PASS: gdb.cp/ref-types.exp: print value of ras[2] -PASS: gdb.cp/ref-types.exp: print value of ras[3] -PASS: gdb.cp/ref-types.exp: up from f -PASS: gdb.cp/ref-types.exp: print value of C -PASS: gdb.cp/ref-types.exp: ptype C -PASS: gdb.cp/ref-types.exp: print value of UC -PASS: gdb.cp/ref-types.exp: ptype UC -PASS: gdb.cp/ref-types.exp: print value of S -PASS: gdb.cp/ref-types.exp: ptype S -PASS: gdb.cp/ref-types.exp: print value of US -PASS: gdb.cp/ref-types.exp: ptype US -PASS: gdb.cp/ref-types.exp: print value of I -PASS: gdb.cp/ref-types.exp: ptype I -PASS: gdb.cp/ref-types.exp: print value of UI -PASS: gdb.cp/ref-types.exp: ptype UI -PASS: gdb.cp/ref-types.exp: print value of L -PASS: gdb.cp/ref-types.exp: ptype L -PASS: gdb.cp/ref-types.exp: print value of UL -PASS: gdb.cp/ref-types.exp: ptype UL -PASS: gdb.cp/ref-types.exp: print value of F -PASS: gdb.cp/ref-types.exp: ptype F -PASS: gdb.cp/ref-types.exp: print value of D -PASS: gdb.cp/ref-types.exp: ptype D -PASS: gdb.cp/ref-types.exp: ptype rC -PASS: gdb.cp/ref-types.exp: ptype rUC -PASS: gdb.cp/ref-types.exp: ptype rS -PASS: gdb.cp/ref-types.exp: ptype rUS -PASS: gdb.cp/ref-types.exp: ptype rI -PASS: gdb.cp/ref-types.exp: ptype rUI -PASS: gdb.cp/ref-types.exp: ptype rL -PASS: gdb.cp/ref-types.exp: ptype rUL -PASS: gdb.cp/ref-types.exp: ptype rF -PASS: gdb.cp/ref-types.exp: ptype rD -PASS: gdb.cp/ref-types.exp: print value of rC -PASS: gdb.cp/ref-types.exp: print value of rUC -PASS: gdb.cp/ref-types.exp: print value of rS -PASS: gdb.cp/ref-types.exp: print value of rUS -PASS: gdb.cp/ref-types.exp: print value of rI -PASS: gdb.cp/ref-types.exp: print value of UI -PASS: gdb.cp/ref-types.exp: print value of rL -PASS: gdb.cp/ref-types.exp: print value of rUL -PASS: gdb.cp/ref-types.exp: print value of rF -PASS: gdb.cp/ref-types.exp: print value of rD -Running ./gdb.cp/re-set-overloaded.exp ... -PASS: gdb.cp/re-set-overloaded.exp: set breakpoint pending yes -PASS: gdb.cp/re-set-overloaded.exp: break C::C -PASS: gdb.cp/re-set-overloaded.exp: set variable $brk = $bpnum -PASS: gdb.cp/re-set-overloaded.exp: start -KFAIL: gdb.cp/re-set-overloaded.exp: breakpoint resolved (PRMS: breakpoints/11657) -Running ./gdb.cp/rtti.exp ... -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in main -PASS: gdb.cp/rtti.exp: print *e1 -PASS: gdb.cp/rtti.exp: print *e2 -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func -PASS: gdb.cp/rtti.exp: print *obj -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func3 -PASS: gdb.cp/rtti.exp: print *obj3 -Running ./gdb.cp/shadow.exp ... -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker1 -PASS: gdb.cp/shadow.exp: Print class x shadowing global x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker2 -PASS: gdb.cp/shadow.exp: Print local x shadowing class x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker3 -PASS: gdb.cp/shadow.exp: Print inner scope x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker4 -PASS: gdb.cp/shadow.exp: Print local x not namespace x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker5 -PASS: gdb.cp/shadow.exp: Print imported namespace x -Running ./gdb.cp/smartp.exp ... -PASS: gdb.cp/smartp.exp: continue to breakpoint: end of main -PASS: gdb.cp/smartp.exp: p mp->foo() -PASS: gdb.cp/smartp.exp: p mtp->foo() -PASS: gdb.cp/smartp.exp: p mt1.foo() -PASS: gdb.cp/smartp.exp: p mt4p.a -PASS: gdb.cp/smartp.exp: p mt4->a -PASS: gdb.cp/smartp.exp: p sp1->foo() -PASS: gdb.cp/smartp.exp: p sp2->foo() -PASS: gdb.cp/smartp.exp: p sp3->foo(1) -PASS: gdb.cp/smartp.exp: p sp3->foo('a') -PASS: gdb.cp/smartp.exp: p sp4->a -PASS: gdb.cp/smartp.exp: p sp4->b -PASS: gdb.cp/smartp.exp: p mt4p->a -PASS: gdb.cp/smartp.exp: p mt4p->b -PASS: gdb.cp/smartp.exp: p mt4->fake -PASS: gdb.cp/smartp.exp: p mt4->fake() -PASS: gdb.cp/smartp.exp: p b->foo() -PASS: gdb.cp/smartp.exp: p c->foo() -PASS: gdb.cp/smartp.exp: p c->inta -KFAIL: gdb.cp/smartp.exp: p c2->inta (PRMS: gdb/11606) -Running ./gdb.cp/static-method.exp ... -PASS: gdb.cp/static-method.exp: info addr A::func() -PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::func -PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list 'static-method.cc':'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::func -PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::A::func -PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: list 'static-method.cc':'xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::A::func -PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::A::func' -Running ./gdb.cp/static-print-quit.exp ... -PASS: gdb.cp/static-print-quit.exp: set width 80 -PASS: gdb.cp/static-print-quit.exp: set height 2 -PASS: gdb.cp/static-print-quit.exp: print c - -PASS: gdb.cp/static-print-quit.exp: print c - q -PASS: gdb.cp/static-print-quit.exp: print c - to quit -PASS: gdb.cp/static-print-quit.exp: q -PASS: gdb.cp/static-print-quit.exp: set pagination off -PASS: gdb.cp/static-print-quit.exp: first print -PASS: gdb.cp/static-print-quit.exp: second print -Running ./gdb.cp/temargs.exp ... -PASS: gdb.cp/temargs.exp: set first breakpoint for temargs -PASS: gdb.cp/temargs.exp: set second breakpoint for temargs -PASS: gdb.cp/temargs.exp: set third breakpoint for temargs -PASS: gdb.cp/temargs.exp: set fourth breakpoint for temargs -PASS: gdb.cp/temargs.exp: set fifth breakpoint for temargs -PASS: gdb.cp/temargs.exp: set sixth breakpoint for temargs -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to first breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in base_m -PASS: gdb.cp/temargs.exp: test value of I in base_m -PASS: gdb.cp/temargs.exp: test value of P in base_m -PASS: gdb.cp/temargs.exp: test value of MP in base_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to second breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in inner_m -PASS: gdb.cp/temargs.exp: test value of I in inner_m -PASS: gdb.cp/temargs.exp: test value of P in inner_m -PASS: gdb.cp/temargs.exp: test value of MP in inner_m -PASS: gdb.cp/temargs.exp: test type of Z in inner_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to third breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in func -PASS: gdb.cp/temargs.exp: test value of I in func -PASS: gdb.cp/temargs.exp: test value of P in func -PASS: gdb.cp/temargs.exp: test value of MP in func -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fourth breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in templ_m -PASS: gdb.cp/temargs.exp: test value of I in templ_m -PASS: gdb.cp/temargs.exp: test value of P in templ_m -PASS: gdb.cp/temargs.exp: test value of MP in templ_m -PASS: gdb.cp/temargs.exp: test type of Q in templ_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fifth breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of F in k2_m -XFAIL: gdb.cp/temargs.exp: test value of F in k2_m (PRMS gcc/49366) -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to sixth breakpoint for temargs -XFAIL: gdb.cp/temargs.exp: test type of F in k3_m (PRMS gcc/49546) -XFAIL: gdb.cp/temargs.exp: test value of F in k3_m (PRMS gcc/49546) -Running ./gdb.cp/templates.exp ... -PASS: gdb.cp/templates.exp: set multiple-symbols ask -KFAIL: gdb.cp/templates.exp: ptype T5 (PRMS: gdb/8218) -KFAIL: gdb.cp/templates.exp: ptype T5 (PRMS: gdb/8218) -PASS: gdb.cp/templates.exp: constructor breakpoint -PASS: gdb.cp/templates.exp: destructor breakpoint -PASS: gdb.cp/templates.exp: value method breakpoint -PASS: gdb.cp/templates.exp: breakpoint on a line with no real code -PASS: gdb.cp/templates.exp: print method of template typedef -XFAIL: gdb.cp/templates.exp: print destructor of template typedef (PRMS gcc/51668) -PASS: gdb.cp/templates.exp: verify GCC PR debug/51668 -PASS: gdb.cp/templates.exp: ptype empty -PASS: gdb.cp/templates.exp: ptype arg -PASS: gdb.cp/templates.exp: print t5i.value() -PASS: gdb.cp/templates.exp: b 770 -PASS: gdb.cp/templates.exp: continue to line 770 -PASS: gdb.cp/templates.exp: print fint -PASS: gdb.cp/templates.exp: print fvpchar -PASS: gdb.cp/templates.exp: ptype Foo -PASS: gdb.cp/templates.exp: ptype fint -PASS: gdb.cp/templates.exp: ptype fchar -KFAIL: gdb.cp/templates.exp: ptype fvpchar (PRMS: gdb/1512) -PASS: gdb.cp/templates.exp: print Foo::foo -PASS: gdb.cp/templates.exp: print Foo::foo -PASS: gdb.cp/templates.exp: ptype Bar -PASS: gdb.cp/templates.exp: ptype bint -PASS: gdb.cp/templates.exp: ptype bint2 -PASS: gdb.cp/templates.exp: ptype Baz -PASS: gdb.cp/templates.exp: ptype bazint -PASS: gdb.cp/templates.exp: ptype bazint2 -PASS: gdb.cp/templates.exp: ptype Qux -PASS: gdb.cp/templates.exp: ptype quxint -PASS: gdb.cp/templates.exp: ptype Spec -PASS: gdb.cp/templates.exp: ptype siip -PASS: gdb.cp/templates.exp: ptype Garply -PASS: gdb.cp/templates.exp: ptype Garply > -PASS: gdb.cp/templates.exp: print Garply >::garply -PASS: gdb.cp/templates.exp: break Garply >::garply -Running ./gdb.cp/try_catch.exp ... -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-catch -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-start -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-next -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-catch -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-catch -Running ./gdb.cp/typedef-operator.exp ... -PASS: gdb.cp/typedef-operator.exp: set language c++ -PASS: gdb.cp/typedef-operator.exp: test crash -PASS: gdb.cp/typedef-operator.exp: test typedef -Running ./gdb.cp/userdef.exp ... -PASS: gdb.cp/userdef.exp: break marker1 -PASS: gdb.cp/userdef.exp: continue to marker1 -PASS: gdb.cp/userdef.exp: up from marker1 -PASS: gdb.cp/userdef.exp: print one + two -PASS: gdb.cp/userdef.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/userdef.exp: print one - two -PASS: gdb.cp/userdef.exp: print one * two -PASS: gdb.cp/userdef.exp: print one / two -PASS: gdb.cp/userdef.exp: print one % two -PASS: gdb.cp/userdef.exp: print one && two -PASS: gdb.cp/userdef.exp: print one || two -PASS: gdb.cp/userdef.exp: print one & two -PASS: gdb.cp/userdef.exp: print one | two -PASS: gdb.cp/userdef.exp: print one ^ two -PASS: gdb.cp/userdef.exp: print one < two -PASS: gdb.cp/userdef.exp: print one <= two -PASS: gdb.cp/userdef.exp: print one > two -PASS: gdb.cp/userdef.exp: print one >= two -PASS: gdb.cp/userdef.exp: print one == two -PASS: gdb.cp/userdef.exp: print one.operator== (two) -PASS: gdb.cp/userdef.exp: print one != two -PASS: gdb.cp/userdef.exp: print one << 31 -PASS: gdb.cp/userdef.exp: print one >> 31 -PASS: gdb.cp/userdef.exp: print !one -PASS: gdb.cp/userdef.exp: print +one -PASS: gdb.cp/userdef.exp: print ~one -PASS: gdb.cp/userdef.exp: print -one -PASS: gdb.cp/userdef.exp: print one++ -PASS: gdb.cp/userdef.exp: print ++one -PASS: gdb.cp/userdef.exp: print one-- -PASS: gdb.cp/userdef.exp: print --one -PASS: gdb.cp/userdef.exp: print one += 7 -PASS: gdb.cp/userdef.exp: print two = one -PASS: gdb.cp/userdef.exp: break A2::operator+ -PASS: gdb.cp/userdef.exp: break A2::operator + -PASS: gdb.cp/userdef.exp: print c -PASS: gdb.cp/userdef.exp: print *c -PASS: gdb.cp/userdef.exp: print &*c -PASS: gdb.cp/userdef.exp: ptype &*c -PASS: gdb.cp/userdef.exp: print operator== (mem1, mem2) -PASS: gdb.cp/userdef.exp: print operator== (mem1, mem1) -Running ./gdb.cp/using-crash.exp ... -PASS: gdb.cp/using-crash.exp: reload file -Running ./gdb.cp/virtbase.exp ... -PASS: gdb.cp/virtbase.exp: continue to breakpoint: first breakpoint -PASS: gdb.cp/virtbase.exp: print *this -PASS: gdb.cp/virtbase.exp: print x in get_y -PASS: gdb.cp/virtbase.exp: continue to breakpoint: second breakpoint -PASS: gdb.cp/virtbase.exp: print x in get_z -PASS: gdb.cp/virtbase.exp: continue to breakpoint: third breakpoint -PASS: gdb.cp/virtbase.exp: print *(D *) e -PASS: gdb.cp/virtbase.exp: set print object on -PASS: gdb.cp/virtbase.exp: print/x b->mA -PASS: gdb.cp/virtbase.exp: print rtti_data -PASS: gdb.cp/virtbase.exp: print pointer to virtual base at non-zero offset of larger object -PASS: gdb.cp/virtbase.exp: print same pointer from history value -PASS: gdb.cp/virtbase.exp: print whole pointed-to object, starting from the virtual base pointer -Running ./gdb.cp/virtfunc2.exp ... -PASS: gdb.cp/virtfunc2.exp: continue to breakpoint: marker 1 -PASS: gdb.cp/virtfunc2.exp: print o.do_print() -PASS: gdb.cp/virtfunc2.exp: print o.do_print3() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print2() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print3() -PASS: gdb.cp/virtfunc2.exp: print o -Running ./gdb.cp/virtfunc.exp ... -PASS: gdb.cp/virtfunc.exp: ptype VA -PASS: gdb.cp/virtfunc.exp: ptype VB -PASS: gdb.cp/virtfunc.exp: ptype V -PASS: gdb.cp/virtfunc.exp: ptype A -PASS: gdb.cp/virtfunc.exp: ptype B -PASS: gdb.cp/virtfunc.exp: ptype C -PASS: gdb.cp/virtfunc.exp: ptype AD -PASS: gdb.cp/virtfunc.exp: ptype D -PASS: gdb.cp/virtfunc.exp: ptype E -PASS: gdb.cp/virtfunc.exp: ptype dd -PASS: gdb.cp/virtfunc.exp: ptype ppd -PASS: gdb.cp/virtfunc.exp: ptype pAd -PASS: gdb.cp/virtfunc.exp: ptype a -PASS: gdb.cp/virtfunc.exp: ptype b -PASS: gdb.cp/virtfunc.exp: ptype c -PASS: gdb.cp/virtfunc.exp: ptype d -PASS: gdb.cp/virtfunc.exp: ptype e -PASS: gdb.cp/virtfunc.exp: ptype v -PASS: gdb.cp/virtfunc.exp: ptype vb -PASS: gdb.cp/virtfunc.exp: ptype pAa -PASS: gdb.cp/virtfunc.exp: ptype pAe -PASS: gdb.cp/virtfunc.exp: ptype pBe -PASS: gdb.cp/virtfunc.exp: ptype pDd -PASS: gdb.cp/virtfunc.exp: ptype pDe -PASS: gdb.cp/virtfunc.exp: ptype pVa -PASS: gdb.cp/virtfunc.exp: ptype pVv -PASS: gdb.cp/virtfunc.exp: ptype pVe -PASS: gdb.cp/virtfunc.exp: ptype pVd -PASS: gdb.cp/virtfunc.exp: ptype pADe -PASS: gdb.cp/virtfunc.exp: ptype pEe -PASS: gdb.cp/virtfunc.exp: ptype pVB -PASS: gdb.cp/virtfunc.exp: info vtbl a -PASS: gdb.cp/virtfunc.exp: info vtbl b -PASS: gdb.cp/virtfunc.exp: info vtbl c -PASS: gdb.cp/virtfunc.exp: info vtbl d -FAIL: gdb.cp/virtfunc.exp: info vtbl e -FAIL: gdb.cp/virtfunc.exp: info vtbl pEe -PASS: gdb.cp/virtfunc.exp: info vtbl -PASS: gdb.cp/virtfunc.exp: info vtbl va -PASS: gdb.cp/virtfunc.exp: info vtbl all_count -PASS: gdb.cp/virtfunc.exp: print pAe->f() -PASS: gdb.cp/virtfunc.exp: print pAa->f() -PASS: gdb.cp/virtfunc.exp: print pDe->vg() -PASS: gdb.cp/virtfunc.exp: print pADe->vg() -PASS: gdb.cp/virtfunc.exp: print pDd->vg() -PASS: gdb.cp/virtfunc.exp: print pEe->vvb() -PASS: gdb.cp/virtfunc.exp: print pVB->vvb() -PASS: gdb.cp/virtfunc.exp: print pBe->vvb() -PASS: gdb.cp/virtfunc.exp: print pDe->vvb() -PASS: gdb.cp/virtfunc.exp: print pEe->vd() -PASS: gdb.cp/virtfunc.exp: print pEe->fvb() -KFAIL: gdb.cp/virtfunc.exp: print pEe->D::vg() (PRMS: gdb/1064) -PASS: gdb.cp/virtfunc.exp: next to pAa->f call -PASS: gdb.cp/virtfunc.exp: next to pDe->vg call -PASS: gdb.cp/virtfunc.exp: step through thunk into E::vg -Running ./gdb.disasm/am33.exp ... -Running ./gdb.disasm/h8300s.exp ... -Running ./gdb.disasm/hppa.exp ... -Running ./gdb.disasm/mn10300.exp ... -Running ./gdb.disasm/sh3.exp ... -Running ./gdb.disasm/t01_mov.exp ... -Running ./gdb.disasm/t02_mova.exp ... -Running ./gdb.disasm/t03_add.exp ... -Running ./gdb.disasm/t04_sub.exp ... -Running ./gdb.disasm/t05_cmp.exp ... -Running ./gdb.disasm/t06_ari2.exp ... -Running ./gdb.disasm/t07_ari3.exp ... -Running ./gdb.disasm/t08_or.exp ... -Running ./gdb.disasm/t09_xor.exp ... -Running ./gdb.disasm/t10_and.exp ... -Running ./gdb.disasm/t11_logs.exp ... -Running ./gdb.disasm/t12_bit.exp ... -Running ./gdb.disasm/t13_otr.exp ... -Running ./gdb.dwarf2/callframecfa.exp ... -Running ./gdb.dwarf2/clztest.exp ... -Running ./gdb.dwarf2/dup-psym.exp ... -PASS: gdb.dwarf2/dup-psym.exp: info sources should contain only one reference to file1.txt -Running ./gdb.dwarf2/dw2-ada-ffffffff.exp ... -PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: p sizeof (t) -PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: ptype t -Running ./gdb.dwarf2/dw2-anon-mptr.exp ... -PASS: gdb.dwarf2/dw2-anon-mptr.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/dw2-anon-mptr.exp: show cp-abi -PASS: gdb.dwarf2/dw2-anon-mptr.exp: ptype crash -Running ./gdb.dwarf2/dw2-anonymous-func.exp ... -PASS: gdb.dwarf2/dw2-anonymous-func.exp: list file1.txt -Running ./gdb.dwarf2/dw2-bad-parameter-type.exp ... -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: is alive -Running ./gdb.dwarf2/dw2-basic.exp ... -PASS: gdb.dwarf2/dw2-basic.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-basic.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-basic.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-canonicalize-type.exp ... -PASS: gdb.dwarf2/dw2-canonicalize-type.exp: ptype f -Running ./gdb.dwarf2/dw2-case-insensitive.exp ... -PASS: gdb.dwarf2/dw2-case-insensitive.exp: show case-sensitive -PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive on -PASS: gdb.dwarf2/dw2-case-insensitive.exp: set case-sensitive off -PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off -FAIL: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_lang -PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_symtab -PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_lang -PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_symtab -Running ./gdb.dwarf2/dw2-common-block.exp ... -Running ./gdb.dwarf2/dw2-compdir-oldgcc.exp ... -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: list gcc42 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc42 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: list gcc43 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc43 -Running ./gdb.dwarf2/dw2-compressed.exp ... -PASS: gdb.dwarf2/dw2-compressed.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-compressed.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-compressed.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-const.exp ... -PASS: gdb.dwarf2/dw2-const.exp: print twelve -PASS: gdb.dwarf2/dw2-const.exp: print/x val8 -Running ./gdb.dwarf2/dw2-cp-infcall-ref-static.exp ... -PASS: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: set language c++ -PASS: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: set cp-abi gnu-v3 -ERROR: Process no longer exists -UNRESOLVED: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: p f() -Running ./gdb.dwarf2/dw2-cu-size.exp ... -PASS: gdb.dwarf2/dw2-cu-size.exp: ptype noloc -Running ./gdb.dwarf2/dw2-dir-file-name.exp ... -PASS: gdb.dwarf2/dw2-dir-file-name.exp: cd .../rdir -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: continue to breakpoint: compdir_missing__ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: continue to breakpoint: compdir_missing__ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: continue to breakpoint: compdir_missing__ldir_missing__file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: continue to breakpoint: compdir_missing__ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: continue to breakpoint: compdir_missing__ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: continue to breakpoint: compdir_missing__ldir_relative_file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: continue to breakpoint: compdir_missing__ldir_absolute_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: continue to breakpoint: compdir_missing__ldir_absolute_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: continue to breakpoint: compdir_missing__ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: continue to breakpoint: compdir_missing__ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: continue to breakpoint: compdir_relative_ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: continue to breakpoint: compdir_relative_ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: continue to breakpoint: compdir_relative_ldir_missing__file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: continue to breakpoint: compdir_relative_ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: continue to breakpoint: compdir_relative_ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: continue to breakpoint: compdir_relative_ldir_relative_file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: continue to breakpoint: compdir_relative_ldir_absolute_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: continue to breakpoint: compdir_relative_ldir_absolute_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: continue to breakpoint: compdir_relative_ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: continue to breakpoint: compdir_relative_ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: continue to breakpoint: compdir_absolute_ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: continue to breakpoint: compdir_absolute_ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: continue to breakpoint: compdir_absolute_ldir_missing__file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: continue to breakpoint: compdir_absolute_ldir_missing__file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: continue to breakpoint: compdir_absolute_ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: continue to breakpoint: compdir_absolute_ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: continue to breakpoint: compdir_absolute_ldir_relative_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: continue to breakpoint: compdir_absolute_ldir_relative_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: continue to breakpoint: compdir_absolute_ldir_absolute_file_basename_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: continue to breakpoint: compdir_absolute_ldir_absolute_file_relative_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: continue to breakpoint: compdir_absolute_ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: continue to breakpoint: compdir_absolute_ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: relative -Running ./gdb.dwarf2/dw2-dos-drive.exp ... -PASS: gdb.dwarf2/dw2-dos-drive.exp: set breakpoint pending off -FAIL: gdb.dwarf2/dw2-dos-drive.exp: break 'z:file.c':func -UNSUPPORTED: gdb.dwarf2/dw2-dos-drive.exp: break file.c:func -Running ./gdb.dwarf2/dw2-double-set-die-type.exp ... -PASS: gdb.dwarf2/dw2-double-set-die-type.exp: ptype a -Running ./gdb.dwarf2/dw2-empty-namespace.exp ... -PASS: gdb.dwarf2/dw2-empty-namespace.exp: ptype var -PASS: gdb.dwarf2/dw2-empty-namespace.exp: p var -Running ./gdb.dwarf2/dw2-empty-pc-range.exp ... -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range before CU load -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: valid range after CU load -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range after CU load -Running ./gdb.dwarf2/dw2-entry-value.exp ... -FAIL: gdb.dwarf2/dw2-entry-value.exp: is printed -Running ./gdb.dwarf2/dw2-error.exp ... -gdb compile failed, dw2-error.c: Assembler messages: -dw2-error.c:25: Error: unrecognized symbol type "" -dw2-error.c:33: Error: bad instruction `pushq %rbp' -dw2-error.c:36: Error: bad instruction `movq %rsp,%rbp' -dw2-error.c:40: Error: bad instruction `movl $23,%eax' -dw2-error.c:43: Error: bad instruction `popq %rbp' -dw2-error.c:45: Error: bad instruction `ret' -dw2-error.c:50: Error: junk at end of line, first unrecognized character is `,' -dw2-error.c:52: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:53: Error: unknown pseudo-op: `.value' -dw2-error.c:54: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:55: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:56: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:57: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:58: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:59: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:60: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:61: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:62: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:63: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:64: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:66: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:67: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:68: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:69: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:70: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:71: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:72: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:73: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:75: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:76: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:77: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:78: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:79: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:80: Error: junk at end of line, first unrecognized character is `,' -dw2-error.c:82: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:83: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:84: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:85: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:86: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:87: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:88: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:89: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:90: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:91: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:92: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:93: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:94: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:95: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:96: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:97: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:98: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:101: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:102: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:103: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:104: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:105: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:106: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:107: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:108: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:109: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:110: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:111: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:112: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:113: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:114: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:115: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:116: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:117: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:118: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:119: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:120: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:121: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:124: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:125: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:126: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:127: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:128: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:129: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:130: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:131: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:132: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:136: Error: junk at end of line, first unrecognized character is `,' -dw2-error.c:137: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:138: Error: unknown pseudo-op: `.value' -dw2-error.c:139: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:140: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:141: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:142: Error: unknown pseudo-op: `.value' -dw2-error.c:143: Error: unknown pseudo-op: `.value' -dw2-error.c:144: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:145: Error: junk at end of line, first unrecognized character is `#' -dw2-error.c:148: Error: junk at end of line, first unrecognized character is `,' -dw2-error.c:160: Error: junk at end of line, first unrecognized character is `,' -UNTESTED: gdb.dwarf2/dw2-error.exp: dw2-error.exp -Running ./gdb.dwarf2/dw2-filename.exp ... -PASS: gdb.dwarf2/dw2-filename.exp: interpreter-exec mi -file-list-exec-source-files -PASS: gdb.dwarf2/dw2-filename.exp: info sources -Running ./gdb.dwarf2/dw2-icc-opaque.exp ... -PASS: gdb.dwarf2/dw2-icc-opaque.exp: ptype p_struct -Running ./gdb.dwarf2/dw2-ifort-parameter.exp ... -FAIL: gdb.dwarf2/dw2-ifort-parameter.exp: p/x param -Running ./gdb.dwarf2/dw2-inheritance.exp ... -PASS: gdb.dwarf2/dw2-inheritance.exp: ptype inherited -Running ./gdb.dwarf2/dw2-inline-break.exp ... -Running ./gdb.dwarf2/dw2-inline-param.exp ... -PASS: gdb.dwarf2/dw2-inline-param.exp: info addr break_at -Running ./gdb.dwarf2/dw2-intercu.exp ... -PASS: gdb.dwarf2/dw2-intercu.exp: ptype int2 -PASS: gdb.dwarf2/dw2-intercu.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-intercu.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-intercu.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-intermix.exp ... -gdb compile failed, ./gdb.dwarf2/dw2-intermix.S: Assembler messages: -./gdb.dwarf2/dw2-intermix.S:139: Error: bad relocation fixup type (1) -./gdb.dwarf2/dw2-intermix.S:142: Error: bad relocation fixup type (1) -UNTESTED: gdb.dwarf2/dw2-intermix.exp: dw2-intermix.exp -Running ./gdb.dwarf2/dw2-linkage-name-trust.exp ... -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set language c++ -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername () -Running ./gdb.dwarf2/dw2-minsym-in-cu.exp ... -PASS: gdb.dwarf2/dw2-minsym-in-cu.exp: info fun func2 -Running ./gdb.dwarf2/dw2-modula2-self-type.exp ... -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: set language modula-2 -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: ptype v -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: alive -Running ./gdb.dwarf2/dw2-namespaceless-anonymous.exp ... -PASS: gdb.dwarf2/dw2-namespaceless-anonymous.exp: ptype '(anonymous namespace)::v' -PASS: gdb.dwarf2/dw2-namespaceless-anonymous.exp: p '(anonymous namespace)::v' -Running ./gdb.dwarf2/dw2-noloc.exp ... -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locno_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locno_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locno_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locno_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locno_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locno_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locaddr_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locaddr_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locempty_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locempty_unresolvable -PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locno_resolvable -PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locno_resolvable -Running ./gdb.dwarf2/dw2-objfile-overlap.exp ... -PASS: gdb.dwarf2/dw2-objfile-overlap.exp: add-symbol-file -PASS: gdb.dwarf2/dw2-objfile-overlap.exp: info line inner -Running ./gdb.dwarf2/dw2-op-call.exp ... -PASS: gdb.dwarf2/dw2-op-call.exp: maintenance set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/dw2-op-call.exp: p array1 -PASS: gdb.dwarf2/dw2-op-call.exp: array2 using DW_OP_call2 -PASS: gdb.dwarf2/dw2-op-call.exp: array3 using DW_OP_call4 -PASS: gdb.dwarf2/dw2-op-call.exp: p arraynoloc -PASS: gdb.dwarf2/dw2-op-call.exp: p arraycallnoloc -Running ./gdb.dwarf2/dw2-op-out-param.exp ... -Running ./gdb.dwarf2/dw2-op-stack-value.exp ... -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x stack2 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x stack8 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: x/wx &aa551234 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x implicit4to2 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x implicit4to4 -Running ./gdb.dwarf2/dw2-param-error.exp ... -FAIL: gdb.dwarf2/dw2-param-error.exp: frame -Running ./gdb.dwarf2/dw2-producer.exp ... -PASS: gdb.dwarf2/dw2-producer.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-producer.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-producer.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-ranges.exp ... -PASS: gdb.dwarf2/dw2-ranges.exp: info line main -PASS: gdb.dwarf2/dw2-ranges.exp: info line func -PASS: gdb.dwarf2/dw2-ranges.exp: info line main2 -PASS: gdb.dwarf2/dw2-ranges.exp: info line func2 -KFAIL: gdb.dwarf2/dw2-ranges.exp: info line main3 (PRMS: symtab/12497) -Running ./gdb.dwarf2/dw2-ref-missing-frame.exp ... -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_nofb print -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_nofb backtrace -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb print -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb backtrace -Running ./gdb.dwarf2/dw2-restore.exp ... -Running ./gdb.dwarf2/dw2-restrict.exp ... -Running ./gdb.dwarf2/dw2-simple-locdesc.exp ... -KFAIL: gdb.dwarf2/dw2-simple-locdesc.exp: p &s.shl (PRMS: symtab/13307) -PASS: gdb.dwarf2/dw2-simple-locdesc.exp: p &s.data4 -Running ./gdb.dwarf2/dw2-skip-prologue.exp ... -PASS: gdb.dwarf2/dw2-skip-prologue.exp: strip stub symbols -PASS: gdb.dwarf2/dw2-skip-prologue.exp: continue to breakpoint: func -FAIL: gdb.dwarf2/dw2-skip-prologue.exp: 2 locations found -FAIL: gdb.dwarf2/dw2-skip-prologue.exp: no statement got executed -Running ./gdb.dwarf2/dw2-stack-boundary.exp ... -PASS: gdb.dwarf2/dw2-stack-boundary.exp: set complaints 100 -PASS: gdb.dwarf2/dw2-stack-boundary.exp: check partial symtab errors -PASS: gdb.dwarf2/dw2-stack-boundary.exp: p underflow -PASS: gdb.dwarf2/dw2-stack-boundary.exp: p overflow -Running ./gdb.dwarf2/dw2-strp.exp ... -PASS: gdb.dwarf2/dw2-strp.exp: p a_string -PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string -PASS: gdb.dwarf2/dw2-strp.exp: p a_string2 -PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string2 -Running ./gdb.dwarf2/dw2-unresolved.exp ... -PASS: gdb.dwarf2/dw2-unresolved.exp: continue to breakpoint: *extern_block_start -PASS: gdb.dwarf2/dw2-unresolved.exp: print/d var -Running ./gdb.dwarf2/dw2-var-zero-addr.exp ... -PASS: gdb.dwarf2/dw2-var-zero-addr.exp: print &var -Running ./gdb.dwarf2/dw4-sig-types.exp ... -PASS: gdb.dwarf2/dw4-sig-types.exp: maint set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/dw4-sig-types.exp: p myset -PASS: gdb.dwarf2/dw4-sig-types.exp: continue to foo -Running ./gdb.dwarf2/dw4-sig-type-unused.exp ... -PASS: gdb.dwarf2/dw4-sig-type-unused.exp: alive -Running ./gdb.dwarf2/fission-base.exp ... -Running ./gdb.dwarf2/fission-loclists.exp ... -Running ./gdb.dwarf2/fission-reread.exp ... -gdb compile failed, fission-reread.cc: Assembler messages: -fission-reread.cc:46: Error: unrecognized symbol type "" -fission-reread.cc:54: Error: unrecognized symbol type "" -UNTESTED: gdb.dwarf2/fission-reread.exp: fission-reread.exp -Running ./gdb.dwarf2/implptr-64bit.exp ... -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -Running ./gdb.dwarf2/implptr.exp ... -Running ./gdb.dwarf2/implptr-optimized-out.exp ... -PASS: gdb.dwarf2/implptr-optimized-out.exp: p p->f -Running ./gdb.dwarf2/mac-fileno.exp ... -gdb compile failed, ./gdb.dwarf2/mac-fileno.S: Assembler messages: -./gdb.dwarf2/mac-fileno.S:203: Error: junk at end of line, first unrecognized character is `,' -UNTESTED: gdb.dwarf2/mac-fileno.exp: mac-fileno.exp -Running ./gdb.dwarf2/member-ptr-forwardref.exp ... -gdb compile failed, member-ptr-forwardref.cc: Assembler messages: -member-ptr-forwardref.cc:34: Error: junk at end of line, first unrecognized character is `,' -member-ptr-forwardref.cc:36: Error: junk at end of line, first unrecognized character is `,' -member-ptr-forwardref.cc:38: Error: junk at end of line, first unrecognized character is `,' -member-ptr-forwardref.cc:45: Error: unrecognized symbol type "" -member-ptr-forwardref.cc:51: Error: unrecognized symbol type "" -member-ptr-forwardref.cc:293: Error: junk at end of line, first unrecognized character is `,' -member-ptr-forwardref.cc:303: Error: junk at end of line, first unrecognized character is `,' -member-ptr-forwardref.cc:327: Error: junk at end of line, first unrecognized character is `,' -UNTESTED: gdb.dwarf2/member-ptr-forwardref.exp: member-ptr-forwardref.exp -Running ./gdb.dwarf2/method-ptr.exp ... -PASS: gdb.dwarf2/method-ptr.exp: ptype the_typedef -Running ./gdb.dwarf2/pieces.exp ... -Running ./gdb.dwarf2/pr10770.exp ... -PASS: gdb.dwarf2/pr10770.exp: set breakpoint for pr10770 -PASS: gdb.dwarf2/pr10770.exp: cont -PASS: gdb.dwarf2/pr10770.exp: frame 2 -Running ./gdb.dwarf2/pr11465.exp ... -PASS: gdb.dwarf2/pr11465.exp: p N::c.C -Running ./gdb.dwarf2/pr13961.exp ... -gdb compile failed, pr13961.cc: Assembler messages: -pr13961.cc:45: Error: unrecognized symbol type "" -pr13961.cc:59: Error: unrecognized symbol type "" -pr13961.cc:67: Error: junk at end of line, first unrecognized character is `,' -pr13961.cc:124: Error: junk at end of line, first unrecognized character is `,' -pr13961.cc:208: Error: junk at end of line, first unrecognized character is `,' -pr13961.cc:336: Error: junk at end of line, first unrecognized character is `,' -pr13961.cc:349: Error: junk at end of line, first unrecognized character is `,' -UNTESTED: gdb.dwarf2/pr13961.exp: pr13961.exp -Running ./gdb.dwarf2/subrange.exp ... -PASS: gdb.dwarf2/subrange.exp: set language pascal -PASS: gdb.dwarf2/subrange.exp: ptype TByteArray -Running ./gdb.dwarf2/trace-crash.exp ... -Running ./gdb.dwarf2/typeddwarf.exp ... -Running ./gdb.dwarf2/valop.exp ... -Running ./gdb.dwarf2/watch-notconst.exp ... -Running ./gdb.fortran/array-element.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/array-element.exp: array-element.exp -Running ./gdb.fortran/charset.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/charset.exp: charset.exp -Running ./gdb.fortran/common-block.exp ... -UNTESTED: gdb.fortran/common-block.exp: common-block.exp -Running ./gdb.fortran/complex.exp ... -UNTESTED: gdb.fortran/complex.exp: complex.exp -UNTESTED: gdb.fortran/complex.exp: Couldn't compile complex.f -Running ./gdb.fortran/derived-type.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/derived-type.exp: derived-type.exp -Running ./gdb.fortran/exprs.exp ... -PASS: gdb.fortran/exprs.exp: set print sevenbit-strings -PASS: gdb.fortran/exprs.exp: set language fortran -PASS: gdb.fortran/exprs.exp: set language to "fortran" -PASS: gdb.fortran/exprs.exp: Set value-history[1] using $1 -PASS: gdb.fortran/exprs.exp: Set value-history[2] using $2 -PASS: gdb.fortran/exprs.exp: Set value-history[3] using $3 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] using inplicit index $$ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] again using implicit index $$ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using implicit index $ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-2] using explicit index $$2 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $0 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $$0 -PASS: gdb.fortran/exprs.exp: Print value-history[1] using explicit index $1 -PASS: gdb.fortran/exprs.exp: Print value-history[2] using explicit index $2 -PASS: gdb.fortran/exprs.exp: Print value-history[3] using explicit index $3 -PASS: gdb.fortran/exprs.exp: Print (value-history[MAX] - 3) using implicit index $ -PASS: gdb.fortran/exprs.exp: Use value-history element in arithmetic expression -PASS: gdb.fortran/exprs.exp: Set a new convenience variable -PASS: gdb.fortran/exprs.exp: Print contents of new convenience variable -PASS: gdb.fortran/exprs.exp: Set convenience variable to a new value -PASS: gdb.fortran/exprs.exp: Print new contents of convenience variable -PASS: gdb.fortran/exprs.exp: Set convenience variable $_ -PASS: gdb.fortran/exprs.exp: Print contents of convenience variable $_ -PASS: gdb.fortran/exprs.exp: Use convenience variable in arithmetic expression -PASS: gdb.fortran/exprs.exp: Use convenience variable assignment in arithmetic expression -PASS: gdb.fortran/exprs.exp: Print contents of uninitialized convenience variable -PASS: gdb.fortran/exprs.exp: p 123 -PASS: gdb.fortran/exprs.exp: p -123 -PASS: gdb.fortran/exprs.exp: reject p _ -PASS: gdb.fortran/exprs.exp: p .TRUE. -PASS: gdb.fortran/exprs.exp: p .FALSE. -PASS: gdb.fortran/exprs.exp: p 'a' -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(2:4) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:3) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(5:) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:) -PASS: gdb.fortran/exprs.exp: p .44 .LT. .45 -PASS: gdb.fortran/exprs.exp: p .44 .GT. .45 -PASS: gdb.fortran/exprs.exp: p 0.44 .LT. 0.45 -PASS: gdb.fortran/exprs.exp: p 0.44 .GT. 0.45 -PASS: gdb.fortran/exprs.exp: p 44. .LT. 45. -PASS: gdb.fortran/exprs.exp: p 44. .GT. 45. -PASS: gdb.fortran/exprs.exp: p 44.0 .LT. 45.0 -PASS: gdb.fortran/exprs.exp: p 44.0 .GT. 45.0 -PASS: gdb.fortran/exprs.exp: p 10D20 .LT. 10D21 -PASS: gdb.fortran/exprs.exp: p 10D20 .GT. 10D21 -PASS: gdb.fortran/exprs.exp: p 10d20 .LT. 10d21 -PASS: gdb.fortran/exprs.exp: p 10d20 .GT. 10d21 -PASS: gdb.fortran/exprs.exp: p 10E20 .LT. 10E21 -PASS: gdb.fortran/exprs.exp: p 10E20 .GT. 10E21 -PASS: gdb.fortran/exprs.exp: p 10e20 .LT. 10e21 -PASS: gdb.fortran/exprs.exp: p 10e20 .GT. 10e21 -PASS: gdb.fortran/exprs.exp: p 10.D20 .LT. 10.D21 -PASS: gdb.fortran/exprs.exp: p 10.D20 .GT. 10.D21 -PASS: gdb.fortran/exprs.exp: p 10.d20 .LT. 10.d21 -PASS: gdb.fortran/exprs.exp: p 10.d20 .GT. 10.d21 -PASS: gdb.fortran/exprs.exp: p 10.E20 .LT. 10.E21 -PASS: gdb.fortran/exprs.exp: p 10.E20 .GT. 10.E21 -PASS: gdb.fortran/exprs.exp: p 10.e20 .LT. 10.e21 -PASS: gdb.fortran/exprs.exp: p 10.e20 .GT. 10.e21 -PASS: gdb.fortran/exprs.exp: p 10.0D20 .LT. 10.0D21 -PASS: gdb.fortran/exprs.exp: p 10.0D20 .GT. 10.0D21 -PASS: gdb.fortran/exprs.exp: p 10.0d20 .LT. 10.0d21 -PASS: gdb.fortran/exprs.exp: p 10.0d20 .GT. 10.0d21 -PASS: gdb.fortran/exprs.exp: p 10.0E20 .LT. 10.0E21 -PASS: gdb.fortran/exprs.exp: p 10.0E20 .GT. 10.0E21 -PASS: gdb.fortran/exprs.exp: p 10.0e20 .LT. 10.0e21 -PASS: gdb.fortran/exprs.exp: p 10.0e20 .GT. 10.0e21 -PASS: gdb.fortran/exprs.exp: p 10.0D+20 .LT. 10.0D+21 -PASS: gdb.fortran/exprs.exp: p 10.0D+20 .GT. 10.0D+21 -PASS: gdb.fortran/exprs.exp: p 10.0d+20 .LT. 10.0d+21 -PASS: gdb.fortran/exprs.exp: p 10.0d+20 .GT. 10.0d+21 -PASS: gdb.fortran/exprs.exp: p 10.0E+20 .LT. 10.0E+21 -PASS: gdb.fortran/exprs.exp: p 10.0E+20 .GT. 10.0E+21 -PASS: gdb.fortran/exprs.exp: p 10.0e+20 .LT. 10.0e+21 -PASS: gdb.fortran/exprs.exp: p 10.0e+20 .GT. 10.0e+21 -PASS: gdb.fortran/exprs.exp: p 10.0D-11 .LT. 10.0D-10 -PASS: gdb.fortran/exprs.exp: p 10.0D-11 .GT. 10.0D-10 -PASS: gdb.fortran/exprs.exp: p 10.0d-11 .LT. 10.0d-10 -PASS: gdb.fortran/exprs.exp: p 10.0d-11 .GT. 10.0d-10 -PASS: gdb.fortran/exprs.exp: p 10.0E-11 .LT. 10.0E-10 -PASS: gdb.fortran/exprs.exp: p 10.0E-11 .GT. 10.0E-10 -PASS: gdb.fortran/exprs.exp: p 10.0e-11 .LT. 10.0e-10 -PASS: gdb.fortran/exprs.exp: p 10.0e-11 .GT. 10.0e-10 -PASS: gdb.fortran/exprs.exp: unary minus applied to int -PASS: gdb.fortran/exprs.exp: unary minus applied to real -PASS: gdb.fortran/exprs.exp: bool plus int -PASS: gdb.fortran/exprs.exp: int plus int -PASS: gdb.fortran/exprs.exp: real plus int -PASS: gdb.fortran/exprs.exp: real plus real -PASS: gdb.fortran/exprs.exp: bool minus int -PASS: gdb.fortran/exprs.exp: int minus int -PASS: gdb.fortran/exprs.exp: real minus int -PASS: gdb.fortran/exprs.exp: real minus real -PASS: gdb.fortran/exprs.exp: bool times int -PASS: gdb.fortran/exprs.exp: int times int -PASS: gdb.fortran/exprs.exp: real times int -PASS: gdb.fortran/exprs.exp: real times real -PASS: gdb.fortran/exprs.exp: bool divided by int -PASS: gdb.fortran/exprs.exp: int divided by int -PASS: gdb.fortran/exprs.exp: real divided by int -PASS: gdb.fortran/exprs.exp: real divided by real -PASS: gdb.fortran/exprs.exp: int powered by int -PASS: gdb.fortran/exprs.exp: combined exponentiation expression -PASS: gdb.fortran/exprs.exp: combined exponentiation expression in specified order -PASS: gdb.fortran/exprs.exp: int powered by real -PASS: gdb.fortran/exprs.exp: real powered by real -Running ./gdb.fortran/library-module.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/library-module.exp: Couldn't compile library-module-lib.f90 -Running ./gdb.fortran/logical.exp ... -UNTESTED: gdb.fortran/logical.exp: logical.exp -Running ./gdb.fortran/module.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/module.exp: module.exp -Running ./gdb.fortran/multi-dim.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/multi-dim.exp: multi-dim.exp -Running ./gdb.fortran/subarray.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gfortran. -UNTESTED: gdb.fortran/subarray.exp: subarray.exp -Running ./gdb.fortran/types.exp ... -PASS: gdb.fortran/types.exp: set print sevenbit-strings -PASS: gdb.fortran/types.exp: set language fortran -PASS: gdb.fortran/types.exp: set language to "fortran" -PASS: gdb.fortran/types.exp: pt 123 -PASS: gdb.fortran/types.exp: reject pt _ -PASS: gdb.fortran/types.exp: pt .TRUE. -PASS: gdb.fortran/types.exp: pt .FALSE. -PASS: gdb.fortran/types.exp: pt 'a' -PASS: gdb.fortran/types.exp: pt .44 -PASS: gdb.fortran/types.exp: pt 44.0 -PASS: gdb.fortran/types.exp: pt 10D20 -PASS: gdb.fortran/types.exp: pt 10D20 -PASS: gdb.fortran/types.exp: pt 10d20 -PASS: gdb.fortran/types.exp: pt 10d20 -PASS: gdb.fortran/types.exp: pt 10E20 -PASS: gdb.fortran/types.exp: pt 10E20 -PASS: gdb.fortran/types.exp: pt 10e20 -PASS: gdb.fortran/types.exp: pt 10e20 -Running ./gdb.gdb/complaints.exp ... -Running ./gdb.gdb/observer.exp ... -Running ./gdb.gdb/selftest.exp ... -Running ./gdb.gdb/xfullpath.exp ... -Running ./gdb.go/basic-types.exp ... -PASS: gdb.go/basic-types.exp: set language go -PASS: gdb.go/basic-types.exp: set language to "go" -PASS: gdb.go/basic-types.exp: pt 123 -PASS: gdb.go/basic-types.exp: pt void(42) -PASS: gdb.go/basic-types.exp: pt byte(42) -PASS: gdb.go/basic-types.exp: pt int(42) -PASS: gdb.go/basic-types.exp: pt uint(42) -PASS: gdb.go/basic-types.exp: pt uintptr(42) -PASS: gdb.go/basic-types.exp: pt int8(42) -PASS: gdb.go/basic-types.exp: pt int16(42) -PASS: gdb.go/basic-types.exp: pt int32(42) -PASS: gdb.go/basic-types.exp: pt int64(42) -PASS: gdb.go/basic-types.exp: pt uint8(42) -PASS: gdb.go/basic-types.exp: pt uint16(42) -PASS: gdb.go/basic-types.exp: pt uint32(42) -PASS: gdb.go/basic-types.exp: pt uint64(42) -PASS: gdb.go/basic-types.exp: pt true -PASS: gdb.go/basic-types.exp: pt false -PASS: gdb.go/basic-types.exp: pt bool(0) -PASS: gdb.go/basic-types.exp: pt bool(1) -PASS: gdb.go/basic-types.exp: pt 'a' -PASS: gdb.go/basic-types.exp: pt "a simple string" -PASS: gdb.go/basic-types.exp: pt `a simple raw string` -PASS: gdb.go/basic-types.exp: pt .44 -PASS: gdb.go/basic-types.exp: pt 44.0 -PASS: gdb.go/basic-types.exp: pt 10e20 -PASS: gdb.go/basic-types.exp: pt 10E20 -PASS: gdb.go/basic-types.exp: pt float32(.42) -PASS: gdb.go/basic-types.exp: pt float64(.42) -PASS: gdb.go/basic-types.exp: pt complex64(.42) -XFAIL: gdb.go/basic-types.exp: pt complex64(.42i1.0) -XFAIL: gdb.go/basic-types.exp: pt complex64(i1.0) -PASS: gdb.go/basic-types.exp: pt complex128(.42) -XFAIL: gdb.go/basic-types.exp: pt complex128(.42i1.0) -XFAIL: gdb.go/basic-types.exp: pt complex128(i1.0) -Running ./gdb.go/chan.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/chan.exp: chan.exp -Running ./gdb.go/handcall.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/handcall.exp: handcall.exp -Running ./gdb.go/hello.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/hello.exp: hello.exp -Running ./gdb.go/integers.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/integers.exp: integers.exp -Running ./gdb.go/methods.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/methods.exp: methods.exp -Running ./gdb.go/package.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/package.exp: package -Running ./gdb.go/print.exp ... -PASS: gdb.go/print.exp: set language go -PASS: gdb.go/print.exp: set language to "go" -PASS: gdb.go/print.exp: check fp + text -PASS: gdb.go/print.exp: p 1. -PASS: gdb.go/print.exp: p 1.5 -PASS: gdb.go/print.exp: p 1.f -PASS: gdb.go/print.exp: p 1.5f -PASS: gdb.go/print.exp: p 1.l -PASS: gdb.go/print.exp: p 1.5l -PASS: gdb.go/print.exp: p 0x1.1 -PASS: gdb.go/print.exp: reject p 1.1x -PASS: gdb.go/print.exp: reject p 1.1ff -PASS: gdb.go/print.exp: reject p 1.1ll -Running ./gdb.go/strings.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/strings.exp: strings.exp -Running ./gdb.go/types.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/types.exp: types.exp -Running ./gdb.go/unsafe.exp ... -gdb compile failed, default_target_compile: Can't find armv7a-cros-linux-gnueabi-gccgo. -UNTESTED: gdb.go/unsafe.exp: unsafe.exp -Running ./gdb.java/jmain.exp ... -UNSUPPORTED: gdb.java/jmain.exp: compilation jmain.java -Running ./gdb.java/jmisc.exp ... -UNSUPPORTED: gdb.java/jmisc.exp: compilation jmisc.java -Running ./gdb.java/jnpe.exp ... -UNSUPPORTED: gdb.java/jnpe.exp: compilation jnpe.java -UNTESTED: gdb.java/jnpe.exp: Couldn't compile ./gdb.java/jnpe.java -Running ./gdb.java/jprint.exp ... -UNSUPPORTED: gdb.java/jprint.exp: compilation jprint.java -Running ./gdb.java/jv-exp.exp ... -PASS: gdb.java/jv-exp.exp: set print sevenbit-strings -PASS: gdb.java/jv-exp.exp: set width 0 -PASS: gdb.java/jv-exp.exp: set language java -PASS: gdb.java/jv-exp.exp: set language to "java" -PASS: gdb.java/jv-exp.exp: p 1 > 2 -PASS: gdb.java/jv-exp.exp: p 1 < 2 -Running ./gdb.java/jv-print.exp ... -PASS: gdb.java/jv-print.exp: print $pc -PASS: gdb.java/jv-print.exp: set print sevenbit-strings -PASS: gdb.java/jv-print.exp: set width 0 -PASS: gdb.java/jv-print.exp: set language java -PASS: gdb.java/jv-print.exp: set language to "java" -PASS: gdb.java/jv-print.exp: p 123 -PASS: gdb.java/jv-print.exp: p -123 -PASS: gdb.java/jv-print.exp: p/d 123 -PASS: gdb.java/jv-print.exp: p 0123 -PASS: gdb.java/jv-print.exp: p 00123 -PASS: gdb.java/jv-print.exp: p -0123 -PASS: gdb.java/jv-print.exp: p/o 0123 -PASS: gdb.java/jv-print.exp: p 0x123 -PASS: gdb.java/jv-print.exp: p -0x123 -PASS: gdb.java/jv-print.exp: p 0x0123 -PASS: gdb.java/jv-print.exp: p -0x0123 -PASS: gdb.java/jv-print.exp: p 0xABCDEF -PASS: gdb.java/jv-print.exp: p 0xabcdef -PASS: gdb.java/jv-print.exp: p 0xAbCdEf -PASS: gdb.java/jv-print.exp: p/x 0x123 -PASS: gdb.java/jv-print.exp: p 'a' -PASS: gdb.java/jv-print.exp: p/c 'a' -PASS: gdb.java/jv-print.exp: p/c 70 -PASS: gdb.java/jv-print.exp: p/x 'a' -PASS: gdb.java/jv-print.exp: p/d 'a' -PASS: gdb.java/jv-print.exp: p/t 'a' -PASS: gdb.java/jv-print.exp: p/x '\377' -PASS: gdb.java/jv-print.exp: p '\'' -PASS: gdb.java/jv-print.exp: p '\\' -PASS: gdb.java/jv-print.exp: reject p 0x -PASS: gdb.java/jv-print.exp: p '' -PASS: gdb.java/jv-print.exp: p ''' -PASS: gdb.java/jv-print.exp: reject p '\' -PASS: gdb.java/jv-print.exp: reject p '\\\' -PASS: gdb.java/jv-print.exp: reject p DEADBEEF -PASS: gdb.java/jv-print.exp: reject p 123DEADBEEF -PASS: gdb.java/jv-print.exp: reject p 123foobar.bazfoo3 -PASS: gdb.java/jv-print.exp: reject p 123EEEEEEEEEEEEEEEEE33333k333 -PASS: gdb.java/jv-print.exp: check for floating addition -PASS: gdb.java/jv-print.exp: reject p 09 -PASS: gdb.java/jv-print.exp: reject p 079 -PASS: gdb.java/jv-print.exp: reject p 0xG -PASS: gdb.java/jv-print.exp: reject p 0xAG -PASS: gdb.java/jv-print.exp: check fp + text -PASS: gdb.java/jv-print.exp: p 1. -PASS: gdb.java/jv-print.exp: p 1.5 -PASS: gdb.java/jv-print.exp: p 1.f -PASS: gdb.java/jv-print.exp: p 1.5f -PASS: gdb.java/jv-print.exp: p 1.d -PASS: gdb.java/jv-print.exp: p 1.5d -PASS: gdb.java/jv-print.exp: p 0x1.1 -PASS: gdb.java/jv-print.exp: reject p 1.1x -PASS: gdb.java/jv-print.exp: reject p 1.1ff -PASS: gdb.java/jv-print.exp: reject p 1.1dd -Running ./gdb.linespec/break-ask.exp ... -PASS: gdb.linespec/break-ask.exp: set multiple-symbols ask -PASS: gdb.linespec/break-ask.exp: set filename-display absolute -PASS: gdb.linespec/break-ask.exp: break twodup absolute -PASS: gdb.linespec/break-ask.exp: 0 -PASS: gdb.linespec/break-ask.exp: set filename-display relative -PASS: gdb.linespec/break-ask.exp: break twodup relative -PASS: gdb.linespec/break-ask.exp: 2 -PASS: gdb.linespec/break-ask.exp: expect breakpoint -PASS: gdb.linespec/break-ask.exp: info source -PASS: gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere -PASS: gdb.linespec/break-ask.exp: break twodup relative other -PASS: gdb.linespec/break-ask.exp: 3 -PASS: gdb.linespec/break-ask.exp: expect breakpoint other -PASS: gdb.linespec/break-ask.exp: info source other -PASS: gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere other -Running ./gdb.linespec/linespec.exp ... -PASS: gdb.linespec/linespec.exp: set multiple-symbols to all for linespec tests -PASS: gdb.linespec/linespec.exp: single-location break using dir/file:line -PASS: gdb.linespec/linespec.exp: clear breakpoint using dir/file:line -PASS: gdb.linespec/linespec.exp: multi-location break using file:line -PASS: gdb.linespec/linespec.exp: multi-location break using duplicate function name -PASS: gdb.linespec/linespec.exp: multi-location break using duplicate function name and label -PASS: gdb.linespec/linespec.exp: complete condition -PASS: gdb.linespec/linespec.exp: disable pending breakpoints for linespec tests -PASS: gdb.linespec/linespec.exp: set breakpoint on non-existent function -PASS: gdb.linespec/linespec.exp: set breakpoint at all instances of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at lspec.cc instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at non-existent lspec.cc instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at specific instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint in body.h -PASS: gdb.linespec/linespec.exp: set breakpoint in f1 -PASS: gdb.linespec/linespec.exp: add inferior for linespec tests -PASS: gdb.linespec/linespec.exp: switch to inferior 2 for linespec tests -PASS: gdb.linespec/linespec.exp: set the new inferior file for linespec tests -PASS: gdb.linespec/linespec.exp: set breakpoint at main in both inferiors -Running ./gdb.linespec/ls-dollar.exp ... -PASS: gdb.linespec/ls-dollar.exp: set listsize 1 -PASS: gdb.linespec/ls-dollar.exp: list $dollar_var -PASS: gdb.linespec/ls-dollar.exp: break $dollar_func -Running ./gdb.linespec/ls-errs.exp ... -PASS: gdb.linespec/ls-errs.exp: set breakpoint pending off -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break -100 -PASS: gdb.linespec/ls-errs.exp: break +500 -PASS: gdb.linespec/ls-errs.exp: break 1000 -PASS: gdb.linespec/ls-errs.exp: break 3: -PASS: gdb.linespec/ls-errs.exp: break +10: -PASS: gdb.linespec/ls-errs.exp: break -10: -PASS: gdb.linespec/ls-errs.exp: break 3: -PASS: gdb.linespec/ls-errs.exp: break +10: -PASS: gdb.linespec/ls-errs.exp: break -10: -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 1 -PASS: gdb.linespec/ls-errs.exp: break +10 1 -PASS: gdb.linespec/ls-errs.exp: break -10 1 -PASS: gdb.linespec/ls-errs.exp: break 3 +1 -PASS: gdb.linespec/ls-errs.exp: break +10 +1 -PASS: gdb.linespec/ls-errs.exp: break -10 +1 -PASS: gdb.linespec/ls-errs.exp: break 3 +100 -PASS: gdb.linespec/ls-errs.exp: break +10 +100 -PASS: gdb.linespec/ls-errs.exp: break -10 +100 -PASS: gdb.linespec/ls-errs.exp: break 3 -10 -PASS: gdb.linespec/ls-errs.exp: break +10 -10 -PASS: gdb.linespec/ls-errs.exp: break -10 -10 -PASS: gdb.linespec/ls-errs.exp: break 3 foo -PASS: gdb.linespec/ls-errs.exp: break +10 foo -PASS: gdb.linespec/ls-errs.exp: break -10 foo -PASS: gdb.linespec/ls-errs.exp: break this_file_doesn't_exist.c:3 -PASS: gdb.linespec/ls-errs.exp: break this file has spaces.c:3 -PASS: gdb.linespec/ls-errs.exp: break "file::colons.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'file::colons.c':3 -PASS: gdb.linespec/ls-errs.exp: break "this "file" has quotes.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'this "file" has quotes.c':3 -PASS: gdb.linespec/ls-errs.exp: break 'this 'file' has quotes.c':3 -PASS: gdb.linespec/ls-errs.exp: break "this 'file' has quotes.c":3 -PASS: gdb.linespec/ls-errs.exp: break "spaces: and :colons.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'more: :spaces: :and colons::.c':3 -PASS: gdb.linespec/ls-errs.exp: break "src-file.c':3 -PASS: gdb.linespec/ls-errs.exp: break 'src-file.c:3 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main:foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 1 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 +100 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 -100 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:-100 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:-100" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:-100' -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:+500 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:+500" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:+500' -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:1000 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:1000" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:1000' -PASS: gdb.linespec/ls-errs.exp: break foobar -PASS: gdb.linespec/ls-errs.exp: break foo::bar -PASS: gdb.linespec/ls-errs.exp: break foo.bar -PASS: gdb.linespec/ls-errs.exp: break foo . -PASS: gdb.linespec/ls-errs.exp: break foo bar -PASS: gdb.linespec/ls-errs.exp: break foo 1 -PASS: gdb.linespec/ls-errs.exp: break foo 0 -PASS: gdb.linespec/ls-errs.exp: break foo +10 -PASS: gdb.linespec/ls-errs.exp: break foo -10 -PASS: gdb.linespec/ls-errs.exp: break foo +100 -PASS: gdb.linespec/ls-errs.exp: break foo -100 -PASS: gdb.linespec/ls-errs.exp: break main:there -PASS: gdb.linespec/ls-errs.exp: break main:here: -PASS: gdb.linespec/ls-errs.exp: break main: there -PASS: gdb.linespec/ls-errs.exp: break main:here: -PASS: gdb.linespec/ls-errs.exp: break main :there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main 3 -PASS: gdb.linespec/ls-errs.exp: break main +100 -PASS: gdb.linespec/ls-errs.exp: break main -100 -PASS: gdb.linespec/ls-errs.exp: break main foo -PASS: gdb.linespec/ls-errs.exp: break main:here 3 -PASS: gdb.linespec/ls-errs.exp: break main:here +100 -PASS: gdb.linespec/ls-errs.exp: break main:here -100 -PASS: gdb.linespec/ls-errs.exp: break main:here foo -PASS: gdb.linespec/ls-errs.exp: break if -PASS: gdb.linespec/ls-errs.exp: break task -PASS: gdb.linespec/ls-errs.exp: break thread -PASS: gdb.linespec/ls-errs.exp: break 'main.c'flubber -PASS: gdb.linespec/ls-errs.exp: break 'main.c',21 -PASS: gdb.linespec/ls-errs.exp: break 'main.c' -PASS: gdb.linespec/ls-errs.exp: break 'main.c'3 -PASS: gdb.linespec/ls-errs.exp: break 'main.c'+3 -PASS: gdb.linespec/ls-errs.exp: break $zippo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:$zippo -Running ./gdb.linespec/macro-relative.exp ... -FAIL: gdb.linespec/macro-relative.exp: info macro HEADER -Running ./gdb.linespec/skip-two.exp ... -PASS: gdb.linespec/skip-two.exp: skip function dupname -PASS: gdb.linespec/skip-two.exp: dupname ignored from main -PASS: gdb.linespec/skip-two.exp: continue to breakpoint: n -PASS: gdb.linespec/skip-two.exp: dupname ignored from n -PASS: gdb.linespec/skip-two.exp: skip delete 1 -PASS: gdb.linespec/skip-two.exp: skip file thefile.cc -PASS: gdb.linespec/skip-two.exp: step into dupname -PASS: gdb.linespec/skip-two.exp: finish from dupname -PASS: gdb.linespec/skip-two.exp: dupname ignored for thefile.cc -Running ./gdb.linespec/thread.exp ... -PASS: gdb.linespec/thread.exp: breakpoint line number in file -PASS: gdb.linespec/thread.exp: continue to breakpoint: 29 -PASS: gdb.linespec/thread.exp: setting breakpoint at thread -PASS: gdb.linespec/thread.exp: continue to breakpoint: thread function -Running ./gdb.mi/dw2-ref-missing-frame.exp ... -PASS: gdb.mi/dw2-ref-missing-frame.exp: breakpoint at func_nofb_marker -PASS: gdb.mi/dw2-ref-missing-frame.exp: mi runto func_nofb_marker -PASS: gdb.mi/dw2-ref-missing-frame.exp: test func_nofb_marker -PASS: gdb.mi/dw2-ref-missing-frame.exp: breakpoint at func_loopfb_marker -PASS: gdb.mi/dw2-ref-missing-frame.exp: mi runto func_loopfb_marker -PASS: gdb.mi/dw2-ref-missing-frame.exp: test func_loopfb_var -Running ./gdb.mi/gdb2549.exp ... -PASS: gdb.mi/gdb2549.exp: wrong arguments -PASS: gdb.mi/gdb2549.exp: no executable -PASS: gdb.mi/gdb2549.exp: breakpoint at main -PASS: gdb.mi/gdb2549.exp: mi runto main -PASS: gdb.mi/gdb2549.exp: register values x -PASS: gdb.mi/gdb2549.exp: register values f -PASS: gdb.mi/gdb2549.exp: register values d -PASS: gdb.mi/gdb2549.exp: register values o -PASS: gdb.mi/gdb2549.exp: register values t -Running ./gdb.mi/gdb669.exp ... -PASS: gdb.mi/gdb669.exp: successfully compiled posix threads test case -PASS: gdb.mi/gdb669.exp: breakpoint at main -PASS: gdb.mi/gdb669.exp: mi runto main -PASS: gdb.mi/gdb669.exp: -thread-list-ids (at main) -PASS: gdb.mi/gdb669.exp: info threads (at main) -PASS: gdb.mi/gdb669.exp: finding MI result string (at main) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (at main) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (at main) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (at main) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (at main) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (at main) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (at main) -PASS: gdb.mi/gdb669.exp: next, try 0 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 0) -PASS: gdb.mi/gdb669.exp: info threads (try 0) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 0) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 0) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 0) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 0) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 0) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 0) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 0) -PASS: gdb.mi/gdb669.exp: next, try 1 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 1) -PASS: gdb.mi/gdb669.exp: info threads (try 1) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 1) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 1) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 1) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 1) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 1) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 1) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 1) -PASS: gdb.mi/gdb669.exp: next, try 2 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 2) -PASS: gdb.mi/gdb669.exp: info threads (try 2) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 2) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 2) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 2) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 2) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 2) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 2) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 2) -PASS: gdb.mi/gdb669.exp: next, try 3 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 3) -PASS: gdb.mi/gdb669.exp: info threads (try 3) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 3) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 3) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 3) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 3) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 3) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 3) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 3) -Running ./gdb.mi/gdb680.exp ... -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 0 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 1 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 2 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 3 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 4 -Running ./gdb.mi/gdb701.exp ... -PASS: gdb.mi/gdb701.exp: breakpoint at main -PASS: gdb.mi/gdb701.exp: mi runto main -PASS: gdb.mi/gdb701.exp: step over "foo = 0" -PASS: gdb.mi/gdb701.exp: create fooPtr -PASS: gdb.mi/gdb701.exp: list children of fooPtr -PASS: gdb.mi/gdb701.exp: list children of fooPtr.x -PASS: gdb.mi/gdb701.exp: list children of fooPtr.y -PASS: gdb.mi/gdb701.exp: list children of fooPtr.z -Running ./gdb.mi/gdb792.exp ... -PASS: gdb.mi/gdb792.exp: breakpoint at main -PASS: gdb.mi/gdb792.exp: mi runto main -PASS: gdb.mi/gdb792.exp: create var for class A -PASS: gdb.mi/gdb792.exp: list children of class A -PASS: gdb.mi/gdb792.exp: list children of A.public -PASS: gdb.mi/gdb792.exp: list children of A.private -PASS: gdb.mi/gdb792.exp: list children of A.protected -PASS: gdb.mi/gdb792.exp: list children of A.protected.b -PASS: gdb.mi/gdb792.exp: list children of A.protected.b.public -PASS: gdb.mi/gdb792.exp: list children of A.protected.b.private -PASS: gdb.mi/gdb792.exp: create var for class C which has baseclass A -PASS: gdb.mi/gdb792.exp: list children of class C -Running ./gdb.mi/mi2-amd64-entry-value.exp ... -Running ./gdb.mi/mi2-prompt.exp ... -PASS: gdb.mi/mi2-prompt.exp: console set prompt -PASS: gdb.mi/mi2-prompt.exp: -break-list -PASS: gdb.mi/mi2-prompt.exp: set prompt (banana) -PASS: gdb.mi/mi2-prompt.exp: interpreter-exec mi -break-list -Running ./gdb.mi/mi2-var-child.exp ... -PASS: gdb.mi/mi2-var-child.exp: breakpoint at do_children_tests -PASS: gdb.mi/mi2-var-child.exp: mi runto do_children_tests -PASS: gdb.mi/mi2-var-child.exp: run to 237 (set breakpoint) -PASS: gdb.mi/mi2-var-child.exp: create local variable struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.character -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.character -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_int -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_int -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.3 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.3 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.4 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.4 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.5 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.5 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.6 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.6 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.7 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.7 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.8 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.8 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.9 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.9 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.a -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.a -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.b -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.b -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.c -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.c -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.d -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.d -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.g -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.g -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.h -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.h -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.i -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.i -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: step to line $line_dct_123 -PASS: gdb.mi/mi2-var-child.exp: create local variable weird -PASS: gdb.mi/mi2-var-child.exp: get children of weird -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird -PASS: gdb.mi/mi2-var-child.exp: get children of weird.long_array -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.long_array -PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: is weird editable -PASS: gdb.mi/mi2-var-child.exp: is weird->int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.u1 editable -PASS: gdb.mi/mi2-var-child.exp: is weird.s2 editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.a editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.b editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.c editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array.0 editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations editable -PASS: gdb.mi/mi2-var-child.exp: delete var weird -PASS: gdb.mi/mi2-var-child.exp: update all vars. None changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 1 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 4 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 5 -PASS: gdb.mi/mi2-var-child.exp: update all vars int_ptr_ptr and children changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 6 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.0 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 7 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.1 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 8 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.2 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_nothing -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.3-9 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_a0_0 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.func_ptr changed -PASS: gdb.mi/mi2-var-child.exp: delete var struct_declarations -PASS: gdb.mi/mi2-var-child.exp: delete var weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 1 -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0 -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0 -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 2 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 3 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 4 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 5 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 6 -XFAIL: gdb.mi/mi2-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 7 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: break in do_anonymous_type_tests -PASS: gdb.mi/mi2-var-child.exp: continue to do_anonymous_type_tests breakpoint -PASS: gdb.mi/mi2-var-child.exp: VT: create root varobj for ptr -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2 -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.a -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.a -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.c.*c -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.c.*c -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.d -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.d -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.e -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.e -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.f -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.f -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.g -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.g -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h.**h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h.**h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.integer -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.integer -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.unsigned_integer -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.unsigned_integer -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.character -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.character -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.signed_character -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.signed_character -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.0 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.0 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.1 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.1 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.2 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.2 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.3 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.3 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.4 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.4 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.5 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.5 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.6 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.6 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.7 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.7 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.8 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.8 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.9 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.9 -PASS: gdb.mi/mi2-var-child.exp: VT: create root varobj for v -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3 -PASS: gdb.mi/mi2-var-child.exp: path expression for v3 -PASS: gdb.mi/mi2-var-child.exp: expression for v3 -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.x -PASS: gdb.mi/mi2-var-child.exp: expression for v3.x -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.1_anonymous.a -PASS: gdb.mi/mi2-var-child.exp: expression for v3.1_anonymous.a -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.2_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: expression for v3.2_anonymous.b -Running ./gdb.mi/mi-async.exp ... -Running ./gdb.mi/mi-basics.exp ... -PASS: gdb.mi/mi-basics.exp: acceptance of MI operations -PASS: gdb.mi/mi-basics.exp: file-exec-and-symbols operation -PASS: gdb.mi/mi-basics.exp: file-exec-file operation -PASS: gdb.mi/mi-basics.exp: file-symbol-file operation -PASS: gdb.mi/mi-basics.exp: break-delete (all) operation -PASS: gdb.mi/mi-basics.exp: all breakpoints removed -PASS: gdb.mi/mi-basics.exp: environment-directory arg operation -PASS: gdb.mi/mi-basics.exp: environment-directory empty-string operation -PASS: gdb.mi/mi-basics.exp: environment-directory operation -PASS: gdb.mi/mi-basics.exp: environment-cd arg operation -PASS: gdb.mi/mi-basics.exp: environment-pwd operation -PASS: gdb.mi/mi-basics.exp: environment-path -PASS: gdb.mi/mi-basics.exp: environment-path no-args operation -PASS: gdb.mi/mi-basics.exp: environment-path dir1 dir2 operation -PASS: gdb.mi/mi-basics.exp: environment-path -r dir operation -PASS: gdb.mi/mi-basics.exp: environment-path -r operation -PASS: gdb.mi/mi-basics.exp: initial tty is mi_inferior_tty_name -PASS: gdb.mi/mi-basics.exp: set tty to /dev/pts/1 -PASS: gdb.mi/mi-basics.exp: tty was set correctly -PASS: gdb.mi/mi-basics.exp: set tty to the empty string -PASS: gdb.mi/mi-basics.exp: make sure tty is empty -PASS: gdb.mi/mi-basics.exp: set tty to mi_inferior_tty_name (the way it was) -PASS: gdb.mi/mi-basics.exp: verify tty is correct -Running ./gdb.mi/mi-break.exp ... -PASS: gdb.mi/mi-break.exp: break-insert -t operation -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:$line_callee3_head -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at "":$line_callee4_head -PASS: gdb.mi/mi-break.exp: list of breakpoints -PASS: gdb.mi/mi-break.exp: delete temp breakpoints -KFAIL: gdb.mi/mi-break.exp: break-insert -r operation (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee2 (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp .*llee (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: list of breakpoints (PRMS: mi/14270) -PASS: gdb.mi/mi-break.exp: delete temp breakpoints -PASS: gdb.mi/mi-break.exp: insert breakpoint with ignore count at callme -PASS: gdb.mi/mi-break.exp: run to breakpoint with ignore count -PASS: gdb.mi/mi-break.exp: breakpoint at nonexistent function -PASS: gdb.mi/mi-break.exp: create varobj for function call -PASS: gdb.mi/mi-break.exp: update varobj for function call -PASS: gdb.mi/mi-break.exp: test disabled creation -PASS: gdb.mi/mi-break.exp: test disabled creation: cleanup -PASS: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-break.exp: breakpoint commands: set commands -PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are set -PASS: gdb.mi/mi-break.exp: breakpoint commands: clear commands -PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are cleared -FAIL: gdb.mi/mi-break.exp: breakpoint at main -FAIL: gdb.mi/mi-break.exp: mi runto main (unknown output after running) -FAIL: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2, again -FAIL: gdb.mi/mi-break.exp: breakpoint commands: set commands -FAIL: gdb.mi/mi-break.exp: breakpoint commands: continue (MI error) -FAIL: gdb.mi/mi-break.exp: intermediate stop and continue -FAIL: gdb.mi/mi-break.exp: test hitting breakpoint with commands (unknown output after running) -PASS: gdb.mi/mi-break.exp: create local variable tpnum -PASS: gdb.mi/mi-break.exp: eval tpnum before tracepoint -FAIL: gdb.mi/mi-break.exp: break-insert -a operation -PASS: gdb.mi/mi-break.exp: update tpnum -FAIL: gdb.mi/mi-break.exp: eval tpnum after tracepoint -Running ./gdb.mi/mi-breakpoint-changed.exp ... -PASS: gdb.mi/mi-breakpoint-changed.exp: breakpoint at main -FAIL: gdb.mi/mi-breakpoint-changed.exp: mi runto main (unknown output after running) -PASS: gdb.mi/mi-breakpoint-changed.exp: change command -PASS: gdb.mi/mi-breakpoint-changed.exp: watch watch -PASS: gdb.mi/mi-breakpoint-changed.exp: trace marker -FAIL: gdb.mi/mi-breakpoint-changed.exp: catch syscall -FAIL: gdb.mi/mi-breakpoint-changed.exp: dprintf marker, "arg" " -PASS: gdb.mi/mi-breakpoint-changed.exp: condition 2 main > 0x0 -PASS: gdb.mi/mi-breakpoint-changed.exp: disable 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: enable 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: ignore 5 1 -PASS: gdb.mi/mi-breakpoint-changed.exp: passcount 1 4 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 4 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 5 -FAIL: gdb.mi/mi-breakpoint-changed.exp: delete 6 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on pendfunc1 -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc1 resolved -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to pendfunc1 breakpoint (timeout) -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: delete breakpoint on pendfunc1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on marker -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on pendfunc3 -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 1 (MI error) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 1 (timeout) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continuing execution to marker (MI error) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc3 resolved (timeout) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 2 (timeout) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continuing to exit (MI error) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc3 pending again (timeout) -FAIL: gdb.mi/mi-breakpoint-changed.exp: pending resolved: (unknown output after running) -Running ./gdb.mi/mi-catch-load.exp ... -PASS: gdb.mi/mi-catch-load.exp: breakpoint at main -PASS: gdb.mi/mi-catch-load.exp: mi runto main -PASS: gdb.mi/mi-catch-load.exp: catch-load: auto-solib-add on -PASS: gdb.mi/mi-catch-load.exp: catch-load: catch load -FAIL: gdb.mi/mi-catch-load.exp: catch-load: solib-event stop -PASS: gdb.mi/mi-catch-load.exp: breakpoint at main -PASS: gdb.mi/mi-catch-load.exp: mi runto main -PASS: gdb.mi/mi-catch-load.exp: catch-unload: auto-solib-add on -PASS: gdb.mi/mi-catch-load.exp: catch-unload: catch unload -FAIL: gdb.mi/mi-catch-load.exp: catch-unload: solib-event stop -Running ./gdb.mi/mi-cli.exp ... -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with no arguments -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with one argument -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with bogus interpreter -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console bogus -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "file $binfile" -PASS: gdb.mi/mi-cli.exp: breakpoint at main -PASS: gdb.mi/mi-cli.exp: mi runto main -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set args foobar" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "show args" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "break callee4" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "info break" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set listsize 1" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" -PASS: gdb.mi/mi-cli.exp: continue to callee4 -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "delete 2" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "up" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "down" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "frame 2" -PASS: gdb.mi/mi-cli.exp: -stack-select-frame 0 -PASS: gdb.mi/mi-cli.exp: check *stopped from CLI command -PASS: gdb.mi/mi-cli.exp: -break-insert -t basics.c:$line_main_hello -PASS: gdb.mi/mi-cli.exp: -exec-continue to line $line_main_hello -PASS: gdb.mi/mi-cli.exp: 34 next: run -PASS: gdb.mi/mi-cli.exp: 34 next: stop -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" at basics.c:$line_main_return -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "help set args" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set $pc=0x0" -Running ./gdb.mi/mi-cmd-param-changed.exp ... -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: breakpoint at main -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: mi runto main -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking step" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking step" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking on" no event (requested by MI) -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking step" no event (requested by MI interp) -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking stepr" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache" warmup -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type" warmup -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes foo" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes bar" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes bar" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file foo" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file bar" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file bar" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "maint set profile on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "maint set profile off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set ch type on" -Running ./gdb.mi/mi-console.exp ... -PASS: gdb.mi/mi-console.exp: breakpoint at main -PASS: gdb.mi/mi-console.exp: mi runto main -PASS: gdb.mi/mi-console.exp: Testing console output -UNSUPPORTED: gdb.mi/mi-console.exp: Testing console output inferior output -PASS: gdb.mi/mi-console.exp: finished step over hello -Running ./gdb.mi/mi-disassemble.exp ... -PASS: gdb.mi/mi-disassemble.exp: breakpoint at main -PASS: gdb.mi/mi-disassemble.exp: mi runto main -PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus filename -PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus address -PASS: gdb.mi/mi-disassemble.exp: data-disassemble mix different args -PASS: gdb.mi/mi-disassemble.exp: data-disassemble wrong mode arg -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly mixed -Running ./gdb.mi/mi-eval.exp ... -PASS: gdb.mi/mi-eval.exp: breakpoint at callee4 -PASS: gdb.mi/mi-eval.exp: mi runto callee4 -PASS: gdb.mi/mi-eval.exp: next at callee4 -PASS: gdb.mi/mi-eval.exp: eval A -PASS: gdb.mi/mi-eval.exp: eval &A -PASS: gdb.mi/mi-eval.exp: eval A+3 -PASS: gdb.mi/mi-eval.exp: eval A + 3 -Running ./gdb.mi/mi-file.exp ... -PASS: gdb.mi/mi-file.exp: request path info of current source file (basics.c) -PASS: gdb.mi/mi-file.exp: Getting a list of source files. -Running ./gdb.mi/mi-file-transfer.exp ... -FAIL: gdb.mi/mi-file-transfer.exp: put binary file -FAIL: gdb.mi/mi-file-transfer.exp: get binary file -FAIL: gdb.mi/mi-file-transfer.exp: compare binary file -FAIL: gdb.mi/mi-file-transfer.exp: deleted binary file -Running ./gdb.mi/mi-fill-memory.exp ... -PASS: gdb.mi/mi-fill-memory.exp: breakpoint at main -PASS: gdb.mi/mi-fill-memory.exp: mi runto main -PASS: gdb.mi/mi-fill-memory.exp: next at main -PASS: gdb.mi/mi-fill-memory.exp: no arguments -PASS: gdb.mi/mi-fill-memory.exp: one argument missing -PASS: gdb.mi/mi-fill-memory.exp: memory successfully written -PASS: gdb.mi/mi-fill-memory.exp: memory successfully filled (8 bytes) -PASS: gdb.mi/mi-fill-memory.exp: pattern correctly read from memory -Running ./gdb.mi/mi-fullname-deleted.exp ... -PASS: gdb.mi/mi-fullname-deleted.exp: set substitute-path -PASS: gdb.mi/mi-fullname-deleted.exp: fullname present -PASS: gdb.mi/mi-fullname-deleted.exp: substituted fullname -PASS: gdb.mi/mi-fullname-deleted.exp: compare_filenames_for_search does not match -PASS: gdb.mi/mi-fullname-deleted.exp: compare_filenames_for_search does match -Running ./gdb.mi/mi-hack-cli.exp ... -PASS: gdb.mi/mi-hack-cli.exp: show architecture -PASS: gdb.mi/mi-hack-cli.exp: 47show architecture -Running ./gdb.mi/mi-info-os.exp ... -FAIL: gdb.mi/mi-info-os.exp: -info-os -Running ./gdb.mi/mi-inheritance-syntax-error.exp ... -PASS: gdb.mi/mi-inheritance-syntax-error.exp: breakpoint at C::testLocation -PASS: gdb.mi/mi-inheritance-syntax-error.exp: mi runto C::testLocation -PASS: gdb.mi/mi-inheritance-syntax-error.exp: create var for THIS -PASS: gdb.mi/mi-inheritance-syntax-error.exp: list children of THIS -PASS: gdb.mi/mi-inheritance-syntax-error.exp: -var-info-path-expression var1.A -PASS: gdb.mi/mi-inheritance-syntax-error.exp: -data-evaluate-expression (*(class A*) this) -Running ./gdb.mi/mi-logging.exp ... -PASS: gdb.mi/mi-logging.exp: breakpoint at main -PASS: gdb.mi/mi-logging.exp: mi runto main -PASS: gdb.mi/mi-logging.exp: logging on -PASS: gdb.mi/mi-logging.exp: logged step -PASS: gdb.mi/mi-logging.exp: logged next -PASS: gdb.mi/mi-logging.exp: logging off -PASS: gdb.mi/mi-logging.exp: Log file contents -PASS: gdb.mi/mi-logging.exp: redirect logging on -PASS: gdb.mi/mi-logging.exp: redirect logging off -PASS: gdb.mi/mi-logging.exp: Redirect log file contents -Running ./gdb.mi/mi-memory-changed.exp ... -PASS: gdb.mi/mi-memory-changed.exp: insert breakpoint -PASS: gdb.mi/mi-memory-changed.exp: continue to callee4 -PASS: gdb.mi/mi-memory-changed.exp: set var C = 4 -PASS: gdb.mi/mi-memory-changed.exp: create objvar for C -PASS: gdb.mi/mi-memory-changed.exp: change C thru. varobj -PASS: gdb.mi/mi-memory-changed.exp: change C thru. -data-write-memory-bytes -PASS: gdb.mi/mi-memory-changed.exp: get address of main -Running ./gdb.mi/mi-nonstop-exit.exp ... -PASS: gdb.mi/mi-nonstop-exit.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main -PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue -PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main -PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue (2) -Running ./gdb.mi/mi-nonstop.exp ... -PASS: gdb.mi/mi-nonstop.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nonstop.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop.exp: mi runto main -PASS: gdb.mi/mi-nonstop.exp: breakpoint at marker -PASS: gdb.mi/mi-nonstop.exp: w0,i0 stop -PASS: gdb.mi/mi-nonstop.exp: w1,i0 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 1 -PASS: gdb.mi/mi-nonstop.exp: select thread 2 -PASS: gdb.mi/mi-nonstop.exp: create varobj in first thread -PASS: gdb.mi/mi-nonstop.exp: select thread 3 -PASS: gdb.mi/mi-nonstop.exp: create varobj in second thread -PASS: gdb.mi/mi-nonstop.exp: thread state, resume 1 -PASS: gdb.mi/mi-nonstop.exp: w0,i1 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 2 -PASS: gdb.mi/mi-nonstop.exp: thread state, resume 2 -PASS: gdb.mi/mi-nonstop.exp: w1,i1 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 3 -PASS: gdb.mi/mi-nonstop.exp: update varobj, 1 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w0, 1 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1 -PASS: gdb.mi/mi-nonstop.exp: interrupted -PASS: gdb.mi/mi-nonstop.exp: got interrupt -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 4 -PASS: gdb.mi/mi-nonstop.exp: resume all -PASS: gdb.mi/mi-nonstop.exp: w0,i2 stop -PASS: gdb.mi/mi-nonstop.exp: w1,i2 stop -PASS: gdb.mi/mi-nonstop.exp: set condition, 1 -PASS: gdb.mi/mi-nonstop.exp: w0,i3 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop on cond breakpoint -PASS: gdb.mi/mi-nonstop.exp: update varobj, 2 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1 -PASS: gdb.mi/mi-nonstop.exp: stacktrace of running thread -PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread -PASS: gdb.mi/mi-nonstop.exp: select first worker thread -PASS: gdb.mi/mi-nonstop.exp: ask the second thread to exit -UNSUPPORTED: gdb.mi/mi-nonstop.exp: wait for thread exit -PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread -Running ./gdb.mi/mi-nsintrall.exp ... -PASS: gdb.mi/mi-nsintrall.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nsintrall.exp: breakpoint at main -PASS: gdb.mi/mi-nsintrall.exp: mi runto main -PASS: gdb.mi/mi-nsintrall.exp: breakpoint at thread_function -PASS: gdb.mi/mi-nsintrall.exp: stop 0 -PASS: gdb.mi/mi-nsintrall.exp: stop 1 -PASS: gdb.mi/mi-nsintrall.exp: stop 2 -PASS: gdb.mi/mi-nsintrall.exp: stop 3 -PASS: gdb.mi/mi-nsintrall.exp: stop 4 -PASS: gdb.mi/mi-nsintrall.exp: stop 5 -PASS: gdb.mi/mi-nsintrall.exp: thread state, all stopped -PASS: gdb.mi/mi-nsintrall.exp: resume all, no breakpoint -PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all -PASS: gdb.mi/mi-nsintrall.exp: interrupt all threads -PASS: gdb.mi/mi-nsintrall.exp: interrupt 0 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 1 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 2 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 3 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 4 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 5 -PASS: gdb.mi/mi-nsintrall.exp: thread state, all interrupted -PASS: gdb.mi/mi-nsintrall.exp: resume all after interrupting -PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all after interrupting -Running ./gdb.mi/mi-nsmoribund.exp ... -PASS: gdb.mi/mi-nsmoribund.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at main -PASS: gdb.mi/mi-nsmoribund.exp: mi runto main -PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at thread_function -PASS: gdb.mi/mi-nsmoribund.exp: stop 0 -PASS: gdb.mi/mi-nsmoribund.exp: stop 1 -PASS: gdb.mi/mi-nsmoribund.exp: stop 2 -PASS: gdb.mi/mi-nsmoribund.exp: stop 3 -PASS: gdb.mi/mi-nsmoribund.exp: stop 4 -PASS: gdb.mi/mi-nsmoribund.exp: stop 5 -PASS: gdb.mi/mi-nsmoribund.exp: stop 6 -PASS: gdb.mi/mi-nsmoribund.exp: stop 7 -PASS: gdb.mi/mi-nsmoribund.exp: stop 8 -PASS: gdb.mi/mi-nsmoribund.exp: stop 9 -PASS: gdb.mi/mi-nsmoribund.exp: thread state: all stopped except the main thread -PASS: gdb.mi/mi-nsmoribund.exp: select thread 5 -PASS: gdb.mi/mi-nsmoribund.exp: thread specific breakpoint at thread_function -PASS: gdb.mi/mi-nsmoribund.exp: resume all, thread specific breakpoint -PASS: gdb.mi/mi-nsmoribund.exp: hit thread specific breakpoint -PASS: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread -PASS: gdb.mi/mi-nsmoribund.exp: resume all, program exited normally -Running ./gdb.mi/mi-ns-stale-regcache.exp ... -PASS: gdb.mi/mi-ns-stale-regcache.exp: breakpoint at main -PASS: gdb.mi/mi-ns-stale-regcache.exp: mi runto main -PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale register cache of resumed thread -PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale frame info of resumed thread -PASS: gdb.mi/mi-ns-stale-regcache.exp: main thread still running -Running ./gdb.mi/mi-nsthrexec.exp ... -Running ./gdb.mi/mi-pending.exp ... -PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on pendfunc1 -PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on mi-pendshr.c:pendfunc2 if x==4 -FAIL: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1 (unknown output after running) -FAIL: gdb.mi/mi-pending.exp: continuing execution to skip conditional bp (MI error) -FAIL: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1 a second time (timeout) -FAIL: gdb.mi/mi-pending.exp: continuing execution to conditional bp (MI error) -FAIL: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc2 with x==4 (timeout) -Running ./gdb.mi/mi-pthreads.exp ... -PASS: gdb.mi/mi-pthreads.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-pthreads.exp: breakpoint at done_making_threads -PASS: gdb.mi/mi-pthreads.exp: mi runto done_making_threads -PASS: gdb.mi/mi-pthreads.exp: -thread_list_ids (in check_mi_thread_command_set) -PASS: gdb.mi/mi-pthreads.exp: finding threads in MI output (in check_mi_thread_command_set) -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 123456789 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 6 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 5 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 4 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 3 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 2 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 1 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 6 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 5 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 4 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 3 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 2 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 1 -Running ./gdb.mi/mi-read-memory.exp ... -PASS: gdb.mi/mi-read-memory.exp: breakpoint at main -PASS: gdb.mi/mi-read-memory.exp: mi runto main -PASS: gdb.mi/mi-read-memory.exp: next at main -PASS: gdb.mi/mi-read-memory.exp: no arguments -PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte -PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte offset by -6 -PASS: gdb.mi/mi-read-memory.exp: expression in quotes -PASS: gdb.mi/mi-read-memory.exp: ascii and data -PASS: gdb.mi/mi-read-memory.exp: decimal -PASS: gdb.mi/mi-read-memory.exp: octal -Running ./gdb.mi/mi-record-changed.exp ... -Running ./gdb.mi/mi-regs.exp ... -Running ./gdb.mi/mi-return.exp ... -PASS: gdb.mi/mi-return.exp: breakpoint at callee4 -PASS: gdb.mi/mi-return.exp: mi runto callee4 -PASS: gdb.mi/mi-return.exp: delete all breakpoints -PASS: gdb.mi/mi-return.exp: return from callee4 now -Running ./gdb.mi/mi-reverse.exp ... -Running ./gdb.mi/mi-simplerun.exp ... -PASS: gdb.mi/mi-simplerun.exp: break-insert operation -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:$line_callee3_head -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at "":$line_callee4_head -PASS: gdb.mi/mi-simplerun.exp: list of breakpoints -PASS: gdb.mi/mi-simplerun.exp: disabling of breakpoints -PASS: gdb.mi/mi-simplerun.exp: list of breakpoints, 16 disabled -PASS: gdb.mi/mi-simplerun.exp: run to main -PASS: gdb.mi/mi-simplerun.exp: next at main -PASS: gdb.mi/mi-simplerun.exp: step at main -PASS: gdb.mi/mi-simplerun.exp: step to callee4 -PASS: gdb.mi/mi-simplerun.exp: exec-finish -PASS: gdb.mi/mi-simplerun.exp: continue to end -Running ./gdb.mi/mi-solib.exp ... -PASS: gdb.mi/mi-solib.exp: set stop-on-solib-events -FAIL: gdb.mi/mi-solib.exp: check for solib event (unknown output after running) -Running ./gdb.mi/mi-stack.exp ... -PASS: gdb.mi/mi-stack.exp: breakpoint at callee4 -PASS: gdb.mi/mi-stack.exp: mi runto callee4 -PASS: gdb.mi/mi-stack.exp: stack frame listing -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 1 -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 3 -PASS: gdb.mi/mi-stack.exp: stack frame listing wrong -PASS: gdb.mi/mi-stack.exp: selected frame listing -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 300 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 3 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 3 -PASS: gdb.mi/mi-stack.exp: stack args listing wrong -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 300 -PASS: gdb.mi/mi-stack.exp: stack locals listing of names -PASS: gdb.mi/mi-stack.exp: next's in callee4 -PASS: gdb.mi/mi-stack.exp: stack locals listing of names and values -PASS: gdb.mi/mi-stack.exp: stack locals listing, simple types: names and values, complex type: names and types -PASS: gdb.mi/mi-stack.exp: stack locals listing wrong -PASS: gdb.mi/mi-stack.exp: stack select frame 1 -PASS: gdb.mi/mi-stack.exp: stack locals listing for new frame -PASS: gdb.mi/mi-stack.exp: stack locals for same frame (level 1) -PASS: gdb.mi/mi-stack.exp: stack info-depth -PASS: gdb.mi/mi-stack.exp: stack info-depth 3 -PASS: gdb.mi/mi-stack.exp: stack info-depth 99 -PASS: gdb.mi/mi-stack.exp: stack info-depth wrong usage -Running ./gdb.mi/mi-stepi.exp ... -PASS: gdb.mi/mi-stepi.exp: breakpoint at main -PASS: gdb.mi/mi-stepi.exp: mi runto main -PASS: gdb.mi/mi-stepi.exp: step-instruction at main -PASS: gdb.mi/mi-stepi.exp: step-instruction at main (line check) -PASS: gdb.mi/mi-stepi.exp: next-instruction at main -PASS: gdb.mi/mi-stepi.exp: next-instruction at main (line check) -PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 -PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 (line check) -Running ./gdb.mi/mi-stepn.exp ... -PASS: gdb.mi/mi-stepn.exp: breakpoint at main -PASS: gdb.mi/mi-stepn.exp: mi runto main -PASS: gdb.mi/mi-stepn.exp: breakpoint at do_nothing -PASS: gdb.mi/mi-stepn.exp: breakpoint-hit reported -Running ./gdb.mi/mi-syn-frame.exp ... -PASS: gdb.mi/mi-syn-frame.exp: breakpoint at main -PASS: gdb.mi/mi-syn-frame.exp: mi runto main -PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint foo -PASS: gdb.mi/mi-syn-frame.exp: call inferior's function with a breakpoint set in it -PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function stopped at bp, showing gdb dummy frame -PASS: gdb.mi/mi-syn-frame.exp: finished exec continue -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint subroutine -PASS: gdb.mi/mi-syn-frame.exp: data evaluate expression -FAIL: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: finished exec continue -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: call inferior function which raises exception -PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function at exception -Running ./gdb.mi/mi-until.exp ... -PASS: gdb.mi/mi-until.exp: break-insert operation -PASS: gdb.mi/mi-until.exp: run to main -PASS: gdb.mi/mi-until.exp: break-delete 1 -KFAIL: gdb.mi/mi-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104) -PASS: gdb.mi/mi-until.exp: until line number -PASS: gdb.mi/mi-until.exp: until line number:file -PASS: gdb.mi/mi-until.exp: until after current function -Running ./gdb.mi/mi-var-block.exp ... -PASS: gdb.mi/mi-var-block.exp: breakpoint at do_block_tests -PASS: gdb.mi/mi-var-block.exp: mi runto do_block_tests -PASS: gdb.mi/mi-var-block.exp: create local variable cb -PASS: gdb.mi/mi-var-block.exp: try to create local variable foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 1 -PASS: gdb.mi/mi-var-block.exp: delete var foo 1 -PASS: gdb.mi/mi-var-block.exp: create local variable foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 2 -PASS: gdb.mi/mi-var-block.exp: update all vars: cb foo changed -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 3 -PASS: gdb.mi/mi-var-block.exp: create local variable inner_foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 4 -PASS: gdb.mi/mi-var-block.exp: create local variable foo2 -XFAIL: gdb.mi/mi-var-block.exp: update inner_foo: should be out of scope: KNOWN PROBLEM -XFAIL: gdb.mi/mi-var-block.exp: evaluate inner_foo: should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: update foo: did not change -PASS: gdb.mi/mi-var-block.exp: delete var inner_foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 5 -XFAIL: gdb.mi/mi-var-block.exp: update foo2: should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 6 -XFAIL: gdb.mi/mi-var-block.exp: update foo2 should be out of scope: KNOWN PROBLEM -XFAIL: gdb.mi/mi-var-block.exp: update foo should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: update cb -PASS: gdb.mi/mi-var-block.exp: delete var foo 2 -PASS: gdb.mi/mi-var-block.exp: delete var foo2 -PASS: gdb.mi/mi-var-block.exp: delete var cb -Running ./gdb.mi/mi-var-child.exp ... -PASS: gdb.mi/mi-var-child.exp: breakpoint at do_children_tests -PASS: gdb.mi/mi-var-child.exp: mi runto do_children_tests -PASS: gdb.mi/mi-var-child.exp: run to 215 (set breakpoint) -PASS: gdb.mi/mi-var-child.exp: create local variable struct_declarations -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.character -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.character -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_int -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_int -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.3 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.3 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.4 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.4 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.5 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.5 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.6 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.6 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.7 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.7 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.8 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.8 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.9 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.9 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.a -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.a -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.b -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.b -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.c -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.c -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.d -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.d -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.g -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.g -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.h -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.h -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.i -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.i -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: step to line $line_dct_123 -PASS: gdb.mi/mi-var-child.exp: create local variable weird -PASS: gdb.mi/mi-var-child.exp: get children of weird -PASS: gdb.mi/mi-var-child.exp: get number of children of weird -PASS: gdb.mi/mi-var-child.exp: get children of weird.long_array -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.long_array -PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: is weird editable -PASS: gdb.mi/mi-var-child.exp: is weird->int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.u1 editable -PASS: gdb.mi/mi-var-child.exp: is weird.s2 editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.a editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.b editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.c editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array.0 editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations editable -PASS: gdb.mi/mi-var-child.exp: delete var weird -PASS: gdb.mi/mi-var-child.exp: update all vars. None changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 1 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 4 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 5 -PASS: gdb.mi/mi-var-child.exp: update all vars int_ptr_ptr and children changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 6 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.0 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 7 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.1 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 8 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.2 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.3-9 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 1 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.func_ptr changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 2 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.10 changed, don't print values. -PASS: gdb.mi/mi-var-child.exp: step $line_dct_a0_0 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.11 changed, print values. -PASS: gdb.mi/mi-var-child.exp: listing of names and values of children -PASS: gdb.mi/mi-var-child.exp: listing of children, simple types: names, type and values, complex types: names and types -PASS: gdb.mi/mi-var-child.exp: delete var struct_declarations -PASS: gdb.mi/mi-var-child.exp: delete var weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 1 -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0 -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0 -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 2 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 3 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 4 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 5 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 6 -XFAIL: gdb.mi/mi-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 7 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: run to mi-var-child.c:323 (set breakpoint) -PASS: gdb.mi/mi-var-child.exp: create varobj for s -PASS: gdb.mi/mi-var-child.exp: list children of S -PASS: gdb.mi/mi-var-child.exp: delete S.a -PASS: gdb.mi/mi-var-child.exp: delete S.b -PASS: gdb.mi/mi-var-child.exp: delete S -Running ./gdb.mi/mi-var-child-f.exp ... -UNSUPPORTED: gdb.mi/mi-var-child-f.exp: compilation array.f -Running ./gdb.mi/mi-var-cmd.exp ... -PASS: gdb.mi/mi-var-cmd.exp: create global variable -PASS: gdb.mi/mi-var-cmd.exp: create non-existent variable -PASS: gdb.mi/mi-var-cmd.exp: create out of scope variable -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: run to 148 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create local variable linteger -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpinteger -PASS: gdb.mi/mi-var-cmd.exp: create local variable lcharacter -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpcharacter -PASS: gdb.mi/mi-var-cmd.exp: create local variable llong -PASS: gdb.mi/mi-var-cmd.exp: create local variable lplong -PASS: gdb.mi/mi-var-cmd.exp: create local variable lfloat -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpfloat -PASS: gdb.mi/mi-var-cmd.exp: create local variable ldouble -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpdouble -PASS: gdb.mi/mi-var-cmd.exp: create local variable lsimple -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpsimple -PASS: gdb.mi/mi-var-cmd.exp: create local variable func -PASS: gdb.mi/mi-var-cmd.exp: create lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: create lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: create lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: create int -PASS: gdb.mi/mi-var-cmd.exp: update all vars -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_test -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (2) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (3) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lcharacter changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (4) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpcharacter changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (5) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: many changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (6) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: func and lpsimple changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (7) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lsimple and others changed -PASS: gdb.mi/mi-var-cmd.exp: assign to global_simple -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed after assign -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger again, same value -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger not changed after same assign -PASS: gdb.mi/mi-var-cmd.exp: eval linteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed after assign -PASS: gdb.mi/mi-var-cmd.exp: update all vars: no changes on second update -PASS: gdb.mi/mi-var-cmd.exp: eval lpinteger -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lcharacter -PASS: gdb.mi/mi-var-cmd.exp: eval lcharacter -PASS: gdb.mi/mi-var-cmd.exp: assign to llong -PASS: gdb.mi/mi-var-cmd.exp: eval llong -PASS: gdb.mi/mi-var-cmd.exp: assign to llong -PASS: gdb.mi/mi-var-cmd.exp: assign to lplong -PASS: gdb.mi/mi-var-cmd.exp: eval lplong -PASS: gdb.mi/mi-var-cmd.exp: assign to lplong -PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat -PASS: gdb.mi/mi-var-cmd.exp: eval lfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to lpfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to ldouble -PASS: gdb.mi/mi-var-cmd.exp: assign to func -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: var update -PASS: gdb.mi/mi-var-cmd.exp: assign same value to func -PASS: gdb.mi/mi-var-cmd.exp: assign same value to func (update) -PASS: gdb.mi/mi-var-cmd.exp: create global variable array_ptr -PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer -PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer (update) -PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer -PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer (update) -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: mi runto subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: create i -PASS: gdb.mi/mi-var-cmd.exp: create l -PASS: gdb.mi/mi-var-cmd.exp: create linteger -FAIL: gdb.mi/mi-var-cmd.exp: step at subroutine1 (stopped at wrong place) -XFAIL: gdb.mi/mi-var-cmd.exp: update all vars: changed FIXME -FAIL: gdb.mi/mi-var-cmd.exp: step at subroutine1 (2) (stopped at wrong place) -FAIL: gdb.mi/mi-var-cmd.exp: update all vars: i changed -FAIL: gdb.mi/mi-var-cmd.exp: step at subroutine1 (3) (stopped at wrong place) -FAIL: gdb.mi/mi-var-cmd.exp: update all vars: llong changed -FAIL: gdb.mi/mi-var-cmd.exp: next out of subroutine1 (stopped at wrong place) -FAIL: gdb.mi/mi-var-cmd.exp: update all vars: all now out of scope -PASS: gdb.mi/mi-var-cmd.exp: delete var -PASS: gdb.mi/mi-var-cmd.exp: delete var linteger -PASS: gdb.mi/mi-var-cmd.exp: delete var lpinteger -PASS: gdb.mi/mi-var-cmd.exp: delete var lcharacter -PASS: gdb.mi/mi-var-cmd.exp: delete var lpcharacter -PASS: gdb.mi/mi-var-cmd.exp: delete var llong -PASS: gdb.mi/mi-var-cmd.exp: delete var lplong -PASS: gdb.mi/mi-var-cmd.exp: delete var lfloat -PASS: gdb.mi/mi-var-cmd.exp: delete var lpfloat -PASS: gdb.mi/mi-var-cmd.exp: delete var ldouble -PASS: gdb.mi/mi-var-cmd.exp: delete var lpdouble -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple -PASS: gdb.mi/mi-var-cmd.exp: delete var lpsimple -PASS: gdb.mi/mi-var-cmd.exp: delete var func -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: delete var i -PASS: gdb.mi/mi-var-cmd.exp: delete var l -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: create selected_a -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at incr_a -PASS: gdb.mi/mi-var-cmd.exp: mi runto incr_a -PASS: gdb.mi/mi-var-cmd.exp: update selected_a in incr_a -PASS: gdb.mi/mi-var-cmd.exp: step a line in incr_a -PASS: gdb.mi/mi-var-cmd.exp: return from incr_a to do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: update selected_a in do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: floating varobj invalidation -PASS: gdb.mi/mi-var-cmd.exp: delete selected_a -PASS: gdb.mi/mi-var-cmd.exp: delete array_ptr -FAIL: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:351 (set breakpoint) -FAIL: gdb.mi/mi-var-cmd.exp: wait for stop (frozen: step to 351) -FAIL: gdb.mi/mi-var-cmd.exp: frozen: go to line 351 -FAIL: gdb.mi/mi-var-cmd.exp: frozen: step over 351 (MI error) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:510 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create varobj for Data -PASS: gdb.mi/mi-var-cmd.exp: list children of Data -PASS: gdb.mi/mi-var-cmd.exp: access bitfield -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:453 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create floating varobj -PASS: gdb.mi/mi-var-cmd.exp: update F (1) -PASS: gdb.mi/mi-var-cmd.exp: check F (1) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:464 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (2) -PASS: gdb.mi/mi-var-cmd.exp: check F (2) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:472 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (--all-values) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:478 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (3) -PASS: gdb.mi/mi-var-cmd.exp: check F (3) -PASS: gdb.mi/mi-var-cmd.exp: inside breakpoint inside callee -PASS: gdb.mi/mi-var-cmd.exp: continue to where i is initialized -PASS: gdb.mi/mi-var-cmd.exp: update F inside callee -PASS: gdb.mi/mi-var-cmd.exp: check F inside callee -PASS: gdb.mi/mi-var-cmd.exp: create null_ptr -PASS: gdb.mi/mi-var-cmd.exp: update null_ptr -PASS: gdb.mi/mi-var-cmd.exp: delete null_ptr -PASS: gdb.mi/mi-var-cmd.exp: kill program before endvar -PASS: gdb.mi/mi-var-cmd.exp: create endvar -PASS: gdb.mi/mi-var-cmd.exp: update endvar -PASS: gdb.mi/mi-var-cmd.exp: delete endvar -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: create varobj -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: check initial value -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at main -PASS: gdb.mi/mi-var-cmd.exp: mi runto main -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now, not changed -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now, not changed -Running ./gdb.mi/mi-var-cp.exp ... -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:20 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for rx -PASS: gdb.mi/mi-var-cp.exp: update RX (1) -PASS: gdb.mi/mi-var-cp.exp: check RX: expect 167 -PASS: gdb.mi/mi-var-cp.exp: update RX (2) -PASS: gdb.mi/mi-var-cp.exp: check RX: expect 567 -PASS: gdb.mi/mi-var-cp.exp: update RX (3) -PASS: gdb.mi/mi-var-cp.exp: delete RX -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:46 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for s2 -PASS: gdb.mi/mi-var-cp.exp: list children of s2 -PASS: gdb.mi/mi-var-cp.exp: list children of s2.s -PASS: gdb.mi/mi-var-cp.exp: list children of s2.s.public -PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.i -PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.j -PASS: gdb.mi/mi-var-cp.exp: delete S2 -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:82 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for rptr_s -PASS: gdb.mi/mi-var-cp.exp: list public child of RPTR -PASS: gdb.mi/mi-var-cp.exp: list children of reference to pointer -PASS: gdb.mi/mi-var-cp.exp: check i member -PASS: gdb.mi/mi-var-cp.exp: check j member -PASS: gdb.mi/mi-var-cp.exp: delete RPTR -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:105 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for s -PASS: gdb.mi/mi-var-cp.exp: create varobj for s -PASS: gdb.mi/mi-var-cp.exp: check attributes of S -PASS: gdb.mi/mi-var-cp.exp: check attributes of R -PASS: gdb.mi/mi-var-cp.exp: -var-update should not list structure varobjs -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:145 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for ip -PASS: gdb.mi/mi-var-cp.exp: list children of IP -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression IP.*ip -PASS: gdb.mi/mi-var-cp.exp: create varobj for dp -PASS: gdb.mi/mi-var-cp.exp: list children of DP -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1 -PASS: gdb.mi/mi-var-cp.exp: list children of DP.public -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public.i -PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1 -PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1.public -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1.public.i -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public -PASS: gdb.mi/mi-var-cp.exp: create varobj for d -PASS: gdb.mi/mi-var-cp.exp: list children of D -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression D.Base1 -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:192 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for array -PASS: gdb.mi/mi-var-cp.exp: list children of A -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression A.2 -PASS: gdb.mi/mi-var-cp.exp: break in anonymous_structs_and_unions -PASS: gdb.mi/mi-var-cp.exp: continue to anonymous_structs breakpoint -PASS: gdb.mi/mi-var-cp.exp: VT: create root varobj for a -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1 -PASS: gdb.mi/mi-var-cp.exp: path expression for a1 -PASS: gdb.mi/mi-var-cp.exp: expression for a1 -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous.public.b -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous.public.b -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous.public.c -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous.public.c -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.d -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.d -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.e -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.e -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.f -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.f -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.i -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.i -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.j -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.j -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.g -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.g -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.h -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.h -Running ./gdb.mi/mi-var-create-rtti.exp ... -PASS: gdb.mi/mi-var-create-rtti.exp: breakpoint at main -PASS: gdb.mi/mi-var-create-rtti.exp: mi runto main -PASS: gdb.mi/mi-var-create-rtti.exp: -var-create sp1 * $sp -Running ./gdb.mi/mi-var-display.exp ... -PASS: gdb.mi/mi-var-display.exp: break-insert operation -PASS: gdb.mi/mi-var-display.exp: run to main -PASS: gdb.mi/mi-var-display.exp: create local variable bar -PASS: gdb.mi/mi-var-display.exp: info type variable bar -PASS: gdb.mi/mi-var-display.exp: show format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar -PASS: gdb.mi/mi-var-display.exp: set format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar with new format -PASS: gdb.mi/mi-var-display.exp: assing to variable bar -PASS: gdb.mi/mi-var-display.exp: set format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar with new value -PASS: gdb.mi/mi-var-display.exp: delete var bar -PASS: gdb.mi/mi-var-display.exp: create local variable foo -PASS: gdb.mi/mi-var-display.exp: info type variable foo -PASS: gdb.mi/mi-var-display.exp: show format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: set format variable foo -PASS: gdb.mi/mi-var-display.exp: show format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: assing to variable foo -PASS: gdb.mi/mi-var-display.exp: set format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo in hex -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in hex -PASS: gdb.mi/mi-var-display.exp: eval variable foo in octal -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in octal -PASS: gdb.mi/mi-var-display.exp: eval variable foo in decimal -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in decimal -PASS: gdb.mi/mi-var-display.exp: eval variable foo in natural -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in natural -PASS: gdb.mi/mi-var-display.exp: eval variable foo in binary -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in binary -PASS: gdb.mi/mi-var-display.exp: delete var foo -PASS: gdb.mi/mi-var-display.exp: create local variable weird -PASS: gdb.mi/mi-var-display.exp: get children local variable weird -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird -PASS: gdb.mi/mi-var-display.exp: set format variable weird.integer -PASS: gdb.mi/mi-var-display.exp: set format variable weird.character -PASS: gdb.mi/mi-var-display.exp: set format variable weird.char_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_int -PASS: gdb.mi/mi-var-display.exp: set format variable weird.int_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_array -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_struct -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.u1 -PASS: gdb.mi/mi-var-display.exp: set format variable weird.s2 -PASS: gdb.mi/mi-var-display.exp: delete var weird -PASS: gdb.mi/mi-var-display.exp: break-insert operation 2 -PASS: gdb.mi/mi-var-display.exp: continue to do_special_tests -PASS: gdb.mi/mi-var-display.exp: create local variable u -PASS: gdb.mi/mi-var-display.exp: eval variable u -PASS: gdb.mi/mi-var-display.exp: info type variable u -PASS: gdb.mi/mi-var-display.exp: is u editable -PASS: gdb.mi/mi-var-display.exp: get number of children of u -PASS: gdb.mi/mi-var-display.exp: get children of u -PASS: gdb.mi/mi-var-display.exp: create local variable anonu -PASS: gdb.mi/mi-var-display.exp: eval variable anonu -PASS: gdb.mi/mi-var-display.exp: info type variable anonu -PASS: gdb.mi/mi-var-display.exp: is anonu editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anonu -PASS: gdb.mi/mi-var-display.exp: get children of anonu -PASS: gdb.mi/mi-var-display.exp: create local variable s -PASS: gdb.mi/mi-var-display.exp: eval variable s -PASS: gdb.mi/mi-var-display.exp: info type variable s -PASS: gdb.mi/mi-var-display.exp: is s editable -PASS: gdb.mi/mi-var-display.exp: get number of children of s -PASS: gdb.mi/mi-var-display.exp: get children of s -PASS: gdb.mi/mi-var-display.exp: create local variable anons -PASS: gdb.mi/mi-var-display.exp: eval variable anons -PASS: gdb.mi/mi-var-display.exp: info type variable anons -PASS: gdb.mi/mi-var-display.exp: is anons editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anons -PASS: gdb.mi/mi-var-display.exp: get children of anons -PASS: gdb.mi/mi-var-display.exp: create local variable e -PASS: gdb.mi/mi-var-display.exp: eval variable e -PASS: gdb.mi/mi-var-display.exp: info type variable e -PASS: gdb.mi/mi-var-display.exp: is e editable -PASS: gdb.mi/mi-var-display.exp: get number of children of e -PASS: gdb.mi/mi-var-display.exp: get children of e -PASS: gdb.mi/mi-var-display.exp: create local variable anone -PASS: gdb.mi/mi-var-display.exp: eval variable anone -PASS: gdb.mi/mi-var-display.exp: create duplicate local variable anone -PASS: gdb.mi/mi-var-display.exp: info type variable anone -PASS: gdb.mi/mi-var-display.exp: is anone editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anone -PASS: gdb.mi/mi-var-display.exp: get children of anone -PASS: gdb.mi/mi-var-display.exp: print FP register -PASS: gdb.mi/mi-var-display.exp: breakpoint at incr_a -PASS: gdb.mi/mi-var-display.exp: mi runto incr_a -PASS: gdb.mi/mi-var-display.exp: create local variable a1 -PASS: gdb.mi/mi-var-display.exp: create variable a2 in different scope -Running ./gdb.mi/mi-var-invalidate.exp ... -PASS: gdb.mi/mi-var-invalidate.exp: create global variable -PASS: gdb.mi/mi-var-invalidate.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-invalidate.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-invalidate.exp: create local variable linteger -PASS: gdb.mi/mi-var-invalidate.exp: create floating variable -FAIL: gdb.mi/mi-var-invalidate.exp: breakpoint at main -FAIL: gdb.mi/mi-var-invalidate.exp: mi runto main (unknown output after running) -PASS: gdb.mi/mi-var-invalidate.exp: set format variable float_simple -PASS: gdb.mi/mi-var-invalidate.exp: linteger not anymore in scope due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (1) -PASS: gdb.mi/mi-var-invalidate.exp: global_simple still alive -PASS: gdb.mi/mi-var-invalidate.exp: type simpleton for valid variable global_simple -PASS: gdb.mi/mi-var-invalidate.exp: linteger not valid anymore due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (2) -PASS: gdb.mi/mi-var-invalidate.exp: global_simple not anymore in scope due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable global_simple -Running ./gdb.mi/mi-var-rtti.exp ... -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:37 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:64 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.public (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->A (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.Base (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.Base.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->B (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->C (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.Base (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.Base.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->A (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->B (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->C (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:94 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:149 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->A (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->A (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.Base (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.Base.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->A (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->B (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->C (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.Base (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.Base.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->A (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->B (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->C (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:202 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.First (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:245 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in type_update_when_use_rtti -FAIL: gdb.mi/mi-var-rtti.exp: create varobj for ptr in type_update_when_use_rtti -FAIL: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in type_update_when_use_rtti -FAIL: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for S in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:269 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr to derived in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->B (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->C (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s.ptr to derived in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->B (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->C (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:281 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr back to base type in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s.ptr back to base type in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:299 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for S in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:323 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr to derived type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s to derived type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:335 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr back to base type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s back to base type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s in skip_type_update_when_not_use_rtti -Running ./gdb.mi/mi-watch.exp ... -PASS: gdb.mi/mi-watch.exp: hw watchpoints toggle (1) -PASS: gdb.mi/mi-watch.exp: sw: breakpoint at callee4 -PASS: gdb.mi/mi-watch.exp: sw: mi runto callee4 -PASS: gdb.mi/mi-watch.exp: sw: break-watch operation -PASS: gdb.mi/mi-watch.exp: sw: list of watchpoints -PASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger -XPASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger -Running ./gdb.mi/mi-watch-nonstop.exp ... -Running ./gdb.mi/pr11022.exp ... -Running ./gdb.modula2/unbounded-array.exp ... -PASS: gdb.modula2/unbounded-array.exp: switch to modula-2 -PASS: gdb.modula2/unbounded-array.exp: print the last legal element of array a -PASS: gdb.modula2/unbounded-array.exp: print unbounded array contents -PASS: gdb.modula2/unbounded-array.exp: print the 1st element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 2nd element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 3rd element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 4th element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 5th element of array a -Running ./gdb.multi/base.exp ... -PASS: gdb.multi/base.exp: add empty inferior 2 -PASS: gdb.multi/base.exp: switch to inferior 2 -PASS: gdb.multi/base.exp: load hangout file in inferior 2 -PASS: gdb.multi/base.exp: add inferior 3 with -exec goodbye -PASS: gdb.multi/base.exp: info inferiors -PASS: gdb.multi/base.exp: info inferior 2 3 -PASS: gdb.multi/base.exp: info inferior 1-2 -PASS: gdb.multi/base.exp: switch to inferior 1 -PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 1 -PASS: gdb.multi/base.exp: switch to inferior 3 -PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 3 -PASS: gdb.multi/base.exp: switch back to inferior 1 -PASS: gdb.multi/base.exp: set listsize 1 -PASS: gdb.multi/base.exp: list commonfun in hello -PASS: gdb.multi/base.exp: print hglob -PASS: gdb.multi/base.exp: print glob (hello) -PASS: gdb.multi/base.exp: switch to inferior 3 to print globals -PASS: gdb.multi/base.exp: print gglob -PASS: gdb.multi/base.exp: print glob (goodbye) -PASS: gdb.multi/base.exp: list commonfun in goodbye -PASS: gdb.multi/base.exp: switch to inferior 1 to run it -PASS: gdb.multi/base.exp: break hello -PASS: gdb.multi/base.exp: continue -PASS: gdb.multi/base.exp: remove-inferiors 2-3 -PASS: gdb.multi/base.exp: check remove-inferiors -Running ./gdb.multi/bkpt-multi-exec.exp ... -Running ./gdb.multi/multi-arch-exec.exp ... -Running ./gdb.multi/multi-arch.exp ... -Running ./gdb.multi/watchpoint-multi.exp ... -UNTESTED: gdb.multi/watchpoint-multi.exp: watchpoint-multi.exp -Running ./gdb.objc/basicclass.exp ... -UNSUPPORTED: gdb.objc/basicclass.exp: Couldn't compile ./gdb.objc/basicclass.m: unrecognized error -Running ./gdb.objc/nondebug.exp ... -UNSUPPORTED: gdb.objc/nondebug.exp: Couldn't compile ./gdb.objc/nondebug.m: unrecognized error -Running ./gdb.objc/objcdecode.exp ... -UNSUPPORTED: gdb.objc/objcdecode.exp: Couldn't compile ./gdb.objc/objcdecode.m: unrecognized error -Running ./gdb.objc/print.exp ... -PASS: gdb.objc/print.exp: set language objective-c -PASS: gdb.objc/print.exp: set language to "objective-c" -PASS: gdb.objc/print.exp: check fp + text -PASS: gdb.objc/print.exp: p 1. -PASS: gdb.objc/print.exp: p 1.5 -PASS: gdb.objc/print.exp: p 1.f -PASS: gdb.objc/print.exp: p 1.5f -PASS: gdb.objc/print.exp: p 1.l -PASS: gdb.objc/print.exp: p 1.5l -PASS: gdb.objc/print.exp: p 0x1.1 -PASS: gdb.objc/print.exp: reject p 1.1x -PASS: gdb.objc/print.exp: reject p 1.1ff -PASS: gdb.objc/print.exp: reject p 1.1ll -Running ./gdb.opencl/callfuncs.exp ... -Running ./gdb.opencl/convs_casts.exp ... -Running ./gdb.opencl/datatypes.exp ... -Running ./gdb.opencl/operators.exp ... -Running ./gdb.opencl/vec_comps.exp ... -Running ./gdb.opt/clobbered-registers-O2.exp ... -PASS: gdb.opt/clobbered-registers-O2.exp: Backtracing -PASS: gdb.opt/clobbered-registers-O2.exp: print operand0 -PASS: gdb.opt/clobbered-registers-O2.exp: print operand1 -Running ./gdb.opt/inline-break.exp ... -PASS: gdb.opt/inline-break.exp: break func1 -PASS: gdb.opt/inline-break.exp: break func2 -PASS: gdb.opt/inline-break.exp: break func3b -FAIL: gdb.opt/inline-break.exp: break func4b -PASS: gdb.opt/inline-break.exp: break func5b -FAIL: gdb.opt/inline-break.exp: break func6b -PASS: gdb.opt/inline-break.exp: break func7b -PASS: gdb.opt/inline-break.exp: break func8b -PASS: gdb.opt/inline-break.exp: print func1 -PASS: gdb.opt/inline-break.exp: print func2 -Running ./gdb.opt/inline-bt.exp ... -PASS: gdb.opt/inline-bt.exp: continue to bar (1) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (1) -PASS: gdb.opt/inline-bt.exp: bar not inlined -PASS: gdb.opt/inline-bt.exp: continue to bar (2) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (2) -PASS: gdb.opt/inline-bt.exp: up from bar (2) -PASS: gdb.opt/inline-bt.exp: func1 inlined (2) -PASS: gdb.opt/inline-bt.exp: continue to bar (3) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (3) -PASS: gdb.opt/inline-bt.exp: up from bar (3) -PASS: gdb.opt/inline-bt.exp: func1 inlined (3) -PASS: gdb.opt/inline-bt.exp: up from func1 (3) -PASS: gdb.opt/inline-bt.exp: func2 inlined (3) -Running ./gdb.opt/inline-cmds.exp ... -PASS: gdb.opt/inline-cmds.exp: set listsize 1 -PASS: gdb.opt/inline-cmds.exp: continue to bar (1) -PASS: gdb.opt/inline-cmds.exp: backtrace from bar (1) -PASS: gdb.opt/inline-cmds.exp: up from bar (1) -PASS: gdb.opt/inline-cmds.exp: func1 inlined (1) -PASS: gdb.opt/inline-cmds.exp: continue to bar (2) -PASS: gdb.opt/inline-cmds.exp: backtrace from bar (2) -PASS: gdb.opt/inline-cmds.exp: up from bar (2) -PASS: gdb.opt/inline-cmds.exp: func1 inlined (2) -PASS: gdb.opt/inline-cmds.exp: up from func1 (2) -PASS: gdb.opt/inline-cmds.exp: func2 inlined (2) -PASS: gdb.opt/inline-cmds.exp: continue to marker -PASS: gdb.opt/inline-cmds.exp: backtrace from marker -PASS: gdb.opt/inline-cmds.exp: marker not inlined -PASS: gdb.opt/inline-cmds.exp: next over inlined functions -PASS: gdb.opt/inline-cmds.exp: next past inlined func1 -PASS: gdb.opt/inline-cmds.exp: print x before func1 -PASS: gdb.opt/inline-cmds.exp: backtrace does not include func1 -PASS: gdb.opt/inline-cmds.exp: stepped over call to func1 -FAIL: gdb.opt/inline-cmds.exp: step into func1 -PASS: gdb.opt/inline-cmds.exp: finish from func1 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: consecutive func1 -PASS: gdb.opt/inline-cmds.exp: next to first func1 -KFAIL: gdb.opt/inline-cmds.exp: next to second func1 (PRMS: gdb/NNNN) -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: func1 then func3 -PASS: gdb.opt/inline-cmds.exp: next to func1 before func3 -PASS: gdb.opt/inline-cmds.exp: next to func3 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: finish into func1 -PASS: gdb.opt/inline-cmds.exp: next to finish marker -FAIL: gdb.opt/inline-cmds.exp: step into finish marker -PASS: gdb.opt/inline-cmds.exp: finish from marker to func1 -PASS: gdb.opt/inline-cmds.exp: step into func1 for finish -PASS: gdb.opt/inline-cmds.exp: finish from func1 to func3 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: before the outer_inline call -PASS: gdb.opt/inline-cmds.exp: reach 1 the outer_inline call -PASS: gdb.opt/inline-cmds.exp: reach outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at main of outer_inline -PASS: gdb.opt/inline-cmds.exp: enter outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline2 -PASS: gdb.opt/inline-cmds.exp: enter outer_inline1 from outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline1 -PASS: gdb.opt/inline-cmds.exp: enter noinline from outer_inline1 -PASS: gdb.opt/inline-cmds.exp: backtrace at noinline from outer_inline1 -FAIL: gdb.opt/inline-cmds.exp: enter inlined_fn from noinline -FAIL: gdb.opt/inline-cmds.exp: backtrace at inlined_fn from noinline -FAIL: gdb.opt/inline-cmds.exp: inlined_fn from noinline inlined -FAIL: gdb.opt/inline-cmds.exp: up to noinline -FAIL: gdb.opt/inline-cmds.exp: noinline from outer_inline1 not inlined -PASS: gdb.opt/inline-cmds.exp: up to outer_inline1 -PASS: gdb.opt/inline-cmds.exp: outer_inline1 inlined -PASS: gdb.opt/inline-cmds.exp: up to outer_inline2 -FAIL: gdb.opt/inline-cmds.exp: outer_inline2 inlined -FAIL: gdb.opt/inline-cmds.exp: up from outer_inline2 -PASS: gdb.opt/inline-cmds.exp: main not inlined -Running ./gdb.opt/inline-locals.exp ... -PASS: gdb.opt/inline-locals.exp: continue to bar (1) -PASS: gdb.opt/inline-locals.exp: continue to bar (2) -PASS: gdb.opt/inline-locals.exp: backtrace from bar (2) -PASS: gdb.opt/inline-locals.exp: up from bar (2) -PASS: gdb.opt/inline-locals.exp: func1 inlined (2) -PASS: gdb.opt/inline-locals.exp: info locals above bar (2) -PASS: gdb.opt/inline-locals.exp: info args above bar (2) -PASS: gdb.opt/inline-locals.exp: print local (2) -PASS: gdb.opt/inline-locals.exp: print out of scope local -PASS: gdb.opt/inline-locals.exp: continue to bar (3) -PASS: gdb.opt/inline-locals.exp: backtrace from bar (3) -PASS: gdb.opt/inline-locals.exp: up from bar (3) -PASS: gdb.opt/inline-locals.exp: func1 inlined (3) -PASS: gdb.opt/inline-locals.exp: info locals above bar (3) -PASS: gdb.opt/inline-locals.exp: info args above bar (3) -PASS: gdb.opt/inline-locals.exp: print local (3) -Running ./gdb.pascal/floats.exp ... -UNSUPPORTED: gdb.pascal/floats.exp: No pascal compiler found -UNTESTED: gdb.pascal/floats.exp: floats.exp -Running ./gdb.pascal/gdb11492.exp ... -UNSUPPORTED: gdb.pascal/gdb11492.exp: No pascal compiler found -UNTESTED: gdb.pascal/gdb11492.exp: gdb11492.exp -Running ./gdb.pascal/hello.exp ... -UNSUPPORTED: gdb.pascal/hello.exp: No pascal compiler found -Running ./gdb.pascal/integers.exp ... -UNSUPPORTED: gdb.pascal/integers.exp: No pascal compiler found -Running ./gdb.pascal/print.exp ... -PASS: gdb.pascal/print.exp: set language pascal -PASS: gdb.pascal/print.exp: set language to "pascal" -PASS: gdb.pascal/print.exp: check fp + text -PASS: gdb.pascal/print.exp: p 1. -PASS: gdb.pascal/print.exp: p 1.5 -PASS: gdb.pascal/print.exp: p 1.f -PASS: gdb.pascal/print.exp: p 1.5f -PASS: gdb.pascal/print.exp: p 1.l -PASS: gdb.pascal/print.exp: p 1.5l -PASS: gdb.pascal/print.exp: p 0x1.1 -PASS: gdb.pascal/print.exp: reject p 1.1x -PASS: gdb.pascal/print.exp: reject p 1.1ff -PASS: gdb.pascal/print.exp: reject p 1.1ll -Running ./gdb.pascal/types.exp ... -PASS: gdb.pascal/types.exp: set language pascal -PASS: gdb.pascal/types.exp: set language to "pascal" -PASS: gdb.pascal/types.exp: pt 123 -PASS: gdb.pascal/types.exp: pt TRUE -PASS: gdb.pascal/types.exp: pt FALSE -PASS: gdb.pascal/types.exp: pt 'a' -KFAIL: gdb.pascal/types.exp: pt 'a simple string' (PRMS: gdb/2326) -PASS: gdb.pascal/types.exp: pt .44 -PASS: gdb.pascal/types.exp: pt 44.0 -PASS: gdb.pascal/types.exp: pt 10e20 -PASS: gdb.pascal/types.exp: pt 10E20 -Running ./gdb.python/lib-types.exp ... -PASS: gdb.python/lib-types.exp: python import gdb.types -PASS: gdb.python/lib-types.exp: python const_class1_obj = gdb.parse_and_eval ('const_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_const_class1_obj = gdb.types.get_basic_type (const_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (const_class1_obj.type)) -PASS: gdb.python/lib-types.exp: const stripping -PASS: gdb.python/lib-types.exp: python volatile_class1_obj = gdb.parse_and_eval ('volatile_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_volatile_class1_obj = gdb.types.get_basic_type (volatile_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (volatile_class1_obj.type)) -PASS: gdb.python/lib-types.exp: volatile stripping -PASS: gdb.python/lib-types.exp: python const_volatile_class1_obj = gdb.parse_and_eval ('const_volatile_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_const_volatile_class1_obj = gdb.types.get_basic_type (const_volatile_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (const_volatile_class1_obj.type)) -PASS: gdb.python/lib-types.exp: volatile+const stripping -PASS: gdb.python/lib-types.exp: python typedef_class1_obj = gdb.parse_and_eval ('typedef_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_class1_obj = gdb.types.get_basic_type (typedef_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_class1_obj.type)) -PASS: gdb.python/lib-types.exp: typedef stripping -PASS: gdb.python/lib-types.exp: python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj') -PASS: gdb.python/lib-types.exp: python basic_type_class1_ref_obj = gdb.types.get_basic_type (class1_ref_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (class1_ref_obj.type)) -PASS: gdb.python/lib-types.exp: reference stripping -PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_class1_obj.type)) -PASS: gdb.python/lib-types.exp: nested typedef stripping -PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_ref_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_ref_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_ref_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_const_typedef_class1_ref_obj.type)) -PASS: gdb.python/lib-types.exp: nested typedef/ref stripping -PASS: gdb.python/lib-types.exp: python class1_obj = gdb.parse_and_eval ('class1_obj') -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (class1_obj.type, 'x')) -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (class1_obj.type, 'nope')) -PASS: gdb.python/lib-types.exp: python subclass1_obj = gdb.parse_and_eval ('subclass1_obj') -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (subclass1_obj.type, 'x')) -PASS: gdb.python/lib-types.exp: python enum1_obj = gdb.parse_and_eval ('enum1_obj') -PASS: gdb.python/lib-types.exp: python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type) -PASS: gdb.python/lib-types.exp: python enum1_list = sorted (enum1_dict.items ()) -PASS: gdb.python/lib-types.exp: python print (enum1_list) -PASS: gdb.python/lib-types.exp: python struct_a = gdb.lookup_type ('struct A') -PASS: gdb.python/lib-types.exp: python print (struct_a.keys ()) -PASS: gdb.python/lib-types.exp: python print ([k for k,v in gdb.types.deep_items(struct_a)]) -Running ./gdb.python/py-arch.exp ... -PASS: gdb.python/py-arch.exp: test number of instructions 1 -PASS: gdb.python/py-arch.exp: test number of instructions 2 -PASS: gdb.python/py-arch.exp: test number of instructions 3 -PASS: gdb.python/py-arch.exp: test number of instructions 4 -PASS: gdb.python/py-arch.exp: test key addr -PASS: gdb.python/py-arch.exp: test key asm -PASS: gdb.python/py-arch.exp: test key length -PASS: gdb.python/py-arch.exp: test exception -Running ./gdb.python/py-block.exp ... -PASS: gdb.python/py-block.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-block.exp: Check block not None -PASS: gdb.python/py-block.exp: First anonymous block -PASS: gdb.python/py-block.exp: Check start not None -PASS: gdb.python/py-block.exp: Check end not None -PASS: gdb.python/py-block.exp: Not a global block -PASS: gdb.python/py-block.exp: Not a static block -PASS: gdb.python/py-block.exp: Get block -PASS: gdb.python/py-block.exp: Get block -PASS: gdb.python/py-block.exp: Is the global block -PASS: gdb.python/py-block.exp: Is the static block -PASS: gdb.python/py-block.exp: Get superblock -PASS: gdb.python/py-block.exp: Second anonymous block -PASS: gdb.python/py-block.exp: Get superblock 2 -PASS: gdb.python/py-block.exp: Print superblock 2 function -PASS: gdb.python/py-block.exp: up -PASS: gdb.python/py-block.exp: Check Frame 2's block not None -PASS: gdb.python/py-block.exp: main block -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -Running ./gdb.python/py-breakpoint.exp ... -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check for two breakpoints -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count -PASS: gdb.python/py-breakpoint.exp: Check expected variable result after 6 iterations -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint enabled. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint thread -PASS: gdb.python/py-breakpoint.exp: Check breakpoint type -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Number of breakpoints before delete -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint invalidated -PASS: gdb.python/py-breakpoint.exp: Number of breakpoints after delete -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at end. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test conditional has been set -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test conditional breakpoint stopped after five iterations -PASS: gdb.python/py-breakpoint.exp: Test conditional read -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test breakpoint stopped after six iterations -PASS: gdb.python/py-breakpoint.exp: commands $bpnum -PASS: gdb.python/py-breakpoint.exp: print "Command for breakpoint has been executed." -PASS: gdb.python/py-breakpoint.exp: print result -PASS: gdb.python/py-breakpoint.exp: end -PASS: gdb.python/py-breakpoint.exp: python print (blist[len(blist)-1].commands) -PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints shows visible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - class bp_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - inf_i = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.count = self.count + 1 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.inf_i = gdb.parse_and_eval("i") -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - if self.inf_i == 3: -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - end -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - class bp_also_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - self.count = self.count + 1 -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - if self.count == 9: -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - end -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - class basic (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - end -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check inferior value matches python accounting -PASS: gdb.python/py-breakpoint.exp: Check python accounting matches inferior -PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop. -PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop. -PASS: gdb.python/py-breakpoint.exp: Check you cannot add a CLI condition to a Python breakpoint that -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - python -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - def stop_func (): -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - return True -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - end -PASS: gdb.python/py-breakpoint.exp: Assign stop function to a breakpoint that has a condition -PASS: gdb.python/py-breakpoint.exp: Test that evaluate function has not been yet executed (ie count = 0) -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test that evaluate function is run when location also has normal bp -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - class wp_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - self.result = gdb.parse_and_eval("result") -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - if self.result == 788: -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - end -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Check that this unrelated breakpoints eval function was never called. -Running ./gdb.python/py-cmd.exp ... -PASS: gdb.python/py-cmd.exp: input simple command - python -PASS: gdb.python/py-cmd.exp: input simple command - class test_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input simple command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input simple command - super (test_cmd, self).__init__ ("test_cmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input simple command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input simple command - print ("test_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input simple command - test_cmd () -PASS: gdb.python/py-cmd.exp: input simple command - end -PASS: gdb.python/py-cmd.exp: call simple command -PASS: gdb.python/py-cmd.exp: input prefix command - python -PASS: gdb.python/py-cmd.exp: input prefix command - class prefix_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input prefix command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input prefix command - super (prefix_cmd, self).__init__ ("prefix_cmd", gdb.COMMAND_OBSCURE, gdb.COMPLETE_NONE, True) -PASS: gdb.python/py-cmd.exp: input prefix command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input prefix command - print ("prefix_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input prefix command - prefix_cmd () -PASS: gdb.python/py-cmd.exp: input prefix command - end -PASS: gdb.python/py-cmd.exp: call prefix command -PASS: gdb.python/py-cmd.exp: input subcommand - python -PASS: gdb.python/py-cmd.exp: input subcommand - class subcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input subcommand - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input subcommand - super (subcmd, self).__init__ ("prefix_cmd subcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input subcommand - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input subcommand - print ("subcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input subcommand - subcmd () -PASS: gdb.python/py-cmd.exp: input subcommand - end -PASS: gdb.python/py-cmd.exp: call subcmd -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - python -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - class prefix_cmd2 (gdb.Command): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - super (prefix_cmd2, self).__init__ ("prefix_cmd2", gdb.COMMAND_OBSCURE, prefix = True, completer_class = gdb.COMPLETE_FILENAME) -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - print ("prefix_cmd2 output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - prefix_cmd2 () -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - end -PASS: gdb.python/py-cmd.exp: call prefix command, keyword arguments -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - python -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - class subcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - super (subcmd, self).__init__ ("prefix_cmd2 subcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - print ("subcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - subcmd () -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - end -PASS: gdb.python/py-cmd.exp: call subcmd under prefix_cmd2 -PASS: gdb.python/py-cmd.exp: input new subcommand - python -PASS: gdb.python/py-cmd.exp: input new subcommand - class newsubcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input new subcommand - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input new subcommand - super (newsubcmd, self).__init__ ("info newsubcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input new subcommand - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input new subcommand - print ("newsubcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input new subcommand - newsubcmd () -PASS: gdb.python/py-cmd.exp: input new subcommand - end -PASS: gdb.python/py-cmd.exp: call newsubcmd -PASS: gdb.python/py-cmd.exp: input command to throw error - python -PASS: gdb.python/py-cmd.exp: input command to throw error - class test_error_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input command to throw error - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input command to throw error - super (test_error_cmd, self).__init__ ("test_error_cmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input command to throw error - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input command to throw error - raise gdb.GdbError ('you lose!') -PASS: gdb.python/py-cmd.exp: input command to throw error - test_error_cmd () -PASS: gdb.python/py-cmd.exp: input command to throw error - end -PASS: gdb.python/py-cmd.exp: call error command -PASS: gdb.python/py-cmd.exp: string_to_argv ("1 2 3") -PASS: gdb.python/py-cmd.exp: string_to_argv ("'1 2' 3") -PASS: gdb.python/py-cmd.exp: string_to_argv ('"1 2" 3') -PASS: gdb.python/py-cmd.exp: string_to_argv ('1\ 2 3') -PASS: gdb.python/py-cmd.exp: input simple user-defined command - python -PASS: gdb.python/py-cmd.exp: input simple user-defined command - class test_help (gdb.Command): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - """Docstring""" -PASS: gdb.python/py-cmd.exp: input simple user-defined command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - super (test_help, self).__init__ ("test_help", gdb.COMMAND_USER) -PASS: gdb.python/py-cmd.exp: input simple user-defined command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - print ("test_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input simple user-defined command - test_help () -PASS: gdb.python/py-cmd.exp: input simple user-defined command - end -PASS: gdb.python/py-cmd.exp: call simple user-defined command -PASS: gdb.python/py-cmd.exp: see user-defined command in `help user-defined` -Running ./gdb.python/py-error.exp ... -PASS: gdb.python/py-error.exp: set host-charset IBM1047 -PASS: gdb.python/py-error.exp: main reached -PASS: gdb.python/py-error.exp: no delayed error -Running ./gdb.python/py-events.exp ... -Running ./gdb.python/py-evsignal.exp ... -KFAIL: gdb.python/py-evsignal.exp: Signal Thread 3 (PRMS: python/12966) -Running ./gdb.python/py-evthreads.exp ... -KFAIL: gdb.python/py-evthreads.exp: Run to breakpoint 1 (PRMS: python/12966) -Running ./gdb.python/py-explore-cc.exp ... -PASS: gdb.python/py-explore-cc.exp: continue to breakpoint: Break here -PASS: gdb.python/py-explore-cc.exp: explore A -PASS: gdb.python/py-explore-cc.exp: explore a -PASS: gdb.python/py-explore-cc.exp: explore int_ref -PASS: gdb.python/py-explore-cc.exp: explore int_ptr_ref -PASS: gdb.python/py-explore-cc.exp: explore_int_ptr_ref_as_single_value_pointer -PASS: gdb.python/py-explore-cc.exp: explore b -PASS: gdb.python/py-explore-cc.exp: explore_base_class_A -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_A -PASS: gdb.python/py-explore-cc.exp: explore_field_i_of_b -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_i -PASS: gdb.python/py-explore-cc.exp: explore_field_c_of_b -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_i -PASS: gdb.python/py-explore-cc.exp: return_to_gdb_prompt_from_b -PASS: gdb.python/py-explore-cc.exp: explore B -PASS: gdb.python/py-explore-cc.exp: explore_base_class_A -PASS: gdb.python/py-explore-cc.exp: return_to_B -PASS: gdb.python/py-explore-cc.exp: explore_field_i_of_B -PASS: gdb.python/py-explore-cc.exp: return_to_B_from_i -PASS: gdb.python/py-explore-cc.exp: explore_field_c_of_B -PASS: gdb.python/py-explore-cc.exp: return_to_B_from_c -PASS: gdb.python/py-explore-cc.exp: return_to_gdb_prompt_from_B -Running ./gdb.python/py-explore.exp ... -PASS: gdb.python/py-explore.exp: continue to breakpoint: Break here -PASS: gdb.python/py-explore.exp: explore i -PASS: gdb.python/py-explore.exp: explore ss -PASS: gdb.python/py-explore.exp: explore *ss_ptr -PASS: gdb.python/py-explore.exp: explore ss_t -PASS: gdb.python/py-explore.exp: explore ss_ptr -PASS: gdb.python/py-explore.exp: explore ss_ptr as single value pointer -PASS: gdb.python/py-explore.exp: explore darray_ref -PASS: gdb.python/py-explore.exp: no_to_explore_as_pointer -PASS: gdb.python/py-explore.exp: explore_as_array -PASS: gdb.python/py-explore.exp: explore_as_array_index_2 -PASS: gdb.python/py-explore.exp: end explore_as_array_index_2 -PASS: gdb.python/py-explore.exp: end explore_as_array -PASS: gdb.python/py-explore.exp: explore su -PASS: gdb.python/py-explore.exp: explore su.d -PASS: gdb.python/py-explore.exp: end su.d exploration -PASS: gdb.python/py-explore.exp: end su exploration -PASS: gdb.python/py-explore.exp: explore cs -PASS: gdb.python/py-explore.exp: explore cs.s -PASS: gdb.python/py-explore.exp: end cs.s exploration -PASS: gdb.python/py-explore.exp: explore cs.u -PASS: gdb.python/py-explore.exp: end cs.u exploration -PASS: gdb.python/py-explore.exp: end cs exploration -PASS: gdb.python/py-explore.exp: explore cu -PASS: gdb.python/py-explore.exp: explore cu.sa -PASS: gdb.python/py-explore.exp: explore cu.sa[0] -PASS: gdb.python/py-explore.exp: end cu.sa[0] exploration -PASS: gdb.python/py-explore.exp: end cu.sa exploration -PASS: gdb.python/py-explore.exp: end cu exploration -PASS: gdb.python/py-explore.exp: explore int -PASS: gdb.python/py-explore.exp: explore struct SimpleStruct -PASS: gdb.python/py-explore.exp: explore type struct SimpleStruct feild 0 -PASS: gdb.python/py-explore.exp: return to struct SimpleStruct from field 0 -PASS: gdb.python/py-explore.exp: explore type struct SimpleStruct feild 1 -PASS: gdb.python/py-explore.exp: return to struct SimpleStruct from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from struct SimpleStruct -PASS: gdb.python/py-explore.exp: explore union SimpleUnion -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 0 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 1 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 1 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 2 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 2 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 3 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 3 -PASS: gdb.python/py-explore.exp: return to GDB prompt from union SimpleUnion -PASS: gdb.python/py-explore.exp: explore SS -PASS: gdb.python/py-explore.exp: explore type SS feild 0 -PASS: gdb.python/py-explore.exp: return to SS from field 0 -PASS: gdb.python/py-explore.exp: explore type SS feild 1 -PASS: gdb.python/py-explore.exp: return to SS field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from SS -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 0 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 0 -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 1 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 1 -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 2 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 2 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexStruct type exploration -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 0 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 1 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexUnion type exploration -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 0 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 1 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexUnion type exploration -Running ./gdb.python/py-finish-breakpoint2.exp ... -PASS: gdb.python/py-finish-breakpoint2.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint2.exp: run to exception 1 -PASS: gdb.python/py-finish-breakpoint2.exp: check BP count -PASS: gdb.python/py-finish-breakpoint2.exp: set FinishBP after the exception -PASS: gdb.python/py-finish-breakpoint2.exp: check FinishBreakpoint in catch() -PASS: gdb.python/py-finish-breakpoint2.exp: check finish BP removal -PASS: gdb.python/py-finish-breakpoint2.exp: continue to second exception -PASS: gdb.python/py-finish-breakpoint2.exp: set FinishBP after the exception -PASS: gdb.python/py-finish-breakpoint2.exp: FinishBreakpoint with exception thrown not caught -Running ./gdb.python/py-finish-breakpoint.exp ... -PASS: gdb.python/py-finish-breakpoint.exp: disable confirmation -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: continue to the function to finish -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBreakpoint with default frame value -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check return_value at init -PASS: gdb.python/py-finish-breakpoint.exp: check MyFinishBreakpoint hit -PASS: gdb.python/py-finish-breakpoint.exp: check return_value -PASS: gdb.python/py-finish-breakpoint.exp: check finishBP on default frame has been hit -PASS: gdb.python/py-finish-breakpoint.exp: ensure that finish bp is invalid afer normal hit -PASS: gdb.python/py-finish-breakpoint.exp: return to main() -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBP not allowed in main -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -FAIL: gdb.python/py-finish-breakpoint.exp: ensure that shared lib has no debug info -FAIL: gdb.python/py-finish-breakpoint.exp: setting breakpoint at do_nothing -FAIL: gdb.python/py-finish-breakpoint.exp: continue to do_nothing -PASS: gdb.python/py-finish-breakpoint.exp: set finish breakpoint -FAIL: gdb.python/py-finish-breakpoint.exp: check FinishBreakpoint hit -PASS: gdb.python/py-finish-breakpoint.exp: check return value without debug symbol -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set finish breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: set BP after the jump -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBP out of scope notification -PASS: gdb.python/py-finish-breakpoint.exp: ensure that finish bp is invalid afer out of scope notification -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set a conditional BP -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP in a breakpoint condition -PASS: gdb.python/py-finish-breakpoint.exp: don't allow FinishBreakpoint on dummy frames -PASS: gdb.python/py-finish-breakpoint.exp: check stopped location -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set conditional BP -PASS: gdb.python/py-finish-breakpoint.exp: set BP in condition -PASS: gdb.python/py-finish-breakpoint.exp: stop in condition function -PASS: gdb.python/py-finish-breakpoint.exp: finish condition evaluation -PASS: gdb.python/py-finish-breakpoint.exp: stop at conditional breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check stopped location -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: prepare TestExplicitBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: don't allow FinishBreakpoint on dummy frames -PASS: gdb.python/py-finish-breakpoint.exp: prepare TestExplicitBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: FinishBP stop at during explicit function call -PASS: gdb.python/py-finish-breakpoint.exp: switch to exit() test -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP after the exit() -PASS: gdb.python/py-finish-breakpoint.exp: catch out of scope after exit -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP after the exec -PASS: gdb.python/py-finish-breakpoint.exp: catch exec -PASS: gdb.python/py-finish-breakpoint.exp: catch out of scope after exec -Running ./gdb.python/py-frame.exp ... -PASS: gdb.python/py-frame.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-frame.exp: test Frame.architecture() -PASS: gdb.python/py-frame.exp: test i -PASS: gdb.python/py-frame.exp: test f -PASS: gdb.python/py-frame.exp: test b -PASS: gdb.python/py-frame.exp: test i = 1.1 -PASS: gdb.python/py-frame.exp: test double i -PASS: gdb.python/py-frame.exp: test f = 2.2 -PASS: gdb.python/py-frame.exp: test double f -PASS: gdb.python/py-frame.exp: test i = 99 -PASS: gdb.python/py-frame.exp: test int i -PASS: gdb.python/py-frame.exp: continue to breakpoint: breakpoint at f2 -PASS: gdb.python/py-frame.exp: selected frame -vs- newest frame -PASS: gdb.python/py-frame.exp: newest frame -vs- newest frame -PASS: gdb.python/py-frame.exp: test equality comparison (false) -PASS: gdb.python/py-frame.exp: test equality comparison (true) -PASS: gdb.python/py-frame.exp: test inequality comparison (true) -PASS: gdb.python/py-frame.exp: test inequality comparison (false) -PASS: gdb.python/py-frame.exp: test Frame.is_valid -PASS: gdb.python/py-frame.exp: test Frame.name -PASS: gdb.python/py-frame.exp: test Frame.type -PASS: gdb.python/py-frame.exp: test Frame.type -PASS: gdb.python/py-frame.exp: test gdb.frame_stop_reason_string -PASS: gdb.python/py-frame.exp: test Frame.pc -PASS: gdb.python/py-frame.exp: test Frame.older -PASS: gdb.python/py-frame.exp: test Frame.newer -PASS: gdb.python/py-frame.exp: test Frame.read_var - error -PASS: gdb.python/py-frame.exp: test Frame.read_var - success -PASS: gdb.python/py-frame.exp: test gdb.selected_frame -Running ./gdb.python/py-frame-inline.exp ... -PASS: gdb.python/py-frame-inline.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-frame-inline.exp: info frame -PASS: gdb.python/py-frame-inline.exp: up -PASS: gdb.python/py-frame-inline.exp: python print (gdb.selected_frame().read_var('l')) -Running ./gdb.python/py-function.exp ... -PASS: gdb.python/py-function.exp: input convenience function - python -PASS: gdb.python/py-function.exp: input convenience function - class test_func (gdb.Function): -PASS: gdb.python/py-function.exp: input convenience function - def __init__ (self): -PASS: gdb.python/py-function.exp: input convenience function - super (test_func, self).__init__ ("test_func") -PASS: gdb.python/py-function.exp: input convenience function - def invoke (self, arg): -PASS: gdb.python/py-function.exp: input convenience function - return "test_func output, arg = %s" % arg.string () -PASS: gdb.python/py-function.exp: input convenience function - test_func () -PASS: gdb.python/py-function.exp: input convenience function - end -PASS: gdb.python/py-function.exp: call function -PASS: gdb.python/py-function.exp: input value-returning convenience function - python -PASS: gdb.python/py-function.exp: input value-returning convenience function - class Double (gdb.Function): -PASS: gdb.python/py-function.exp: input value-returning convenience function - def __init__ (self): -PASS: gdb.python/py-function.exp: input value-returning convenience function - super (Double, self).__init__ ("double") -PASS: gdb.python/py-function.exp: input value-returning convenience function - def invoke (self, n): -PASS: gdb.python/py-function.exp: input value-returning convenience function - return n*2 -PASS: gdb.python/py-function.exp: input value-returning convenience function - Double () -PASS: gdb.python/py-function.exp: input value-returning convenience function - end -PASS: gdb.python/py-function.exp: call value-returning function -PASS: gdb.python/py-function.exp: input int-returning function - python -PASS: gdb.python/py-function.exp: input int-returning function - class Yes(gdb.Function): -PASS: gdb.python/py-function.exp: input int-returning function - def __init__(self): -PASS: gdb.python/py-function.exp: input int-returning function - gdb.Function.__init__(self, 'yes') -PASS: gdb.python/py-function.exp: input int-returning function - def invoke(self): -PASS: gdb.python/py-function.exp: input int-returning function - return 1 -PASS: gdb.python/py-function.exp: input int-returning function - Yes () -PASS: gdb.python/py-function.exp: input int-returning function - end -PASS: gdb.python/py-function.exp: call yes with && -PASS: gdb.python/py-function.exp: call yes with || -PASS: gdb.python/py-function.exp: Test GDBError - python -PASS: gdb.python/py-function.exp: Test GDBError - class GDBError(gdb.Function): -PASS: gdb.python/py-function.exp: Test GDBError - def __init__(self): -PASS: gdb.python/py-function.exp: Test GDBError - gdb.Function.__init__(self, 'gdberror') -PASS: gdb.python/py-function.exp: Test GDBError - def invoke(self): -PASS: gdb.python/py-function.exp: Test GDBError - raise gdb.GdbError("This is a GdbError") -PASS: gdb.python/py-function.exp: Test GDBError - GDBError () -PASS: gdb.python/py-function.exp: Test GDBError - end -PASS: gdb.python/py-function.exp: Test GdbError. There should not be a stack trace -PASS: gdb.python/py-function.exp: Test Normal Error - python -PASS: gdb.python/py-function.exp: Test Normal Error - class NormalError(gdb.Function): -PASS: gdb.python/py-function.exp: Test Normal Error - def __init__(self): -PASS: gdb.python/py-function.exp: Test Normal Error - gdb.Function.__init__(self, 'normalerror') -PASS: gdb.python/py-function.exp: Test Normal Error - def invoke(self): -PASS: gdb.python/py-function.exp: Test Normal Error - raise RuntimeError("This is a Normal Error") -PASS: gdb.python/py-function.exp: Test Normal Error - NormalError () -PASS: gdb.python/py-function.exp: Test Normal Error - end -PASS: gdb.python/py-function.exp: set python print-stack full -PASS: gdb.python/py-function.exp: Test a Runtime error. There should be a stack trace. -PASS: gdb.python/py-function.exp: input command-calling function - python -PASS: gdb.python/py-function.exp: input command-calling function - class CallCommand(gdb.Function): -PASS: gdb.python/py-function.exp: input command-calling function - def __init__(self): -PASS: gdb.python/py-function.exp: input command-calling function - gdb.Function.__init__(self, 'call_command') -PASS: gdb.python/py-function.exp: input command-calling function - def invoke(self): -PASS: gdb.python/py-function.exp: input command-calling function - return gdb.execute('print 1', to_string=True) -PASS: gdb.python/py-function.exp: input command-calling function - CallCommand () -PASS: gdb.python/py-function.exp: input command-calling function - end -PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command. -PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command, again. -Running ./gdb.python/py-inferior.exp ... -PASS: gdb.python/py-inferior.exp: successfully compiled posix threads test case -PASS: gdb.python/py-inferior.exp: get inferiors list -PASS: gdb.python/py-inferior.exp: verify inferiors list -PASS: gdb.python/py-inferior.exp: test equality comparison (true) -PASS: gdb.python/py-inferior.exp: test Inferior.num -PASS: gdb.python/py-inferior.exp: test Inferior.pid -PASS: gdb.python/py-inferior.exp: test Inferior.was_attached -PASS: gdb.python/py-inferior.exp: test Inferior.threads -PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to check_threads -PASS: gdb.python/py-inferior.exp: test Inferior.threads 2 -PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to Break here. -PASS: gdb.python/py-inferior.exp: read str contents -PASS: gdb.python/py-inferior.exp: write str -PASS: gdb.python/py-inferior.exp: ensure str was changed in the inferior -PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address -PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof -PASS: gdb.python/py-inferior.exp: find string pattern -PASS: gdb.python/py-inferior.exp: pattern not found at end of range -PASS: gdb.python/py-inferior.exp: pattern found at end of range -PASS: gdb.python/py-inferior.exp: py from struct import * -PASS: gdb.python/py-inferior.exp: set int16_search_buf[10] = 0x1234 -PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('int16_search_buf') -PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address -PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof -PASS: gdb.python/py-inferior.exp: py pattern = pack('"): -PASS: gdb.python/python.exp: prompt substitution readline - pCounter = pCounter + 1 -PASS: gdb.python/python.exp: prompt substitution readline - return "python line " + str (pCounter) + ": " -PASS: gdb.python/python.exp: prompt substitution readline - return None -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set prompt testfake -PASS: gdb.python/python.exp: show prompt shows guarded prompt -PASS: gdb.python/python.exp: set prompt blah overriden -PASS: gdb.python/python.exp: Delete old hook -PASS: gdb.python/python.exp: set default prompt -PASS: gdb.python/python.exp: set programming hook -PASS: gdb.python/python.exp: readline secondary are not substituted -PASS: gdb.python/python.exp: end programming -PASS: gdb.python/python.exp: prompt substitution readline - python -PASS: gdb.python/python.exp: prompt substitution readline - import gdb.command.prompt -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set basic extended prompt -PASS: gdb.python/python.exp: set extended prompt working directory -PASS: gdb.python/python.exp: set extended prompt parameter -PASS: gdb.python/python.exp: Test print-backtrace show setting. Default is message. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: Test print-backtrace show setting to full. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: Test print-backtrace show setting to none. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: prompt substitution readline - python -PASS: gdb.python/python.exp: prompt substitution readline - pCounter = 0 -PASS: gdb.python/python.exp: prompt substitution readline - def error_prompt(current): -PASS: gdb.python/python.exp: prompt substitution readline - raise RuntimeError("Python exception called") -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set the hook to default -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set the hook to default -PASS: gdb.python/python.exp: Get line number of func2 call site -PASS: gdb.python/python.exp: Test find_pc_line at func2 call site -PASS: gdb.python/python.exp: Step into func2 -PASS: gdb.python/python.exp: Step out of func2 -PASS: gdb.python/python.exp: Test find_pc_line with resume address -Running ./gdb.python/py-type.exp ... -PASS: gdb.python/py-type.exp: lang_c: continue to breakpoint: break to inspect struct and array. -PASS: gdb.python/py-type.exp: lang_c: test_fields: c typedef field list -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (st) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (st) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: get fields from st.type -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check number of fields (st) -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check structure field a name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check structure field b name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check that dir includes name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check number of fields (st.type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields lookup by name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields iteration over values -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields items list -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check field name exists test -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check field name nonexists test -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check conversion to bool -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (len (st.type['a'].type)) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type.has_key ('x')) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type.keys ()) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type['x']) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (not not st.type['a'].type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (ar) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: python fields = ar.type.fields() -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check the number of fields -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check array field type -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to array with one argument -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to array with two arguments -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (ar[0].type == ar[0].type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (vec_data_1) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (vec_data_1) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (vec_data_2) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (vec_data_2) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec1 -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to vector with one argument -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec2 -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to vector with two arguments -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print vec1 == vec2 -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec3 -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print vec1 == vec3 -PASS: gdb.python/py-type.exp: lang_c: test_enum: print value (e) -PASS: gdb.python/py-type.exp: lang_c: test_enum: get value (e) from history -PASS: gdb.python/py-type.exp: lang_c: test_enum: extract type fields from e -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check the number of enum fields -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field[0] name -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field[1]name -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check the number of type fields -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field lookup by name (v1) -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field lookup by name (v2) -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check num fields iteration over values -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum fields items list -PASS: gdb.python/py-type.exp: lang_cpp: continue to breakpoint: break to inspect struct and array. -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: c++ typedef field list -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (c) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (c) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get fields from c.type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (c) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check class field c name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check class field d name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (c.type == gdb.parse_and_eval('d').type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (c.type == gdb.parse_and_eval('d').type.fields()[0].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (st) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get fields from st.type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check structure field a name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check structure field b name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check that dir includes name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (st.type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields lookup by name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields iteration over values -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields items list -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check field name exists test -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check field name nonexists test -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check conversion to bool -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (len (st.type['a'].type)) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type.has_key ('x')) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type.keys ()) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type['x']) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (not not st.type['a'].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python fields = ar.type.fields() -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check the number of fields -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check array field type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to array with one argument -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to array with two arguments -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (ar[0].type == ar[0].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (vec_data_1) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (vec_data_1) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (vec_data_2) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (vec_data_2) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec1 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to vector with one argument -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec2 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to vector with two arguments -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print vec1 == vec2 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec3 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print vec1 == vec3 -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: print value (d) -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: get value (d) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: extract type fields from d -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check the number of fields -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check base class (fields[0]) -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check base class (fields[1]) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check correct tuple length -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check range low bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check range high bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: get fields -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: Check range low bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: Check range high bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: print value (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: get value (st) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: Check range for non ranged type. -PASS: gdb.python/py-type.exp: lang_cpp: get type of temvar -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(0)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (isinstance(ttype.template_argument(0), gdb.Type)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(1)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (isinstance(ttype.template_argument(1), gdb.Value)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(2)) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: print value (e) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: get value (e) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: extract type fields from e -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check the number of enum fields -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field[0] name -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field[1]name -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check the number of type fields -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field lookup by name (v1) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field lookup by name (v2) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check num fields iteration over values -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum fields items list -Running ./gdb.python/py-typeprint.exp ... -PASS: gdb.python/py-typeprint.exp: python exec (open ('py-typeprint.py').read ()) -PASS: gdb.python/py-typeprint.exp: basic test -PASS: gdb.python/py-typeprint.exp: raw test -PASS: gdb.python/py-typeprint.exp: disable type-printer string -PASS: gdb.python/py-typeprint.exp: whatis with disabled printer -PASS: gdb.python/py-typeprint.exp: info type-printers -PASS: gdb.python/py-typeprint.exp: enable type-printer string -PASS: gdb.python/py-typeprint.exp: whatis with enabled printer -PASS: gdb.python/py-typeprint.exp: whatis s -Running ./gdb.python/py-value-cc.exp ... -PASS: gdb.python/py-value-cc.exp: continue to breakpoint: Break here -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("a").type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("a").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").referenced_value())) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").dereference().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().dereference())) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().referenced_value())) -Running ./gdb.python/py-value.exp ... -PASS: gdb.python/py-value.exp: create boolean value -PASS: gdb.python/py-value.exp: create integer value -PASS: gdb.python/py-value.exp: create long value -PASS: gdb.python/py-value.exp: create double value -PASS: gdb.python/py-value.exp: create 8-bit string value -PASS: gdb.python/py-value.exp: print 8-bit string -PASS: gdb.python/py-value.exp: verify type of 8-bit string -PASS: gdb.python/py-value.exp: create unicode value -PASS: gdb.python/py-value.exp: print Unicode string -PASS: gdb.python/py-value.exp: verify type of unicode string -PASS: gdb.python/py-value.exp: Test address attribute in non-addressable value -PASS: gdb.python/py-value.exp: add two integer values -PASS: gdb.python/py-value.exp: verify type of integer add result -PASS: gdb.python/py-value.exp: add two double values -PASS: gdb.python/py-value.exp: subtract two integer values -PASS: gdb.python/py-value.exp: subtract two double values -PASS: gdb.python/py-value.exp: multiply two integer values -PASS: gdb.python/py-value.exp: multiply two double values -PASS: gdb.python/py-value.exp: divide two integer values -PASS: gdb.python/py-value.exp: divide two double values -PASS: gdb.python/py-value.exp: take remainder of two integer values -PASS: gdb.python/py-value.exp: integer value raised to the power of another integer value -PASS: gdb.python/py-value.exp: double value raised to the power of integer value -PASS: gdb.python/py-value.exp: negated integer value -PASS: gdb.python/py-value.exp: positive integer value -PASS: gdb.python/py-value.exp: negated double value -PASS: gdb.python/py-value.exp: positive double value -PASS: gdb.python/py-value.exp: absolute of integer value -PASS: gdb.python/py-value.exp: absolute of double value -PASS: gdb.python/py-value.exp: subtract integer value from python integer -PASS: gdb.python/py-value.exp: verify type of mixed integer subtraction result -PASS: gdb.python/py-value.exp: add double value with python float -PASS: gdb.python/py-value.exp: subtract python integer from integer value -PASS: gdb.python/py-value.exp: add python float with double value -PASS: gdb.python/py-value.exp: print evalue -PASS: gdb.python/py-value.exp: python evalue = gdb.history (0) -PASS: gdb.python/py-value.exp: python print (int (evalue)) -PASS: gdb.python/py-value.exp: add pointer value with python integer -PASS: gdb.python/py-value.exp: subtract python integer from pointer value -PASS: gdb.python/py-value.exp: subtract two pointer values -PASS: gdb.python/py-value.exp: catch error in python type conversion -PASS: gdb.python/py-value.exp: catch throw of GDB error -PASS: gdb.python/py-value.exp: define function to test booleans - python -PASS: gdb.python/py-value.exp: define function to test booleans - def test_bool (val): -PASS: gdb.python/py-value.exp: define function to test booleans - if val: -PASS: gdb.python/py-value.exp: define function to test booleans - print ('yay') -PASS: gdb.python/py-value.exp: define function to test booleans - else: -PASS: gdb.python/py-value.exp: define function to test booleans - print ('nay') -PASS: gdb.python/py-value.exp: define function to test booleans - end -PASS: gdb.python/py-value.exp: check evaluation of true boolean value in expression -PASS: gdb.python/py-value.exp: check evaluation of false boolean value in expression -PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression -PASS: gdb.python/py-value.exp: less than, equal -PASS: gdb.python/py-value.exp: less than, less -PASS: gdb.python/py-value.exp: less than, greater -PASS: gdb.python/py-value.exp: less than, None -PASS: gdb.python/py-value.exp: less or equal, equal -PASS: gdb.python/py-value.exp: less or equal, less -PASS: gdb.python/py-value.exp: less or equal, greater -PASS: gdb.python/py-value.exp: less or equal, None -PASS: gdb.python/py-value.exp: equality of gdb.Values -PASS: gdb.python/py-value.exp: inequality of gdb.Values -PASS: gdb.python/py-value.exp: equality of gdb.Value with Python value -PASS: gdb.python/py-value.exp: inequality of gdb.Value with Python value -PASS: gdb.python/py-value.exp: inequality of gdb.Value with None -PASS: gdb.python/py-value.exp: inequality, false -PASS: gdb.python/py-value.exp: inequality, true -PASS: gdb.python/py-value.exp: inequality, None -PASS: gdb.python/py-value.exp: greater than, equal -PASS: gdb.python/py-value.exp: greater than, less -PASS: gdb.python/py-value.exp: greater than, greater -PASS: gdb.python/py-value.exp: greater than, None -PASS: gdb.python/py-value.exp: greater or equal, equal -PASS: gdb.python/py-value.exp: greater or equal, less -PASS: gdb.python/py-value.exp: greater or equal, greater -PASS: gdb.python/py-value.exp: greater or equal, None -PASS: gdb.python/py-value.exp: py-value in file.filename -PASS: gdb.python/py-value.exp: python print (gdb.objfiles()[0].pretty_printers) -PASS: gdb.python/py-value.exp: python gdb.objfiles()[0].pretty_printers = 0 -PASS: gdb.python/py-value.exp: parse_and_eval constant test -PASS: gdb.python/py-value.exp: parse_and_eval simple expression test -PASS: gdb.python/py-value.exp: parse_and_eval type test -PASS: gdb.python/py-value.exp: Simple Python value dictionary - python -PASS: gdb.python/py-value.exp: Simple Python value dictionary - one = gdb.Value(1) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - two = gdb.Value(2) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - three = gdb.Value(3) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - vdict = {one:"one str",two:"two str",three:"three str"} -PASS: gdb.python/py-value.exp: Simple Python value dictionary - end -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test inbuilt hash -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: access element inside struct using 8-bit string name -PASS: gdb.python/py-value.exp: access element inside struct using unicode name -PASS: gdb.python/py-value.exp: dereference value -PASS: gdb.python/py-value.exp: Test is_optimized_out attribute -PASS: gdb.python/py-value.exp: Test address attribute -PASS: gdb.python/py-value.exp: parse_and_eval with memory error -PASS: gdb.python/py-value.exp: python inval = gdb.parse_and_eval('*(int*)0') -PASS: gdb.python/py-value.exp: python print (inval.is_lazy) -PASS: gdb.python/py-value.exp: memory error and lazy values -PASS: gdb.python/py-value.exp: memory error and lazy values -PASS: gdb.python/py-value.exp: python argc_lazy = gdb.parse_and_eval('argc') -PASS: gdb.python/py-value.exp: python argc_notlazy = gdb.parse_and_eval('argc') -PASS: gdb.python/py-value.exp: python argc_notlazy.fetch_lazy() -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: python print (argc_notlazy.is_lazy) -PASS: gdb.python/py-value.exp: sanity check argc -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: set argc=2 -PASS: gdb.python/py-value.exp: python print (argc_notlazy) -PASS: gdb.python/py-value.exp: python print (argc_lazy) -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: print st -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: Test string with no length -PASS: gdb.python/py-value.exp: Test string (length = -1) is all of the string -PASS: gdb.python/py-value.exp: python print (st.string (length = 6)) -PASS: gdb.python/py-value.exp: Test string (length = 0) is empty -PASS: gdb.python/py-value.exp: Test length is 0 -PASS: gdb.python/py-value.exp: print nullst -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: Test string to first null -PASS: gdb.python/py-value.exp: get string beyond null -PASS: gdb.python/py-value.exp: python print (repr(nullst)) -PASS: gdb.python/py-value.exp: p/x fp1 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp1 = fp1.dereference() -PASS: gdb.python/py-value.exp: python result = fp1() -PASS: gdb.python/py-value.exp: python print (result) -PASS: gdb.python/py-value.exp: p/x fp2 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp2 = fp2.dereference() -PASS: gdb.python/py-value.exp: python result2 = fp2(10,20) -PASS: gdb.python/py-value.exp: python print (result2) -PASS: gdb.python/py-value.exp: p i -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python result3 = i() -PASS: gdb.python/py-value.exp: p/x fp2 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp3 = fp3.dereference() -PASS: gdb.python/py-value.exp: python result2 = fp3(10) -PASS: gdb.python/py-value.exp: print sptr -PASS: gdb.python/py-value.exp: Get value from history -PASS: gdb.python/py-value.exp: Aquire lazy string -PASS: gdb.python/py-value.exp: Test type name equality -PASS: gdb.python/py-value.exp: Test type name equality -PASS: gdb.python/py-value.exp: print sn -PASS: gdb.python/py-value.exp: Get value from history -PASS: gdb.python/py-value.exp: Test lazy string -PASS: gdb.python/py-value.exp: Succesfully create a lazy string -PASS: gdb.python/py-value.exp: Test lazy string length -PASS: gdb.python/py-value.exp: Test lazy string address -PASS: gdb.python/py-value.exp: create PTR type -PASS: gdb.python/py-value.exp: kill the inferior -PASS: gdb.python/py-value.exp: Discard the symbols -PASS: gdb.python/py-value.exp: cast arg0 to PTR -PASS: gdb.python/py-value.exp: delete PTR type -PASS: gdb.python/py-value.exp: print value's type -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript -PASS: gdb.python/py-value.exp: Build pointer to array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Access array via pointer with int subscript -PASS: gdb.python/py-value.exp: Access array via pointer with value subscript -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Build array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Test multiple subscript -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect pointer by reference -PASS: gdb.python/py-value.exp: Obtain address -PASS: gdb.python/py-value.exp: Obtains value from GDB -PASS: gdb.python/py-value.exp: Check pointer passed as reference -PASS: gdb.python/py-value.exp: python print (bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer()))) -PASS: gdb.python/py-value.exp: python print (gdb.parse_and_eval('base').dynamic_type) -PASS: gdb.python/py-value.exp: python print (gdb.parse_and_eval('5').dynamic_type) -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript -PASS: gdb.python/py-value.exp: Build pointer to array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Access array via pointer with int subscript -PASS: gdb.python/py-value.exp: Access array via pointer with value subscript -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Build array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Test multiple subscript -Running ./gdb.reverse/amd64-tailcall-reverse.exp ... -Running ./gdb.reverse/break-precsave.exp ... -Running ./gdb.reverse/break-reverse.exp ... -Running ./gdb.reverse/consecutive-precsave.exp ... -Running ./gdb.reverse/consecutive-reverse.exp ... -Running ./gdb.reverse/finish-precsave.exp ... -Running ./gdb.reverse/finish-reverse-bkpt.exp ... -Running ./gdb.reverse/finish-reverse.exp ... -Running ./gdb.reverse/i386-precsave.exp ... -Running ./gdb.reverse/i386-reverse.exp ... -Running ./gdb.reverse/i386-sse-reverse.exp ... -Running ./gdb.reverse/i387-env-reverse.exp ... -Running ./gdb.reverse/i387-stack-reverse.exp ... -Running ./gdb.reverse/machinestate.exp ... -Running ./gdb.reverse/machinestate-precsave.exp ... -Running ./gdb.reverse/next-reverse-bkpt-over-sr.exp ... -Running ./gdb.reverse/sigall-precsave.exp ... -Running ./gdb.reverse/sigall-reverse.exp ... -Running ./gdb.reverse/singlejmp-reverse.exp ... -Running ./gdb.reverse/solib-precsave.exp ... -Running ./gdb.reverse/solib-reverse.exp ... -Running ./gdb.reverse/step-precsave.exp ... -Running ./gdb.reverse/step-reverse.exp ... -Running ./gdb.reverse/until-precsave.exp ... -Running ./gdb.reverse/until-reverse.exp ... -Running ./gdb.reverse/watch-precsave.exp ... -Running ./gdb.reverse/watch-reverse.exp ... -Running ./gdb.server/ext-attach.exp ... -Running ./gdb.server/ext-run.exp ... -PASS: gdb.server/ext-run.exp: disconnect -PASS: gdb.server/ext-run.exp: set remote exec-file -PASS: gdb.server/ext-run.exp: continue to main -PASS: gdb.server/ext-run.exp: get process list -PASS: gdb.server/ext-run.exp: kill -PASS: gdb.server/ext-run.exp: load new file without any gdbserver inferior -PASS: gdb.server/ext-run.exp: monitor exit -Running ./gdb.server/file-transfer.exp ... -PASS: gdb.server/file-transfer.exp: disconnect -FAIL: gdb.server/file-transfer.exp: put binary file -FAIL: gdb.server/file-transfer.exp: get binary file -FAIL: gdb.server/file-transfer.exp: compare binary file -FAIL: gdb.server/file-transfer.exp: deleted binary file -FAIL: gdb.server/file-transfer.exp: put text file -FAIL: gdb.server/file-transfer.exp: get text file -FAIL: gdb.server/file-transfer.exp: compare text file -FAIL: gdb.server/file-transfer.exp: deleted text file -Running ./gdb.server/no-thread-db.exp ... -PASS: gdb.server/no-thread-db.exp: successfully compiled posix threads test case -PASS: gdb.server/no-thread-db.exp: disconnect -PASS: gdb.server/no-thread-db.exp: libthread-db is now unresolvable -FAIL: gdb.server/no-thread-db.exp: continue to breakpoint: after tls assignment -FAIL: gdb.server/no-thread-db.exp: print foo -Running ./gdb.server/server-exec-info.exp ... -PASS: gdb.server/server-exec-info.exp: file -PASS: gdb.server/server-exec-info.exp: set sysroot remote: -PASS: gdb.server/server-exec-info.exp: info files -Running ./gdb.server/server-kill.exp ... -PASS: gdb.server/server-kill.exp: disconnect -FAIL: gdb.server/server-kill.exp: tstatus -Running ./gdb.server/server-mon.exp ... -PASS: gdb.server/server-mon.exp: disconnect -PASS: gdb.server/server-mon.exp: monitor help -PASS: gdb.server/server-mon.exp: monitor -PASS: gdb.server/server-mon.exp: monitor set debug 1 -PASS: gdb.server/server-mon.exp: monitor set debug 0 -PASS: gdb.server/server-mon.exp: monitor set remote-debug 1 -PASS: gdb.server/server-mon.exp: monitor set remote-debug 0 -Running ./gdb.server/server-run.exp ... -PASS: gdb.server/server-run.exp: disconnect -PASS: gdb.server/server-run.exp: loaded dynamic linker -PASS: gdb.server/server-run.exp: continue to main -Running ./gdb.server/solib-list.exp ... -Running ./gdb.stabs/exclfwd.exp ... -PASS: gdb.stabs/exclfwd.exp: ptype v1 -PASS: gdb.stabs/exclfwd.exp: ptype v2 -PASS: gdb.stabs/exclfwd.exp: ptype v3 -Running ./gdb.stabs/gdb11479.exp ... -PASS: gdb.stabs/gdb11479.exp: Set breakpoints forced_stabs -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs -PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 forced_stabs -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 forced_stabs -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs -PASS: gdb.stabs/gdb11479.exp: Inspect t in test forced_stabs -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test forced_stabs -PASS: gdb.stabs/gdb11479.exp: Set breakpoints natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 natural_debug_format -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Inspect t in test natural_debug_format -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test natural_debug_format -Running ./gdb.stabs/weird.exp ... -PASS: gdb.stabs/weird.exp: weirdx.o read without error -PASS: gdb.stabs/weird.exp: stabs found -PASS: gdb.stabs/weird.exp: variable var0 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var0) -PASS: gdb.stabs/weird.exp: variable var1 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var1) -PASS: gdb.stabs/weird.exp: variable var2 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var2) -PASS: gdb.stabs/weird.exp: variable var3 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var3) -PASS: gdb.stabs/weird.exp: variable attr32 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr32) -PASS: gdb.stabs/weird.exp: variable attr33 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr33) -PASS: gdb.stabs/weird.exp: variable attr35 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr35) -PASS: gdb.stabs/weird.exp: variable attr36 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr36) -PASS: gdb.stabs/weird.exp: variable attr37 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr37) -PASS: gdb.stabs/weird.exp: variable attr38 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr38) -PASS: gdb.stabs/weird.exp: variable attr39 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr39) -PASS: gdb.stabs/weird.exp: variable attr41 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr41) -PASS: gdb.stabs/weird.exp: variable attr42 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr42) -PASS: gdb.stabs/weird.exp: variable attr43 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr43) -PASS: gdb.stabs/weird.exp: variable attr44 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr44) -PASS: gdb.stabs/weird.exp: variable attr46 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr46) -PASS: gdb.stabs/weird.exp: variable attr47 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr47) -PASS: gdb.stabs/weird.exp: variable attr58 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr58) -PASS: gdb.stabs/weird.exp: variable attr59 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr59) -PASS: gdb.stabs/weird.exp: variable attr60 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr60) -PASS: gdb.stabs/weird.exp: variable attr61 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr61) -PASS: gdb.stabs/weird.exp: variable attr62 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr62) -PASS: gdb.stabs/weird.exp: variable attr63 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr63) -PASS: gdb.stabs/weird.exp: variable attr64 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr64) -PASS: gdb.stabs/weird.exp: variable attr65 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr65) -PASS: gdb.stabs/weird.exp: variable attr66 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr66) -PASS: gdb.stabs/weird.exp: variable attr67 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr67) -PASS: gdb.stabs/weird.exp: variable attr68 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr68) -PASS: gdb.stabs/weird.exp: variable attr69 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr69) -PASS: gdb.stabs/weird.exp: variable attr70 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr70) -PASS: gdb.stabs/weird.exp: variable attr71 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr71) -PASS: gdb.stabs/weird.exp: variable attr72 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr72) -PASS: gdb.stabs/weird.exp: variable attr73 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr73) -PASS: gdb.stabs/weird.exp: variable attr74 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr74) -PASS: gdb.stabs/weird.exp: variable attr75 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr75) -PASS: gdb.stabs/weird.exp: variable attr76 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr76) -PASS: gdb.stabs/weird.exp: variable attr77 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr77) -PASS: gdb.stabs/weird.exp: variable attr78 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr78) -PASS: gdb.stabs/weird.exp: variable attr79 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr79) -PASS: gdb.stabs/weird.exp: variable attr80 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr80) -PASS: gdb.stabs/weird.exp: variable attr81 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr81) -PASS: gdb.stabs/weird.exp: variable attr82 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr82) -PASS: gdb.stabs/weird.exp: variable attr83 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr83) -PASS: gdb.stabs/weird.exp: variable attr84 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr84) -PASS: gdb.stabs/weird.exp: variable attr85 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr85) -PASS: gdb.stabs/weird.exp: variable attr86 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr86) -PASS: gdb.stabs/weird.exp: variable attr87 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr87) -PASS: gdb.stabs/weird.exp: variable attr88 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr88) -PASS: gdb.stabs/weird.exp: variable attr89 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr89) -PASS: gdb.stabs/weird.exp: variable attr90 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr90) -PASS: gdb.stabs/weird.exp: variable attr91 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr91) -PASS: gdb.stabs/weird.exp: variable attr92 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr92) -PASS: gdb.stabs/weird.exp: variable attr93 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr93) -PASS: gdb.stabs/weird.exp: variable attr94 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr94) -PASS: gdb.stabs/weird.exp: variable attr95 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr95) -PASS: gdb.stabs/weird.exp: variable attr96 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr96) -PASS: gdb.stabs/weird.exp: variable attr97 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr97) -PASS: gdb.stabs/weird.exp: variable attr98 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr98) -PASS: gdb.stabs/weird.exp: variable attr99 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr99) -PASS: gdb.stabs/weird.exp: variable attr100 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr100) -PASS: gdb.stabs/weird.exp: variable attr101 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr101) -PASS: gdb.stabs/weird.exp: variable attr102 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr102) -PASS: gdb.stabs/weird.exp: variable attr103 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr103) -PASS: gdb.stabs/weird.exp: variable attr104 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr104) -PASS: gdb.stabs/weird.exp: variable attr105 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr105) -PASS: gdb.stabs/weird.exp: variable attr106 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr106) -PASS: gdb.stabs/weird.exp: variable attr107 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr107) -PASS: gdb.stabs/weird.exp: variable attr108 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr108) -PASS: gdb.stabs/weird.exp: variable attr109 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr109) -PASS: gdb.stabs/weird.exp: variable attr110 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr110) -PASS: gdb.stabs/weird.exp: variable attr111 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr111) -PASS: gdb.stabs/weird.exp: variable attr112 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr112) -PASS: gdb.stabs/weird.exp: variable attr113 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr113) -PASS: gdb.stabs/weird.exp: variable attr114 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr114) -PASS: gdb.stabs/weird.exp: variable attr115 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr115) -PASS: gdb.stabs/weird.exp: variable attr116 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr116) -PASS: gdb.stabs/weird.exp: variable attr117 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr117) -PASS: gdb.stabs/weird.exp: variable attr118 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr118) -PASS: gdb.stabs/weird.exp: variable attr119 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr119) -PASS: gdb.stabs/weird.exp: variable attr120 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr120) -PASS: gdb.stabs/weird.exp: variable attr121 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr121) -PASS: gdb.stabs/weird.exp: variable attr122 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr122) -PASS: gdb.stabs/weird.exp: variable attr123 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr123) -PASS: gdb.stabs/weird.exp: variable attr124 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr124) -PASS: gdb.stabs/weird.exp: variable attr125 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr125) -PASS: gdb.stabs/weird.exp: variable attr126 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr126) -PASS: gdb.stabs/weird.exp: 'e' constant on non-enum type -PASS: gdb.stabs/weird.exp: whatis const69 -PASS: gdb.stabs/weird.exp: 'e' constant with embedded type -PASS: gdb.stabs/weird.exp: char constant -PASS: gdb.stabs/weird.exp: String constant 1 -PASS: gdb.stabs/weird.exp: String constant 2 -PASS: gdb.stabs/weird.exp: String constant 3 -PASS: gdb.stabs/weird.exp: String constant 4 -PASS: gdb.stabs/weird.exp: p bad_neg0 -PASS: gdb.stabs/weird.exp: ptype on inttype -PASS: gdb.stabs/weird.exp: unrecognized floating point type -PASS: gdb.stabs/weird.exp: print very big integer -PASS: gdb.stabs/weird.exp: whatis consth -PASS: gdb.stabs/weird.exp: whatis consth2 -XFAIL: gdb.stabs/weird.exp: print struct constant -PASS: gdb.stabs/weird.exp: print bad_type0 -PASS: gdb.stabs/weird.exp: print bad_type1 -XFAIL: gdb.stabs/weird.exp: array0 with strange index -XFAIL: gdb.stabs/weird.exp: array1 with strange index -PASS: gdb.stabs/weird.exp: whatis one_var (known failure in gdb 4.10) -PASS: gdb.stabs/weird.exp: whatis one_var test 2 -PASS: gdb.stabs/weird.exp: whatis two_var (known failure in gdb 4.10) -PASS: gdb.stabs/weird.exp: whatis two_var test 2 -XFAIL: gdb.stabs/weird.exp: whatis pointer_to_int_var -XFAIL: gdb.stabs/weird.exp: whatis intp_var -PASS: gdb.stabs/weird.exp: p common0var0 -XFAIL: gdb.stabs/weird.exp: p common0var1 -XFAIL: gdb.stabs/weird.exp: p common0var2 -Running ./gdb.threads/attach-into-signal.exp ... -Running ./gdb.threads/attach-stopped.exp ... -Running ./gdb.threads/bp_in_thread.exp ... -PASS: gdb.threads/bp_in_thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/bp_in_thread.exp: breakpoint on noreturn -PASS: gdb.threads/bp_in_thread.exp: run to noreturn -Running ./gdb.threads/clone-new-thread-event.exp ... -PASS: gdb.threads/clone-new-thread-event.exp: catch SIGUSR1 -Running ./gdb.threads/corethreads.exp ... -Running ./gdb.threads/create-fail.exp ... -PASS: gdb.threads/create-fail.exp: successfully compiled posix threads test case -FAIL: gdb.threads/create-fail.exp: iteration 1: run till end -FAIL: gdb.threads/create-fail.exp: iteration 2: run till end -FAIL: gdb.threads/create-fail.exp: iteration 3: run till end -FAIL: gdb.threads/create-fail.exp: iteration 4: run till end -FAIL: gdb.threads/create-fail.exp: iteration 5: run till end -FAIL: gdb.threads/create-fail.exp: iteration 6: run till end -FAIL: gdb.threads/create-fail.exp: iteration 7: run till end -FAIL: gdb.threads/create-fail.exp: iteration 8: run till end -FAIL: gdb.threads/create-fail.exp: iteration 9: run till end -FAIL: gdb.threads/create-fail.exp: iteration 10: run till end -Running ./gdb.threads/current-lwp-dead.exp ... -PASS: gdb.threads/current-lwp-dead.exp: continue to breakpoint: fn_return -Running ./gdb.threads/execl.exp ... -Running ./gdb.threads/fork-child-threads.exp ... -Running ./gdb.threads/fork-thread-pending.exp ... -Running ./gdb.threads/gcore-thread.exp ... -PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/gcore-thread.exp: help gcore -PASS: gdb.threads/gcore-thread.exp: thread 1 is running -PASS: gdb.threads/gcore-thread.exp: thread 2 is running -PASS: gdb.threads/gcore-thread.exp: save a corefile -XFAIL: gdb.threads/gcore-thread.exp: clear __stack_user.next -XFAIL: gdb.threads/gcore-thread.exp: clear stack_used.next -PASS: gdb.threads/gcore-thread.exp: corefile: re-load generated corefile -PASS: gdb.threads/gcore-thread.exp: corefile: corefile contains at least two threads -PASS: gdb.threads/gcore-thread.exp: corefile: a corefile thread is executing thread2 -PASS: gdb.threads/gcore-thread.exp: corefile: thread2 is current thread in corefile -FAIL: gdb.threads/gcore-thread.exp: core0file: re-load generated corefile -FAIL: gdb.threads/gcore-thread.exp: core0file: corefile contains at least two threads -FAIL: gdb.threads/gcore-thread.exp: core0file: a corefile thread is executing thread2 -FAIL: gdb.threads/gcore-thread.exp: core0file: thread2 is current thread in corefile -Running ./gdb.threads/hand-call-in-threads.exp ... -PASS: gdb.threads/hand-call-in-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on all_threads_running -PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on hand_call -PASS: gdb.threads/hand-call-in-threads.exp: run to all_threads_running -PASS: gdb.threads/hand-call-in-threads.exp: enable scheduler locking -PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking on -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: set confirm off -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: all dummies popped -PASS: gdb.threads/hand-call-in-threads.exp: disable scheduler locking -PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking off -Running ./gdb.threads/ia64-sigill.exp ... -PASS: gdb.threads/ia64-sigill.exp: successfully compiled posix threads test case -PASS: gdb.threads/ia64-sigill.exp: info addr label -PASS: gdb.threads/ia64-sigill.exp: set $sigill_bpnum=$bpnum -PASS: gdb.threads/ia64-sigill.exp: set debug infrun 1 -PASS: gdb.threads/ia64-sigill.exp: continue -PASS: gdb.threads/ia64-sigill.exp: delete $sigill_bpnum -PASS: gdb.threads/ia64-sigill.exp: continue for the pending signal -Running ./gdb.threads/interrupted-hand-call.exp ... -PASS: gdb.threads/interrupted-hand-call.exp: successfully compiled posix threads test case -PASS: gdb.threads/interrupted-hand-call.exp: breakpoint on all_threads_running -PASS: gdb.threads/interrupted-hand-call.exp: run to all_threads_running -PASS: gdb.threads/interrupted-hand-call.exp: hand-call interrupted by signal in another thread -PASS: gdb.threads/interrupted-hand-call.exp: dummy stack frame present -PASS: gdb.threads/interrupted-hand-call.exp: finish hand-call -PASS: gdb.threads/interrupted-hand-call.exp: dummy frame popped -FAIL: gdb.threads/interrupted-hand-call.exp: setting breakpoint at exit -Running ./gdb.threads/killed.exp ... -PASS: gdb.threads/killed.exp: successfully compiled posix threads test case -PASS: gdb.threads/killed.exp: run program to completion -PASS: gdb.threads/killed.exp: GDB exits after multi-threaded program exits messily -Running ./gdb.threads/leader-exit.exp ... -PASS: gdb.threads/leader-exit.exp: successfully compiled posix threads test case -FAIL: gdb.threads/leader-exit.exp: continue to breakpoint: break-here (timeout) -FAIL: gdb.threads/leader-exit.exp: Single thread has been left (timeout) -Running ./gdb.threads/linux-dp.exp ... -PASS: gdb.threads/linux-dp.exp: successfully compiled posix threads test case -PASS: gdb.threads/linux-dp.exp: set print sevenbit-strings -PASS: gdb.threads/linux-dp.exp: info threads 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 0 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 0 -PASS: gdb.threads/linux-dp.exp: info threads after: 0 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 1 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 1 -PASS: gdb.threads/linux-dp.exp: info threads after: 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 2 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 2 -PASS: gdb.threads/linux-dp.exp: info threads after: 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 3 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 3 -PASS: gdb.threads/linux-dp.exp: info threads after: 3 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 4 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 4 -PASS: gdb.threads/linux-dp.exp: info threads after: 4 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: main thread's sleep -PASS: gdb.threads/linux-dp.exp: info threads 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print -FAIL: gdb.threads/linux-dp.exp: first thread-specific breakpoint hit -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 0 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 3 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 4 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 5 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 6 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 7 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 8 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 9 -PASS: gdb.threads/linux-dp.exp: thread-specific breakpoint is thread-specific -PASS: gdb.threads/linux-dp.exp: selected thread: 1 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 1 -PASS: gdb.threads/linux-dp.exp: selected thread: 2 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 2 -PASS: gdb.threads/linux-dp.exp: selected thread: 3 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 3 -PASS: gdb.threads/linux-dp.exp: selected thread: 4 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 4 -PASS: gdb.threads/linux-dp.exp: selected thread: 5 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 5 -PASS: gdb.threads/linux-dp.exp: selected thread: 6 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 6 -PASS: gdb.threads/linux-dp.exp: found an interesting thread -PASS: gdb.threads/linux-dp.exp: manager thread found (not found) when expected -Running ./gdb.threads/local-watch-wrong-thread.exp ... -Running ./gdb.threads/manythreads.exp ... -PASS: gdb.threads/manythreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/manythreads.exp: set print sevenbit-strings -PASS: gdb.threads/manythreads.exp: shell stty intr '^C' -PASS: gdb.threads/manythreads.exp: first continue -PASS: gdb.threads/manythreads.exp: stop threads 1 -PASS: gdb.threads/manythreads.exp: info threads -PASS: gdb.threads/manythreads.exp: give a name to the thread -PASS: gdb.threads/manythreads.exp: check thread name -PASS: gdb.threads/manythreads.exp: second continue -PASS: gdb.threads/manythreads.exp: check for duplicate SIGINT -PASS: gdb.threads/manythreads.exp: stop threads 2 -PASS: gdb.threads/manythreads.exp: GDB exits after stopping multithreaded program -Running ./gdb.threads/multi-create.exp ... -PASS: gdb.threads/multi-create.exp: successfully compiled posix threads test case -PASS: gdb.threads/multi-create.exp: continue to breakpoint 0 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 1 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 2 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 3 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 4 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 5 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 6 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 7 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 8 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 9 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 10 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 11 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 12 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 13 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 14 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 15 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 16 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 17 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 18 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 19 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 20 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 21 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 22 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 23 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 24 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 25 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 26 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 27 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 28 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 29 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 30 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 31 -Running ./gdb.threads/non-ldr-exc-1.exp ... -Running ./gdb.threads/non-ldr-exc-2.exp ... -Running ./gdb.threads/non-ldr-exc-3.exp ... -Running ./gdb.threads/non-ldr-exc-4.exp ... -Running ./gdb.threads/no-unwaited-for-left.exp ... -PASS: gdb.threads/no-unwaited-for-left.exp: successfully compiled posix threads test case -PASS: gdb.threads/no-unwaited-for-left.exp: continue to breakpoint: break-here -PASS: gdb.threads/no-unwaited-for-left.exp: enable scheduler-locking, for thread 2 -FAIL: gdb.threads/no-unwaited-for-left.exp: continue stops when thread 2 exits (the program exited) -FAIL: gdb.threads/no-unwaited-for-left.exp: only main thread left, thread 2 terminated -PASS: gdb.threads/no-unwaited-for-left.exp: select main thread -FAIL: gdb.threads/no-unwaited-for-left.exp: disable scheduler-locking, letting new thread start -FAIL: gdb.threads/no-unwaited-for-left.exp: continue to breakpoint: break-here-2 -FAIL: gdb.threads/no-unwaited-for-left.exp: enable scheduler-locking, for main thread -FAIL: gdb.threads/no-unwaited-for-left.exp: continue stops when the main thread exits (the program is no longer running) -FAIL: gdb.threads/no-unwaited-for-left.exp: only thread 3 left, main thread terminated -Running ./gdb.threads/pending-step.exp ... -PASS: gdb.threads/pending-step.exp: successfully compiled posix threads test case -PASS: gdb.threads/pending-step.exp: continue to breakpoint: continue to first breakpoint hit -PASS: gdb.threads/pending-step.exp: next in multiple threads with breakpoints -Running ./gdb.threads/print-threads.exp ... -PASS: gdb.threads/print-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/print-threads.exp: set print sevenbit-strings -PASS: gdb.threads/print-threads.exp: set width 0 -PASS: gdb.threads/print-threads.exp: shell stty intr '^C' -PASS: gdb.threads/print-threads.exp: break thread_function -PASS: gdb.threads/print-threads.exp: set var slow = 0 -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (fast) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (fast) -PASS: gdb.threads/print-threads.exp: break thread_function (2) -PASS: gdb.threads/print-threads.exp: set var slow = 1 -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (slow) -PASS: gdb.threads/print-threads.exp: break thread_function (3) -PASS: gdb.threads/print-threads.exp: set var slow = 1 (2) -FAIL: gdb.threads/print-threads.exp: setting breakpoint at kill -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (slow with kill breakpoint) -Running ./gdb.threads/pthread_cond_wait.exp ... -PASS: gdb.threads/pthread_cond_wait.exp: successfully compiled posix threads test case -PASS: gdb.threads/pthread_cond_wait.exp: breakpoint on break_me -PASS: gdb.threads/pthread_cond_wait.exp: run to break_me -FAIL: gdb.threads/pthread_cond_wait.exp: backtrace in blocked thread -Running ./gdb.threads/pthreads.exp ... -PASS: gdb.threads/pthreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/pthreads.exp: set print sevenbit-strings -PASS: gdb.threads/pthreads.exp: set width 0 -PASS: gdb.threads/pthreads.exp: shell stty intr '^C' -PASS: gdb.threads/pthreads.exp: info threads -PASS: gdb.threads/pthreads.exp: break thread1 -PASS: gdb.threads/pthreads.exp: Continue to creation of first thread -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: break thread2 -PASS: gdb.threads/pthreads.exp: Continue to creation of second thread -PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0 -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15 -PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times -PASS: gdb.threads/pthreads.exp: All threads running after startup -PASS: gdb.threads/pthreads.exp: Continue with all threads running -PASS: gdb.threads/pthreads.exp: Stopped with a ^C -PASS: gdb.threads/pthreads.exp: bt -FAIL: gdb.threads/pthreads.exp: set var common_routine::hits=0 -FAIL: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0 -FAIL: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0 -FAIL: gdb.threads/pthreads.exp: set var common_routine::from_main=0 -FAIL: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0 -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15 -PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times -PASS: gdb.threads/pthreads.exp: All threads running after continuing from ^C stop -FAIL: gdb.threads/pthreads.exp: check backtrace from main thread -FAIL: gdb.threads/pthreads.exp: check backtrace from thread 1 -FAIL: gdb.threads/pthreads.exp: check backtrace from thread 2 -FAIL: gdb.threads/pthreads.exp: apply backtrace command to all three threads -PASS: gdb.threads/pthreads.exp: set break at common_routine in thread 2 -PASS: gdb.threads/pthreads.exp: continue to bkpt at common_routine in thread 2 -PASS: gdb.threads/pthreads.exp: backtrace from thread 2 bkpt in common_routine -Running ./gdb.threads/schedlock.exp ... -PASS: gdb.threads/schedlock.exp: successfully compiled posix threads test case -PASS: gdb.threads/schedlock.exp: shell stty intr '^C' -PASS: gdb.threads/schedlock.exp: set print sevenbit-strings -PASS: gdb.threads/schedlock.exp: set width 0 -PASS: gdb.threads/schedlock.exp: scheduler locking set to none -PASS: gdb.threads/schedlock.exp: continue to breakpoint: all threads started -PASS: gdb.threads/schedlock.exp: listed args (1) -PASS: gdb.threads/schedlock.exp: continue (initial) -PASS: gdb.threads/schedlock.exp: stop all threads (initial) -PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (initial) -PASS: gdb.threads/schedlock.exp: listed args (2) -PASS: gdb.threads/schedlock.exp: all threads alive -PASS: gdb.threads/schedlock.exp: find current thread (1) -PASS: gdb.threads/schedlock.exp: set scheduler-locking off -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 0) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 1) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 2) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 3) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 4) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 5) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 6) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 7) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 8) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 9) -PASS: gdb.threads/schedlock.exp: find current thread (2) -PASS: gdb.threads/schedlock.exp: step without lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (3) -PASS: gdb.threads/schedlock.exp: current thread stepped -PASS: gdb.threads/schedlock.exp: other threads ran - unlocked -PASS: gdb.threads/schedlock.exp: set scheduler-locking on -PASS: gdb.threads/schedlock.exp: continue (with lock) -PASS: gdb.threads/schedlock.exp: stop all threads (with lock) -PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (with lock) -PASS: gdb.threads/schedlock.exp: find current thread (3) -PASS: gdb.threads/schedlock.exp: continue with lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (4) -PASS: gdb.threads/schedlock.exp: current thread ran -PASS: gdb.threads/schedlock.exp: other threads didn't run - locked -PASS: gdb.threads/schedlock.exp: step to increment (locked 0) -PASS: gdb.threads/schedlock.exp: step to increment (locked 1) -PASS: gdb.threads/schedlock.exp: step to increment (locked 2) -PASS: gdb.threads/schedlock.exp: step to increment (locked 3) -PASS: gdb.threads/schedlock.exp: step to increment (locked 4) -PASS: gdb.threads/schedlock.exp: step to increment (locked 5) -PASS: gdb.threads/schedlock.exp: step to increment (locked 6) -PASS: gdb.threads/schedlock.exp: step to increment (locked 7) -PASS: gdb.threads/schedlock.exp: step to increment (locked 8) -PASS: gdb.threads/schedlock.exp: step to increment (locked 9) -PASS: gdb.threads/schedlock.exp: find current thread (2) -PASS: gdb.threads/schedlock.exp: step with lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (5) -PASS: gdb.threads/schedlock.exp: current thread stepped locked -PASS: gdb.threads/schedlock.exp: other threads didn't run - step locked -Running ./gdb.threads/siginfo-threads.exp ... -PASS: gdb.threads/siginfo-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/siginfo-threads.exp: handle SIGUSR1 stop print pass -PASS: gdb.threads/siginfo-threads.exp: handle SIGUSR2 stop print pass -PASS: gdb.threads/siginfo-threads.exp: get pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 0 -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 1 -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 2 -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 3 -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_pid -PASS: gdb.threads/siginfo-threads.exp: continue to breakpoint: break-at-exit -Running ./gdb.threads/sigstep-threads.exp ... -PASS: gdb.threads/sigstep-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/sigstep-threads.exp: handle SIGUSR1 nostop print pass -PASS: gdb.threads/sigstep-threads.exp: set scheduler-locking off -PASS: gdb.threads/sigstep-threads.exp: set $step1=$bpnum -PASS: gdb.threads/sigstep-threads.exp: continue to breakpoint: step-1 -PASS: gdb.threads/sigstep-threads.exp: disable $step1 -PASS: gdb.threads/sigstep-threads.exp: step -Running ./gdb.threads/sigthread.exp ... -PASS: gdb.threads/sigthread.exp: successfully compiled posix threads test case -PASS: gdb.threads/sigthread.exp: handle SIGUSR1 nostop noprint pass -PASS: gdb.threads/sigthread.exp: handle SIGUSR2 nostop noprint pass -PASS: gdb.threads/sigthread.exp: continue -PASS: gdb.threads/sigthread.exp: stop with control-c -Running ./gdb.threads/staticthreads.exp ... -PASS: gdb.threads/staticthreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/staticthreads.exp: set print sevenbit-strings -PASS: gdb.threads/staticthreads.exp: break sem_post -PASS: gdb.threads/staticthreads.exp: Continue to main's call of sem_post -PASS: gdb.threads/staticthreads.exp: rerun to main -PASS: gdb.threads/staticthreads.exp: handle SIG32 nostop noprint pass -PASS: gdb.threads/staticthreads.exp: handle SIG32 helps -PASS: gdb.threads/staticthreads.exp: info threads -PASS: gdb.threads/staticthreads.exp: GDB exits with static thread program -Running ./gdb.threads/switch-threads.exp ... -PASS: gdb.threads/switch-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/switch-threads.exp: continue to breakpoint: continue to thread_func -PASS: gdb.threads/switch-threads.exp: next -Running ./gdb.threads/threadapply.exp ... -PASS: gdb.threads/threadapply.exp: successfully compiled posix threads test case -PASS: gdb.threads/threadapply.exp: b 62 -PASS: gdb.threads/threadapply.exp: continue -PASS: gdb.threads/threadapply.exp: macro details -PASS: gdb.threads/threadapply.exp: defining macro -PASS: gdb.threads/threadapply.exp: set backtrace limit 3 -PASS: gdb.threads/threadapply.exp: thread apply all backthread -PASS: gdb.threads/threadapply.exp: step to the thread_function -PASS: gdb.threads/threadapply.exp: go up in the stack frame -PASS: gdb.threads/threadapply.exp: run a simple print command on all threads -PASS: gdb.threads/threadapply.exp: go down and check selected frame -Running ./gdb.threads/thread_check.exp ... -PASS: gdb.threads/thread_check.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread_check.exp: breakpoint at tf -PASS: gdb.threads/thread_check.exp: continue to tf -PASS: gdb.threads/thread_check.exp: backtrace from thread function -Running ./gdb.threads/thread_events.exp ... -Running ./gdb.threads/thread-execl.exp ... -Running ./gdb.threads/thread-find.exp ... -PASS: gdb.threads/thread-find.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-find.exp: set print sevenbit-strings -PASS: gdb.threads/thread-find.exp: continue to breakpoint: main thread's sleep -PASS: gdb.threads/thread-find.exp: info threads -PASS: gdb.threads/thread-find.exp: name thread 1 -PASS: gdb.threads/thread-find.exp: name thread 2 -PASS: gdb.threads/thread-find.exp: name thread 3 -PASS: gdb.threads/thread-find.exp: name thread 4 -PASS: gdb.threads/thread-find.exp: name thread 5 -PASS: gdb.threads/thread-find.exp: name thread 6 -PASS: gdb.threads/thread-find.exp: collect thread id -PASS: gdb.threads/thread-find.exp: got thread ids -PASS: gdb.threads/thread-find.exp: collect process id -PASS: gdb.threads/thread-find.exp: collect lwp id -PASS: gdb.threads/thread-find.exp: find thread name 6 -PASS: gdb.threads/thread-find.exp: find thread name 5 -PASS: gdb.threads/thread-find.exp: find thread name 4 -PASS: gdb.threads/thread-find.exp: find thread name 3 -PASS: gdb.threads/thread-find.exp: find thread name 2 -PASS: gdb.threads/thread-find.exp: find thread name 1 -PASS: gdb.threads/thread-find.exp: find thread id 6 -PASS: gdb.threads/thread-find.exp: find thread id 5 -PASS: gdb.threads/thread-find.exp: find thread id 4 -PASS: gdb.threads/thread-find.exp: find thread id 3 -PASS: gdb.threads/thread-find.exp: find thread id 2 -PASS: gdb.threads/thread-find.exp: find thread id 1 -PASS: gdb.threads/thread-find.exp: no thread -PASS: gdb.threads/thread-find.exp: test regular exp -PASS: gdb.threads/thread-find.exp: info threads 2 4 6 -PASS: gdb.threads/thread-find.exp: info threads 3-5 -PASS: gdb.threads/thread-find.exp: test inverted range -PASS: gdb.threads/thread-find.exp: info threads 3-3 -PASS: gdb.threads/thread-find.exp: info thread foo -PASS: gdb.threads/thread-find.exp: info thread foo -1 -Running ./gdb.threads/thread-specific.exp ... -PASS: gdb.threads/thread-specific.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-specific.exp: set print sevenbit-strings -PASS: gdb.threads/thread-specific.exp: set width 0 -PASS: gdb.threads/thread-specific.exp: thread var when not running -PASS: gdb.threads/thread-specific.exp: continue to breakpoint: all threads started -PASS: gdb.threads/thread-specific.exp: get threads list -PASS: gdb.threads/thread-specific.exp: thread var in main -PASS: gdb.threads/thread-specific.exp: breakpoint 59 main thread -PASS: gdb.threads/thread-specific.exp: continue to thread-specific breakpoint -PASS: gdb.threads/thread-specific.exp: found breakpoint for thread number -PASS: gdb.threads/thread-specific.exp: thread var at break -Running ./gdb.threads/thread-unwindonsignal.exp ... -PASS: gdb.threads/thread-unwindonsignal.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-unwindonsignal.exp: breakpoint on all_threads_running -PASS: gdb.threads/thread-unwindonsignal.exp: run to all_threads_running -PASS: gdb.threads/thread-unwindonsignal.exp: setting unwindonsignal -PASS: gdb.threads/thread-unwindonsignal.exp: showing unwindonsignal -PASS: gdb.threads/thread-unwindonsignal.exp: hand-call interrupted by signal in another thread -PASS: gdb.threads/thread-unwindonsignal.exp: dummy stack frame present -FAIL: gdb.threads/thread-unwindonsignal.exp: wrong thread not unwound -PASS: gdb.threads/thread-unwindonsignal.exp: finish hand-call -PASS: gdb.threads/thread-unwindonsignal.exp: dummy frame popped -FAIL: gdb.threads/thread-unwindonsignal.exp: setting breakpoint at exit -Running ./gdb.threads/threxit-hop-specific.exp ... -PASS: gdb.threads/threxit-hop-specific.exp: successfully compiled posix threads test case -PASS: gdb.threads/threxit-hop-specific.exp: continue to thread start -PASS: gdb.threads/threxit-hop-specific.exp: set thread specific breakpoint -PASS: gdb.threads/threxit-hop-specific.exp: get past the thread specific breakpoint -Running ./gdb.threads/tls.exp ... -PASS: gdb.threads/tls.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls.exp: set breakpoint at all threads -PASS: gdb.threads/tls.exp: set breakpoint at synch point -PASS: gdb.threads/tls.exp: set breakpoint at exit -PASS: gdb.threads/tls.exp: continue to first thread: get to thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at first th -PASS: gdb.threads/tls.exp: first thread print me -FAIL: gdb.threads/tls.exp: first thread local storage -FAIL: gdb.threads/tls.exp: first another thread local storage -PASS: gdb.threads/tls.exp: first info address a_thread_local -PASS: gdb.threads/tls.exp: first info address another_thread_local -PASS: gdb.threads/tls.exp: continue to second thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at second th -PASS: gdb.threads/tls.exp: second thread print me -FAIL: gdb.threads/tls.exp: second thread local storage -FAIL: gdb.threads/tls.exp: second another thread local storage -PASS: gdb.threads/tls.exp: second info address a_thread_local -PASS: gdb.threads/tls.exp: second info address another_thread_local -PASS: gdb.threads/tls.exp: continue to third thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at third th -PASS: gdb.threads/tls.exp: third thread print me -FAIL: gdb.threads/tls.exp: third thread local storage -FAIL: gdb.threads/tls.exp: third another thread local storage -PASS: gdb.threads/tls.exp: third info address a_thread_local -PASS: gdb.threads/tls.exp: third info address another_thread_local -PASS: gdb.threads/tls.exp: continue to synch point -PASS: gdb.threads/tls.exp: get number of threads -PASS: gdb.threads/tls.exp: selected thread: 1 -PASS: gdb.threads/tls.exp: backtrace of thread number 1 not relevant -PASS: gdb.threads/tls.exp: selected thread: 2 -PASS: gdb.threads/tls.exp: backtrace of thread number 2 not relevant -PASS: gdb.threads/tls.exp: selected thread: 3 -PASS: gdb.threads/tls.exp: backtrace of thread number 3 not relevant -PASS: gdb.threads/tls.exp: selected thread: 4 -PASS: gdb.threads/tls.exp: backtrace of thread number 4 not relevant -FAIL: gdb.threads/tls.exp: No thread backtrace reported spin (vsyscall kernel problem?) -PASS: gdb.threads/tls.exp: threads exited -PASS: gdb.threads/tls.exp: Expect only base thread at end -PASS: gdb.threads/tls.exp: info address a_global -FAIL: gdb.threads/tls.exp: info address me -FAIL: gdb.threads/tls.exp: p a_thread_local -FAIL: gdb.threads/tls.exp: p file2_thread_local -PASS: gdb.threads/tls.exp: info address file2_thread_local -FAIL: gdb.threads/tls.exp: p a_thread_local second time -PASS: gdb.threads/tls.exp: info address a_thread_local -Running ./gdb.threads/tls-nodebug.exp ... -PASS: gdb.threads/tls-nodebug.exp: successfully compiled posix threads test case -FAIL: gdb.threads/tls-nodebug.exp: thread local storage -Running ./gdb.threads/tls-shared.exp ... -PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case -FAIL: gdb.threads/tls-shared.exp: print thread local storage variable -PASS: gdb.threads/tls-shared.exp: ptype of thread local storage variable -PASS: gdb.threads/tls-shared.exp: print storage info for thread local storage variable -PASS: gdb.threads/tls-shared.exp: break at and of main -PASS: gdb.threads/tls-shared.exp: continue to break -PASS: gdb.threads/tls-shared.exp: print result -Running ./gdb.threads/tls-var.exp ... -PASS: gdb.threads/tls-var.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-var.exp: whatis tls_var -FAIL: gdb.threads/tls-var.exp: print tls_var -Running ./gdb.threads/watchpoint-fork.exp ... -KFAIL: gdb.threads/watchpoint-fork.exp: gdbserver does not support debugging across fork (PRMS: remote/13584) -Running ./gdb.threads/watchthreads2.exp ... -Running ./gdb.threads/watchthreads.exp ... -Running ./gdb.threads/watchthreads-reorder.exp ... -Running ./gdb.trace/actions.exp ... -PASS: gdb.trace/actions.exp: 5.1a: set three tracepoints, no actions -PASS: gdb.trace/actions.exp: 5.1b: set actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.1c: verify actions set for first tracepoint -PASS: gdb.trace/actions.exp: 5.1d: set actions for second tracepoint -PASS: gdb.trace/actions.exp: 5.1e: verify actions set for second tracepoint -PASS: gdb.trace/actions.exp: 5.2a: set actions for last (default) tracepoint -PASS: gdb.trace/actions.exp: 5.2b: verify actions set for second tracepoint -PASS: gdb.trace/actions.exp: 5.3a: reset actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.3b: verify actions set for first tracepoint -PASS: gdb.trace/actions.exp: 5.4: 'end' command out of context -PASS: gdb.trace/actions.exp: 5.5a: set empty actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.5c: verify NO actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.6: actions for invalid tracepoint number -PASS: gdb.trace/actions.exp: 5.7: invalid action -PASS: gdb.trace/actions.exp: 5.8a: help actions -PASS: gdb.trace/actions.exp: 5.8b: help collect -PASS: gdb.trace/actions.exp: 5.8c: help while-stepping -PASS: gdb.trace/actions.exp: 5.8d: help end -PASS: gdb.trace/actions.exp: 5.9a: set default-collect -PASS: gdb.trace/actions.exp: 5.9b: show default-collect -PASS: gdb.trace/actions.exp: 5.9c: set default-collect -PASS: gdb.trace/actions.exp: Create a trace state variable -PASS: gdb.trace/actions.exp: 5.10a: set teval action for first tracepoint -PASS: gdb.trace/actions.exp: 5.10a: set teval action for second tracepoint -PASS: gdb.trace/actions.exp: 5.10a: verify teval actions set for two tracepoints -Running ./gdb.trace/ax.exp ... -PASS: gdb.trace/ax.exp: maint agent 12 -PASS: gdb.trace/ax.exp: maint agent gdb_char_test -PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[12] -PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[gdb_short_test] -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.s -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.arr[gdb_struct1_test.c] -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->l -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->bfield -PASS: gdb.trace/ax.exp: maint agent gdb_long_test + gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test - gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test * gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test / gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test + 1 -PASS: gdb.trace/ax.exp: maint agent gdb_long_test == gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test != gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test < gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test <= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test > gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test >= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent &gdb_long_test == &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent &gdb_long_test < &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval 12 -PASS: gdb.trace/ax.exp: maint agent-eval gdb_char_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[12] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[gdb_short_test] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.s -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.arr[gdb_struct1_test.c] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->l -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->bfield -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test + gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test - gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test * gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test / gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test + 1 -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test == gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test != gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test < gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test <= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test > gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test >= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test == &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test < &gdb_short_test -Running ./gdb.trace/backtrace.exp ... -UNSUPPORTED: gdb.trace/backtrace.exp: Current target does not support trace -Running ./gdb.trace/change-loc.exp ... -UNSUPPORTED: gdb.trace/change-loc.exp: Current target does not support trace -Running ./gdb.trace/circ.exp ... -PASS: gdb.trace/circ.exp: set circular-trace-buffer on -PASS: gdb.trace/circ.exp: show circular-trace-buffer (on) -PASS: gdb.trace/circ.exp: set circular-trace-buffer off -PASS: gdb.trace/circ.exp: show circular-trace-buffer (off) -UNSUPPORTED: gdb.trace/circ.exp: Current target does not support trace -Running ./gdb.trace/collection.exp ... -UNSUPPORTED: gdb.trace/collection.exp: Current target does not support trace -Running ./gdb.trace/deltrace.exp ... -PASS: gdb.trace/deltrace.exp: set tracepoint 1 -PASS: gdb.trace/deltrace.exp: set tracepoint 2 -PASS: gdb.trace/deltrace.exp: set tracepoint 3 -PASS: gdb.trace/deltrace.exp: 3.1a: set three tracepoints -PASS: gdb.trace/deltrace.exp: 3.1b: delete all tracepoints -PASS: gdb.trace/deltrace.exp: 3.2a: set three tracepoints -PASS: gdb.trace/deltrace.exp: 3.2b: delete first tracepoint -PASS: gdb.trace/deltrace.exp: 3.2c: verify delete first tracepoint -PASS: gdb.trace/deltrace.exp: 3.2d: delete second tracepoint -PASS: gdb.trace/deltrace.exp: 3.2e: verify delete second tracepoint -PASS: gdb.trace/deltrace.exp: 3.2f: delete third tracepoint -PASS: gdb.trace/deltrace.exp: 3.2g: verify delete third tracepoint -PASS: gdb.trace/deltrace.exp: 3.3a: set three tracepoints -PASS: gdb.trace/deltrace.exp: 3.3b: delete three tracepoints -PASS: gdb.trace/deltrace.exp: 3.3c: verify delete three tracepoints -PASS: gdb.trace/deltrace.exp: 3.4: delete invalid tracepoint number -PASS: gdb.trace/deltrace.exp: 3.5: delete tracepoint number zero -PASS: gdb.trace/deltrace.exp: 3.6: help delete tracepoints -Running ./gdb.trace/disconnected-tracing.exp ... -UNSUPPORTED: gdb.trace/disconnected-tracing.exp: target does not support trace -Running ./gdb.trace/ftrace.exp ... -UNSUPPORTED: gdb.trace/ftrace.exp: target does not support trace -Running ./gdb.trace/infotrace.exp ... -PASS: gdb.trace/infotrace.exp: 2.1: info tracepoints (all) -PASS: gdb.trace/infotrace.exp: 2.2a: info tracepoint 1 (gdb_c_test) -PASS: gdb.trace/infotrace.exp: 2.2b: info tracepoint 2 (gdb_asm_test) -PASS: gdb.trace/infotrace.exp: 2.3: info tracepoint (invalid tracepoint number) -PASS: gdb.trace/infotrace.exp: 2.4: info trace rejects multiple tracepoint numbers -PASS: gdb.trace/infotrace.exp: 2.5: help info tracepoints -PASS: gdb.trace/infotrace.exp: collect on tracepoint 1 -UNSUPPORTED: gdb.trace/infotrace.exp: Current target does not support trace -Running ./gdb.trace/mi-traceframe-changed.exp ... -ERROR: remote_download to host of to basic.tf: cp: missing destination file operand after 'basic.tf' -Try 'cp --help' for more information. -UNRESOLVED: gdb.trace/mi-traceframe-changed.exp: tfile: select trace file -FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: tfind 0 -FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: tfind 0 again -FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: tfind end -FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: -trace-find frame-number 0 -UNSUPPORTED: gdb.trace/mi-traceframe-changed.exp: Current target does not support trace -Running ./gdb.trace/mi-tracepoint-changed.exp ... -UNSUPPORTED: gdb.trace/mi-tracepoint-changed.exp: Current target does not support trace -Running ./gdb.trace/mi-tsv-changed.exp ... -PASS: gdb.trace/mi-tsv-changed.exp: create delete modify: tvariable $tvar1 -PASS: gdb.trace/mi-tsv-changed.exp: create delete modify: tvariable $tvar1 modified -PASS: gdb.trace/mi-tsv-changed.exp: create delete modify: tvariable $tvar1 modified without notification -PASS: gdb.trace/mi-tsv-changed.exp: create delete modify: tvariable $tvar2 -PASS: gdb.trace/mi-tsv-changed.exp: create delete modify: delete tvariable $tvar2 -PASS: gdb.trace/mi-tsv-changed.exp: create delete modify: delete all tvariables -UNSUPPORTED: gdb.trace/mi-tsv-changed.exp: create delete modify: Current target does not support trace -UNSUPPORTED: gdb.trace/mi-tsv-changed.exp: Current target does not support trace -Running ./gdb.trace/packetlen.exp ... -UNSUPPORTED: gdb.trace/packetlen.exp: Current target does not support trace -Running ./gdb.trace/passc-dyn.exp ... -UNSUPPORTED: gdb.trace/passc-dyn.exp: Current target does not support trace -Running ./gdb.trace/passcount.exp ... -PASS: gdb.trace/passcount.exp: 4.1a: set three tracepoints, passcounts all zero -PASS: gdb.trace/passcount.exp: 4.1b: set 1st tracepoint's passcount to two -PASS: gdb.trace/passcount.exp: 4.1c: verify 1st tracepoint's passcount set to two -PASS: gdb.trace/passcount.exp: 4.1d: set 2nd tracepoint's passcount to four -PASS: gdb.trace/passcount.exp: 4.1c: verify 2nd tracepoint's passcount set to four -PASS: gdb.trace/passcount.exp: 4.2b: set last (default) tp's passcount to six -PASS: gdb.trace/passcount.exp: 4.2b: verify last (default) tp's passcount set to six -PASS: gdb.trace/passcount.exp: 4.4a: reset last (default) tp's passcount to seven -PASS: gdb.trace/passcount.exp: 4.4a: verify reset last (default) tp's passcount to seven -PASS: gdb.trace/passcount.exp: 4.4b: reset second tracepoint's passcount to five -PASS: gdb.trace/passcount.exp: 4.4c: verify reset second tracepoint's passcount to five -PASS: gdb.trace/passcount.exp: 4.20a: set all three passcounts to three -PASS: gdb.trace/passcount.exp: 4.20a: set all three passcounts to three -PASS: gdb.trace/passcount.exp: 4.20a: reset all three passcounts to four -PASS: gdb.trace/passcount.exp: 4.20b: reset all three passcounts to four -PASS: gdb.trace/passcount.exp: 4.6: set passcount to zero -PASS: gdb.trace/passcount.exp: 4.6: set passcount to zero -PASS: gdb.trace/passcount.exp: 4.7: set passcount to large number (32767) -PASS: gdb.trace/passcount.exp: 4.7: set passcount to large number (32767) -PASS: gdb.trace/passcount.exp: 4.8: invalid tracepoint number in passcount -PASS: gdb.trace/passcount.exp: 4.9: help passcount -Running ./gdb.trace/pending.exp ... -UNSUPPORTED: gdb.trace/pending.exp: Current target does not support trace -Running ./gdb.trace/qtro.exp ... -PASS: gdb.trace/qtro.exp: probe for target remote -UNSUPPORTED: gdb.trace/qtro.exp: Current target does not support trace -Running ./gdb.trace/report.exp ... -UNSUPPORTED: gdb.trace/report.exp: Current target does not support trace -Running ./gdb.trace/save-trace.exp ... -PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 1 -PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 1 -PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 1 -PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 2 -PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 2 -PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 2 -PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 3 -PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 3 -PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 3 -PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 4 -PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 4 -PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 4 -PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 5 -PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 5 -PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 5 -PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 6 -PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 6 -PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 6 -PASS: gdb.trace/save-trace.exp: 10: set default-collect -PASS: gdb.trace/save-trace.exp: 10.x: verify trace setup -PASS: gdb.trace/save-trace.exp: 10: show default-collect -PASS: gdb.trace/save-trace.exp: 10.1: save tracepoint definitions -PASS: gdb.trace/save-trace.exp: 10.2: clear default-collect -PASS: gdb.trace/save-trace.exp: 10.2: delete tracepoints -PASS: gdb.trace/save-trace.exp: 10.2: read back saved tracepoints -PASS: gdb.trace/save-trace.exp: 10.2: verify recovered tracepoints -PASS: gdb.trace/save-trace.exp: 10: show default-collect -PASS: gdb.trace/save-trace.exp: 10.3: save tracepoint definitions, full path -PASS: gdb.trace/save-trace.exp: 10.3: clear default-collect -PASS: gdb.trace/save-trace.exp: 10.3: delete tracepoints -PASS: gdb.trace/save-trace.exp: 10.4: read saved tracepoints, full path -PASS: gdb.trace/save-trace.exp: 10.3: verify recovered tracepoints, full path -PASS: gdb.trace/save-trace.exp: 10: show default-collect -PASS: gdb.trace/save-trace.exp: 10.7: help save-tracepoints -Running ./gdb.trace/stap-trace.exp ... -Running ./gdb.trace/status-stop.exp ... -UNSUPPORTED: gdb.trace/status-stop.exp: target does not support trace -Running ./gdb.trace/strace.exp ... -UNTESTED: gdb.trace/strace.exp: UST library or headers are not installed -Running ./gdb.trace/tfile.exp ... -ERROR: remote_download to host of to basic.tf: cp: missing destination file operand after 'basic.tf' -Try 'cp --help' for more information. -ERROR: remote_download to host of to error.tf: cp: missing destination file operand after 'error.tf' -Try 'cp --help' for more information. -UNRESOLVED: gdb.trace/tfile.exp: target tfile -FAIL: gdb.trace/tfile.exp: info tracepoints on trace file -FAIL: gdb.trace/tfile.exp: tfind 0 on trace file -PASS: gdb.trace/tfile.exp: print testglob on trace file -PASS: gdb.trace/tfile.exp: print testglob2 on trace file -PASS: gdb.trace/tfile.exp: print constglob on trace file -PASS: gdb.trace/tfile.exp: tfind does not find a second frame in trace file -FAIL: gdb.trace/tfile.exp: tstatus on trace file -PASS: gdb.trace/tfile.exp: leave tfind mode -PASS: gdb.trace/tfile.exp: no stack if no traceframe selected -PASS: gdb.trace/tfile.exp: no registers if no traceframe selected -FAIL: gdb.trace/tfile.exp: target tfile -FAIL: gdb.trace/tfile.exp: tstatus on error trace file -FAIL: gdb.trace/tfile.exp: interpreter-exec mi "-target-select tfile basic.tf" -FAIL: gdb.trace/tfile.exp: -trace-status -Running ./gdb.trace/tfind.exp ... -PASS: gdb.trace/tfind.exp: 6.2: help tstart -PASS: gdb.trace/tfind.exp: 7.2: help tstop -PASS: gdb.trace/tfind.exp: 8.38: help tfind -PASS: gdb.trace/tfind.exp: 8.38: help tfind PC -PASS: gdb.trace/tfind.exp: 8.38: help tfind end -PASS: gdb.trace/tfind.exp: 8.38: help tfind none -PASS: gdb.trace/tfind.exp: 8.38: help tfind line -PASS: gdb.trace/tfind.exp: 8.38: help tfind start -PASS: gdb.trace/tfind.exp: 8.38: help tfind range -PASS: gdb.trace/tfind.exp: 8.38: help tfind tracepoint -UNSUPPORTED: gdb.trace/tfind.exp: Current target does not support trace -Running ./gdb.trace/trace-break.exp ... -UNSUPPORTED: gdb.trace/trace-break.exp: target does not support trace -Running ./gdb.trace/trace-buffer-size.exp ... -UNSUPPORTED: gdb.trace/trace-buffer-size.exp: target does not support trace -Running ./gdb.trace/tracecmd.exp ... -PASS: gdb.trace/tracecmd.exp: 1.0: help tracepoints -PASS: gdb.trace/tracecmd.exp: 1.1a: set tracepoint at sourceline -PASS: gdb.trace/tracecmd.exp: 1.1b: trace sourcefile:line -PASS: gdb.trace/tracecmd.exp: set breakpoint pending off -PASS: gdb.trace/tracecmd.exp: 1.2a: trace invalid line in sourcefile -PASS: gdb.trace/tracecmd.exp: 1.2b: reject invalid line in srcfile -PASS: gdb.trace/tracecmd.exp: 1.3a: trace invalid source file -PASS: gdb.trace/tracecmd.exp: 1.3b: reject invalid srcfile -PASS: gdb.trace/tracecmd.exp: 1.4a: trace function by name -PASS: gdb.trace/tracecmd.exp: 1.4b: trace function by name -PASS: gdb.trace/tracecmd.exp: 1.5a: trace invalid function -PASS: gdb.trace/tracecmd.exp: 1.5b: reject invalid srcfile -PASS: gdb.trace/tracecmd.exp: 1.6a: trace at specific address -PASS: gdb.trace/tracecmd.exp: 1.6b: verify trace at specific address -PASS: gdb.trace/tracecmd.exp: 1.7a: trace at function label (before prologue) -PASS: gdb.trace/tracecmd.exp: 1.7b: verify trace at specific address -PASS: gdb.trace/tracecmd.exp: 1.9: trace -PASS: gdb.trace/tracecmd.exp: 1.11a: conditional tracepoint -PASS: gdb.trace/tracecmd.exp: 1.11b: verify conditional tracepoint -PASS: gdb.trace/tracecmd.exp: 1.14: help trace -PASS: gdb.trace/tracecmd.exp: Set a fast tracepoint -Running ./gdb.trace/trace-mt.exp ... -PASS: gdb.trace/trace-mt.exp: successfully compiled posix threads test case -UNSUPPORTED: gdb.trace/trace-mt.exp: target does not support trace -Running ./gdb.trace/tspeed.exp ... -gdb compile failed, armv7a-cros-linux-gnueabi-gcc.real: error: /var/tmp/portage/cross-armv7a-cros-linux-gnueabi/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../gdbserver/libinproctrace.so: No such file or directory -UNTESTED: gdb.trace/tspeed.exp: tspeed.exp -Running ./gdb.trace/tstatus.exp ... -UNSUPPORTED: gdb.trace/tstatus.exp: target does not support trace -Running ./gdb.trace/tsv.exp ... -PASS: gdb.trace/tsv.exp: Create a trace state variable -PASS: gdb.trace/tsv.exp: Create a trace state variable with initial value -PASS: gdb.trace/tsv.exp: Change initial value of a trace state variable -PASS: gdb.trace/tsv.exp: Create a trace state variable with expression -PASS: gdb.trace/tsv.exp: Init trace state variable to a 64-bit value -PASS: gdb.trace/tsv.exp: tvariable syntax error, not empty variable name -PASS: gdb.trace/tsv.exp: tvariable syntax error, bad name -PASS: gdb.trace/tsv.exp: tvariable syntax error, bad name 2 -PASS: gdb.trace/tsv.exp: tvariable syntax error, bad name 3 -PASS: gdb.trace/tsv.exp: tvariable syntax error, not an assignment -PASS: gdb.trace/tsv.exp: tvariable creation fails with invalid expression -PASS: gdb.trace/tsv.exp: List tvariables -PASS: gdb.trace/tsv.exp: Print a trace state variable before run -PASS: gdb.trace/tsv.exp: delete trace state variable -PASS: gdb.trace/tsv.exp: List tvariables after deletion -PASS: gdb.trace/tsv.exp: Delete all trace state variables -PASS: gdb.trace/tsv.exp: List tvariables after deleting all -UNSUPPORTED: gdb.trace/tsv.exp: Current target does not support trace -Running ./gdb.trace/unavailable.exp ... -UNSUPPORTED: gdb.trace/unavailable.exp: Current target does not support trace -Running ./gdb.trace/while-dyn.exp ... -UNSUPPORTED: gdb.trace/while-dyn.exp: Current target does not support trace -Running ./gdb.trace/while-stepping.exp ... -PASS: gdb.trace/while-stepping.exp: 5.12: set a tracepoint, stepcount is zero -PASS: gdb.trace/while-stepping.exp: 5.12: set stepcount to 12 -PASS: gdb.trace/while-stepping.exp: 5.12: info trace shows "while-stepping" -PASS: gdb.trace/while-stepping.exp: 5.14: while-stepping null stepcount -PASS: gdb.trace/while-stepping.exp: 5.15: while-stepping rejects zero stepcount -PASS: gdb.trace/while-stepping.exp: 5.16: step without collecting anything -PASS: gdb.trace/while-stepping.exp: 5.16: confirm actions, step without collecting anything -Running ./gdb.xml/tdesc-arch.exp ... -PASS: gdb.xml/tdesc-arch.exp: read valid architectures -PASS: gdb.xml/tdesc-arch.exp: read default architecture -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (first architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (first architecture) -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (second architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (second architecture) -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (invalid architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (invalid architecture) -Running ./gdb.xml/tdesc-errors.exp ... -PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-bogus.xml -PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-unknown.xml -Running ./gdb.xml/tdesc-regs.exp ... -PASS: gdb.xml/tdesc-regs.exp: set tdesc file single-reg.xml -PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from extra-regs.xml -PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg -PASS: gdb.xml/tdesc-regs.exp: ptype $uintreg -PASS: gdb.xml/tdesc-regs.exp: ptype $vecreg -PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg -PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg.v4 -PASS: gdb.xml/tdesc-regs.exp: ptype $structreg -PASS: gdb.xml/tdesc-regs.exp: ptype $structreg.v4 -PASS: gdb.xml/tdesc-regs.exp: ptype $bitfields -PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from core-only.xml -PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg -Running ./gdb.xml/tdesc-xinclude.exp ... -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/includes.xml -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/bad-include.xml -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/loop.xml - - === gdb Summary === - -# of expected passes 17017 -# of unexpected failures 610 -# of unexpected successes 1 -# of expected failures 32 -# of known failures 41 -# of untested testcases 56 -# of unresolved testcases 4 -# of unsupported tests 131 -/var/tmp/portage/cross-armv7a-cros-linux-gnueabi/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb version 7.6.1 -nw -nx -data-directory /var/tmp/portage/cross-armv7a-cros-linux-gnueabi/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../data-directory - diff --git a/deprecated/dejagnu/gdb_baseline/i686-pc-linux-gnu b/deprecated/dejagnu/gdb_baseline/i686-pc-linux-gnu deleted file mode 100644 index e3e1ee7c..00000000 --- a/deprecated/dejagnu/gdb_baseline/i686-pc-linux-gnu +++ /dev/null @@ -1,19167 +0,0 @@ -Test Run By yunlian on Fri Dec 27 14:14:24 2013 -Target is i686-pc-linux-gnu - - === gdb tests === - -Schedule of variations: - x86-alex - -Running target x86-alex -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 ... -Running ./gdb.arch/arm-disp-step.exp ... -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 ... -PASS: gdb.arch/i386-bp_permanent.exp: Stop at the 'standard' start breakpoint (fetching esp). -PASS: gdb.arch/i386-bp_permanent.exp: Stop at permanent breakpoint. -PASS: gdb.arch/i386-bp_permanent.exp: Single stepping past permanent breakpoint. -PASS: gdb.arch/i386-bp_permanent.exp: ESP value does not match - step_permanent_breakpoint wrong. -Running ./gdb.arch/i386-byte.exp ... -gdb compile failed, ./gdb.arch/i386-pseudo.c: In function 'main': -./gdb.arch/i386-pseudo.c:32:3: error: PIC register clobbered by 'ebx' in 'asm' - asm ("mov 0(%0), %%eax\n\t" - ^ -./gdb.arch/i386-pseudo.c:41:3: error: PIC register clobbered by 'ebx' in 'asm' - asm ("mov %%eax, 0(%0)\n\t" - ^ -UNTESTED: gdb.arch/i386-byte.exp: i386-byte -Running ./gdb.arch/i386-cfi-notcurrent.exp ... -PASS: gdb.arch/i386-cfi-notcurrent.exp: backtrace -Running ./gdb.arch/i386-disp-step.exp ... -PASS: gdb.arch/i386-disp-step.exp: set displaced-stepping on -PASS: gdb.arch/i386-disp-step.exp: show displaced-stepping -PASS: gdb.arch/i386-disp-step.exp: break test_call -PASS: gdb.arch/i386-disp-step.exp: break test_call_end -PASS: gdb.arch/i386-disp-step.exp: break test_ret -PASS: gdb.arch/i386-disp-step.exp: break test_ret_end -PASS: gdb.arch/i386-disp-step.exp: continue to test_call -PASS: gdb.arch/i386-disp-step.exp: continue to test_call_end -PASS: gdb.arch/i386-disp-step.exp: continue to test_ret -PASS: gdb.arch/i386-disp-step.exp: continue to test_ret_end -PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_abs_jump -PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_abs_jump_end -PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_abs_jump -PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_abs_jump_end -PASS: gdb.arch/i386-disp-step.exp: break test_syscall -PASS: gdb.arch/i386-disp-step.exp: break test_syscall_end -PASS: gdb.arch/i386-disp-step.exp: continue to test_syscall -PASS: gdb.arch/i386-disp-step.exp: continue to test_syscall_end -PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_syscall -PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_syscall_end -PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_syscall -PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_syscall_end -PASS: gdb.arch/i386-disp-step.exp: break test_int3 -PASS: gdb.arch/i386-disp-step.exp: break test_int3_end -PASS: gdb.arch/i386-disp-step.exp: continue to test_int3 -PASS: gdb.arch/i386-disp-step.exp: continue to test_int3_end -PASS: gdb.arch/i386-disp-step.exp: continue until exit at i386-disp-step -Running ./gdb.arch/i386-dr3-watch.exp ... -PASS: gdb.arch/i386-dr3-watch.exp: set breakpoint always-inserted on -PASS: gdb.arch/i386-dr3-watch.exp: watch i1 -PASS: gdb.arch/i386-dr3-watch.exp: watch i2 -PASS: gdb.arch/i386-dr3-watch.exp: watch i3 -PASS: gdb.arch/i386-dr3-watch.exp: watch i4 -PASS: gdb.arch/i386-dr3-watch.exp: continue to i1 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: continue to i2 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: continue to i3 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: continue to i4 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: set watchpoint occuping one debug register -PASS: gdb.arch/i386-dr3-watch.exp: watchpoint on gap1 does not fit debug registers -PASS: gdb.arch/i386-dr3-watch.exp: delete all watchpoints -PASS: gdb.arch/i386-dr3-watch.exp: watch i1 still fits -PASS: gdb.arch/i386-dr3-watch.exp: watch i2 still fits -PASS: gdb.arch/i386-dr3-watch.exp: watch i3 still fits -PASS: gdb.arch/i386-dr3-watch.exp: watch i4 still fits -Running ./gdb.arch/i386-float.exp ... -PASS: gdb.arch/i386-float.exp: first stepi -PASS: gdb.arch/i386-float.exp: info float -PASS: gdb.arch/i386-float.exp: second stepi -PASS: gdb.arch/i386-float.exp: info float -Running ./gdb.arch/i386-gnu-cfi.exp ... -PASS: gdb.arch/i386-gnu-cfi.exp: continue to abort() -PASS: gdb.arch/i386-gnu-cfi.exp: backtrace -PASS: gdb.arch/i386-gnu-cfi.exp: shift up to the modified frame -PASS: gdb.arch/i386-gnu-cfi.exp: Existence of the CFI inserted register -PASS: gdb.arch/i386-gnu-cfi.exp: Value of the CFI inserted register -Running ./gdb.arch/i386-permbkpt.exp ... -PASS: gdb.arch/i386-permbkpt.exp: First permanent break -PASS: gdb.arch/i386-permbkpt.exp: Second permanent break -Running ./gdb.arch/i386-prologue.exp ... -PASS: gdb.arch/i386-prologue.exp: continue to standard -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in standard -PASS: gdb.arch/i386-prologue.exp: backtrace in standard -PASS: gdb.arch/i386-prologue.exp: saved registers in standard -PASS: gdb.arch/i386-prologue.exp: break *(stack_align_ecx + 7) -PASS: gdb.arch/i386-prologue.exp: continue to stack_align_ecx + 7 -PASS: gdb.arch/i386-prologue.exp: first backtrace in stack_align_ecx -PASS: gdb.arch/i386-prologue.exp: continue in stack_align_ecx -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in stack_align_ecx -PASS: gdb.arch/i386-prologue.exp: second backtrace in stack_align_ecx -PASS: gdb.arch/i386-prologue.exp: saved registers in stack_align_ecx -PASS: gdb.arch/i386-prologue.exp: break *(stack_align_edx + 7) -PASS: gdb.arch/i386-prologue.exp: continue to stack_align_edx + 7 -PASS: gdb.arch/i386-prologue.exp: first backtrace in stack_align_edx -PASS: gdb.arch/i386-prologue.exp: continue in stack_align_edx -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in stack_align_edx -PASS: gdb.arch/i386-prologue.exp: second backtrace in stack_align_edx -PASS: gdb.arch/i386-prologue.exp: saved registers in stack_align_edx -PASS: gdb.arch/i386-prologue.exp: break *(stack_align_eax + 7) -PASS: gdb.arch/i386-prologue.exp: continue to stack_align_eax + 7 -PASS: gdb.arch/i386-prologue.exp: first backtrace in stack_align_eax -PASS: gdb.arch/i386-prologue.exp: continue in stack_align_eax -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in stack_align_eax -PASS: gdb.arch/i386-prologue.exp: second backtrace in stack_align_eax -PASS: gdb.arch/i386-prologue.exp: saved registers in stack_align_eax -PASS: gdb.arch/i386-prologue.exp: continue to gdb1253 -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in gdb1253 -PASS: gdb.arch/i386-prologue.exp: backtrace in gdb1253 -PASS: gdb.arch/i386-prologue.exp: saved registers in gdb1253 -PASS: gdb.arch/i386-prologue.exp: continue to gdb1718 -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in gdb1718 -PASS: gdb.arch/i386-prologue.exp: backtrace in gdb1718 -KFAIL: gdb.arch/i386-prologue.exp: saved registers in gdb1718 (PRMS: gdb/1718) -PASS: gdb.arch/i386-prologue.exp: continue to gdb1338 -PASS: gdb.arch/i386-prologue.exp: skip breakpoint in gdb1338 -PASS: gdb.arch/i386-prologue.exp: backtrace in gdb1338 -PASS: gdb.arch/i386-prologue.exp: saved registers in gdb1338 -PASS: gdb.arch/i386-prologue.exp: check jump_at_beginning prologue end -Running ./gdb.arch/i386-signal.exp ... -PASS: gdb.arch/i386-signal.exp: backtrace 10 -PASS: gdb.arch/i386-signal.exp: finish -Running ./gdb.arch/i386-size.exp ... -PASS: gdb.arch/i386-size.exp: run past main -PASS: gdb.arch/i386-size.exp: backtrace shows no function -PASS: gdb.arch/i386-size.exp: disassemble stops at end of main -Running ./gdb.arch/i386-size-overlap.exp ... -PASS: gdb.arch/i386-size-overlap.exp: run past main -PASS: gdb.arch/i386-size-overlap.exp: backtrace shows the outer function -Running ./gdb.arch/i386-sse.exp ... -PASS: gdb.arch/i386-sse.exp: check whether processor supports SSE -PASS: gdb.arch/i386-sse.exp: set first breakpoint in main -PASS: gdb.arch/i386-sse.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm0 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm0 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm1 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm1 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm2 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm2 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm3 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm3 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm4 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm4 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm5 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm5 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm6 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm6 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm7 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm7 -PASS: gdb.arch/i386-sse.exp: set %xmm0 -PASS: gdb.arch/i386-sse.exp: set %xmm1 -PASS: gdb.arch/i386-sse.exp: set %xmm2 -PASS: gdb.arch/i386-sse.exp: set %xmm3 -PASS: gdb.arch/i386-sse.exp: set %xmm4 -PASS: gdb.arch/i386-sse.exp: set %xmm5 -PASS: gdb.arch/i386-sse.exp: set %xmm6 -PASS: gdb.arch/i386-sse.exp: set %xmm7 -PASS: gdb.arch/i386-sse.exp: set second breakpoint in main -PASS: gdb.arch/i386-sse.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/i386-sse.exp: check contents of data[0] -PASS: gdb.arch/i386-sse.exp: check contents of data[1] -PASS: gdb.arch/i386-sse.exp: check contents of data[2] -PASS: gdb.arch/i386-sse.exp: check contents of data[3] -PASS: gdb.arch/i386-sse.exp: check contents of data[4] -PASS: gdb.arch/i386-sse.exp: check contents of data[5] -PASS: gdb.arch/i386-sse.exp: check contents of data[6] -PASS: gdb.arch/i386-sse.exp: check contents of data[7] -Running ./gdb.arch/i386-sse-stack-align.exp ... -PASS: gdb.arch/i386-sse-stack-align.exp: print g0 () -PASS: gdb.arch/i386-sse-stack-align.exp: print g1 (1) -PASS: gdb.arch/i386-sse-stack-align.exp: print g2 (1, 2) -PASS: gdb.arch/i386-sse-stack-align.exp: print g3 (1, 2, 3) -PASS: gdb.arch/i386-sse-stack-align.exp: print g4 (1, 2, 3, 4) -Running ./gdb.arch/i386-unwind.exp ... -PASS: gdb.arch/i386-unwind.exp: run past gdb1435 -PASS: gdb.arch/i386-unwind.exp: backtrace past gdb1435 -Running ./gdb.arch/i386-word.exp ... -gdb compile failed, ./gdb.arch/i386-pseudo.c: In function 'main': -./gdb.arch/i386-pseudo.c:32:3: error: PIC register clobbered by 'ebx' in 'asm' - asm ("mov 0(%0), %%eax\n\t" - ^ -./gdb.arch/i386-pseudo.c:41:3: error: PIC register clobbered by 'ebx' in 'asm' - asm ("mov %%eax, 0(%0)\n\t" - ^ -UNTESTED: gdb.arch/i386-word.exp: i386-word -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 ... -PASS: gdb.arch/system-gcore.exp: help gcore -PASS: gdb.arch/system-gcore.exp: set breakpoint at terminal_func -PASS: gdb.arch/system-gcore.exp: continue to terminal_func -PASS: gdb.arch/system-gcore.exp: save a corefile -FAIL: gdb.arch/system-gcore.exp: re-load generated corefile (bad file format) -Running ./gdb.arch/thumb2-it.exp ... -Running ./gdb.arch/thumb-bx-pc.exp ... -Running ./gdb.arch/thumb-prologue.exp ... -Running ./gdb.arch/thumb-singlestep.exp ... -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 -FAIL: gdb.base/auxv.exp: load core file for info auxv on gcore-created dump -FAIL: gdb.base/auxv.exp: info auxv on gcore-created dump -FAIL: 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 *) 0x555555c3 = $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 -PASS: 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 -PASS: gdb.base/break.exp: check disable with history values -PASS: gdb.base/break.exp: disable with convenience values -PASS: 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 -PASS: 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 -PASS: 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) -PASS: gdb.base/break.exp: continue until exit at recursive next test -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) -PASS: gdb.base/callfuncs.exp: p t_float_values(3.14159,-2.3765) -PASS: gdb.base/callfuncs.exp: p t_float_values(float_val1,float_val2) -PASS: gdb.base/callfuncs.exp: p t_float_values(3.14159,float_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_float_values2(3.14159,float_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_double_values(45.654,-67.66) -PASS: gdb.base/callfuncs.exp: p t_double_values(double_val1,double_val2) -PASS: gdb.base/callfuncs.exp: p t_double_values(45.654,double_val2) -PASS: gdb.base/callfuncs.exp: p t_double_values(double_val1,-67.66) -PASS: gdb.base/callfuncs.exp: Call function with many double arguments. -PASS: gdb.base/callfuncs.exp: p t_double_int(99.0, 1) -PASS: gdb.base/callfuncs.exp: p t_double_int(99.0, 99) -PASS: gdb.base/callfuncs.exp: p t_int_double(99, 1.0) -PASS: gdb.base/callfuncs.exp: p t_int_double(99, 99.0) -PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc1, fc2) -PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc3, fc4) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2) -PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc3, dc4) -PASS: 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) -PASS: 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) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_string_values("string 1","string 2") -PASS: gdb.base/callfuncs.exp: p t_string_values("string 1",string_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_char_array_values("carray 1","carray 2") -PASS: gdb.base/callfuncs.exp: p t_char_array_values("carray 1",char_array_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p sum_args(1,{2}) -PASS: gdb.base/callfuncs.exp: p sum_args(2,{2,3}) -PASS: gdb.base/callfuncs.exp: p sum_args(3,{2,3,4}) -PASS: 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 -PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex -PASS: 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 -PASS: 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() -PASS: 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 -PASS: gdb.base/call-strs.exp: step after assignment to s -PASS: gdb.base/call-strs.exp: next over strcpy -PASS: gdb.base/call-strs.exp: print buf -PASS: gdb.base/call-strs.exp: print s -Running ./gdb.base/catch-load.exp ... -PASS: 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 -PASS: gdb.base/catch-load.exp: plain load: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: plain load with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx load: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx load with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: non-matching load: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: plain unload: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx unload: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: non-matching unload: continue -PASS: 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 -PASS: 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 -PASS: gdb.base/charset.exp: Assign String16 with prefix u -PASS: gdb.base/charset.exp: Display String String16 with x/hs -PASS: gdb.base/charset.exp: Assign String32 with prefix U -PASS: gdb.base/charset.exp: Display String String32 with x/ws -PASS: gdb.base/charset.exp: Assign String32 with prefix L -PASS: 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 -PASS: gdb.base/chng-syms.exp: continue until exit at breakpoint first time through -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' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete (2) 'p no_var_named_this-' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete 'p values[0].a' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete 'p values[0] . a' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete 'p &values[0] -> a' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: completion of field in anonymous union -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: ptype completion of field in anonymous union -ERROR: internal buffer is full. -UNRESOLVED: 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 -PASS: 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 ... -PASS: gdb.base/ctxobj.exp: break in get_version functions -PASS: gdb.base/ctxobj.exp: continue to get_version_1 -PASS: gdb.base/ctxobj.exp: print libctxobj1's this_version_num from partial symtab -PASS: gdb.base/ctxobj.exp: print libctxobj1's this_version_num from symtab -PASS: gdb.base/ctxobj.exp: continue to get_version_2 -PASS: gdb.base/ctxobj.exp: print libctxobj2's this_version_num from partial symtab -PASS: 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 -PASS: 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 -PASS: 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 ... -PASS: gdb.base/dfp-test.exp: get integer valueof "sizeof (long)" (4) -PASS: gdb.base/dfp-test.exp: next after initializing d32 -PASS: gdb.base/dfp-test.exp: d32 is initialized to 1.2345 -PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d32 -PASS: gdb.base/dfp-test.exp: d32 is positive Infinity -PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d32 -PASS: gdb.base/dfp-test.exp: d32 is negative Infinity -PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d32 -PASS: gdb.base/dfp-test.exp: d32 is NaN -PASS: gdb.base/dfp-test.exp: p d32=123.45df -PASS: gdb.base/dfp-test.exp: p d32=12345.df -PASS: gdb.base/dfp-test.exp: p d32=12345.67df -PASS: gdb.base/dfp-test.exp: p d32=1234567.df -PASS: gdb.base/dfp-test.exp: p d32=1.234567E0df -PASS: gdb.base/dfp-test.exp: p d32=1.234567E10df -PASS: gdb.base/dfp-test.exp: p d32=1.234567E+96df -PASS: gdb.base/dfp-test.exp: p d32=9.999999E96df -PASS: gdb.base/dfp-test.exp: p d32=1.0E-95df -PASS: gdb.base/dfp-test.exp: p d32=1.E-101df -PASS: gdb.base/dfp-test.exp: p d32=0.000001E-95df -PASS: gdb.base/dfp-test.exp: 1.2345678 is rounded to 1.234568 -PASS: gdb.base/dfp-test.exp: 1.0E-101 is rounded to 1E-101 -PASS: gdb.base/dfp-test.exp: 1.234567E+97 is Infinity -PASS: gdb.base/dfp-test.exp: 12345. is a valid number -PASS: gdb.base/dfp-test.exp: 12345 is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number -PASS: gdb.base/dfp-test.exp: next after initializing d64 -PASS: gdb.base/dfp-test.exp: d64 is initialized to 1.2345 -PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d64 -PASS: gdb.base/dfp-test.exp: d64 is positive Infinity -PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d64 -PASS: gdb.base/dfp-test.exp: d64 is negative Infinity -PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d64 -PASS: gdb.base/dfp-test.exp: d64 is NaN -PASS: gdb.base/dfp-test.exp: p d64=123.45dd -PASS: gdb.base/dfp-test.exp: p d64=12345.dd -PASS: gdb.base/dfp-test.exp: p d64=12345.67dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E10dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E100dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E384dd -PASS: gdb.base/dfp-test.exp: p d64=9.999999999999999E384dd -PASS: gdb.base/dfp-test.exp: p d64=1.E-383dd -PASS: gdb.base/dfp-test.exp: p d64=1.E-398dd -PASS: gdb.base/dfp-test.exp: p d64=0.000000000000001E-383dd -PASS: gdb.base/dfp-test.exp: 1.2345678901234567 is rounded to 1.234567890123457 -PASS: gdb.base/dfp-test.exp: d64=9.9999999999999999E384 is Infinity -PASS: gdb.base/dfp-test.exp: d64=1.234567890123456E385 is Infinity -PASS: gdb.base/dfp-test.exp: 12345dd is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number -PASS: gdb.base/dfp-test.exp: next after initializing d128 -PASS: gdb.base/dfp-test.exp: d128 is initialized to 1.2345 -PASS: gdb.base/dfp-test.exp: p d128=123.45dl -PASS: gdb.base/dfp-test.exp: p d128=12345.dl -PASS: gdb.base/dfp-test.exp: p d128=12345.67dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456789012345678901234dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E10dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E100dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E1000dl -PASS: gdb.base/dfp-test.exp: p d128=9.999999999999999999999999999999999E6144dl -PASS: gdb.base/dfp-test.exp: p d128=1.E-6143dl -PASS: gdb.base/dfp-test.exp: p d128=1.E-6176dl -PASS: gdb.base/dfp-test.exp: p d128=0.000000000000000000000000000000001E-6143dl -PASS: gdb.base/dfp-test.exp: 1.2345678901234567890123456789012345 is rounded to 1.234567890123456789012345678901234 -PASS: gdb.base/dfp-test.exp: d128=1.234567890123456E6145 is Infinity -PASS: gdb.base/dfp-test.exp: 12345dl is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number -PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d128 -PASS: gdb.base/dfp-test.exp: d128 is positive Infinity -PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d128 -PASS: gdb.base/dfp-test.exp: d128 is negative Infinity -PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d128 -PASS: gdb.base/dfp-test.exp: d128 is NaN -PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_32 -PASS: gdb.base/dfp-test.exp: backtrace at arg0_32 -PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_64 -PASS: gdb.base/dfp-test.exp: backtrace at arg0_64 -PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_128 -PASS: gdb.base/dfp-test.exp: backtrace at arg0_128 -PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal32 arguments. -PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal32 arguments. -PASS: gdb.base/dfp-test.exp: Correct _Decimal32 return value from called function. -PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal64 arguments. -PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal64 arguments. -PASS: gdb.base/dfp-test.exp: Correct _Decimal64 return value from called function. -PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal128 arguments. -PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal128 arguments. -PASS: gdb.base/dfp-test.exp: Correct _Decimal128 return value from called function. -PASS: gdb.base/dfp-test.exp: Call function with mixed decimal float arguments TEST. -PASS: gdb.base/dfp-test.exp: Call function with mixed decimal float arguments. -PASS: gdb.base/dfp-test.exp: Call function with many _Decimal32 arguments. -PASS: gdb.base/dfp-test.exp: Call function with many _Decimal64 arguments. -PASS: gdb.base/dfp-test.exp: Call function with many _Decimal128 arguments. -PASS: gdb.base/dfp-test.exp: Call function with many mixed decimal float arguments. -PASS: gdb.base/dfp-test.exp: continue to breakpoint: Setting a decimal struct -PASS: gdb.base/dfp-test.exp: print ds.dec32 -PASS: gdb.base/dfp-test.exp: print ds.dec64 -PASS: gdb.base/dfp-test.exp: print ds.dec128 -PASS: gdb.base/dfp-test.exp: print d32 + ds.dec32 -PASS: gdb.base/dfp-test.exp: print d64 + ds.dec64 -PASS: gdb.base/dfp-test.exp: print d128 + ds.dec128 -PASS: gdb.base/dfp-test.exp: ptype d64 + ds.dec32 -PASS: gdb.base/dfp-test.exp: ptype d128 + ds.dec32 -PASS: gdb.base/dfp-test.exp: ptype d128 + ds.dec64 -PASS: gdb.base/dfp-test.exp: p d32 + 1 -PASS: gdb.base/dfp-test.exp: p 2 + d64 -PASS: gdb.base/dfp-test.exp: p ds.int4 + d128 -PASS: gdb.base/dfp-test.exp: ptype d32 + 1 -PASS: gdb.base/dfp-test.exp: ptype ds.int4 + d128 -PASS: gdb.base/dfp-test.exp: p !d32 -PASS: gdb.base/dfp-test.exp: p !d64 -PASS: gdb.base/dfp-test.exp: p !d128 -PASS: gdb.base/dfp-test.exp: p +d32 -PASS: gdb.base/dfp-test.exp: p +d64 -PASS: gdb.base/dfp-test.exp: p +d128 -PASS: gdb.base/dfp-test.exp: p d64 == d128 -PASS: gdb.base/dfp-test.exp: p d128 == ds.dec32 -PASS: gdb.base/dfp-test.exp: p d128 == d32 -PASS: gdb.base/dfp-test.exp: p ds.dec32 == ds.dec64 -PASS: gdb.base/dfp-test.exp: p d32 < ds.dec32 -PASS: gdb.base/dfp-test.exp: p d64 < ds.dec64 -PASS: gdb.base/dfp-test.exp: p d128 < ds.dec128 -PASS: gdb.base/dfp-test.exp: p ds.dec32 < d32 -PASS: gdb.base/dfp-test.exp: p d64 > ds.dec64 -PASS: gdb.base/dfp-test.exp: p ds.dec128 > d128 -PASS: gdb.base/dfp-test.exp: p d32 < ds.int4 -PASS: gdb.base/dfp-test.exp: p ds.int4 > d32 -PASS: gdb.base/dfp-test.exp: p ds.dec32 < ds.int4 -PASS: gdb.base/dfp-test.exp: p ds.int4 > ds.dec64 -PASS: gdb.base/dfp-test.exp: p ds.dec128 > ds.int4 -PASS: gdb.base/dfp-test.exp: p d64 + ds.float4 -PASS: gdb.base/dfp-test.exp: p ds.double8 + d128 -PASS: gdb.base/dfp-test.exp: print ds.dec32=d32 -PASS: gdb.base/dfp-test.exp: print ds.dec64=d64 -PASS: gdb.base/dfp-test.exp: print ds.dec128=d128 -PASS: gdb.base/dfp-test.exp: print ds.dec32 = -d32 -PASS: gdb.base/dfp-test.exp: print ds.dec64 = -d64 -PASS: gdb.base/dfp-test.exp: print ds.dec128 = -d128 -PASS: gdb.base/dfp-test.exp: print ds.double8 = ds.dec64 -PASS: gdb.base/dfp-test.exp: print ds.dec64 = ds.float4 -PASS: gdb.base/dfp-test.exp: print ds.dec128 = -ds.double8 -PASS: gdb.base/dfp-test.exp: print ds.dec128 = ds.dec32 -PASS: gdb.base/dfp-test.exp: print ds.dec32 = ds.int4 -PASS: gdb.base/dfp-test.exp: print ds.int4 = 7.3dl -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 ... -PASS: gdb.base/disp-step-syscall.exp: fork: delete break 1 -PASS: gdb.base/disp-step-syscall.exp: fork: break marker -PASS: gdb.base/disp-step-syscall.exp: fork: set displaced-stepping off -PASS: gdb.base/disp-step-syscall.exp: fork: break fork -PASS: gdb.base/disp-step-syscall.exp: fork: continue to fork (1st time) -PASS: gdb.base/disp-step-syscall.exp: fork: continue to fork (2nd time) -PASS: gdb.base/disp-step-syscall.exp: fork: display/i $pc -PASS: gdb.base/disp-step-syscall.exp: fork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: fork: stepi fork insn -PASS: gdb.base/disp-step-syscall.exp: fork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: fork: continue to fork (3rd time) -PASS: gdb.base/disp-step-syscall.exp: fork: break on syscall insns -PASS: gdb.base/disp-step-syscall.exp: fork: delete break fork -PASS: gdb.base/disp-step-syscall.exp: fork: continue to syscall insn fork -PASS: gdb.base/disp-step-syscall.exp: fork: set displaced-stepping on -PASS: gdb.base/disp-step-syscall.exp: fork: single step over fork -PASS: gdb.base/disp-step-syscall.exp: fork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: fork: single step over fork final pc -PASS: gdb.base/disp-step-syscall.exp: fork: delete break fork insn -PASS: gdb.base/disp-step-syscall.exp: fork: continue to marker (fork) -PASS: gdb.base/disp-step-syscall.exp: vfork: delete break 1 -PASS: gdb.base/disp-step-syscall.exp: vfork: break marker -PASS: gdb.base/disp-step-syscall.exp: vfork: set displaced-stepping off -PASS: gdb.base/disp-step-syscall.exp: vfork: break vfork -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to vfork (1st time) -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to vfork (2nd time) -PASS: gdb.base/disp-step-syscall.exp: vfork: display/i $pc -PASS: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: vfork: stepi vfork insn -PASS: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to vfork (3rd time) -PASS: gdb.base/disp-step-syscall.exp: vfork: break on syscall insns -PASS: gdb.base/disp-step-syscall.exp: vfork: delete break vfork -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to syscall insn vfork -PASS: gdb.base/disp-step-syscall.exp: vfork: set displaced-stepping on -KPASS: gdb.base/disp-step-syscall.exp: vfork: single step over vfork (PRMS server/13796) -FAIL: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" (timeout) -FAIL: gdb.base/disp-step-syscall.exp: vfork: single step over vfork final pc -FAIL: gdb.base/disp-step-syscall.exp: vfork: delete break vfork insn -FAIL: gdb.base/disp-step-syscall.exp: vfork: continue to marker (vfork) (the program is no longer running) -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 -PASS: gdb.base/dprintf.exp: 1st dprintf, agent -PASS: gdb.base/dprintf.exp: 2nd dprintf, agent -PASS: gdb.base/dprintf.exp: dprintf info 2 -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 -PASS: 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 -PASS: gdb.base/dprintf-pending.exp: without symbols: run to resolved dprintf -PASS: gdb.base/dprintf-pending.exp: set pending dprintf -PASS: gdb.base/dprintf-pending.exp: single pending dprintf info -PASS: gdb.base/dprintf-pending.exp: run to resolved dprintf -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]) 0x55557040 -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 *) 0x55557140 -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]) 0x55557040 -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 *) 0x55557140 -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]) 0x55557040 -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 *) 0x55557140 -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]) 0x55557040 -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 *) 0x55557140 -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]) 0x55557040 -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 *) 0x55557140 -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]) 0x55557040 -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 *) 0x55557140 -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop -PASS: gdb.base/ena-dis-br.exp: rerun to main -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at auto-disabled break marker2 -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored break marker1 -PASS: gdb.base/ena-dis-br.exp: rerun to main -PASS: gdb.base/ena-dis-br.exp: continue to break marker1, 2nd time -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored & auto-deleted break marker1 -PASS: gdb.base/ena-dis-br.exp: rerun to main -PASS: gdb.base/ena-dis-br.exp: continue to ignored & auto-deleted break marker1 -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored & disabled break marker1 -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 -PASS: gdb.base/ending-run.exp: step out of main -Running ./gdb.base/enum_cond.exp ... -PASS: gdb.base/enum_cond.exp: break call_me if param.e == 1 -PASS: gdb.base/enum_cond.exp: continue to conditional breakpoint in call_me -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 ... -PASS: gdb.base/exe-lock.exp: continue until 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 -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 -FAIL: gdb.base/gcore.exp: re-load generated corefile (bad file format) -Running ./gdb.base/gcore-relro.exp ... -PASS: gdb.base/gcore-relro.exp: help gcore -PASS: gdb.base/gcore-relro.exp: save a corefile -FAIL: gdb.base/gcore-relro.exp: re-load generated corefile -FAIL: gdb.base/gcore-relro.exp: library got loaded -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 ... -PASS: gdb.base/gdb1250.exp: backtrace from abort -Running ./gdb.base/gdb1555.exp ... -PASS: gdb.base/gdb1555.exp: Step into shared lib function -PASS: 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 i686-pc-linux-gnu-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 i686-pc-linux-gnu-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 ... -PASS: gdb.base/gnu-ifunc.exp: continue to breakpoint: break-at-call -FAIL: gdb.base/gnu-ifunc.exp: p gnu_ifunc (3) -FAIL: gdb.base/gnu-ifunc.exp: step -FAIL: gdb.base/gnu-ifunc.exp: continue to break-at-nextcall -FAIL: gdb.base/gnu-ifunc.exp: continue to breakpoint: nextcall gnu_ifunc -FAIL: gdb.base/gnu-ifunc.exp: nextcall gnu_ifunc skipped -PASS: gdb.base/gnu-ifunc.exp: p gnu_ifunc executing -PASS: gdb.base/gnu-ifunc.exp: info sym gnu_ifunc executing -PASS: gdb.base/gnu-ifunc.exp: info addr gnu_ifunc -PASS: gdb.base/gnu-ifunc.exp: info sym -PASS: gdb.base/gnu-ifunc.exp: static 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 -PASS: 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) -PASS: 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) -PASS: gdb.base/hbreak2.exp: continue until exit at recursive next test -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 -FAIL: gdb.base/info-proc.exp: core break.gcore -FAIL: 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 -PASS: gdb.base/jit.exp: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit.exp: one_jit_test-1: set var count = 1 -PASS: gdb.base/jit.exp: one_jit_test-1: continue to breakpoint: break here 1 -PASS: gdb.base/jit.exp: one_jit_test-1: info function jit_function -PASS: 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 -PASS: gdb.base/jit.exp: one_jit_test-2: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit.exp: one_jit_test-2: set var count = 2 -PASS: gdb.base/jit.exp: one_jit_test-2: continue to breakpoint: break here 1 -PASS: gdb.base/jit.exp: one_jit_test-2: info function jit_function -PASS: 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 -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: set var count = 1 -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: continue to breakpoint: break here 1 -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: info function jit_function -PASS: 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 -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var jit_libname = "jit-main.so" -PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here after-dlopen -PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 0 -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var argc = 2 -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var count = 1 -PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 1 -PASS: gdb.base/jit-so.exp: one_jit_test-1: info function jit_function -PASS: 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 -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var jit_libname = "jit-main.so" -PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here after-dlopen -PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 0 -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var argc = 2 -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var count = 2 -PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 1 -PASS: gdb.base/jit-so.exp: one_jit_test-2: info function jit_function -PASS: 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 ... -PASS: gdb.base/kill-after-signal.exp: handle SIGUSR1 stop print pass -PASS: gdb.base/kill-after-signal.exp: continue -PASS: gdb.base/kill-after-signal.exp: stepi -PASS: gdb.base/kill-after-signal.exp: kill -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 -PASS: gdb.base/langs.exp: continue until exit at langs.exp -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 -FAIL: 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)" (12) -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 -PASS: 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 ... -PASS: gdb.base/morestack.exp: continue -FAIL: gdb.base/morestack.exp: up 3000 -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 -PASS: 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) -PASS: gdb.base/pending.exp: run to resolved breakpoint 1 (without symbols) -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 -PASS: gdb.base/pending.exp: continue to resolved breakpoint 2 -PASS: gdb.base/pending.exp: continue to resolved breakpoint 1 -PASS: gdb.base/pending.exp: Disable other breakpoints -PASS: gdb.base/pending.exp: Disable other breakpoints -PASS: gdb.base/pending.exp: continue to resolved breakpoint 3 -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 ... -PASS: 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 -PASS: gdb.base/pointers.exp: print object pointed to -PASS: 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++ -PASS: gdb.base/pointers.exp: pointer assignment -PASS: gdb.base/pointers.exp: and post-increment -PASS: gdb.base/pointers.exp: set y = *--v_int_pointer2 -PASS: gdb.base/pointers.exp: pointer assignment -PASS: 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 -PASS: gdb.base/pointers.exp: print array element through pointer -PASS: 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 -PASS: 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" -PASS: gdb.base/printcmds.exp: p *"foo" -PASS: gdb.base/printcmds.exp: ptype *"foo" -PASS: gdb.base/printcmds.exp: p &*"foo" -PASS: gdb.base/printcmds.exp: ptype &*"foo" -PASS: 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 -PASS: gdb.base/printcmds.exp: printf "string=%.4sxx\n", teststring -PASS: 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 -PASS: 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 -PASS: gdb.base/print-file-var.exp: print 'print-file-var-lib1.c'::this_version_id == v1 -PASS: 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 -FAIL: gdb.base/step-test.exp: stepi into function's first source line -FAIL: gdb.base/step-test.exp: stepi: finish call -FAIL: 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 -PASS: gdb.base/step-test.exp: continue until exit at step-test.exp -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 -PASS: 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 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: gdb.base/store.exp: var double l; print old l, expecting -1 -FAIL: gdb.base/store.exp: var double l; print old r, expecting -2 -PASS: gdb.base/store.exp: var double l; setting l to 4 -FAIL: 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 -FAIL: gdb.base/store.exp: var doublest l; print old l, expecting -1 -FAIL: gdb.base/store.exp: var doublest l; print old r, expecting -2 -FAIL: gdb.base/store.exp: var doublest l; setting l to 4 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: gdb.base/store.exp: upvar double l; print old l, expecting -1 -FAIL: gdb.base/store.exp: upvar double l; print old r, expecting -2 -PASS: gdb.base/store.exp: upvar double l; set l to 4 -FAIL: 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 -FAIL: gdb.base/store.exp: upvar doublest l; print old l, expecting -1 -FAIL: gdb.base/store.exp: upvar doublest l; print old r, expecting -2 -FAIL: gdb.base/store.exp: upvar doublest l; set l to 4 -FAIL: gdb.base/store.exp: upvar doublest l; print new l, expecting 4 -PASS: gdb.base/store.exp: tbreak wack_struct_1 -PASS: gdb.base/store.exp: continue to wack_struct_1 -PASS: 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 -PASS: gdb.base/store.exp: var struct 1 u; print new u, expecting {s = \{1}} -PASS: gdb.base/store.exp: tbreak wack_struct_2 -PASS: gdb.base/store.exp: continue to wack_struct_2 -PASS: 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 -PASS: gdb.base/store.exp: var struct 2 u; print new u, expecting {s = \{1, 2}} -PASS: gdb.base/store.exp: tbreak wack_struct_3 -PASS: gdb.base/store.exp: continue to wack_struct_3 -PASS: 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 -PASS: 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 -PASS: gdb.base/store.exp: continue to wack_struct_4 -PASS: 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 -PASS: 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 -PASS: gdb.base/structs2.exp: structs2 sanity check -PASS: gdb.base/structs2.exp: structs2 breakpoint set -PASS: gdb.base/structs2.exp: structs2 continue1 -PASS: 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; call 17 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tc -PASS: gdb.base/structs.exp: return foo; return 1 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 3 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 3 structs-tc -PASS: gdb.base/structs.exp: return foo; return 3 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 3 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 3 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 3 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 3 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 3 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 4 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 4 structs-tc -PASS: gdb.base/structs.exp: return foo; return 4 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 4 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 4 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 4 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 4 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 4 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 5 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 5 structs-tc -PASS: gdb.base/structs.exp: return foo; return 5 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 5 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 5 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 5 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 5 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 5 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 5 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 6 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 6 structs-tc -PASS: gdb.base/structs.exp: return foo; return 6 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 6 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 6 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 6 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 6 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 6 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 6 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 7 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 7 structs-tc -PASS: gdb.base/structs.exp: return foo; return 7 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 7 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 7 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 7 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 7 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 7 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 7 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 8 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 8 structs-tc -PASS: gdb.base/structs.exp: return foo; return 8 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 8 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 8 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 8 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 8 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 8 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 8 structs-tc -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: ptype foo1; structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 1 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-ts -PASS: gdb.base/structs.exp: return foo; return 1 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 1 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ts -PASS: gdb.base/structs.exp: return foo; return 2 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 3 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 3 structs-ts -PASS: gdb.base/structs.exp: return foo; return 3 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 3 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 3 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 3 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 3 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 3 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 4 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 4 structs-ts -PASS: gdb.base/structs.exp: return foo; return 4 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 4 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 4 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 4 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 4 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 4 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-ts -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: ptype foo1; structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 1 structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-ti -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-ti -PASS: gdb.base/structs.exp: return foo; return 1 structs-ti -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-ti -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-ti -PASS: gdb.base/structs.exp: finish foo; return 1 structs-ti -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ti -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ti -PASS: gdb.base/structs.exp: return foo; return 2 structs-ti -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ti -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ti -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ti -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti -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: ptype foo1; structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tl -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tl -PASS: gdb.base/structs.exp: return foo; return 1 structs-tl -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tl -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tl -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tl -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tl -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tl -PASS: gdb.base/structs.exp: return foo; return 2 structs-tl -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tl -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tl -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tl -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl -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: ptype foo1; structs-tll -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tll -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tll -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tll -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tll -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tll -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tll -PASS: gdb.base/structs.exp: return foo; return 1 structs-tll -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tll -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tll -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tll -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tll -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tll -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tll -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: ptype foo1; structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tf -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tf -PASS: gdb.base/structs.exp: return foo; return 1 structs-tf -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tf -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tf -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tf -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf -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: ptype foo1; structs-td -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-td -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-td -PASS: gdb.base/structs.exp: p/c L; call 1 structs-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-td -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-td -PASS: gdb.base/structs.exp: return foo; return 1 structs-td -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-td -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-td -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-td -PASS: gdb.base/structs.exp: finish foo; return 1 structs-td -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-td -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-td -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: ptype foo1; structs-tld -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tld -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tld -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tld -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tld -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tld -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tld -PASS: gdb.base/structs.exp: return foo; return 1 structs-tld -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tld -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tld -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tld -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tld -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tld -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tld -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: ptype foo2; structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 7 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 7 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 7 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 8 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 8 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 8 structs-ts-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts-tc -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: ptype foo2; structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-ti-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti-tc -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: ptype foo2; structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tl-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl-tc -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: ptype foo2; structs-tll-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tll-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tll-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tll-tc -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: ptype foo2; structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tf-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-tc -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: ptype foo2; structs-td-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td-tc -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: ptype foo2; structs-tld-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tld-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tld-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tld-tc -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: ptype foo2; structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tc-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ts -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: ptype foo2; structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ti -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: ptype foo2; structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-tl -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: ptype foo2; structs-tc-tll -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tll -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tll -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: ptype foo2; structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-tf -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: ptype foo2; structs-tc-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-td -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: ptype foo2; structs-tc-tld -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tld -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tld -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: ptype foo2; structs-td-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-td-tf -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-td-tf -PASS: gdb.base/structs.exp: return foo; return 2 structs-td-tf -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-td-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-td-tf -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-td-tf -PASS: gdb.base/structs.exp: finish foo; return 2 structs-td-tf -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-td-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-td-tf -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: ptype foo2; structs-tf-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf-td -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf-td -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf-td -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-td -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-td -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf-td -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf-td -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf-td -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf-td -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-td -Running ./gdb.base/subst.exp ... -PASS: gdb.base/subst.exp: deactivate GDB's confirmation interface -PASS: gdb.base/subst.exp: show substitute-path, no rule entered yet -PASS: gdb.base/subst.exp: show substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: show substitute-path, too many arguments -PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path, too many arguments -PASS: gdb.base/subst.exp: set substitute-path, too many arguments -PASS: gdb.base/subst.exp: set substitute-path, too few arguments -PASS: gdb.base/subst.exp: set substitute-path, first argument is empty string -PASS: gdb.base/subst.exp: add from -> to substitution rule -PASS: gdb.base/subst.exp: add from1 -> to1 substitution rule -PASS: gdb.base/subst.exp: add source -> destination substitution rule -PASS: gdb.base/subst.exp: add depuis -> vers substitution rule -PASS: gdb.base/subst.exp: add substitution rule to empty string -PASS: gdb.base/subst.exp: show substitute-path after all paths added -PASS: gdb.base/subst.exp: show substitute-path from, after all paths added -PASS: gdb.base/subst.exp: show substitute-path depuis, after all paths added -PASS: gdb.base/subst.exp: show substitute-path garbage, after all paths added -PASS: gdb.base/subst.exp: unset substitute-path from -PASS: gdb.base/subst.exp: show substitute-path from, after unsetting it -PASS: gdb.base/subst.exp: show substitute-path after from rule removed -PASS: gdb.base/subst.exp: unset substitute-path from after the rule was removed -PASS: gdb.base/subst.exp: unset substitute-path depuis (middle of list) -PASS: gdb.base/subst.exp: show substitute-path after depuis rule removed -PASS: gdb.base/subst.exp: unset substitute-path empty (end of list) -PASS: gdb.base/subst.exp: show substitute-path after empty rule removed -PASS: gdb.base/subst.exp: remove all remaining substitution rules -PASS: gdb.base/subst.exp: show substitute-path after all remaining rules removed -Running ./gdb.base/symbol-without-target_section.exp ... -PASS: gdb.base/symbol-without-target_section.exp: add-symbol-file -PASS: gdb.base/symbol-without-target_section.exp: list main -PASS: gdb.base/symbol-without-target_section.exp: print symbol_without_target_section -Running ./gdb.base/term.exp ... -Running ./gdb.base/testenv.exp ... -Running ./gdb.base/trace-commands.exp ... -PASS: gdb.base/trace-commands.exp: show trace-commands says off -PASS: gdb.base/trace-commands.exp: source -v -PASS: gdb.base/trace-commands.exp: set trace-commands -PASS: gdb.base/trace-commands.exp: show trace-commands says on -PASS: gdb.base/trace-commands.exp: simple trace-commands test -PASS: gdb.base/trace-commands.exp: nested trace-commands test -PASS: gdb.base/trace-commands.exp: define user command -PASS: gdb.base/trace-commands.exp: nested trace-commands test with source -PASS: gdb.base/trace-commands.exp: depth resets on error part 1 -PASS: gdb.base/trace-commands.exp: depth resets on error part 2 -Running ./gdb.base/tui-layout.exp ... -PASS: gdb.base/tui-layout.exp: layout asm -Running ./gdb.base/twice.exp ... -PASS: gdb.base/twice.exp: step -Running ./gdb.base/type-opaque.exp ... -PASS: gdb.base/type-opaque.exp: opaque struct type resolving -PASS: gdb.base/type-opaque.exp: empty struct type resolving -PASS: gdb.base/type-opaque.exp: filled struct type resolving -PASS: gdb.base/type-opaque.exp: opaque union type resolving -PASS: gdb.base/type-opaque.exp: empty union type resolving -PASS: gdb.base/type-opaque.exp: filled union type resolving -Running ./gdb.base/ui-redirect.exp ... -PASS: gdb.base/ui-redirect.exp: commands -PASS: gdb.base/ui-redirect.exp: print 1 -PASS: gdb.base/ui-redirect.exp: end -PASS: gdb.base/ui-redirect.exp: set logging file /dev/null -PASS: gdb.base/ui-redirect.exp: set logging on -PASS: gdb.base/ui-redirect.exp: save breakpoints /dev/null -PASS: gdb.base/ui-redirect.exp: set logging off -PASS: gdb.base/ui-redirect.exp: help -Running ./gdb.base/unload.exp ... -PASS: gdb.base/unload.exp: pending breakpoint info before run -PASS: gdb.base/unload.exp: running program -PASS: gdb.base/unload.exp: pending breakpoint info on first run at shrfunc1 -PASS: gdb.base/unload.exp: continuing to unloaded libfile -PASS: gdb.base/unload.exp: print y from libfile -PASS: gdb.base/unload.exp: rerun to shared library breakpoint -PASS: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc1 -PASS: gdb.base/unload.exp: continuing to unloaded libfile -PASS: gdb.base/unload.exp: continue to shrfunc2 -PASS: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc2 -PASS: gdb.base/unload.exp: continuing to unloaded libfile2 -PASS: gdb.base/unload.exp: print y from libfile2 -Running ./gdb.base/until.exp ... -PASS: gdb.base/until.exp: until line number -PASS: gdb.base/until.exp: malformed until -PASS: gdb.base/until.exp: until factorial, recursive function -PASS: gdb.base/until.exp: until func, not called by current frame -Running ./gdb.base/unwindonsignal.exp ... -Running ./gdb.base/valgrind-db-attach.exp ... -Running ./gdb.base/valgrind-infcall.exp ... -Running ./gdb.base/value-double-free.exp ... -PASS: gdb.base/value-double-free.exp: watch var -PASS: gdb.base/value-double-free.exp: continue -PASS: gdb.base/value-double-free.exp: print empty() -PASS: gdb.base/value-double-free.exp: help help -Running ./gdb.base/varargs.exp ... -PASS: gdb.base/varargs.exp: set print sevenbit-strings -PASS: gdb.base/varargs.exp: set print address off -PASS: gdb.base/varargs.exp: set width 0 -Running ./gdb.base/volatile.exp ... -PASS: gdb.base/volatile.exp: continue to marker1 -PASS: gdb.base/volatile.exp: up from marker1 -PASS: gdb.base/volatile.exp: ptype vox -PASS: gdb.base/volatile.exp: ptype victuals -PASS: gdb.base/volatile.exp: ptype vixen -PASS: gdb.base/volatile.exp: ptype vitriol -PASS: gdb.base/volatile.exp: ptype vellum -PASS: gdb.base/volatile.exp: ptype valve -PASS: gdb.base/volatile.exp: ptype vacuity -PASS: gdb.base/volatile.exp: ptype vertigo -PASS: gdb.base/volatile.exp: ptype vampire -PASS: gdb.base/volatile.exp: ptype viper -PASS: gdb.base/volatile.exp: ptype vigour -PASS: gdb.base/volatile.exp: ptype vapour -PASS: gdb.base/volatile.exp: ptype ventricle -PASS: gdb.base/volatile.exp: ptype vigintillion -PASS: gdb.base/volatile.exp: ptype vocation -PASS: gdb.base/volatile.exp: ptype veracity -PASS: gdb.base/volatile.exp: ptype vapidity -PASS: gdb.base/volatile.exp: ptype velocity -PASS: gdb.base/volatile.exp: ptype veneer -PASS: gdb.base/volatile.exp: ptype video -PASS: gdb.base/volatile.exp: ptype vacuum -PASS: gdb.base/volatile.exp: ptype veniality -PASS: gdb.base/volatile.exp: ptype vitality -PASS: gdb.base/volatile.exp: ptype voracity -PASS: gdb.base/volatile.exp: ptype victor -PASS: gdb.base/volatile.exp: ptype vicar -PASS: gdb.base/volatile.exp: ptype victory -PASS: gdb.base/volatile.exp: ptype vicarage -PASS: gdb.base/volatile.exp: ptype vein -PASS: gdb.base/volatile.exp: ptype vogue -PASS: gdb.base/volatile.exp: ptype cavern -PASS: gdb.base/volatile.exp: ptype coverlet -PASS: gdb.base/volatile.exp: ptype caveat -PASS: gdb.base/volatile.exp: ptype covenant -PASS: gdb.base/volatile.exp: ptype vizier -PASS: gdb.base/volatile.exp: ptype vanadium -PASS: gdb.base/volatile.exp: ptype vane -PASS: gdb.base/volatile.exp: ptype veldt -PASS: gdb.base/volatile.exp: ptype cove -PASS: gdb.base/volatile.exp: ptype cavity -PASS: gdb.base/volatile.exp: ptype vagus -PASS: gdb.base/volatile.exp: ptype vagrancy -PASS: gdb.base/volatile.exp: ptype vagary -PASS: gdb.base/volatile.exp: ptype vendor -PASS: gdb.base/volatile.exp: ptype qux2 -Running ./gdb.base/watch-cond.exp ... -PASS: gdb.base/watch-cond.exp: set write watchpoint on global variable, local condition -PASS: gdb.base/watch-cond.exp: watchpoint with global expression, local condition evaluates in correct frame -PASS: gdb.base/watch-cond.exp: set write watchpoint on local variable, local condition -PASS: gdb.base/watch-cond.exp: watchpoint with local expression, local condition evaluates in correct frame -PASS: gdb.base/watch-cond.exp: set write watchpoint on global2 variable -PASS: gdb.base/watch-cond.exp: watchpoint on global2 variable triggers -PASS: gdb.base/watch-cond.exp: condition of watchpoint 2 changes -PASS: gdb.base/watch-cond.exp: watchpoint stops with untestable local expression -Running ./gdb.base/watch-cond-infcall.exp ... -PASS: gdb.base/watch-cond-infcall.exp: sw: watch var if return_1 () -PASS: gdb.base/watch-cond-infcall.exp: sw: continue -Running ./gdb.base/watch-non-mem.exp ... -PASS: gdb.base/watch-non-mem.exp: set write watchpoint on $pc -PASS: gdb.base/watch-non-mem.exp: watchpoint on $pc works -Running ./gdb.base/watchpoint-cond-gone.exp ... -PASS: gdb.base/watchpoint-cond-gone.exp: set can-use-hw-watchpoints 0 -PASS: gdb.base/watchpoint-cond-gone.exp: continue to breakpoint: Place to set the watchpoint -PASS: gdb.base/watchpoint-cond-gone.exp: Place the watchpoint -PASS: gdb.base/watchpoint-cond-gone.exp: Catch the no longer valid watchpoint -Running ./gdb.base/watchpoint-delete.exp ... -PASS: gdb.base/watchpoint-delete.exp: set can-use-hw-watchpoints 0 -PASS: gdb.base/watchpoint-delete.exp: continue to breakpoint: break-here -PASS: gdb.base/watchpoint-delete.exp: watch x -PASS: gdb.base/watchpoint-delete.exp: delete $bpnum -Running ./gdb.base/watchpoint.exp ... -PASS: gdb.base/watchpoint.exp: disable fast watches -PASS: gdb.base/watchpoint.exp: show disable fast watches -PASS: gdb.base/watchpoint.exp: set slow conditional watch -PASS: gdb.base/watchpoint.exp: trigger slow conditional watch -PASS: gdb.base/watchpoint.exp: delete watch ival3 -PASS: gdb.base/watchpoint.exp: set slow condition watch w/thread -PASS: gdb.base/watchpoint.exp: delete watch w/condition and thread -PASS: gdb.base/watchpoint.exp: rwatch disallowed when can-set-hw-watchpoints cleared -PASS: gdb.base/watchpoint.exp: set breakpoint at marker1 -PASS: gdb.base/watchpoint.exp: set breakpoint at marker2 -PASS: gdb.base/watchpoint.exp: info break in watchpoint.exp -PASS: gdb.base/watchpoint.exp: set watchpoint on ival3 -PASS: gdb.base/watchpoint.exp: watchpoint found in watchpoint/breakpoint table -PASS: gdb.base/watchpoint.exp: disable watchpoint -PASS: gdb.base/watchpoint.exp: disable watchpoint in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: run to marker1 in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: enable watchpoint -PASS: gdb.base/watchpoint.exp: break func1 -PASS: gdb.base/watchpoint.exp: set $func1_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: continue to breakpoint at func1 -PASS: gdb.base/watchpoint.exp: watchpoint hit, first time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 1 -PASS: gdb.base/watchpoint.exp: delete $func1_breakpoint_number -PASS: gdb.base/watchpoint.exp: watchpoint hit, second time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 2 -PASS: gdb.base/watchpoint.exp: watchpoint hit, third time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 3 -PASS: gdb.base/watchpoint.exp: watchpoint hit, fourth time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 4 -PASS: gdb.base/watchpoint.exp: watchpoint hit, fifth time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 5 -PASS: gdb.base/watchpoint.exp: continue to marker2 -PASS: gdb.base/watchpoint.exp: watchpoint disabled -PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: watchpoints found in watchpoint/breakpoint table -PASS: gdb.base/watchpoint.exp: disable watchpoint in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: run to marker1 in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watchpoint enabled -PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, first time -PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, second time -PASS: gdb.base/watchpoint.exp: disable watchpoint #2 in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watchpoint disabled in table -PASS: gdb.base/watchpoint.exp: disabled watchpoint skipped -PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watch ival2 -PASS: gdb.base/watchpoint.exp: break func2 if 0 -PASS: gdb.base/watchpoint.exp: p $func2_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: calling function with watchpoint enabled -PASS: gdb.base/watchpoint.exp: finish from marker1 -PASS: gdb.base/watchpoint.exp: back at main from marker1 -PASS: gdb.base/watchpoint.exp: next to `for' in watchpoint.exp -PASS: gdb.base/watchpoint.exp: until to ival1 assignment -PASS: gdb.base/watchpoint.exp: until to ival3 assignment -PASS: gdb.base/watchpoint.exp: until out of loop -PASS: gdb.base/watchpoint.exp: step to ival2 assignment -PASS: gdb.base/watchpoint.exp: watch ptr1->val -PASS: gdb.base/watchpoint.exp: break marker5 -PASS: gdb.base/watchpoint.exp: Test complex watchpoint -PASS: gdb.base/watchpoint.exp: did not trigger wrong watchpoint -PASS: gdb.base/watchpoint.exp: disable in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: break marker6 -PASS: gdb.base/watchpoint.exp: continue to marker6 -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set local watch -PASS: gdb.base/watchpoint.exp: trigger local watch -PASS: gdb.base/watchpoint.exp: self-delete local watch -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set partially local watch -PASS: gdb.base/watchpoint.exp: trigger1 partially local watch -PASS: gdb.base/watchpoint.exp: trigger2 partially local watch -PASS: gdb.base/watchpoint.exp: self-delete partially local watch -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set static local watch -PASS: gdb.base/watchpoint.exp: trigger static local watch -PASS: gdb.base/watchpoint.exp: continue after trigger static local watch -PASS: gdb.base/watchpoint.exp: static local watch did not self-delete -PASS: gdb.base/watchpoint.exp: tbreak recurser -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: next past local_x initialization -PASS: gdb.base/watchpoint.exp: set local watch in recursive call -PASS: gdb.base/watchpoint.exp: trigger local watch in recursive call -PASS: gdb.base/watchpoint.exp: self-delete local watch in recursive call -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: tbreak recurser -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: next past local_x initialization -PASS: gdb.base/watchpoint.exp: set local watch in recursive call with explicit scope -PASS: gdb.base/watchpoint.exp: trigger local watch with explicit scope in recursive call -PASS: gdb.base/watchpoint.exp: self-delete local watch with explicit scope in recursive call (2) -PASS: gdb.base/watchpoint.exp: disable in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: watchpoint refused to insert on nonexistent struct member -PASS: gdb.base/watchpoint.exp: watch global_ptr -PASS: gdb.base/watchpoint.exp: watch *(int *) 0 -PASS: gdb.base/watchpoint.exp: watch -location *global_ptr -PASS: gdb.base/watchpoint.exp: watch *global_ptr -PASS: gdb.base/watchpoint.exp: set $global_ptr_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: global_ptr next -PASS: gdb.base/watchpoint.exp: next over ptr init -PASS: gdb.base/watchpoint.exp: next over buffer set -PASS: gdb.base/watchpoint.exp: delete $global_ptr_breakpoint_number -PASS: gdb.base/watchpoint.exp: watch **global_ptr_ptr -PASS: gdb.base/watchpoint.exp: set $global_ptr_ptr_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: global_ptr_ptr next -PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr init -PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr buffer set -PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr pointer advance -PASS: gdb.base/watchpoint.exp: delete $global_ptr_ptr_breakpoint_number -PASS: gdb.base/watchpoint.exp: continue to breakpoint: second x assignment -PASS: gdb.base/watchpoint.exp: watch x -PASS: gdb.base/watchpoint.exp: next after watch x -PASS: gdb.base/watchpoint.exp: delete watch x -PASS: gdb.base/watchpoint.exp: watch buf -PASS: gdb.base/watchpoint.exp: watchpoint on buf hit -PASS: gdb.base/watchpoint.exp: delete watch buf -PASS: gdb.base/watchpoint.exp: number is constant -PASS: gdb.base/watchpoint.exp: number with cast is constant -PASS: gdb.base/watchpoint.exp: marker1 is constant -PASS: gdb.base/watchpoint.exp: watch count + 6 -PASS: gdb.base/watchpoint.exp: delete watchpoint `count + 6' -PASS: gdb.base/watchpoint.exp: watch 7 + count -PASS: gdb.base/watchpoint.exp: delete watchpoint `7 + count' -PASS: gdb.base/watchpoint.exp: watch $pc -PASS: gdb.base/watchpoint.exp: disable watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: reenable watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: watchpoint `$pc' is enabled -PASS: gdb.base/watchpoint.exp: delete watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func5 breakpoint here -PASS: gdb.base/watchpoint.exp: watch -location .x -PASS: gdb.base/watchpoint.exp: continue with watch -location -PASS: gdb.base/watchpoint.exp: delete watch -location -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func6 breakpoint here -PASS: gdb.base/watchpoint.exp: watch foo2 -PASS: gdb.base/watchpoint.exp: continue with watch foo2 -PASS: gdb.base/watchpoint.exp: delete watch foo2 -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func7 breakpoint here -PASS: gdb.base/watchpoint.exp: watch foo4 -PASS: gdb.base/watchpoint.exp: continue with watch foo4 -PASS: gdb.base/watchpoint.exp: delete watch foo4 -Running ./gdb.base/watchpoint-hw.exp ... -Running ./gdb.base/watchpoint-hw-hit-once.exp ... -Running ./gdb.base/watchpoints.exp ... -PASS: gdb.base/watchpoints.exp: watchpoint hit, first time -PASS: gdb.base/watchpoints.exp: watchpoint hit, first time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 1 -PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, second time -PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 2 -PASS: gdb.base/watchpoints.exp: watchpoint hit, second time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 2 -PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, third time -PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 3 -PASS: gdb.base/watchpoints.exp: watchpoint hit, third time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 3 -PASS: gdb.base/watchpoints.exp: watchpoint hit, fourth time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 4 -PASS: gdb.base/watchpoints.exp: watchpoint hit, fifth time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 5 -Running ./gdb.base/watchpoint-solib.exp ... -PASS: gdb.base/watchpoint-solib.exp: set pending breakpoint -PASS: gdb.base/watchpoint-solib.exp: continue to foo -PASS: gdb.base/watchpoint-solib.exp: set watchpoint on g -PASS: gdb.base/watchpoint-solib.exp: continue to watchpoint hit -PASS: gdb.base/watchpoint-solib.exp: rerun to main -PASS: gdb.base/watchpoint-solib.exp: continue to foo again -PASS: gdb.base/watchpoint-solib.exp: continue to watchpoint hit again -Running ./gdb.base/watch-read.exp ... -Running ./gdb.base/watch_thread_num.exp ... -Running ./gdb.base/watch-vfork.exp ... -Running ./gdb.base/wchar.exp ... -PASS: gdb.base/wchar.exp: print narrow -PASS: gdb.base/wchar.exp: print single -PASS: gdb.base/wchar.exp: print simple -PASS: gdb.base/wchar.exp: print difficile -PASS: gdb.base/wchar.exp: print simple[2] -PASS: gdb.base/wchar.exp: print difficile[2] -PASS: gdb.base/wchar.exp: print repeat -PASS: gdb.base/wchar.exp: print repeat_p -PASS: gdb.base/wchar.exp: set print null on -PASS: gdb.base/wchar.exp: print repeat (print null on) -PASS: gdb.base/wchar.exp: set print elements 3 -PASS: gdb.base/wchar.exp: print repeat (print elements 3) -PASS: gdb.base/wchar.exp: print repeat_p (print elements 3) -Running ./gdb.base/whatis.exp ... -PASS: gdb.base/whatis.exp: whatis char -PASS: gdb.base/whatis.exp: whatis signed char -PASS: gdb.base/whatis.exp: whatis unsigned char -PASS: gdb.base/whatis.exp: whatis short -PASS: gdb.base/whatis.exp: whatis signed short -PASS: gdb.base/whatis.exp: whatis unsigned short -PASS: gdb.base/whatis.exp: whatis int -PASS: gdb.base/whatis.exp: whatis signed int -PASS: gdb.base/whatis.exp: whatis unsigned int -PASS: gdb.base/whatis.exp: whatis long -PASS: gdb.base/whatis.exp: whatis signed long -PASS: gdb.base/whatis.exp: whatis unsigned long -PASS: gdb.base/whatis.exp: whatis unsigned long long -PASS: gdb.base/whatis.exp: whatis float -PASS: gdb.base/whatis.exp: whatis double -PASS: gdb.base/whatis.exp: whatis char array -PASS: gdb.base/whatis.exp: whatis signed char array -PASS: gdb.base/whatis.exp: whatis unsigned char array -PASS: gdb.base/whatis.exp: whatis short array -PASS: gdb.base/whatis.exp: whatis signed short array -PASS: gdb.base/whatis.exp: whatis unsigned short array -PASS: gdb.base/whatis.exp: whatis int array -PASS: gdb.base/whatis.exp: whatis signed int array -PASS: gdb.base/whatis.exp: whatis unsigned int array -PASS: gdb.base/whatis.exp: whatis long array -PASS: gdb.base/whatis.exp: whatis signed long array -PASS: gdb.base/whatis.exp: whatis unsigned long array -PASS: gdb.base/whatis.exp: whatis unsigned long array -PASS: gdb.base/whatis.exp: whatis float array -PASS: gdb.base/whatis.exp: whatis double array -PASS: gdb.base/whatis.exp: whatis char pointer -PASS: gdb.base/whatis.exp: whatis signed char pointer -PASS: gdb.base/whatis.exp: whatis unsigned char pointer -PASS: gdb.base/whatis.exp: whatis short pointer -PASS: gdb.base/whatis.exp: whatis signed short pointer -PASS: gdb.base/whatis.exp: whatis unsigned short pointer -PASS: gdb.base/whatis.exp: whatis int pointer -PASS: gdb.base/whatis.exp: whatis signed int pointer -PASS: gdb.base/whatis.exp: whatis unsigned int pointer -PASS: gdb.base/whatis.exp: whatis long pointer -PASS: gdb.base/whatis.exp: whatis signed long pointer -PASS: gdb.base/whatis.exp: whatis unsigned long pointer -PASS: gdb.base/whatis.exp: whatis long long pointer -PASS: gdb.base/whatis.exp: whatis signed long long pointer -PASS: gdb.base/whatis.exp: whatis unsigned long long pointer -PASS: gdb.base/whatis.exp: whatis float pointer -PASS: gdb.base/whatis.exp: whatis double pointer -PASS: gdb.base/whatis.exp: whatis named structure -PASS: gdb.base/whatis.exp: whatis named structure using type name -PASS: gdb.base/whatis.exp: whatis unnamed structure -PASS: gdb.base/whatis.exp: whatis named union -PASS: gdb.base/whatis.exp: whatis named union using type name -PASS: gdb.base/whatis.exp: whatis unnamed union -PASS: gdb.base/whatis.exp: whatis char function -PASS: gdb.base/whatis.exp: whatis signed char function -PASS: gdb.base/whatis.exp: whatis unsigned char function -PASS: gdb.base/whatis.exp: whatis short function -PASS: gdb.base/whatis.exp: whatis signed short function -PASS: gdb.base/whatis.exp: whatis unsigned short function -PASS: gdb.base/whatis.exp: whatis int function -PASS: gdb.base/whatis.exp: whatis signed int function -PASS: gdb.base/whatis.exp: whatis unsigned int function -PASS: gdb.base/whatis.exp: whatis long function -PASS: gdb.base/whatis.exp: whatis signed long function -PASS: gdb.base/whatis.exp: whatis unsigned long function -PASS: gdb.base/whatis.exp: whatis long long function -PASS: gdb.base/whatis.exp: whatis signed long long function -PASS: gdb.base/whatis.exp: whatis unsigned long long function -PASS: gdb.base/whatis.exp: whatis float function -PASS: gdb.base/whatis.exp: whatis double function -PASS: gdb.base/whatis.exp: whatis complicated structure -PASS: gdb.base/whatis.exp: whatis complicated union -PASS: gdb.base/whatis.exp: whatis enumeration -PASS: gdb.base/whatis.exp: whatis enumeration using type name -PASS: gdb.base/whatis.exp: whatis outer structure -PASS: gdb.base/whatis.exp: whatis outer structure member -PASS: gdb.base/whatis.exp: whatis inner structure -PASS: gdb.base/whatis.exp: whatis inner structure member -PASS: gdb.base/whatis.exp: whatis inner union -PASS: gdb.base/whatis.exp: whatis inner union member -PASS: gdb.base/whatis.exp: whatis using typedef type name -PASS: gdb.base/whatis.exp: whatis applied to variable defined by typedef -PASS: gdb.base/whatis.exp: whatis applied to pointer to pointer to function -PASS: gdb.base/whatis.exp: whatis applied to const pointer to pointer to function -PASS: gdb.base/whatis.exp: whatis applied to pointer to const pointer to function -PASS: gdb.base/whatis.exp: whatis applied to pointer to function returning pointer to int -PASS: gdb.base/whatis.exp: whatis applied to pointer to pointer to function returning pointer to int -PASS: gdb.base/whatis.exp: whatis applied to pointer to function returning pointer to array -PASS: gdb.base/whatis.exp: whatis applied to pointer to function taking int,int and returning int -PASS: gdb.base/whatis.exp: whatis applied to pointer to function taking const int ptr and varargs and returning int -PASS: gdb.base/whatis.exp: whatis applied to function with types trailing 'void' -PASS: gdb.base/whatis.exp: whatis applied to function with 'void' parameter type -Running ./gdb.base/whatis-exp.exp ... -PASS: gdb.base/whatis-exp.exp: set variable x=14 -PASS: gdb.base/whatis-exp.exp: set variable y=2 -PASS: gdb.base/whatis-exp.exp: set variable z=2 -PASS: gdb.base/whatis-exp.exp: set variable w=3 -PASS: gdb.base/whatis-exp.exp: print value of x -PASS: gdb.base/whatis-exp.exp: print value of y -PASS: gdb.base/whatis-exp.exp: print value of z -PASS: gdb.base/whatis-exp.exp: print value of w -PASS: gdb.base/whatis-exp.exp: whatis value of x+y -PASS: gdb.base/whatis-exp.exp: whatis value of x-y -PASS: gdb.base/whatis-exp.exp: whatis value of x*y -PASS: gdb.base/whatis-exp.exp: whatis value of x/y -PASS: gdb.base/whatis-exp.exp: whatis value of x%y -PASS: gdb.base/whatis-exp.exp: whatis value of x=y -PASS: gdb.base/whatis-exp.exp: whatis value of x+=2 -PASS: gdb.base/whatis-exp.exp: whatis value of ++x -PASS: gdb.base/whatis-exp.exp: whatis value of --x -PASS: gdb.base/whatis-exp.exp: whatis value of x++ -PASS: gdb.base/whatis-exp.exp: whatis value of x-- -Running ./gdb.btrace/enable.exp ... -Running ./gdb.btrace/function_call_history.exp ... -Running ./gdb.btrace/instruction_history.exp ... -Running ./gdb.cell/arch.exp ... -Running ./gdb.cell/break.exp ... -Running ./gdb.cell/bt.exp ... -Running ./gdb.cell/core.exp ... -Running ./gdb.cell/data.exp ... -Running ./gdb.cell/dwarfaddr.exp ... -Running ./gdb.cell/ea-cache.exp ... -Running ./gdb.cell/ea-standalone.exp ... -Running ./gdb.cell/ea-test.exp ... -Running ./gdb.cell/fork.exp ... -Running ./gdb.cell/f-regs.exp ... -Running ./gdb.cell/gcore.exp ... -Running ./gdb.cell/mem-access.exp ... -Running ./gdb.cell/ptype.exp ... -Running ./gdb.cell/registers.exp ... -Running ./gdb.cell/sizeof.exp ... -Running ./gdb.cell/solib.exp ... -Running ./gdb.cell/solib-symbol.exp ... -Running ./gdb.cp/abstract-origin.exp ... -PASS: gdb.cp/abstract-origin.exp: continue to breakpoint: break-here -PASS: gdb.cp/abstract-origin.exp: p problem -Running ./gdb.cp/ambiguous.exp ... -Running ./gdb.cp/annota2.exp ... -Running ./gdb.cp/annota3.exp ... -Running ./gdb.cp/anon-ns.exp ... -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::doit(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::doit(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)' -Running ./gdb.cp/anon-struct.exp ... -FAIL: gdb.cp/anon-struct.exp: print type of t::t -PASS: gdb.cp/anon-struct.exp: print type of X::t2 -FAIL: gdb.cp/anon-struct.exp: print type of X::t2::t2 -FAIL: gdb.cp/anon-struct.exp: print type of t3::~t3 -Running ./gdb.cp/anon-union.exp ... -PASS: gdb.cp/anon-union.exp: set width 0 -PASS: gdb.cp/anon-union.exp: next 1 -PASS: gdb.cp/anon-union.exp: print foo 1 -PASS: gdb.cp/anon-union.exp: next 2 -PASS: gdb.cp/anon-union.exp: print foo 2 -PASS: gdb.cp/anon-union.exp: set var foo.cloth -PASS: gdb.cp/anon-union.exp: print foo 3 -PASS: gdb.cp/anon-union.exp: next 3 -PASS: gdb.cp/anon-union.exp: print foo 4 -PASS: gdb.cp/anon-union.exp: set var foo.pebble -PASS: gdb.cp/anon-union.exp: print foo 5 -PASS: gdb.cp/anon-union.exp: set var foo.qux -PASS: gdb.cp/anon-union.exp: print foo 6 -PASS: gdb.cp/anon-union.exp: set var foo.mux -PASS: gdb.cp/anon-union.exp: print foo 7 -PASS: gdb.cp/anon-union.exp: set var foo.x.rock -PASS: gdb.cp/anon-union.exp: print foo 8 -PASS: gdb.cp/anon-union.exp: set var foo.x.rock2 -PASS: gdb.cp/anon-union.exp: print foo 9 -PASS: gdb.cp/anon-union.exp: next 4 -PASS: gdb.cp/anon-union.exp: print w 1 -PASS: gdb.cp/anon-union.exp: print z 1 -PASS: gdb.cp/anon-union.exp: next 5 -PASS: gdb.cp/anon-union.exp: print w 2 -PASS: gdb.cp/anon-union.exp: print z 2 -PASS: gdb.cp/anon-union.exp: set var z -PASS: gdb.cp/anon-union.exp: print w 3 -PASS: gdb.cp/anon-union.exp: print z 3 -Running ./gdb.cp/arg-reference.exp ... -PASS: gdb.cp/arg-reference.exp: No false reference -Running ./gdb.cp/baseenum.exp ... -PASS: gdb.cp/baseenum.exp: continue to breakpoint: breakpoint 1 -PASS: gdb.cp/baseenum.exp: Print enum constant X of class A -PASS: gdb.cp/baseenum.exp: continue to breakpoint: breakpoint 2 -PASS: gdb.cp/baseenum.exp: Print enum constant X of class A in namespace N -Running ./gdb.cp/bool.exp ... -PASS: gdb.cp/bool.exp: print return_true() -PASS: gdb.cp/bool.exp: print return_false() -Running ./gdb.cp/breakpoint.exp ... -PASS: gdb.cp/breakpoint.exp: continue to C1::Nested::foo -PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method -PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method 2 -PASS: gdb.cp/breakpoint.exp: continue to breakpoint -PASS: gdb.cp/breakpoint.exp: check the member variable -PASS: gdb.cp/breakpoint.exp: continue to breakpoint -PASS: gdb.cp/breakpoint.exp: check the member variable -Running ./gdb.cp/bs15503.exp ... -PASS: gdb.cp/bs15503.exp: break StringTest::testFunction -PASS: gdb.cp/bs15503.exp: continue to StringTest -PASS: gdb.cp/bs15503.exp: continue to breakpoint: find position where blank needs to be inserted -FAIL: gdb.cp/bs15503.exp: print s.length() -FAIL: gdb.cp/bs15503.exp: print s[0] -FAIL: gdb.cp/bs15503.exp: print s[s.length()-1] -PASS: gdb.cp/bs15503.exp: print (const char *) s -FAIL: gdb.cp/bs15503.exp: print (const char *) s.substr(0,4) -FAIL: gdb.cp/bs15503.exp: print (const char *) (s=s.substr(0,4)) -Running ./gdb.cp/call-c.exp ... -PASS: gdb.cp/call-c.exp: b 43 -PASS: gdb.cp/call-c.exp: print foo(1) -PASS: gdb.cp/call-c.exp: continue to bp -PASS: gdb.cp/call-c.exp: print rf->func() -PASS: gdb.cp/call-c.exp: print handle->func() -Running ./gdb.cp/casts.exp ... -PASS: gdb.cp/casts.exp: cast base class pointer to derived class pointer -PASS: gdb.cp/casts.exp: let compiler cast base class pointer to derived class pointer -PASS: gdb.cp/casts.exp: cast derived class pointer to base class pointer -PASS: gdb.cp/casts.exp: cast derived class reference to base class reference -PASS: gdb.cp/casts.exp: cast base class reference to derived class reference -PASS: gdb.cp/casts.exp: let compiler cast base class reference to derived class reference -PASS: gdb.cp/casts.exp: basic test of const_cast -PASS: gdb.cp/casts.exp: const_cast of 0 -PASS: gdb.cp/casts.exp: basic test of static_cast -PASS: gdb.cp/casts.exp: static_cast to reference type -PASS: gdb.cp/casts.exp: basic test of reinterpret_cast -PASS: gdb.cp/casts.exp: test invalid reinterpret_cast -PASS: gdb.cp/casts.exp: reinterpret_cast to reference type -PASS: gdb.cp/casts.exp: whatis decltype(5) -PASS: gdb.cp/casts.exp: old-style cast using __typeof__ -PASS: gdb.cp/casts.exp: static_cast using __typeof__ -PASS: gdb.cp/casts.exp: reinterpret_cast using __typeof__ -PASS: gdb.cp/casts.exp: old-style cast using __typeof -PASS: gdb.cp/casts.exp: static_cast using __typeof -PASS: gdb.cp/casts.exp: reinterpret_cast using __typeof -PASS: gdb.cp/casts.exp: old-style cast using __decltype -PASS: gdb.cp/casts.exp: static_cast using __decltype -PASS: gdb.cp/casts.exp: reinterpret_cast using __decltype -PASS: gdb.cp/casts.exp: whatis __decltype(*a) -PASS: gdb.cp/casts.exp: invalid dynamic_cast -PASS: gdb.cp/casts.exp: dynamic_cast of 0 to void* -PASS: gdb.cp/casts.exp: dynamic_cast simple upcast -PASS: gdb.cp/casts.exp: dynamic_cast upcast to unique base -PASS: gdb.cp/casts.exp: dynamic_cast simple upcast to reference -PASS: gdb.cp/casts.exp: dynamic_cast simple downcast -PASS: gdb.cp/casts.exp: dynamic_cast simple downcast to intermediate class -PASS: gdb.cp/casts.exp: dynamic_cast to non-existing base -PASS: gdb.cp/casts.exp: dynamic_cast to reference to non-existing base -PASS: gdb.cp/casts.exp: dynamic_cast unique downcast -PASS: gdb.cp/casts.exp: dynamic_cast to sibling -Running ./gdb.cp/class2.exp ... -PASS: gdb.cp/class2.exp: set print object off -PASS: gdb.cp/class2.exp: print alpha at marker return 0 -PASS: gdb.cp/class2.exp: print beta at marker return 0 -PASS: gdb.cp/class2.exp: print * aap at marker return 0 -PASS: gdb.cp/class2.exp: print * bbp at marker return 0 -PASS: gdb.cp/class2.exp: print * abp at marker return 0, s-p-o off -PASS: gdb.cp/class2.exp: print * (B *) abp at marker return 0 -PASS: gdb.cp/class2.exp: print object with no data fields -PASS: gdb.cp/class2.exp: set print object on -PASS: gdb.cp/class2.exp: p acp -PASS: gdb.cp/class2.exp: p acp->c1 -PASS: gdb.cp/class2.exp: p acp->c2 -Running ./gdb.cp/classes.exp ... -PASS: gdb.cp/classes.exp: ptype struct default_public_struct -PASS: gdb.cp/classes.exp: ptype struct explicit_public_struct -PASS: gdb.cp/classes.exp: ptype struct protected_struct -PASS: gdb.cp/classes.exp: ptype struct private_struct -PASS: gdb.cp/classes.exp: ptype struct mixed_protection_struct -PASS: gdb.cp/classes.exp: ptype class public_class -PASS: gdb.cp/classes.exp: ptype class protected_class -PASS: gdb.cp/classes.exp: ptype class default_private_class -PASS: gdb.cp/classes.exp: ptype class explicit_private_class -PASS: gdb.cp/classes.exp: ptype class mixed_protection_class -PASS: gdb.cp/classes.exp: ptype class A -PASS: gdb.cp/classes.exp: ptype class B -PASS: gdb.cp/classes.exp: ptype class C -PASS: gdb.cp/classes.exp: ptype class D -PASS: gdb.cp/classes.exp: ptype class E -PASS: gdb.cp/classes.exp: ptype class Static -PASS: gdb.cp/classes.exp: ptype class vA -PASS: gdb.cp/classes.exp: ptype class vB -PASS: gdb.cp/classes.exp: ptype class vC -PASS: gdb.cp/classes.exp: ptype class vD -PASS: gdb.cp/classes.exp: ptype class vE -PASS: gdb.cp/classes.exp: ptype class Base1 -PASS: gdb.cp/classes.exp: ptype class Foo -PASS: gdb.cp/classes.exp: ptype class Bar -PASS: gdb.cp/classes.exp: print g_A.a -PASS: gdb.cp/classes.exp: print g_A.x -PASS: gdb.cp/classes.exp: print g_B.b -PASS: gdb.cp/classes.exp: print g_B.x -PASS: gdb.cp/classes.exp: print g_C.c -PASS: gdb.cp/classes.exp: print g_C.x -PASS: gdb.cp/classes.exp: print g_D.d -PASS: gdb.cp/classes.exp: print g_D.x -PASS: gdb.cp/classes.exp: print g_E.e -PASS: gdb.cp/classes.exp: print g_E.x -PASS: gdb.cp/classes.exp: print g_A.b -PASS: gdb.cp/classes.exp: print g_B.c -PASS: gdb.cp/classes.exp: print g_B.d -PASS: gdb.cp/classes.exp: print g_C.b -PASS: gdb.cp/classes.exp: print g_C.d -PASS: gdb.cp/classes.exp: print g_D.e -PASS: gdb.cp/classes.exp: print g_A.y -PASS: gdb.cp/classes.exp: print g_B.z -PASS: gdb.cp/classes.exp: print g_C.q -PASS: gdb.cp/classes.exp: print g_D.p -PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_A) -PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_A) -PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_B) -PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_B) -PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_B) -PASS: gdb.cp/classes.exp: unrelated class *param -PASS: gdb.cp/classes.exp: unrelated class ¶m -PASS: gdb.cp/classes.exp: unrelated class param -PASS: gdb.cp/classes.exp: continue to enums2(\(\)|) -PASS: gdb.cp/classes.exp: print obj_with_enum (1) -PASS: gdb.cp/classes.exp: next -PASS: gdb.cp/classes.exp: print obj_with_enum (2) -PASS: gdb.cp/classes.exp: print obj_with_enum.priv_enum -PASS: gdb.cp/classes.exp: ptype obj_with_enum.priv_enum -PASS: gdb.cp/classes.exp: ptype obj_with_enum -PASS: gdb.cp/classes.exp: print (ClassWithEnum::PrivEnum) 42 -PASS: gdb.cp/classes.exp: print ('ClassWithEnum::PrivEnum') 42 -PASS: gdb.cp/classes.exp: print Bar::z -PASS: gdb.cp/classes.exp: print &Foo::x -PASS: gdb.cp/classes.exp: print (int)&Foo::x -PASS: gdb.cp/classes.exp: print (int)&Bar::y == 2*sizeof(int) -PASS: gdb.cp/classes.exp: ptype Bar::z -PASS: gdb.cp/classes.exp: ptype &Bar::z -PASS: gdb.cp/classes.exp: print (int)pmi == sizeof(int) -PASS: gdb.cp/classes.exp: print Foo::st -PASS: gdb.cp/classes.exp: print bar.st -PASS: gdb.cp/classes.exp: print &foo.st -PASS: gdb.cp/classes.exp: print &Bar::st -PASS: gdb.cp/classes.exp: print *$ -PASS: gdb.cp/classes.exp: set print static-members off -PASS: gdb.cp/classes.exp: print csi without static members -PASS: gdb.cp/classes.exp: print cnsi without static members -PASS: gdb.cp/classes.exp: set print static-members on -PASS: gdb.cp/classes.exp: print csi with static members -PASS: gdb.cp/classes.exp: print cnsi with static members -PASS: gdb.cp/classes.exp: finish from marker_reg1 -PASS: gdb.cp/classes.exp: calling method for small class -FAIL: gdb.cp/classes.exp: print ctor of typedef class -FAIL: gdb.cp/classes.exp: print dtor of typedef class -PASS: gdb.cp/classes.exp: list ByAnyOtherName::times -Running ./gdb.cp/cmpd-minsyms.exp ... -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::a() const' -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::b() volatile' -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::c() const volatile' -PASS: gdb.cp/cmpd-minsyms.exp: set language c++ -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::operator == -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::operator==(GDB const&) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::harder(char) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::harder(int) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at "int GDB::even_harder(char)" -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::simple() -Running ./gdb.cp/converts.exp ... -PASS: gdb.cp/converts.exp: continue to breakpoint: end of main -PASS: gdb.cp/converts.exp: typedef to another typedef -PASS: gdb.cp/converts.exp: typedef to typedef of a typedef -PASS: gdb.cp/converts.exp: Pointer-to-pointer-to-pointer derived to Pointer-to-pointer-to-pointer base. -PASS: gdb.cp/converts.exp: pointer to pointer -PASS: gdb.cp/converts.exp: pointer to array -PASS: gdb.cp/converts.exp: pointer to pointer of wrong type -PASS: gdb.cp/converts.exp: pointer to pointer of wrong type -PASS: gdb.cp/converts.exp: pointer to ancestor pointer -PASS: gdb.cp/converts.exp: pointer to void pointer -PASS: gdb.cp/converts.exp: pointer to void pointer pointer -PASS: gdb.cp/converts.exp: pointer to boolean -PASS: gdb.cp/converts.exp: pointer to long int -PASS: gdb.cp/converts.exp: pointer pointer to void pointer -PASS: gdb.cp/converts.exp: pointer pointer to pointer pointer -PASS: gdb.cp/converts.exp: pointer pointer to array of arrays -PASS: gdb.cp/converts.exp: pointer pointer to array of pointers -PASS: gdb.cp/converts.exp: pointer pointer to array of wrong pointers -PASS: gdb.cp/converts.exp: check all parameters for badness -PASS: gdb.cp/converts.exp: null pointer conversion -PASS: gdb.cp/converts.exp: p foo3_1 (0, 1) -PASS: gdb.cp/converts.exp: p foo3_1 (0, (const char**) 1) -PASS: gdb.cp/converts.exp: p foo3_2 (0, 0) -PASS: gdb.cp/converts.exp: p foo3_2 (0, (char const**) 0) -PASS: gdb.cp/converts.exp: p foo1_7(0) -PASS: gdb.cp/converts.exp: p foo1_7(integer) -PASS: gdb.cp/converts.exp: p foo1_7(long_int) -PASS: gdb.cp/converts.exp: p foo1_7(*a) -PASS: gdb.cp/converts.exp: p foo1_7(MY_A) -PASS: gdb.cp/converts.exp: p foo1_7(&foo1_7) -PASS: gdb.cp/converts.exp: p foo1_7(&A::member_) -PASS: gdb.cp/converts.exp: p foo1_7(a) -PASS: gdb.cp/converts.exp: p foo1_7(fp) -PASS: gdb.cp/converts.exp: p foo1_7(dp) -PASS: gdb.cp/converts.exp: p foo1_7(-1.23) -PASS: gdb.cp/converts.exp: p foo1_7(ta) -PASS: gdb.cp/converts.exp: show check type -PASS: gdb.cp/converts.exp: p foo1_type_check (123) -PASS: gdb.cp/converts.exp: p foo2_type_check (0, 1) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 0) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 0, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 0, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 1) -PASS: gdb.cp/converts.exp: set check type off -PASS: gdb.cp/converts.exp: show check type -PASS: gdb.cp/converts.exp: p foo1_type_check (123) -PASS: gdb.cp/converts.exp: p foo2_type_check (0, 1) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 0) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 0, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 0, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_2 (1,1) -Running ./gdb.cp/cpcompletion.exp ... -PASS: gdb.cp/cpcompletion.exp: complete class methods -PASS: gdb.cp/cpcompletion.exp: complete class methods beginning with F -PASS: gdb.cp/cpcompletion.exp: complete p foo1.g -PASS: gdb.cp/cpcompletion.exp: complete p foo1.base -PASS: gdb.cp/cpcompletion.exp: complete p foo1.Fo -PASS: gdb.cp/cpcompletion.exp: complete p a.g -Running ./gdb.cp/cpexprs.exp ... -PASS: gdb.cp/cpexprs.exp: set listsize 1 -PASS: gdb.cp/cpexprs.exp: print base1::a_function -FAIL: gdb.cp/cpexprs.exp: print base1::base1(int) -FAIL: gdb.cp/cpexprs.exp: print base1::base1(void) -PASS: gdb.cp/cpexprs.exp: print base2::a_function -FAIL: gdb.cp/cpexprs.exp: print base2::base2 -FAIL: gdb.cp/cpexprs.exp: print base::base(int) -FAIL: gdb.cp/cpexprs.exp: print base::base(void) -PASS: gdb.cp/cpexprs.exp: print base::operator char* -PASS: gdb.cp/cpexprs.exp: print base::operator delete -PASS: gdb.cp/cpexprs.exp: print base::operator delete[] -PASS: gdb.cp/cpexprs.exp: print base::operator fluff* -PASS: gdb.cp/cpexprs.exp: print base::operator fluff** -PASS: gdb.cp/cpexprs.exp: print base::operator int -PASS: gdb.cp/cpexprs.exp: print base::operator new -PASS: gdb.cp/cpexprs.exp: print base::operator new[] -PASS: gdb.cp/cpexprs.exp: print base::operator! -PASS: gdb.cp/cpexprs.exp: print base::operator!= -PASS: gdb.cp/cpexprs.exp: print base::operator% -PASS: gdb.cp/cpexprs.exp: print base::operator%= -PASS: gdb.cp/cpexprs.exp: print base::operator& -PASS: gdb.cp/cpexprs.exp: print base::operator&& -PASS: gdb.cp/cpexprs.exp: print base::operator&= -PASS: gdb.cp/cpexprs.exp: print base::operator() -PASS: gdb.cp/cpexprs.exp: print base::operator* -PASS: gdb.cp/cpexprs.exp: print base::operator*= -PASS: gdb.cp/cpexprs.exp: print base::operator+ -PASS: gdb.cp/cpexprs.exp: print base::operator++ -PASS: gdb.cp/cpexprs.exp: print base::operator+= -PASS: gdb.cp/cpexprs.exp: print base::operator- -PASS: gdb.cp/cpexprs.exp: print base::operator-- -PASS: gdb.cp/cpexprs.exp: print base::operator-= -PASS: gdb.cp/cpexprs.exp: print base::operator/ -PASS: gdb.cp/cpexprs.exp: print base::operator/= -PASS: gdb.cp/cpexprs.exp: print base::operator< -PASS: gdb.cp/cpexprs.exp: print base::operator<< -PASS: gdb.cp/cpexprs.exp: print base::operator<<= -PASS: gdb.cp/cpexprs.exp: print base::operator<= -PASS: gdb.cp/cpexprs.exp: print base::operator= -PASS: gdb.cp/cpexprs.exp: print base::operator== -PASS: gdb.cp/cpexprs.exp: print base::operator> -PASS: gdb.cp/cpexprs.exp: print base::operator>= -PASS: gdb.cp/cpexprs.exp: print base::operator>> -PASS: gdb.cp/cpexprs.exp: print base::operator>>= -PASS: gdb.cp/cpexprs.exp: print base::operator[] -PASS: gdb.cp/cpexprs.exp: print base::operator^ -PASS: gdb.cp/cpexprs.exp: print base::operator^= -PASS: gdb.cp/cpexprs.exp: print base::operator| -PASS: gdb.cp/cpexprs.exp: print base::operator|= -PASS: gdb.cp/cpexprs.exp: print base::operator|| -PASS: gdb.cp/cpexprs.exp: print base::operator~ -PASS: gdb.cp/cpexprs.exp: print base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: print base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: print base::overload(int) const -PASS: gdb.cp/cpexprs.exp: print base::overload(long) const -PASS: gdb.cp/cpexprs.exp: print base::overload(short) const -PASS: gdb.cp/cpexprs.exp: print base::overload(void) const -FAIL: gdb.cp/cpexprs.exp: print base::~base -PASS: gdb.cp/cpexprs.exp: print derived::a_function -FAIL: gdb.cp/cpexprs.exp: print derived::derived -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print policy1::function -FAIL: gdb.cp/cpexprs.exp: print policy1::policy -PASS: gdb.cp/cpexprs.exp: print policy2::function -FAIL: gdb.cp/cpexprs.exp: print policy2::policy -PASS: gdb.cp/cpexprs.exp: print policy3::function -FAIL: gdb.cp/cpexprs.exp: print policy3::policy -PASS: gdb.cp/cpexprs.exp: print policy4::function -FAIL: gdb.cp/cpexprs.exp: print policy4::policy -PASS: gdb.cp/cpexprs.exp: print policyd1::function -FAIL: gdb.cp/cpexprs.exp: print policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd2::function -FAIL: gdb.cp/cpexprs.exp: print policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd3::function -FAIL: gdb.cp/cpexprs.exp: print policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd4::function -FAIL: gdb.cp/cpexprs.exp: print policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd5::function -FAIL: gdb.cp/cpexprs.exp: print policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::function -FAIL: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print test_function -PASS: gdb.cp/cpexprs.exp: list base1::a_function -PASS: gdb.cp/cpexprs.exp: list base1::base1(int) -PASS: gdb.cp/cpexprs.exp: list base1::base1(void) -PASS: gdb.cp/cpexprs.exp: list base2::a_function -PASS: gdb.cp/cpexprs.exp: list base2::base2 -PASS: gdb.cp/cpexprs.exp: list base::base(int) -PASS: gdb.cp/cpexprs.exp: list base::base(void) -PASS: gdb.cp/cpexprs.exp: list base::operator char* -PASS: gdb.cp/cpexprs.exp: list base::operator delete -PASS: gdb.cp/cpexprs.exp: list base::operator delete[] -PASS: gdb.cp/cpexprs.exp: list base::operator fluff* -PASS: gdb.cp/cpexprs.exp: list base::operator fluff** -PASS: gdb.cp/cpexprs.exp: list base::operator int -PASS: gdb.cp/cpexprs.exp: list base::operator new -PASS: gdb.cp/cpexprs.exp: list base::operator new[] -PASS: gdb.cp/cpexprs.exp: list base::operator! -PASS: gdb.cp/cpexprs.exp: list base::operator!= -PASS: gdb.cp/cpexprs.exp: list base::operator% -PASS: gdb.cp/cpexprs.exp: list base::operator%= -PASS: gdb.cp/cpexprs.exp: list base::operator& -PASS: gdb.cp/cpexprs.exp: list base::operator&& -PASS: gdb.cp/cpexprs.exp: list base::operator&= -PASS: gdb.cp/cpexprs.exp: list base::operator() -PASS: gdb.cp/cpexprs.exp: list base::operator* -PASS: gdb.cp/cpexprs.exp: list base::operator*= -PASS: gdb.cp/cpexprs.exp: list base::operator+ -PASS: gdb.cp/cpexprs.exp: list base::operator++ -PASS: gdb.cp/cpexprs.exp: list base::operator+= -PASS: gdb.cp/cpexprs.exp: list base::operator- -PASS: gdb.cp/cpexprs.exp: list base::operator-- -PASS: gdb.cp/cpexprs.exp: list base::operator-= -PASS: gdb.cp/cpexprs.exp: list base::operator/ -PASS: gdb.cp/cpexprs.exp: list base::operator/= -PASS: gdb.cp/cpexprs.exp: list base::operator< -PASS: gdb.cp/cpexprs.exp: list base::operator<< -PASS: gdb.cp/cpexprs.exp: list base::operator<<= -PASS: gdb.cp/cpexprs.exp: list base::operator<= -PASS: gdb.cp/cpexprs.exp: list base::operator= -PASS: gdb.cp/cpexprs.exp: list base::operator== -PASS: gdb.cp/cpexprs.exp: list base::operator> -PASS: gdb.cp/cpexprs.exp: list base::operator>= -PASS: gdb.cp/cpexprs.exp: list base::operator>> -PASS: gdb.cp/cpexprs.exp: list base::operator>>= -PASS: gdb.cp/cpexprs.exp: list base::operator[] -PASS: gdb.cp/cpexprs.exp: list base::operator^ -PASS: gdb.cp/cpexprs.exp: list base::operator^= -PASS: gdb.cp/cpexprs.exp: list base::operator| -PASS: gdb.cp/cpexprs.exp: list base::operator|= -PASS: gdb.cp/cpexprs.exp: list base::operator|| -PASS: gdb.cp/cpexprs.exp: list base::operator~ -PASS: gdb.cp/cpexprs.exp: list base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: list base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: list base::overload(int) const -PASS: gdb.cp/cpexprs.exp: list base::overload(long) const -PASS: gdb.cp/cpexprs.exp: list base::overload(short) const -PASS: gdb.cp/cpexprs.exp: list base::overload(void) const -PASS: gdb.cp/cpexprs.exp: list base::~base -PASS: gdb.cp/cpexprs.exp: list derived::a_function -PASS: gdb.cp/cpexprs.exp: list derived::derived -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list policy1::function -PASS: gdb.cp/cpexprs.exp: list policy1::policy -PASS: gdb.cp/cpexprs.exp: list policy2::function -PASS: gdb.cp/cpexprs.exp: list policy2::policy -PASS: gdb.cp/cpexprs.exp: list policy3::function -PASS: gdb.cp/cpexprs.exp: list policy3::policy -PASS: gdb.cp/cpexprs.exp: list policy4::function -PASS: gdb.cp/cpexprs.exp: list policy4::policy -PASS: gdb.cp/cpexprs.exp: list policyd1::function -PASS: gdb.cp/cpexprs.exp: list policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd2::function -PASS: gdb.cp/cpexprs.exp: list policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd3::function -PASS: gdb.cp/cpexprs.exp: list policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd4::function -PASS: gdb.cp/cpexprs.exp: list policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd5::function -PASS: gdb.cp/cpexprs.exp: list policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::function -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list test_function -PASS: gdb.cp/cpexprs.exp: continue to base1::a_function -PASS: gdb.cp/cpexprs.exp: continue to base1::base1(int) -PASS: gdb.cp/cpexprs.exp: continue to base1::base1(void) -PASS: gdb.cp/cpexprs.exp: continue to base2::a_function -PASS: gdb.cp/cpexprs.exp: continue to base2::base2 -PASS: gdb.cp/cpexprs.exp: continue to base::base(int) -PASS: gdb.cp/cpexprs.exp: continue to base::base(void) -PASS: gdb.cp/cpexprs.exp: continue to base::operator char* -PASS: gdb.cp/cpexprs.exp: continue to base::operator delete -PASS: gdb.cp/cpexprs.exp: continue to base::operator delete[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff* -PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff** -PASS: gdb.cp/cpexprs.exp: continue to base::operator int -PASS: gdb.cp/cpexprs.exp: continue to base::operator new -PASS: gdb.cp/cpexprs.exp: continue to base::operator new[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator! -PASS: gdb.cp/cpexprs.exp: continue to base::operator!= -PASS: gdb.cp/cpexprs.exp: continue to base::operator% -PASS: gdb.cp/cpexprs.exp: continue to base::operator%= -PASS: gdb.cp/cpexprs.exp: continue to base::operator& -PASS: gdb.cp/cpexprs.exp: continue to base::operator&& -PASS: gdb.cp/cpexprs.exp: continue to base::operator&= -PASS: gdb.cp/cpexprs.exp: continue to base::operator() -PASS: gdb.cp/cpexprs.exp: continue to base::operator* -PASS: gdb.cp/cpexprs.exp: continue to base::operator*= -PASS: gdb.cp/cpexprs.exp: continue to base::operator+ -PASS: gdb.cp/cpexprs.exp: continue to base::operator++ -PASS: gdb.cp/cpexprs.exp: continue to base::operator+= -PASS: gdb.cp/cpexprs.exp: continue to base::operator- -PASS: gdb.cp/cpexprs.exp: continue to base::operator-- -PASS: gdb.cp/cpexprs.exp: continue to base::operator-= -PASS: gdb.cp/cpexprs.exp: continue to base::operator/ -PASS: gdb.cp/cpexprs.exp: continue to base::operator/= -PASS: gdb.cp/cpexprs.exp: continue to base::operator< -PASS: gdb.cp/cpexprs.exp: continue to base::operator<< -PASS: gdb.cp/cpexprs.exp: continue to base::operator<<= -PASS: gdb.cp/cpexprs.exp: continue to base::operator<= -PASS: gdb.cp/cpexprs.exp: continue to base::operator= -PASS: gdb.cp/cpexprs.exp: continue to base::operator== -PASS: gdb.cp/cpexprs.exp: continue to base::operator> -PASS: gdb.cp/cpexprs.exp: continue to base::operator>= -PASS: gdb.cp/cpexprs.exp: continue to base::operator>> -PASS: gdb.cp/cpexprs.exp: continue to base::operator>>= -PASS: gdb.cp/cpexprs.exp: continue to base::operator[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator^ -PASS: gdb.cp/cpexprs.exp: continue to base::operator^= -PASS: gdb.cp/cpexprs.exp: continue to base::operator| -PASS: gdb.cp/cpexprs.exp: continue to base::operator|= -PASS: gdb.cp/cpexprs.exp: continue to base::operator|| -PASS: gdb.cp/cpexprs.exp: continue to base::operator~ -PASS: gdb.cp/cpexprs.exp: continue to base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(int) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(long) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(short) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(void) const -PASS: gdb.cp/cpexprs.exp: continue to base::~base -PASS: gdb.cp/cpexprs.exp: continue to derived::a_function -PASS: gdb.cp/cpexprs.exp: continue to derived::derived -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to policy1::function -PASS: gdb.cp/cpexprs.exp: continue to policy1::policy -PASS: gdb.cp/cpexprs.exp: continue to policy2::function -PASS: gdb.cp/cpexprs.exp: continue to policy2::policy -PASS: gdb.cp/cpexprs.exp: continue to policy3::function -PASS: gdb.cp/cpexprs.exp: continue to policy3::policy -PASS: gdb.cp/cpexprs.exp: continue to policy4::function -PASS: gdb.cp/cpexprs.exp: continue to policy4::policy -PASS: gdb.cp/cpexprs.exp: continue to policyd1::function -PASS: gdb.cp/cpexprs.exp: continue to policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd1::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd2::function -PASS: gdb.cp/cpexprs.exp: continue to policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd2::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd3::function -PASS: gdb.cp/cpexprs.exp: continue to policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd3::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd4::function -PASS: gdb.cp/cpexprs.exp: continue to policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd4::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd5::function -PASS: gdb.cp/cpexprs.exp: continue to policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd5::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int)' -PASS: gdb.cp/cpexprs.exp: p CV::m(int) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) const' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) volatile' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) volatile (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) const volatile' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const volatile (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p CV_f(int) -PASS: gdb.cp/cpexprs.exp: p CV_f(CV::t) -PASS: gdb.cp/cpexprs.exp: p CV_f(CV::i) -Running ./gdb.cp/cplabel.exp ... -PASS: gdb.cp/cplabel.exp: break foo::bar:to_the_top -PASS: gdb.cp/cplabel.exp: break foo::bar:get_out_of_here -PASS: gdb.cp/cplabel.exp: break foo::baz:to_the_top -PASS: gdb.cp/cplabel.exp: break foo::baz:get_out_of_here -Running ./gdb.cp/cplusfuncs.exp ... -PASS: gdb.cp/cplusfuncs.exp: set width 0 -PASS: gdb.cp/cplusfuncs.exp: set language c++ -PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_comma -PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_char_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_char_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_foo_ref -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_int_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_int -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_short -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_short -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_long -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_typedef -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(void)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(signed char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(short)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned short)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(long)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned long)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(float)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(double)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&&(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator++(int) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator,(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator==(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator||(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator~(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator--(int) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->*(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator[](foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator()(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new[] -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator int(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator char*(void) -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc1 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc2 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc3 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc4 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc5 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc6 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc7 -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator%(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator-(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator!=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator|(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&&(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator!(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator++(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator+=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator%=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator|=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator,(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator/(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator+(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator==(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator^(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator||(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator~(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator--(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator->(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator-=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator/=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator^=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator->\*(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\[\](" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator new(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator delete(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator int(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator()(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator char\*(" -PASS: gdb.cp/cplusfuncs.exp: list foo::operator int* -Running ./gdb.cp/cp-relocate.exp ... -PASS: gdb.cp/cp-relocate.exp: info functions -PASS: gdb.cp/cp-relocate.exp: get address of func<1>(int) -PASS: gdb.cp/cp-relocate.exp: get address of func<2>(int) -PASS: gdb.cp/cp-relocate.exp: get address of caller -PASS: gdb.cp/cp-relocate.exp: C++ functions have different addresses -PASS: gdb.cp/cp-relocate.exp: info file -PASS: gdb.cp/cp-relocate.exp: add-symbol-file cp-relocate.o -PASS: gdb.cp/cp-relocate.exp: break *func<1>(int) -PASS: gdb.cp/cp-relocate.exp: break *func<2>(int) -Running ./gdb.cp/ctti.exp ... -PASS: gdb.cp/ctti.exp: continue to breakpoint: marker add1 -PASS: gdb.cp/ctti.exp: print c -PASS: gdb.cp/ctti.exp: print f -PASS: gdb.cp/ctti.exp: print i -Running ./gdb.cp/debug-expr.exp ... -PASS: gdb.cp/debug-expr.exp: set language c++ -PASS: gdb.cp/debug-expr.exp: set debug expression 1 -PASS: gdb.cp/debug-expr.exp: print static_cast(0) -PASS: gdb.cp/debug-expr.exp: print reinterpret_cast(0) -PASS: gdb.cp/debug-expr.exp: print dynamic_cast(0) -Running ./gdb.cp/demangle.exp ... -PASS: gdb.cp/demangle.exp: set language c++ -PASS: gdb.cp/demangle.exp: set width 0 -PASS: gdb.cp/demangle.exp: lucid: set demangle-style -PASS: gdb.cp/demangle.exp: lucid: check demangling style -PASS: gdb.cp/demangle.exp: lucid: WS__FR7istream -PASS: gdb.cp/demangle.exp: lucid: __aa__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __aad__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ad__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __adv__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __adv__7complexF7complex -PASS: gdb.cp/demangle.exp: lucid: __aer__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __als__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amd__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ami__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amu__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amu__7complexF7complex -PASS: gdb.cp/demangle.exp: lucid: __aor__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __apl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ars__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFR7istream -PASS: gdb.cp/demangle.exp: lucid: __as__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __as__3iosFR3ios -PASS: gdb.cp/demangle.exp: lucid: __cl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __cm__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __co__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPc -PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPci -PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFPciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFv -PASS: gdb.cp/demangle.exp: lucid: __ct__10smanip_intFPFR3iosi_R3iosi -PASS: gdb.cp/demangle.exp: lucid: __ct__11c_exceptionFPcRC7complexT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFi -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFv -PASS: gdb.cp/demangle.exp: lucid: __ct__11smanip_longFPFR3iosl_R3iosl -PASS: gdb.cp/demangle.exp: lucid: __ct__11stdiostreamFP4FILE -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPFl_PvPFPv_v -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPUciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFi -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFv -PASS: gdb.cp/demangle.exp: lucid: __ct__13strstreambaseFPciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiN31 -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiPCc -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiR3fooT1T2T1T2 -PASS: gdb.cp/demangle.exp: lucid: __ct__3iosFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7filebufFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambufiP7ostream -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiT1P7ostream -PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFiPc -PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__Q23foo3barFv -PASS: gdb.cp/demangle.exp: lucid: __ct__Q33foo3bar4bellFv -PASS: gdb.cp/demangle.exp: lucid: __dl__3fooSFPv -PASS: gdb.cp/demangle.exp: lucid: __dl__FPv -PASS: gdb.cp/demangle.exp: lucid: __dt__10istrstreamFv -PASS: gdb.cp/demangle.exp: lucid: __dt__Q23foo3barFv -PASS: gdb.cp/demangle.exp: lucid: __dt__Q33foo3bar4bellFv -PASS: gdb.cp/demangle.exp: lucid: __dv__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __dv__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __er__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ge__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __gt__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __le__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ls__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPCc -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPv -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUi -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUl -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFd -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFf -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFi -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFl -PASS: gdb.cp/demangle.exp: lucid: __ls__FR7ostream7complex -PASS: gdb.cp/demangle.exp: lucid: __lt__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __md__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __mi__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ml__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ml__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: __mm__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __ne__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __nt__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __nw__3fooSFi -PASS: gdb.cp/demangle.exp: lucid: __nw__FUi -PASS: gdb.cp/demangle.exp: lucid: __nw__FUiPv -PASS: gdb.cp/demangle.exp: lucid: __oo__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __opPc__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __opi__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __or__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __pl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __pp__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __pt__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __rm__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __rs__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR7istream_R7istream -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPUc -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPc -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUi -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUl -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUs -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRd -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRf -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRi -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRl -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRs -PASS: gdb.cp/demangle.exp: lucid: __rs__FR7istreamR7complex -PASS: gdb.cp/demangle.exp: lucid: __vc__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __vtbl__10istrstream -PASS: gdb.cp/demangle.exp: lucid: __vtbl__17ostream__iostream__19iostream_withassign -PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios -PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios__13strstreambase -KFAIL: gdb.cp/demangle.exp: lucid: __vtbl__3foo__vt_cc_main_ (PRMS: gdb/945) -PASS: gdb.cp/demangle.exp: lucid: abs__F7complex -PASS: gdb.cp/demangle.exp: lucid: allocate__9streambufFv -PASS: gdb.cp/demangle.exp: lucid: attach__11fstreambaseFi -PASS: gdb.cp/demangle.exp: lucid: bitalloc__3iosSFv -PASS: gdb.cp/demangle.exp: lucid: chr__FiT1 -PASS: gdb.cp/demangle.exp: lucid: complex_error__FR11c_exception -PASS: gdb.cp/demangle.exp: lucid: complexfunc2__FPFPc_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc3__FPFPFPl_s_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc4__FPFPFPc_s_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc5__FPFPc_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc6__FPFPi_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc7__FPFPFPc_i_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complicated_put__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: conv10__FlPc -PASS: gdb.cp/demangle.exp: lucid: conv16__FUlPc -PASS: gdb.cp/demangle.exp: lucid: dec__FR3ios -PASS: gdb.cp/demangle.exp: lucid: dec__Fli -PASS: gdb.cp/demangle.exp: lucid: dofield__FP7ostreamPciT2T3 -PASS: gdb.cp/demangle.exp: lucid: flags__3iosFl -PASS: gdb.cp/demangle.exp: lucid: flags__3iosFv -PASS: gdb.cp/demangle.exp: lucid: foo__FiN31 -PASS: gdb.cp/demangle.exp: lucid: foo__FiR3fooT1T2T1T2 -PASS: gdb.cp/demangle.exp: lucid: foo___3barFl -PASS: gdb.cp/demangle.exp: lucid: form__FPCce -PASS: gdb.cp/demangle.exp: lucid: get__7istreamFPcic -PASS: gdb.cp/demangle.exp: lucid: get__7istreamFR9streambufc -PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRUc -PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRc -PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPUcic -PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPcic -PASS: gdb.cp/demangle.exp: lucid: ignore__7istreamFiT1 -PASS: gdb.cp/demangle.exp: lucid: init__12strstreambufFPciT1 -PASS: gdb.cp/demangle.exp: lucid: init__3iosFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: initcount__13Iostream_init -PASS: gdb.cp/demangle.exp: lucid: ipfx__7istreamFi -PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFUc -PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: open__11fstreambaseFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: open__7filebufFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FSc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUi -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUl -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUs -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fd -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Ff -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fi -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fl -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fs -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fv -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN21 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN31 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN41 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN51 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN61 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN71 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN81 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91N11 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiT1 -PASS: gdb.cp/demangle.exp: lucid: polar__FdT1 -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexd -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexi -PASS: gdb.cp/demangle.exp: lucid: pow__Fd7complex -PASS: gdb.cp/demangle.exp: lucid: pstart__FPciT2 -PASS: gdb.cp/demangle.exp: lucid: put__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: read__7istreamFPci -PASS: gdb.cp/demangle.exp: lucid: resetiosflags__FR3iosl -PASS: gdb.cp/demangle.exp: lucid: restore_errno__FRi -PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRUc -PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRc -PASS: gdb.cp/demangle.exp: lucid: seekg__7istreamFl8seek_dir -PASS: gdb.cp/demangle.exp: lucid: seekoff__12strstreambufFl8seek_diri -PASS: gdb.cp/demangle.exp: lucid: seekoff__9streambufFlQ2_3ios12ios_seek_diri -PASS: gdb.cp/demangle.exp: lucid: seekpos__9streambufFli -PASS: gdb.cp/demangle.exp: lucid: set_new_handler__FPFv_v -PASS: gdb.cp/demangle.exp: lucid: setb__9streambufFPcT1i -PASS: gdb.cp/demangle.exp: lucid: setb__FR3iosi -PASS: gdb.cp/demangle.exp: lucid: setbuf__11fstreambaseFPci -PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPUci -PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPciT2 -PASS: gdb.cp/demangle.exp: lucid: setf__3iosFlT1 -PASS: gdb.cp/demangle.exp: lucid: setfill__FR3iosi -PASS: gdb.cp/demangle.exp: lucid: setg__9streambufFPcN21 -PASS: gdb.cp/demangle.exp: lucid: setp__9streambufFPcT1 -PASS: gdb.cp/demangle.exp: lucid: sputn__9streambufFPCci -PASS: gdb.cp/demangle.exp: lucid: str__FPCci -PASS: gdb.cp/demangle.exp: lucid: tie__3iosFP7ostream -PASS: gdb.cp/demangle.exp: lucid: uconv10__FUlPc -PASS: gdb.cp/demangle.exp: lucid: write__7ostreamFPCci -PASS: gdb.cp/demangle.exp: lucid: xget__7istreamFPc -PASS: gdb.cp/demangle.exp: lucid: xsgetn__9streambufFPci -PASS: gdb.cp/demangle.exp: lucid: xsputn__9streambufFPCci -PASS: gdb.cp/demangle.exp: lucid: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: gnu: set demangle-style -PASS: gdb.cp/demangle.exp: gnu: check demangling style -PASS: gdb.cp/demangle.exp: gnu: Abort__FP6EditoriPCc -PASS: gdb.cp/demangle.exp: gnu: AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue -PASS: gdb.cp/demangle.exp: gnu: Append__15NameChooserViewPCc -PASS: gdb.cp/demangle.exp: gnu: ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic -PASS: gdb.cp/demangle.exp: gnu: AtEnd__13ivRubberGroup -PASS: gdb.cp/demangle.exp: gnu: BgFilter__9ivTSolverP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: BitPatterntoa__FRC10BitPatternccc -PASS: gdb.cp/demangle.exp: gnu: Check__6UArrayi -PASS: gdb.cp/demangle.exp: gnu: CoreConstDecls__8TextCodeR7ostream -PASS: gdb.cp/demangle.exp: gnu: Detach__8StateVarP12StateVarView -PASS: gdb.cp/demangle.exp: gnu: Done__9ComponentG8Iterator -PASS: gdb.cp/demangle.exp: gnu: DrawDestinationTransformedImage__FP7_XImageiiT0iiUlUiiiUiUlUlP4_XGCRC13ivTransformeriiii -PASS: gdb.cp/demangle.exp: gnu: Edit__12StringEditorPCcii -PASS: gdb.cp/demangle.exp: gnu: Effect__11RelateManipR7ivEvent -PASS: gdb.cp/demangle.exp: gnu: FilterName__FPCc -PASS: gdb.cp/demangle.exp: gnu: Filter__6PSTextPCci -PASS: gdb.cp/demangle.exp: gnu: FindColor__7CatalogPCciii -PASS: gdb.cp/demangle.exp: gnu: FindFixed__FRP4CNetP4CNet -PASS: gdb.cp/demangle.exp: gnu: FindFont__7CatalogPCcN21 -PASS: gdb.cp/demangle.exp: gnu: Fix48_abort__FR8twolongs -PASS: gdb.cp/demangle.exp: gnu: GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2 -PASS: gdb.cp/demangle.exp: gnu: GetBgColor__C9ivPainter -PASS: gdb.cp/demangle.exp: gnu: Iisdouble__FPC6IntRep -PASS: gdb.cp/demangle.exp: gnu: InsertBody__15H_PullrightMenuii -PASS: gdb.cp/demangle.exp: gnu: InsertCharacter__9TextManipc -PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1 -PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1iiUi -PASS: gdb.cp/demangle.exp: gnu: IsADirectory__FPCcR4stat -PASS: gdb.cp/demangle.exp: gnu: IsAGroup__FP11GraphicViewP11GraphicComp -PASS: gdb.cp/demangle.exp: gnu: IsA__10ButtonCodeUl -PASS: gdb.cp/demangle.exp: gnu: ReadName__FR7istreamPc -PASS: gdb.cp/demangle.exp: gnu: Redraw__13StringBrowseriiii -PASS: gdb.cp/demangle.exp: gnu: Rotate__13ivTransformerf -PASS: gdb.cp/demangle.exp: gnu: Rotated__C13ivTransformerf -PASS: gdb.cp/demangle.exp: gnu: Round__Ff -PASS: gdb.cp/demangle.exp: gnu: SetExport__16MemberSharedNameUi -PASS: gdb.cp/demangle.exp: gnu: Set__14ivControlState13ControlStatusUi -PASS: gdb.cp/demangle.exp: gnu: Set__5DFacePcii -PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP12ivInteractorRP8TElementT2 -PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP7ivTGlueRP8TElement -PASS: gdb.cp/demangle.exp: gnu: VOrder__9ivTSolverUiRP12ivInteractorT2 -PASS: gdb.cp/demangle.exp: gnu: Valid__7CatalogPCcRP4Tool -PASS: gdb.cp/demangle.exp: gnu: _10PageButton$__both -PASS: gdb.cp/demangle.exp: gnu: _3RNG$singleMantissa -PASS: gdb.cp/demangle.exp: gnu: _5IComp$_release -PASS: gdb.cp/demangle.exp: gnu: _$_10BitmapComp -PASS: gdb.cp/demangle.exp: gnu: _$_9__io_defs -PASS: gdb.cp/demangle.exp: gnu: _$_Q23foo3bar -PASS: gdb.cp/demangle.exp: gnu: _$_Q33foo3bar4bell -PASS: gdb.cp/demangle.exp: gnu: __10ivTelltaleiP7ivGlyph -PASS: gdb.cp/demangle.exp: gnu: __10ivViewportiP12ivInteractorUi -PASS: gdb.cp/demangle.exp: gnu: __10ostrstream -PASS: gdb.cp/demangle.exp: gnu: __10ostrstreamPcii -PASS: gdb.cp/demangle.exp: gnu: __11BasicDialogiPCcP13ivButtonStateN22Ui -PASS: gdb.cp/demangle.exp: gnu: __11BitmapTablei -PASS: gdb.cp/demangle.exp: gnu: __12ViewportCodeP12ViewportComp -PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_BorderiPCci -PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_Borderii -PASS: gdb.cp/demangle.exp: gnu: __12ivBackgroundiP7ivGlyphPC7ivColor -PASS: gdb.cp/demangle.exp: gnu: __12ivBreak_Listl -PASS: gdb.cp/demangle.exp: gnu: __14TextInteractoriPCcUi -PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiPCcP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: __20DisplayList_IteratorR11DisplayList -PASS: gdb.cp/demangle.exp: gnu: __3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __3fooiN31 -PASS: gdb.cp/demangle.exp: gnu: __3fooiPCc -PASS: gdb.cp/demangle.exp: gnu: __3fooiRT0iT2iT2 -PASS: gdb.cp/demangle.exp: gnu: __6GetOptiPPcPCc -PASS: gdb.cp/demangle.exp: gnu: __6KeyMapPT0 -PASS: gdb.cp/demangle.exp: gnu: __7ivWorldPCcRiPPcPC12ivOptionDescPC14ivPropertyData -PASS: gdb.cp/demangle.exp: gnu: __7procbufPCci -PASS: gdb.cp/demangle.exp: gnu: __8ArrowCmdP6EditorUiUi -PASS: gdb.cp/demangle.exp: gnu: __9F_EllipseiiiiP7Graphic -PASS: gdb.cp/demangle.exp: gnu: __9FrameDataP9FrameCompi -PASS: gdb.cp/demangle.exp: gnu: __9HVGraphicP9CanvasVarP7Graphic -PASS: gdb.cp/demangle.exp: gnu: __Q23foo3bar -PASS: gdb.cp/demangle.exp: gnu: __Q33foo3bar4bell -PASS: gdb.cp/demangle.exp: gnu: __aa__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aad__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ad__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __adv__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aer__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __als__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __amd__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ami__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aml__3FixRT0 -PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix16i -PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix32RT0 -PASS: gdb.cp/demangle.exp: gnu: __aor__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __apl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ars__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __as__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __cl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __cl__6Normal -PASS: gdb.cp/demangle.exp: gnu: __cl__6Stringii -PASS: gdb.cp/demangle.exp: gnu: __cm__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __co__3foo -PASS: gdb.cp/demangle.exp: gnu: __dl__3fooPv -PASS: gdb.cp/demangle.exp: gnu: __dv__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __er__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ge__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __gt__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __le__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ls__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamR3Fix -PASS: gdb.cp/demangle.exp: gnu: __lt__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __md__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __mi__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ml__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __mm__3fooi -PASS: gdb.cp/demangle.exp: gnu: __ne__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7ComplexT0 -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7Complexd -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC9SubStringRC6String -PASS: gdb.cp/demangle.exp: gnu: __nt__3foo -PASS: gdb.cp/demangle.exp: gnu: __nw__3fooi -PASS: gdb.cp/demangle.exp: gnu: __oo__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __opPc__3foo -PASS: gdb.cp/demangle.exp: gnu: __opi__3foo -PASS: gdb.cp/demangle.exp: gnu: __or__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __pl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __pp__3fooi -PASS: gdb.cp/demangle.exp: gnu: __rf__3foo -PASS: gdb.cp/demangle.exp: gnu: __rm__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __rs__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __vc__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: _gsub__6StringRC5RegexPCci -PASS: gdb.cp/demangle.exp: gnu: _new_Fix__FUs -PASS: gdb.cp/demangle.exp: gnu: _vt.foo -PASS: gdb.cp/demangle.exp: gnu: _vt.foo.bar -PASS: gdb.cp/demangle.exp: gnu: _vt$foo -PASS: gdb.cp/demangle.exp: gnu: _vt$foo$bar -PASS: gdb.cp/demangle.exp: gnu: append__7ivGlyphPT0 -PASS: gdb.cp/demangle.exp: gnu: arg__FRC7Complex -PASS: gdb.cp/demangle.exp: gnu: clearok__FP7_win_sti -PASS: gdb.cp/demangle.exp: gnu: complexfunc2__FPFPc_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc3__FPFPFPl_s_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc4__FPFPFPc_s_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc5__FPFPc_PFl_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc6__FPFPi_PFl_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc7__FPFPFPc_i_PFl_i -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC10BitPattern -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC12BitSubStringi -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRT0 -PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntRepT0P6IntRep -PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntReplP6IntRep -PASS: gdb.cp/demangle.exp: gnu: div__FRC8RationalT0R8Rational -PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerT0R7IntegerT2 -PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerlR7IntegerRl -PASS: gdb.cp/demangle.exp: gnu: enable__14DocumentViewerPCcUi -PASS: gdb.cp/demangle.exp: gnu: foo__FiN30 -PASS: gdb.cp/demangle.exp: gnu: foo__FiR3fooiT1iT1 -PASS: gdb.cp/demangle.exp: gnu: foo___3barl -PASS: gdb.cp/demangle.exp: gnu: insert__15ivClippingStacklRP8_XRegion -PASS: gdb.cp/demangle.exp: gnu: insert__16ChooserInfo_ListlR11ChooserInfo -PASS: gdb.cp/demangle.exp: gnu: insert__17FontFamilyRepListlRP15ivFontFamilyRep -PASS: gdb.cp/demangle.exp: gnu: leaveok__FP7_win_stc -PASS: gdb.cp/demangle.exp: gnu: left_mover__C7ivMFKitP12ivAdjustableP7ivStyle -PASS: gdb.cp/demangle.exp: gnu: matches__C9BitStringRC10BitPatterni -PASS: gdb.cp/demangle.exp: gnu: matches__C9SubStringRC5Regex -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FSc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUi -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUl -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUs -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fd -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Ff -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fi -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fl -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fs -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fv -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fi -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: pick__13ivCompositionP8ivCanvasRC12ivAllocationiR5ivHit -PASS: gdb.cp/demangle.exp: gnu: pointer__C11ivHScrollerRC7ivEventRC12ivAllocation -PASS: gdb.cp/demangle.exp: gnu: poke__8ivRasterUlUlffff -PASS: gdb.cp/demangle.exp: gnu: polar__Fdd -PASS: gdb.cp/demangle.exp: gnu: read__10osStdInputRPCc -PASS: gdb.cp/demangle.exp: gnu: scale__13ivTransformerff -PASS: gdb.cp/demangle.exp: gnu: scanw__12CursesWindowPCce -PASS: gdb.cp/demangle.exp: gnu: scmp__FPCcT0 -PASS: gdb.cp/demangle.exp: gnu: sgetn__7filebufPci -PASS: gdb.cp/demangle.exp: gnu: shift__FP5_FrepiT0 -PASS: gdb.cp/demangle.exp: gnu: test__C6BitSeti -PASS: gdb.cp/demangle.exp: gnu: test__C6BitSetii -PASS: gdb.cp/demangle.exp: gnu: testbit__FRC7Integerl -PASS: gdb.cp/demangle.exp: gnu: text_source__8Documentl -PASS: gdb.cp/demangle.exp: gnu: variance__6Erlangd -PASS: gdb.cp/demangle.exp: gnu: vform__8iostreamPCcPc -PASS: gdb.cp/demangle.exp: gnu: view__14DocumentViewerP8ItemViewP11TabularItem -PASS: gdb.cp/demangle.exp: gnu: xy_extents__11ivExtensionffff -PASS: gdb.cp/demangle.exp: gnu: zero__8osMemoryPvUi -PASS: gdb.cp/demangle.exp: gnu: _2T4$N -PASS: gdb.cp/demangle.exp: gnu: _Q22T42t1$N -PASS: gdb.cp/demangle.exp: gnu: get__2T1 -PASS: gdb.cp/demangle.exp: gnu: get__Q22T11a -PASS: gdb.cp/demangle.exp: gnu: get__Q32T11a1b -PASS: gdb.cp/demangle.exp: gnu: get__Q42T11a1b1c -PASS: gdb.cp/demangle.exp: gnu: get__Q52T11a1b1c1d -PASS: gdb.cp/demangle.exp: gnu: put__2T1i -PASS: gdb.cp/demangle.exp: gnu: put__Q22T11ai -PASS: gdb.cp/demangle.exp: gnu: put__Q32T11a1bi -PASS: gdb.cp/demangle.exp: gnu: put__Q42T11a1b1ci -PASS: gdb.cp/demangle.exp: gnu: put__Q52T11a1b1c1di -PASS: gdb.cp/demangle.exp: gnu: bar__3fooPv -PASS: gdb.cp/demangle.exp: gnu: bar__3fooPCv -PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPv -PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPCv -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRC3foo -PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooR3foo -PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11ZcUi -PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11Z1tUi -PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11ZcPv -PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11Z1tPv -PASS: gdb.cp/demangle.exp: gnu: __t2T11Zci -PASS: gdb.cp/demangle.exp: gnu: __t2T11Zc -PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1ti -PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1t -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0 -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element -PASS: gdb.cp/demangle.exp: gnu: __cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$D$set -PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$I$set -PASS: gdb.cp/demangle.exp: gnu: __as__t5ListS1ZUiRCt5ListS1ZUi -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCUiPT0 -PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCt10ListS_link1ZUi -PASS: gdb.cp/demangle.exp: gnu: __t5ListS1ZUiRCt5ListS1ZUi -PASS: gdb.cp/demangle.exp: gnu: next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t5SetLS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __t8ListElem1Z5LabelRt4List1Z5Label -PASS: gdb.cp/demangle.exp: gnu: __t8BDDHookV1ZPcRCPc -PASS: gdb.cp/demangle.exp: gnu: _vt$t8BDDHookV1ZPc -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ211BDDFunction4VixB -PASS: gdb.cp/demangle.exp: gnu: __eq__FPvRCQ211BDDFunction4VixB -PASS: gdb.cp/demangle.exp: gnu: relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters -PASS: gdb.cp/demangle.exp: gnu: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: gnu: foo__I40 -PASS: gdb.cp/demangle.exp: gnu: foo__I_200_ -PASS: gdb.cp/demangle.exp: gnu: foo__I_200 -PASS: gdb.cp/demangle.exp: gnu: foo__I_4000000000000000000000000000000000000000000000000000000000000000000000000 -PASS: gdb.cp/demangle.exp: gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator -PASS: gdb.cp/demangle.exp: arm: set demangle-style -PASS: gdb.cp/demangle.exp: arm: check demangling style -PASS: gdb.cp/demangle.exp: arm: __dt__21T5__pt__11_PFiPPdPv_iFv -PASS: gdb.cp/demangle.exp: arm: __ct__1cFi -PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_iFv -PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __ct__2T2Fi -PASS: gdb.cp/demangle.exp: arm: __dt__2T1Fv -PASS: gdb.cp/demangle.exp: arm: __dt__12T5__pt__3_1xFv -PASS: gdb.cp/demangle.exp: arm: __dt__17T5__pt__8_PFcPv_iFv -PASS: gdb.cp/demangle.exp: arm: g__FP1cPC1cT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUlPCUlT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUiPCUiT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUsPCUsT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUcPCUcT1 -PASS: gdb.cp/demangle.exp: arm: g__F1TPlPClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRlRClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPiPCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRiRCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPsPCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRsRCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPcPCcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRcRCcT2 -PASS: gdb.cp/demangle.exp: arm: __ct__21T5__pt__11_PFiPPdPv_iFi -PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __nw__2T1SFUi -PASS: gdb.cp/demangle.exp: arm: __dl__2T1SFPv -PASS: gdb.cp/demangle.exp: arm: put__2T7SFi -PASS: gdb.cp/demangle.exp: arm: __dl__12T5__pt__3_1xSFPv -PASS: gdb.cp/demangle.exp: arm: h__FUc -PASS: gdb.cp/demangle.exp: arm: f__Fic -PASS: gdb.cp/demangle.exp: arm: h__FUi -PASS: gdb.cp/demangle.exp: arm: h__Fci -PASS: gdb.cp/demangle.exp: arm: h__FUl -PASS: gdb.cp/demangle.exp: arm: h__Fcl -PASS: gdb.cp/demangle.exp: arm: h__FUs -PASS: gdb.cp/demangle.exp: arm: h__Fcs -PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUlRPCUlT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUiRPCUiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUsRPCUsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUcRPCUcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPlRPClT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPiRPCiT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPcRPCcT3 -PASS: gdb.cp/demangle.exp: arm: X__12T5__pt__3_1x -PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_cFi -PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: g__FcR1cRC1cT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRPdRPCdT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRPfRPCfT2 -PASS: gdb.cp/demangle.exp: arm: h__FcT1 -PASS: gdb.cp/demangle.exp: arm: f__Ficd -PASS: gdb.cp/demangle.exp: arm: g__F1T1SdRPsRPCsT4 -PASS: gdb.cp/demangle.exp: arm: g__F1cC1cT1 -PASS: gdb.cp/demangle.exp: arm: g__FPdPCdT1 -PASS: gdb.cp/demangle.exp: arm: g__FPfPCfT1 -PASS: gdb.cp/demangle.exp: arm: g__FUlCUlT1 -PASS: gdb.cp/demangle.exp: arm: g__FPlPClT1 -PASS: gdb.cp/demangle.exp: arm: g__FUiCUiT1 -PASS: gdb.cp/demangle.exp: arm: g__FPiPCiT1 -PASS: gdb.cp/demangle.exp: arm: g__FUsCUsT1 -PASS: gdb.cp/demangle.exp: arm: g__FPsPCsT1 -PASS: gdb.cp/demangle.exp: arm: g__FUcCUcT1 -PASS: gdb.cp/demangle.exp: arm: g__FPcPCcT1 -PASS: gdb.cp/demangle.exp: arm: g__F1TlClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TiCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TsCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TcCcT2 -PASS: gdb.cp/demangle.exp: arm: __dl__17T5__pt__8_PFcPv_iSFPv -PASS: gdb.cp/demangle.exp: arm: printf__FPCce -PASS: gdb.cp/demangle.exp: arm: X__17T5__pt__8_PFcPv_i -PASS: gdb.cp/demangle.exp: arm: __ct__12T5__pt__3_1xFi -PASS: gdb.cp/demangle.exp: arm: g__F1SRUlRCUlT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPlRPClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUiRCUiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPiRPCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUsRCUsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPsRPCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUcRCUcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPcRPCcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRlRClT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRiRCiT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRsRCsT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRcRCcT3 -PASS: gdb.cp/demangle.exp: arm: __dl__21T5__pt__11_PFiPPdPv_iSFPv -PASS: gdb.cp/demangle.exp: arm: __std__foo -PASS: gdb.cp/demangle.exp: arm: __sti__bar -PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFci_v -PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFic_v -PASS: gdb.cp/demangle.exp: arm: get__2T7SFv -PASS: gdb.cp/demangle.exp: arm: X__21T5__pt__11_PFiPPdPv_i -PASS: gdb.cp/demangle.exp: arm: g__FcRdRCdT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRfRCfT2 -PASS: gdb.cp/demangle.exp: arm: __md__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_iSFPv -PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_cSFPv -PASS: gdb.cp/demangle.exp: arm: h__Fc -PASS: gdb.cp/demangle.exp: arm: h__Fd -PASS: gdb.cp/demangle.exp: arm: h__Ff -PASS: gdb.cp/demangle.exp: arm: h__Fi -PASS: gdb.cp/demangle.exp: arm: f__Fi -PASS: gdb.cp/demangle.exp: arm: h__Fl -PASS: gdb.cp/demangle.exp: arm: h__Fs -PASS: gdb.cp/demangle.exp: arm: __md__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: g__FcRP1cRPC1cT2 -PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_c -PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_i -PASS: gdb.cp/demangle.exp: arm: g__FdCdT1 -PASS: gdb.cp/demangle.exp: arm: g__FfCfT1 -PASS: gdb.cp/demangle.exp: arm: g__FlClT1 -PASS: gdb.cp/demangle.exp: arm: g__FiCiT1 -PASS: gdb.cp/demangle.exp: arm: g__FsCsT1 -PASS: gdb.cp/demangle.exp: arm: g__FcCcT1 -PASS: gdb.cp/demangle.exp: arm: __ct__17T5__pt__8_PFcPv_iFi -PASS: gdb.cp/demangle.exp: arm: f__FicdPc -PASS: gdb.cp/demangle.exp: arm: __nw__FUi -PASS: gdb.cp/demangle.exp: arm: __ct__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: __dt__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: put__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: get__Q2_2T11aSFv -PASS: gdb.cp/demangle.exp: arm: put__2T1SFi -PASS: gdb.cp/demangle.exp: arm: put__Q5_2T11a1b1c1dSFi -PASS: gdb.cp/demangle.exp: arm: get__Q4_2T11a1b1cSFv -PASS: gdb.cp/demangle.exp: arm: put__Q2_2T11aSFi -PASS: gdb.cp/demangle.exp: arm: put__Q4_2T11a1b1cSFi -PASS: gdb.cp/demangle.exp: arm: get__Q3_2T11a1bSFv -PASS: gdb.cp/demangle.exp: arm: get__2T1SFv -PASS: gdb.cp/demangle.exp: arm: get__Q5_2T11a1b1c1dSFv -PASS: gdb.cp/demangle.exp: arm: __dt__11T1__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __dt__12T1__pt__3_1tFv -PASS: gdb.cp/demangle.exp: arm: __dl__12T1__pt__3_1tSFPv -PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFi -PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFi -PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFv -PASS: gdb.cp/demangle.exp: arm: __dl__11T1__pt__2_cSFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPCv -PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPCv -PASS: gdb.cp/demangle.exp: arm: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooFRC3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFR3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFRC3foo -PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_dFi -PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_dFi -PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2 -PASS: gdb.cp/demangle.exp: arm: bar__3fooFiT16FooBar -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPiN51PdN37PcN211T1iN215 -PASS: gdb.cp/demangle.exp: arm: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: hp: set demangle-style -PASS: gdb.cp/demangle.exp: hp: check demangling style -PASS: gdb.cp/demangle.exp: hp: g__FP1cPC1cT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUlPCUlT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUiPCUiT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUsPCUsT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUcPCUcT1 -PASS: gdb.cp/demangle.exp: hp: g__F1TPlPClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRlRClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPiPCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRiRCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPsPCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRsRCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPcPCcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRcRCcT2 -PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __nw__2T1SFUi -PASS: gdb.cp/demangle.exp: hp: __dl__2T1SFPv -PASS: gdb.cp/demangle.exp: hp: put__2T7SFi -PASS: gdb.cp/demangle.exp: hp: h__FUc -PASS: gdb.cp/demangle.exp: hp: f__Fic -PASS: gdb.cp/demangle.exp: hp: h__FUi -PASS: gdb.cp/demangle.exp: hp: h__Fci -PASS: gdb.cp/demangle.exp: hp: h__FUl -PASS: gdb.cp/demangle.exp: hp: h__Fcl -PASS: gdb.cp/demangle.exp: hp: h__FUs -PASS: gdb.cp/demangle.exp: hp: h__Fcs -PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUlRPCUlT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUiRPCUiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUsRPCUsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUcRPCUcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPlRPClT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPiRPCiT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPcRPCcT3 -PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: g__FcR1cRC1cT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRPdRPCdT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRPfRPCfT2 -PASS: gdb.cp/demangle.exp: hp: h__FcT1 -PASS: gdb.cp/demangle.exp: hp: f__Ficd -PASS: gdb.cp/demangle.exp: hp: g__F1T1SdRPsRPCsT4 -PASS: gdb.cp/demangle.exp: hp: g__F1cC1cT1 -PASS: gdb.cp/demangle.exp: hp: g__FPdPCdT1 -PASS: gdb.cp/demangle.exp: hp: g__FPfPCfT1 -PASS: gdb.cp/demangle.exp: hp: g__FUlCUlT1 -PASS: gdb.cp/demangle.exp: hp: g__FPlPClT1 -PASS: gdb.cp/demangle.exp: hp: g__FUiCUiT1 -PASS: gdb.cp/demangle.exp: hp: g__FPiPCiT1 -PASS: gdb.cp/demangle.exp: hp: g__FUsCUsT1 -PASS: gdb.cp/demangle.exp: hp: g__FPsPCsT1 -PASS: gdb.cp/demangle.exp: hp: g__FUcCUcT1 -PASS: gdb.cp/demangle.exp: hp: g__FPcPCcT1 -PASS: gdb.cp/demangle.exp: hp: g__F1TlClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TiCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TsCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TcCcT2 -PASS: gdb.cp/demangle.exp: hp: printf__FPCce -PASS: gdb.cp/demangle.exp: hp: g__F1SRUlRCUlT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPlRPClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUiRCUiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPiRPCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUsRCUsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPsRPCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUcRCUcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPcRPCcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRlRClT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRiRCiT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRsRCsT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRcRCcT3 -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFic_v -PASS: gdb.cp/demangle.exp: hp: get__2T7SFv -PASS: gdb.cp/demangle.exp: hp: g__FcRdRCdT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRfRCfT2 -PASS: gdb.cp/demangle.exp: hp: __md__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2i -PASS: gdb.cp/demangle.exp: hp: h__Fc -PASS: gdb.cp/demangle.exp: hp: h__Fd -PASS: gdb.cp/demangle.exp: hp: h__Ff -PASS: gdb.cp/demangle.exp: hp: h__Fi -PASS: gdb.cp/demangle.exp: hp: f__Fi -PASS: gdb.cp/demangle.exp: hp: h__Fl -PASS: gdb.cp/demangle.exp: hp: h__Fs -PASS: gdb.cp/demangle.exp: hp: __md__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: g__FcRP1cRPC1cT2 -PASS: gdb.cp/demangle.exp: hp: g__FdCdT1 -PASS: gdb.cp/demangle.exp: hp: g__FfCfT1 -PASS: gdb.cp/demangle.exp: hp: g__FlClT1 -PASS: gdb.cp/demangle.exp: hp: g__FiCiT1 -PASS: gdb.cp/demangle.exp: hp: g__FsCsT1 -PASS: gdb.cp/demangle.exp: hp: g__FcCcT1 -PASS: gdb.cp/demangle.exp: hp: f__FicdPc -PASS: gdb.cp/demangle.exp: hp: __nw__FUi -PASS: gdb.cp/demangle.exp: hp: __ct__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: __dt__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: put__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: get__Q2_2T11aSFv -PASS: gdb.cp/demangle.exp: hp: put__2T1SFi -PASS: gdb.cp/demangle.exp: hp: put__Q5_2T11a1b1c1dSFi -PASS: gdb.cp/demangle.exp: hp: get__Q4_2T11a1b1cSFv -PASS: gdb.cp/demangle.exp: hp: put__Q2_2T11aSFi -PASS: gdb.cp/demangle.exp: hp: put__Q4_2T11a1b1cSFi -PASS: gdb.cp/demangle.exp: hp: get__Q3_2T11a1bSFv -PASS: gdb.cp/demangle.exp: hp: get__2T1SFv -PASS: gdb.cp/demangle.exp: hp: get__Q5_2T11a1b1c1dSFv -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPv -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPCv -PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPv -PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPCv -PASS: gdb.cp/demangle.exp: hp: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooFRC3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFR3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFRC3foo -PASS: gdb.cp/demangle.exp: hp: bar__3fooFiT16FooBar -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPiN51PdN37PcN211T1iN215 -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFiPPdPv_i__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__1cFi -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTi__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T2Fi -PASS: gdb.cp/demangle.exp: hp: __dt__2T1Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XT1x__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFcPv_i__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFiPPdPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XT1x__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XT1x -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTc__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFcPv_i__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFcPv_i -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XT1x__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFiPPdPv_i__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFiPPdPv_i -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTi__SFPv -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTc__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTc -PASS: gdb.cp/demangle.exp: hp: X__2T5XTi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: __dt__2T1XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T1XT1t__Fv -PASS: gdb.cp/demangle.exp: hp: __dl__2T1XT1t__SFPv -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fv -PASS: gdb.cp/demangle.exp: hp: __dl__2T1XTc__SFPv -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTd__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTd__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2 -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiUP34__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXUP2701Td__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSP334__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSM__SCFPPd -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67UP4000TRs__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67TRdTFPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: X__6vectorXTiSN67TdTPvUP5TRs -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3foo__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3fooTPvA5Label__FiPPvT2 -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN42A3foo__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_2 -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_19 -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v_34 -PASS: gdb.cp/demangle.exp: hp: spec__13Spec<%1,%1.*>XTiTPi_FPi -PASS: gdb.cp/demangle.exp: hp: spec__16Spec<%1,%1.&,%1>XTiTRiTi_FPi -PASS: gdb.cp/demangle.exp: hp: add__XTc_FcT1 -PASS: gdb.cp/demangle.exp: hp: add__XTcSP9A5label_FcPPlT1 -PASS: gdb.cp/demangle.exp: hp: add__XTPfTFPd_f_FcT1 -PASS: gdb.cp/demangle.exp: hp: unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv -PASS: gdb.cp/demangle.exp: hp: _Utf390_1__1_9223372036854775807__9223372036854775 -Running ./gdb.cp/derivation.exp ... -PASS: gdb.cp/derivation.exp: before run: ptype A::value_type -PASS: gdb.cp/derivation.exp: before run: whatis A::value_type -PASS: gdb.cp/derivation.exp: before run: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype D::value_type -PASS: gdb.cp/derivation.exp: before run: whatis D::value_type -PASS: gdb.cp/derivation.exp: before run: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype E::value_type -PASS: gdb.cp/derivation.exp: before run: whatis E::value_type -PASS: gdb.cp/derivation.exp: before run: p (E::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype F::value_type -PASS: gdb.cp/derivation.exp: before run: whatis F::value_type -PASS: gdb.cp/derivation.exp: before run: p (F::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype A2::value_type -PASS: gdb.cp/derivation.exp: before run: whatis A2::value_type -PASS: gdb.cp/derivation.exp: before run: p (A2::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype D2::value_type -PASS: gdb.cp/derivation.exp: before run: whatis D2::value_type -PASS: gdb.cp/derivation.exp: before run: p (D2::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype Z::value_type -PASS: gdb.cp/derivation.exp: before run: whatis Z::value_type -PASS: gdb.cp/derivation.exp: before run: p (Z::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype ZZ::value_type -PASS: gdb.cp/derivation.exp: before run: whatis ZZ::value_type -PASS: gdb.cp/derivation.exp: before run: p (ZZ::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype A::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis A::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype D::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis D::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype A2::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis A2::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (A2::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype D2::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis D2::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (D2::value_type) 0 -PASS: gdb.cp/derivation.exp: up from marker1 -PASS: gdb.cp/derivation.exp: print value of a_instance -PASS: gdb.cp/derivation.exp: ptype a_instance -PASS: gdb.cp/derivation.exp: print value of d_instance -PASS: gdb.cp/derivation.exp: ptype d_instance -PASS: gdb.cp/derivation.exp: print value of e_instance -PASS: gdb.cp/derivation.exp: ptype e_instance -PASS: gdb.cp/derivation.exp: print value of f_instance -PASS: gdb.cp/derivation.exp: ptype f_instance -PASS: gdb.cp/derivation.exp: ptype g_instance -PASS: gdb.cp/derivation.exp: print value of d_instance.a -PASS: gdb.cp/derivation.exp: print value of d_instance.aa -PASS: gdb.cp/derivation.exp: print value of d_instance.b -PASS: gdb.cp/derivation.exp: print value of d_instance.bb -PASS: gdb.cp/derivation.exp: print value of d_instance.c -PASS: gdb.cp/derivation.exp: print value of d_instance.cc -PASS: gdb.cp/derivation.exp: print value of d_instance.d -PASS: gdb.cp/derivation.exp: print value of d_instance.dd -PASS: gdb.cp/derivation.exp: print value of g_instance.a -PASS: gdb.cp/derivation.exp: print value of g_instance.b -PASS: gdb.cp/derivation.exp: print value of g_instance.c -PASS: gdb.cp/derivation.exp: print value of g_instance.afoo() -PASS: gdb.cp/derivation.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/derivation.exp: print value of g_instance.bfoo() -PASS: gdb.cp/derivation.exp: print value of g_instance.cfoo() -PASS: gdb.cp/derivation.exp: whatis c_instance.c -PASS: gdb.cp/derivation.exp: ptype c_instance.c -PASS: gdb.cp/derivation.exp: whatis g_instance.g -PASS: gdb.cp/derivation.exp: ptype g_instance.g -PASS: gdb.cp/derivation.exp: whatis a_instance.a -PASS: gdb.cp/derivation.exp: ptype a_instance.a -PASS: gdb.cp/derivation.exp: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis b_instance.b -PASS: gdb.cp/derivation.exp: ptype b_instance.b -PASS: gdb.cp/derivation.exp: whatis d_instance.d -PASS: gdb.cp/derivation.exp: ptype d_instance.d -PASS: gdb.cp/derivation.exp: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis e_instance.e -PASS: gdb.cp/derivation.exp: ptype e_instance.e -PASS: gdb.cp/derivation.exp: p (E::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis f_instance.f -PASS: gdb.cp/derivation.exp: ptype f_instance.f -PASS: gdb.cp/derivation.exp: p (F::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis z_instance.z -PASS: gdb.cp/derivation.exp: ptype z_instance.z -PASS: gdb.cp/derivation.exp: p (Z::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis zz_instance.zz -PASS: gdb.cp/derivation.exp: ptype zz_instance.zz -PASS: gdb.cp/derivation.exp: p (ZZ::value_type) 0 -PASS: gdb.cp/derivation.exp: ptype vderived -PASS: gdb.cp/derivation.exp: print vderived -PASS: gdb.cp/derivation.exp: ptype N::value_type -PASS: gdb.cp/derivation.exp: ptype N::Derived::value_type -PASS: gdb.cp/derivation.exp: ptype value_type -Running ./gdb.cp/destrprint.exp ... -PASS: gdb.cp/destrprint.exp: continue to breakpoint: Break here -PASS: gdb.cp/destrprint.exp: go up to ~Derived -PASS: gdb.cp/destrprint.exp: set print object on -PASS: gdb.cp/destrprint.exp: print *this with print object = on -PASS: gdb.cp/destrprint.exp: set print object off -PASS: gdb.cp/destrprint.exp: print *this with print object = off -Running ./gdb.cp/dispcxx.exp ... -PASS: gdb.cp/dispcxx.exp: continue to breakpoint: here -PASS: gdb.cp/dispcxx.exp: display k -Running ./gdb.cp/exception.exp ... -PASS: gdb.cp/exception.exp: catch catch (before inferior run) -PASS: gdb.cp/exception.exp: catch throw (before inferior run) -PASS: gdb.cp/exception.exp: info breakpoints (before inferior run) -PASS: gdb.cp/exception.exp: Set temporary breakpoint at main -PASS: gdb.cp/exception.exp: Run to main -PASS: gdb.cp/exception.exp: info breakpoints (after inferior run) -PASS: gdb.cp/exception.exp: break catcher -PASS: gdb.cp/exception.exp: continue to first throw -PASS: gdb.cp/exception.exp: backtrace after first throw -PASS: gdb.cp/exception.exp: continue to first catch -PASS: gdb.cp/exception.exp: backtrace after first catch -PASS: gdb.cp/exception.exp: continue to catcher for the first time -PASS: gdb.cp/exception.exp: continue to second throw -PASS: gdb.cp/exception.exp: backtrace after second throw -PASS: gdb.cp/exception.exp: continue to second catch -PASS: gdb.cp/exception.exp: backtrace after second catch -PASS: gdb.cp/exception.exp: continue to catcher for the second time -Running ./gdb.cp/expand-psymtabs-cxx.exp ... -PASS: gdb.cp/expand-psymtabs-cxx.exp: set language c++ -PASS: gdb.cp/expand-psymtabs-cxx.exp: before expand -PASS: gdb.cp/expand-psymtabs-cxx.exp: force expand -PASS: gdb.cp/expand-psymtabs-cxx.exp: after expand -Running ./gdb.cp/expand-sals.exp ... -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: func -PASS: gdb.cp/expand-sals.exp: up -PASS: gdb.cp/expand-sals.exp: break -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: caller -PASS: gdb.cp/expand-sals.exp: bt from A -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: next caller func -Running ./gdb.cp/extern-c.exp ... -PASS: gdb.cp/extern-c.exp: setting breakpoint at c_func -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_func -PASS: gdb.cp/extern-c.exp: initialize counter -PASS: gdb.cp/extern-c.exp: rbreak c_funcs -PASS: gdb.cp/extern-c.exp: command details for multiple breakpoints -PASS: gdb.cp/extern-c.exp: set commands on multiple breakpoints -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_1 -PASS: gdb.cp/extern-c.exp: verify counter at first breakpoint -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_2 -PASS: gdb.cp/extern-c.exp: verify counter at second breakpoint -Running ./gdb.cp/formatted-ref.exp ... -PASS: gdb.cp/formatted-ref.exp: print/x s -PASS: gdb.cp/formatted-ref.exp: print/x e -PASS: gdb.cp/formatted-ref.exp: print/x i -PASS: gdb.cp/formatted-ref.exp: print/x &s -PASS: gdb.cp/formatted-ref.exp: print/x &e -PASS: gdb.cp/formatted-ref.exp: print/x &i -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&s)) -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&i)) -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&e)) -PASS: gdb.cp/formatted-ref.exp: print s.x == 13 -Running ./gdb.cp/fpointer.exp ... -PASS: gdb.cp/fpointer.exp: p p1() -PASS: gdb.cp/fpointer.exp: p p2() -PASS: gdb.cp/fpointer.exp: p p[0]() -PASS: gdb.cp/fpointer.exp: p p[1]() -PASS: gdb.cp/fpointer.exp: p p3('a') -PASS: gdb.cp/fpointer.exp: p p4(1) -Running ./gdb.cp/gdb1355.exp ... -PASS: gdb.cp/gdb1355.exp: ptype s1 -PASS: gdb.cp/gdb1355.exp: print s1 -Running ./gdb.cp/gdb2384.exp ... -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/gdb2384.exp: print d1.meth () -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/gdb2384.exp: gdb2384 -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second) -PASS: gdb.cp/gdb2384.exp: print d2.meth() -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second) -PASS: gdb.cp/gdb2384.exp: gdb2384 (second) -Running ./gdb.cp/gdb2495.exp ... -PASS: gdb.cp/gdb2495.exp: p exceptions.no_throw_function() -PASS: gdb.cp/gdb2495.exp: p exceptions.throw_function_with_handler() -FAIL: gdb.cp/gdb2495.exp: Call a function that raises an exception without a handler. -FAIL: gdb.cp/gdb2495.exp: bt after returning from a popped frame -PASS: gdb.cp/gdb2495.exp: info breakpoints -PASS: gdb.cp/gdb2495.exp: set unwinn-on-terminating-exception off -PASS: gdb.cp/gdb2495.exp: Turn off unwind on terminating exception flag -PASS: gdb.cp/gdb2495.exp: Call a function that raises an exception with unwinding off.. -PASS: gdb.cp/gdb2495.exp: set unwindonsignal on -PASS: gdb.cp/gdb2495.exp: Turn on unwind on signal -PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1) -PASS: gdb.cp/gdb2495.exp: set unwindonsignal off -PASS: gdb.cp/gdb2495.exp: Turn off unwind on signal -PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1) -Running ./gdb.cp/hang.exp ... -PASS: gdb.cp/hang.exp: doesn't overwrite struct type -PASS: gdb.cp/hang.exp: doesn't corrupt cv_type chain -Running ./gdb.cp/infcall-dlopen.exp ... -PASS: gdb.cp/infcall-dlopen.exp: test 0 -PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 1 -PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 2 -PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 3 -PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 4 -PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 5 -PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 6 -PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 7 -PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 8 -PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 9 -PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 2 -Running ./gdb.cp/inherit.exp ... -PASS: gdb.cp/inherit.exp: set width 0 -PASS: gdb.cp/inherit.exp: set language c++ -PASS: gdb.cp/inherit.exp: ptype A (FIXME) -PASS: gdb.cp/inherit.exp: ptype class A (FIXME) -PASS: gdb.cp/inherit.exp: ptype g_A (FIXME) -PASS: gdb.cp/inherit.exp: ptype B -PASS: gdb.cp/inherit.exp: ptype class B -PASS: gdb.cp/inherit.exp: ptype g_B -PASS: gdb.cp/inherit.exp: ptype C -PASS: gdb.cp/inherit.exp: ptype class C -PASS: gdb.cp/inherit.exp: ptype g_C -PASS: gdb.cp/inherit.exp: ptype tagless struct -PASS: gdb.cp/inherit.exp: ptype variable of type tagless struct -PASS: gdb.cp/inherit.exp: ptype D -PASS: gdb.cp/inherit.exp: ptype class D -PASS: gdb.cp/inherit.exp: ptype g_D -PASS: gdb.cp/inherit.exp: ptype E -PASS: gdb.cp/inherit.exp: ptype class E -PASS: gdb.cp/inherit.exp: ptype g_E -PASS: gdb.cp/inherit.exp: ptype vA -PASS: gdb.cp/inherit.exp: ptype class vA -PASS: gdb.cp/inherit.exp: ptype g_vA -PASS: gdb.cp/inherit.exp: ptype vB -PASS: gdb.cp/inherit.exp: ptype class vB -PASS: gdb.cp/inherit.exp: ptype g_vB -PASS: gdb.cp/inherit.exp: ptype vC -PASS: gdb.cp/inherit.exp: ptype class vC -PASS: gdb.cp/inherit.exp: ptype g_vC -PASS: gdb.cp/inherit.exp: ptype vD -PASS: gdb.cp/inherit.exp: ptype class vD -PASS: gdb.cp/inherit.exp: ptype g_vD -PASS: gdb.cp/inherit.exp: ptype vE -PASS: gdb.cp/inherit.exp: ptype class vE -PASS: gdb.cp/inherit.exp: ptype g_vE -PASS: gdb.cp/inherit.exp: print g_A.A::a -PASS: gdb.cp/inherit.exp: print g_A.A::x -PASS: gdb.cp/inherit.exp: print g_A.a -PASS: gdb.cp/inherit.exp: print g_A.x -PASS: gdb.cp/inherit.exp: print g_B.A::a -PASS: gdb.cp/inherit.exp: print g_B.A::x -PASS: gdb.cp/inherit.exp: print g_B.B::b -PASS: gdb.cp/inherit.exp: print g_B.B::x -PASS: gdb.cp/inherit.exp: print g_B.a -PASS: gdb.cp/inherit.exp: print g_B.b -PASS: gdb.cp/inherit.exp: print g_B.x -PASS: gdb.cp/inherit.exp: print g_C.A::a -PASS: gdb.cp/inherit.exp: print g_C.A::x -PASS: gdb.cp/inherit.exp: print g_C.C::c -PASS: gdb.cp/inherit.exp: print g_C.C::x -PASS: gdb.cp/inherit.exp: print g_C.a -PASS: gdb.cp/inherit.exp: print g_C.c -PASS: gdb.cp/inherit.exp: print g_C.x -PASS: gdb.cp/inherit.exp: print g_A -PASS: gdb.cp/inherit.exp: print g_B -PASS: gdb.cp/inherit.exp: print g_C -PASS: gdb.cp/inherit.exp: print g_A.A::a -PASS: gdb.cp/inherit.exp: print g_A.A::x -PASS: gdb.cp/inherit.exp: print g_B.A::a -PASS: gdb.cp/inherit.exp: print g_B.A::x -PASS: gdb.cp/inherit.exp: print g_B.B::b -PASS: gdb.cp/inherit.exp: print g_B.B::x -PASS: gdb.cp/inherit.exp: print g_C.A::a -PASS: gdb.cp/inherit.exp: print g_C.A::x -PASS: gdb.cp/inherit.exp: print g_C.C::c -PASS: gdb.cp/inherit.exp: print g_C.C::x -PASS: gdb.cp/inherit.exp: print g_D.A::a -PASS: gdb.cp/inherit.exp: print g_D.C::a -PASS: gdb.cp/inherit.exp: print g_D.B::a -PASS: gdb.cp/inherit.exp: print g_D.A::x -PASS: gdb.cp/inherit.exp: print g_D.B::b -PASS: gdb.cp/inherit.exp: print g_D.B::x -PASS: gdb.cp/inherit.exp: print g_D.C::c -PASS: gdb.cp/inherit.exp: print g_D.C::x -PASS: gdb.cp/inherit.exp: print g_D.D::d -PASS: gdb.cp/inherit.exp: print g_D.D::x -PASS: gdb.cp/inherit.exp: print g_E.A::a -PASS: gdb.cp/inherit.exp: print g_E.A::x -PASS: gdb.cp/inherit.exp: print g_E.B::b -PASS: gdb.cp/inherit.exp: print g_E.B::x -PASS: gdb.cp/inherit.exp: print g_E.C::c -PASS: gdb.cp/inherit.exp: print g_E.C::x -PASS: gdb.cp/inherit.exp: print g_E.D::d -PASS: gdb.cp/inherit.exp: print g_E.D::x -PASS: gdb.cp/inherit.exp: print g_E.E::e -PASS: gdb.cp/inherit.exp: print g_E.E::x -PASS: gdb.cp/inherit.exp: ptype g_D.b -PASS: gdb.cp/inherit.exp: ptype g_D.c -PASS: gdb.cp/inherit.exp: ptype g_D.d -PASS: gdb.cp/inherit.exp: ptype g_A.A::a -PASS: gdb.cp/inherit.exp: ptype g_A.A::x -PASS: gdb.cp/inherit.exp: ptype g_B.A::a -PASS: gdb.cp/inherit.exp: ptype g_B.A::x -PASS: gdb.cp/inherit.exp: ptype g_B.B::b -PASS: gdb.cp/inherit.exp: ptype g_B.B::x -PASS: gdb.cp/inherit.exp: ptype g_C.A::a -PASS: gdb.cp/inherit.exp: ptype g_C.A::x -PASS: gdb.cp/inherit.exp: ptype g_C.C::c -PASS: gdb.cp/inherit.exp: ptype g_C.C::x -PASS: gdb.cp/inherit.exp: ptype g_D.A::a -PASS: gdb.cp/inherit.exp: ptype g_D.A::x -PASS: gdb.cp/inherit.exp: ptype g_D.B::b -PASS: gdb.cp/inherit.exp: ptype g_D.B::x -PASS: gdb.cp/inherit.exp: ptype g_D.C::c -PASS: gdb.cp/inherit.exp: ptype g_D.C::x -PASS: gdb.cp/inherit.exp: ptype g_D.D::d -PASS: gdb.cp/inherit.exp: ptype g_D.D::x -PASS: gdb.cp/inherit.exp: ptype g_E.A::a -PASS: gdb.cp/inherit.exp: ptype g_E.A::x -PASS: gdb.cp/inherit.exp: ptype g_E.B::b -PASS: gdb.cp/inherit.exp: ptype g_E.B::x -PASS: gdb.cp/inherit.exp: ptype g_E.C::c -PASS: gdb.cp/inherit.exp: ptype g_E.C::x -PASS: gdb.cp/inherit.exp: ptype g_E.D::d -PASS: gdb.cp/inherit.exp: ptype g_E.D::x -PASS: gdb.cp/inherit.exp: ptype g_E.E::e -PASS: gdb.cp/inherit.exp: ptype g_E.E::x -PASS: gdb.cp/inherit.exp: print g_D -PASS: gdb.cp/inherit.exp: print g_E -PASS: gdb.cp/inherit.exp: print anonymous union member -PASS: gdb.cp/inherit.exp: print variable of type anonymous union -PASS: gdb.cp/inherit.exp: print type of anonymous union -PASS: gdb.cp/inherit.exp: print g_vA.vA::va -PASS: gdb.cp/inherit.exp: print g_vA.vA::vx -PASS: gdb.cp/inherit.exp: print g_vA.va -PASS: gdb.cp/inherit.exp: print g_vA.vx -PASS: gdb.cp/inherit.exp: print g_vB.vA::va -PASS: gdb.cp/inherit.exp: print g_vB.vA::vx -PASS: gdb.cp/inherit.exp: print g_vB.vB::vb -PASS: gdb.cp/inherit.exp: print g_vB.vB::vx -PASS: gdb.cp/inherit.exp: print g_vB.va -PASS: gdb.cp/inherit.exp: print g_vB.vb -PASS: gdb.cp/inherit.exp: print g_vB.vx -PASS: gdb.cp/inherit.exp: print g_vC.vA::va -PASS: gdb.cp/inherit.exp: print g_vC.vA::vx -PASS: gdb.cp/inherit.exp: print g_vC.vC::vc -PASS: gdb.cp/inherit.exp: print g_vC.vC::vx -PASS: gdb.cp/inherit.exp: print g_vC.va -PASS: gdb.cp/inherit.exp: print g_vC.vc -PASS: gdb.cp/inherit.exp: print g_vC.vx -PASS: gdb.cp/inherit.exp: print g_vA -PASS: gdb.cp/inherit.exp: print g_vB (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vC (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vD.vA::va -PASS: gdb.cp/inherit.exp: print g_vD.vA::vx -PASS: gdb.cp/inherit.exp: print g_vD.vB::vb -PASS: gdb.cp/inherit.exp: print g_vD.vB::vx -PASS: gdb.cp/inherit.exp: print g_vD.vC::vc -PASS: gdb.cp/inherit.exp: print g_vD.vC::vx -PASS: gdb.cp/inherit.exp: print g_vD.vD::vd -PASS: gdb.cp/inherit.exp: print g_vD.vD::vx -PASS: gdb.cp/inherit.exp: print g_vE.vA::va -PASS: gdb.cp/inherit.exp: print g_vE.vA::vx -PASS: gdb.cp/inherit.exp: print g_vE.vB::vb -PASS: gdb.cp/inherit.exp: print g_vE.vB::vx -PASS: gdb.cp/inherit.exp: print g_vE.vC::vc -PASS: gdb.cp/inherit.exp: print g_vE.vC::vx -PASS: gdb.cp/inherit.exp: print g_vE.vD::vd -PASS: gdb.cp/inherit.exp: print g_vE.vD::vx -PASS: gdb.cp/inherit.exp: print g_vE.vE::ve -PASS: gdb.cp/inherit.exp: print g_vE.vE::vx -PASS: gdb.cp/inherit.exp: print g_vD (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vE (FIXME v3 vtbl ptr) -Running ./gdb.cp/koenig.exp ... -PASS: gdb.cp/koenig.exp: p first(c) -PASS: gdb.cp/koenig.exp: p second(0,0,c,0,0) -PASS: gdb.cp/koenig.exp: p entry (c) -PASS: gdb.cp/koenig.exp: p first(0,c) -PASS: gdb.cp/koenig.exp: p first(b.c) -PASS: gdb.cp/koenig.exp: p foo(eo) -PASS: gdb.cp/koenig.exp: p foo(eo, eo) -PASS: gdb.cp/koenig.exp: p foo(eo, eo, 1) -PASS: gdb.cp/koenig.exp: p foo(fo, eo) -PASS: gdb.cp/koenig.exp: p foo(1 ,fo, eo) -PASS: gdb.cp/koenig.exp: p foo(go, fo, eo) -PASS: gdb.cp/koenig.exp: p fake(eo) -PASS: gdb.cp/koenig.exp: p foo (fake) -PASS: gdb.cp/koenig.exp: p foo(io) -PASS: gdb.cp/koenig.exp: p foo(ix) -PASS: gdb.cp/koenig.exp: p foo(ju) -PASS: gdb.cp/koenig.exp: p foo(js) -PASS: gdb.cp/koenig.exp: p foo(je) -XFAIL: gdb.cp/koenig.exp: p foo(jab) -PASS: gdb.cp/koenig.exp: p foo(jap) -PASS: gdb.cp/koenig.exp: p foo(japp) -PASS: gdb.cp/koenig.exp: p foo(jca) -PASS: gdb.cp/koenig.exp: p foo(ko,1) -PASS: gdb.cp/koenig.exp: p foo(ko,1.0f) -XFAIL: gdb.cp/koenig.exp: p bar(ko,1) -PASS: gdb.cp/koenig.exp: p foo(labo) -PASS: gdb.cp/koenig.exp: p ma.foo('a') -PASS: gdb.cp/koenig.exp: p foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::N::foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::FAKE::foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::N::fake(ma,'a') -PASS: gdb.cp/koenig.exp: p M::bar('a') -PASS: gdb.cp/koenig.exp: p M::N::bar('a') -PASS: gdb.cp/koenig.exp: p foo(ttoa, 'a') -PASS: gdb.cp/koenig.exp: p foo (p_union) -PASS: gdb.cp/koenig.exp: p q == 5 -PASS: gdb.cp/koenig.exp: p q == 5.0f -PASS: gdb.cp/koenig.exp: p q != 5 -PASS: gdb.cp/koenig.exp: p q != 5.0f -PASS: gdb.cp/koenig.exp: p q + 5.0f -PASS: gdb.cp/koenig.exp: p q + 5 -PASS: gdb.cp/koenig.exp: p ++q -PASS: gdb.cp/koenig.exp: p r.rfoo() -PASS: gdb.cp/koenig.exp: continue to breakpoint: marker1 -PASS: gdb.cp/koenig.exp: p rfoo() -PASS: gdb.cp/koenig.exp: p this->rfoo() -Running ./gdb.cp/local.exp ... -PASS: gdb.cp/local.exp: up from marker1 -PASS: gdb.cp/local.exp: ptype l -PASS: gdb.cp/local.exp: ptype Local -PASS: gdb.cp/local.exp: break marker2 -PASS: gdb.cp/local.exp: continuing to marker2 -PASS: gdb.cp/local.exp: up from marker2 -PASS: gdb.cp/local.exp: Local out of scope -PASS: gdb.cp/local.exp: ptype InnerLocal (pattern 1) -PASS: gdb.cp/local.exp: ptype NestedInnerLocal -KFAIL: gdb.cp/local.exp: ptype InnerLocal::NestedInnerLocal (PRMS: gdb/482) -Running ./gdb.cp/maint.exp ... -PASS: gdb.cp/maint.exp: help maintenance cplus -PASS: gdb.cp/maint.exp: help maint cp -PASS: gdb.cp/maint.exp: maint cp -PASS: gdb.cp/maint.exp: help maint cp first_component -PASS: gdb.cp/maint.exp: help maint cp namespace -PASS: gdb.cp/maint.exp: set complaints 1000 -PASS: gdb.cp/maint.exp: maint cp first_component foo -PASS: gdb.cp/maint.exp: maint cp first_component operator<< -PASS: gdb.cp/maint.exp: maint cp first_component operator>> -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component operator() -PASS: gdb.cp/maint.exp: maint cp first_component operator> -PASS: gdb.cp/maint.exp: maint cp first_component operator< -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component foo() -PASS: gdb.cp/maint.exp: maint cp first_component foo(int) -PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y) -PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y, A::B) -PASS: gdb.cp/maint.exp: maint cp first_component foo(std::basic_streambuf >) -PASS: gdb.cp/maint.exp: maint cp first_component operator>(X::Y) -PASS: gdb.cp/maint.exp: maint cp first_component int operator<< () -PASS: gdb.cp/maint.exp: maint cp first_component T -PASS: gdb.cp/maint.exp: maint cp first_component int foo<&(operator<<(C, C))>() -PASS: gdb.cp/maint.exp: maint cp first_component int foo<&operator<<(C, C)>() -PASS: gdb.cp/maint.exp: maint cp first_component int foo() -PASS: gdb.cp/maint.exp: maint cp first_component foo::bar -PASS: gdb.cp/maint.exp: maint cp first_component foo::bar::baz -PASS: gdb.cp/maint.exp: maint cp first_component C::bar -PASS: gdb.cp/maint.exp: maint cp first_component C > >::bar -PASS: gdb.cp/maint.exp: maint cp first_component foo< -PASS: gdb.cp/maint.exp: maint cp first_component foo( -PASS: gdb.cp/maint.exp: maint cp first_component bool operator< -PASS: gdb.cp/maint.exp: maint cp namespace -Running ./gdb.cp/mb-ctor.exp ... -PASS: gdb.cp/mb-ctor.exp: set-breakpoint at ctor -PASS: gdb.cp/mb-ctor.exp: set-breakpoint at dtor -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v1 -PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v2 -PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v1 -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v2 -PASS: gdb.cp/mb-ctor.exp: run to exit -Running ./gdb.cp/mb-inline.exp ... -PASS: gdb.cp/mb-inline.exp: set breakpoint -PASS: gdb.cp/mb-inline.exp: info break -PASS: gdb.cp/mb-inline.exp: run to breakpoint -PASS: gdb.cp/mb-inline.exp: run to breakpoint 2 -PASS: gdb.cp/mb-inline.exp: disabling location: disable -PASS: gdb.cp/mb-inline.exp: disabling location: run to breakpoint -PASS: gdb.cp/mb-inline.exp: disabled breakpoint 1.2 -PASS: gdb.cp/mb-inline.exp: set multi_line_foo breakpoint -PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 afn -PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 bfn -Running ./gdb.cp/mb-templates.exp ... -PASS: gdb.cp/mb-templates.exp: initial condition: set breakpoint -PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint -PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: kill -PASS: gdb.cp/mb-templates.exp: separate condition: set breakpoint -PASS: gdb.cp/mb-templates.exp: separate condition: set condition -PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint -PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: disabling location: disable -PASS: gdb.cp/mb-templates.exp: disabling location: run to breakpoint -PASS: gdb.cp/mb-templates.exp: disabling location: enable -PASS: gdb.cp/mb-templates.exp: disable breakpoint: disable -PASS: gdb.cp/mb-templates.exp: disable breakpoint: run to breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: set breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: set multi_line_foo breakpoint -PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 -PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 -Running ./gdb.cp/m-data.exp ... -PASS: gdb.cp/m-data.exp: continue to breakpoint: end of first constructors -PASS: gdb.cp/m-data.exp: simple object, const bool -PASS: gdb.cp/m-data.exp: simple object, const int -PASS: gdb.cp/m-data.exp: simple object, long -PASS: gdb.cp/m-data.exp: simple object, enum -PASS: gdb.cp/m-data.exp: derived template object, base const bool -PASS: gdb.cp/m-data.exp: derived template object, base const int -PASS: gdb.cp/m-data.exp: derived template object, base long -PASS: gdb.cp/m-data.exp: derived template object, base enum -PASS: gdb.cp/m-data.exp: derived template object, derived enum -PASS: gdb.cp/m-data.exp: template object, const bool -PASS: gdb.cp/m-data.exp: template object, const int -PASS: gdb.cp/m-data.exp: template object, long -PASS: gdb.cp/m-data.exp: template object, base enum -PASS: gdb.cp/m-data.exp: template object, derived enum -PASS: gdb.cp/m-data.exp: continue to breakpoint: continue to shadow breakpoint -PASS: gdb.cp/m-data.exp: shadowing member -PASS: gdb.cp/m-data.exp: shadowed global variable -Running ./gdb.cp/member-name.exp ... -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to first breakpoint -PASS: gdb.cp/member-name.exp: print C::x from first breakpoint -PASS: gdb.cp/member-name.exp: print B::b from first breakpoint -PASS: gdb.cp/member-name.exp: print inner::z from first breakpoint -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to second breakpoint -PASS: gdb.cp/member-name.exp: print C::x from second breakpoint -PASS: gdb.cp/member-name.exp: print B::b from second breakpoint -PASS: gdb.cp/member-name.exp: print inner::z from second breakpoint -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to third breakpoint -PASS: gdb.cp/member-name.exp: print Templ::y from third breakpoint -Running ./gdb.cp/member-ptr.exp ... -PASS: gdb.cp/member-ptr.exp: continue to breakpoint: continue to pmi = NULL -PASS: gdb.cp/member-ptr.exp: ptype pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (A::j) -PASS: gdb.cp/member-ptr.exp: set var pmi = &A::jj -PASS: gdb.cp/member-ptr.exp: print pmi (A::jj) -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::jj) -PASS: gdb.cp/member-ptr.exp: set var pmi = &A::j -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (again) -PASS: gdb.cp/member-ptr.exp: print a.*pmi = 33 -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (33) -PASS: gdb.cp/member-ptr.exp: print a (j = 33) -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi = 44 -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (44) -PASS: gdb.cp/member-ptr.exp: print a (j = 44) -PASS: gdb.cp/member-ptr.exp: ptype a.*pmi -PASS: gdb.cp/member-ptr.exp: print *pmi -PASS: gdb.cp/member-ptr.exp: ptype *pmi -PASS: gdb.cp/member-ptr.exp: print (int) pmi -PASS: gdb.cp/member-ptr.exp: print ((int) pmi) == ((char *) &a.j - (char *) &a) -PASS: gdb.cp/member-ptr.exp: ptype diamond_pfunc_ptr -PASS: gdb.cp/member-ptr.exp: ptype diamond.*diamond_pfunc_ptr -PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pfunc_ptr (20) -PASS: gdb.cp/member-ptr.exp: print (diamond.*diamond_pfunc_ptr) (20) -PASS: gdb.cp/member-ptr.exp: print diamond.func_ptr (20) -PASS: gdb.cp/member-ptr.exp: ptype pmf -PASS: gdb.cp/member-ptr.exp: print pmf -PASS: gdb.cp/member-ptr.exp: ptype pmf_p -PASS: gdb.cp/member-ptr.exp: gdb/NNNN -PASS: gdb.cp/member-ptr.exp: print a.*pmf -PASS: gdb.cp/member-ptr.exp: print a_p->*pmf -PASS: gdb.cp/member-ptr.exp: set var pmf = &A::foo -PASS: gdb.cp/member-ptr.exp: print *pmf -PASS: gdb.cp/member-ptr.exp: ptype *pmf -PASS: gdb.cp/member-ptr.exp: print (a.*pmf)(3) -PASS: gdb.cp/member-ptr.exp: ptype a.*pmf -PASS: gdb.cp/member-ptr.exp: ptype (a.*pmf)(3) -PASS: gdb.cp/member-ptr.exp: print diamond_pmi -PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pmi -PASS: gdb.cp/member-ptr.exp: print diamond.*left_pmf -PASS: gdb.cp/member-ptr.exp: print diamond.*right_pmf -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_pmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*right_pmf) () -PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf -PASS: gdb.cp/member-ptr.exp: print diamond.*right_vpmf -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_vpmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_base_vpmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*right_vpmf) () -PASS: gdb.cp/member-ptr.exp: print left_vpmf -PASS: gdb.cp/member-ptr.exp: print right_vpmf -PASS: gdb.cp/member-ptr.exp: print base_vpmf -PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf () -PASS: gdb.cp/member-ptr.exp: print null_pmi -PASS: gdb.cp/member-ptr.exp: print null_pmi = &A::j -PASS: gdb.cp/member-ptr.exp: print null_pmi = 0 -PASS: gdb.cp/member-ptr.exp: print null_pmf -PASS: gdb.cp/member-ptr.exp: print null_pmf = &A::foo -PASS: gdb.cp/member-ptr.exp: print null_pmf = 0 -Running ./gdb.cp/method2.exp ... -PASS: gdb.cp/method2.exp: set multiple-symbols ask -PASS: gdb.cp/method2.exp: setting language c -PASS: gdb.cp/method2.exp: breaking in method (c) -PASS: gdb.cp/method2.exp: setting language c++ -PASS: gdb.cp/method2.exp: breaking in method (c++) -PASS: gdb.cp/method2.exp: continue until exit at continue to end -Running ./gdb.cp/method.exp ... -PASS: gdb.cp/method.exp: break A::foo -PASS: gdb.cp/method.exp: continue to A::foo -PASS: gdb.cp/method.exp: print x in A::foo -PASS: gdb.cp/method.exp: print this in A::foo -PASS: gdb.cp/method.exp: break A::bar -PASS: gdb.cp/method.exp: continue to A::bar -PASS: gdb.cp/method.exp: print x in A::bar -PASS: gdb.cp/method.exp: print this in A::bar -PASS: gdb.cp/method.exp: break 21 -PASS: gdb.cp/method.exp: continue to 21 -PASS: gdb.cp/method.exp: print data_ in funk::getFunky -PASS: gdb.cp/method.exp: print this in funk::getFunky -PASS: gdb.cp/method.exp: print res in funk::getFunky -PASS: gdb.cp/method.exp: ptype A -PASS: gdb.cp/method.exp: finish program -Running ./gdb.cp/meth-typedefs.exp ... -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(fptr3) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(fptr3) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(fptr3) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(fptr3) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list test(_BAR_&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(_BAR_&)' -PASS: gdb.cp/meth-typedefs.exp: break test(_BAR_&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(_BAR_&)' -PASS: gdb.cp/meth-typedefs.exp: list test(a::b::BAR&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(a::b::BAR&)' -PASS: gdb.cp/meth-typedefs.exp: break test(a::b::BAR&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(a::b::BAR&)' -PASS: gdb.cp/meth-typedefs.exp: list test(a::b::c::d::bar&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(a::b::c::d::bar&)' -PASS: gdb.cp/meth-typedefs.exp: break test(a::b::c::d::bar&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(a::b::c::d::bar&)' -Running ./gdb.cp/minsym-fallback.exp ... -PASS: gdb.cp/minsym-fallback.exp: set breakpoint pending off -PASS: gdb.cp/minsym-fallback.exp: break C::f() -PASS: gdb.cp/minsym-fallback.exp: break C::operator()() -Running ./gdb.cp/misc.exp ... -PASS: gdb.cp/misc.exp: deduced language is C++, before full symbols -PASS: gdb.cp/misc.exp: deduced language is C++, after full symbols -PASS: gdb.cp/misc.exp: print s.a for foo struct (known gcc 2.7.2 and earlier bug) -PASS: gdb.cp/misc.exp: print as bool (setup) -PASS: gdb.cp/misc.exp: print as bool (print 1 == 1) -PASS: gdb.cp/misc.exp: print as bool (print 1 == 2) -PASS: gdb.cp/misc.exp: print a bool var -PASS: gdb.cp/misc.exp: set a bool var (setup) -PASS: gdb.cp/misc.exp: set a bool var (print v_bool) -PASS: gdb.cp/misc.exp: print a bool array -PASS: gdb.cp/misc.exp: set a bool array elem (setup) -PASS: gdb.cp/misc.exp: set a bool array elem (print v_bool_array) -PASS: gdb.cp/misc.exp: print true -PASS: gdb.cp/misc.exp: print false -PASS: gdb.cp/misc.exp: 1 + true -PASS: gdb.cp/misc.exp: 3 + false -PASS: gdb.cp/misc.exp: 1 < 2 < 3 -PASS: gdb.cp/misc.exp: 2 < 1 > 4 -PASS: gdb.cp/misc.exp: (bool)43 -PASS: gdb.cp/misc.exp: (bool)0 -PASS: gdb.cp/misc.exp: (bool)17.93 -PASS: gdb.cp/misc.exp: (bool)0.0 -PASS: gdb.cp/misc.exp: (int)true -PASS: gdb.cp/misc.exp: (int)false -Running ./gdb.cp/m-static.exp ... -PASS: gdb.cp/m-static.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/m-static.exp: simple object, static const int, accessing via 'class::method::variable -PASS: gdb.cp/m-static.exp: simple object, static const bool -PASS: gdb.cp/m-static.exp: simple object, static const int -PASS: gdb.cp/m-static.exp: simple object, static long -PASS: gdb.cp/m-static.exp: simple object, static enum -FAIL: gdb.cp/m-static.exp: simple object instance, print quoted destructor -FAIL: gdb.cp/m-static.exp: simple object class, ptype quoted destructor -PASS: gdb.cp/m-static.exp: derived template object, base static const bool -PASS: gdb.cp/m-static.exp: derived template object, base static const int -PASS: gdb.cp/m-static.exp: derived template object, base static long -PASS: gdb.cp/m-static.exp: derived template object, base static enum -PASS: gdb.cp/m-static.exp: derived template object, static enum -PASS: gdb.cp/m-static.exp: template object, static const bool -PASS: gdb.cp/m-static.exp: template object, static const int -PASS: gdb.cp/m-static.exp: template object, static long -PASS: gdb.cp/m-static.exp: template object, static enum -PASS: gdb.cp/m-static.exp: template object, static derived enum -PASS: gdb.cp/m-static.exp: static const int initialized elsewhere -PASS: gdb.cp/m-static.exp: static const int initialized nowhere -PASS: gdb.cp/m-static.exp: static const int initialized in class definition -PASS: gdb.cp/m-static.exp: static const float initialized in class definition -PASS: gdb.cp/m-static.exp: info variable everywhere -PASS: gdb.cp/m-static.exp: step -PASS: gdb.cp/m-static.exp: print svar -Running ./gdb.cp/namespace-enum.exp ... -PASS: gdb.cp/namespace-enum.exp: print foo::B::B_B -PASS: gdb.cp/namespace-enum.exp: print foo::B_B -PASS: gdb.cp/namespace-enum.exp: print A_A -Running ./gdb.cp/namespace.exp ... -PASS: gdb.cp/namespace.exp: show lang -PASS: gdb.cp/namespace.exp: up from marker1 -PASS: gdb.cp/namespace.exp: print 'AAA::c' -PASS: gdb.cp/namespace.exp: print AAA::c -PASS: gdb.cp/namespace.exp: print ina -PASS: gdb.cp/namespace.exp: ptype ina -PASS: gdb.cp/namespace.exp: info func xyzq -PASS: gdb.cp/namespace.exp: print 'AAA::xyzq'('x') -PASS: gdb.cp/namespace.exp: print AAA::xyzq('x') -PASS: gdb.cp/namespace.exp: break AAA::xyzq -PASS: gdb.cp/namespace.exp: break ::ensureOtherRefs -PASS: gdb.cp/namespace.exp: print 'BBB::CCC::xyzq'('x') -PASS: gdb.cp/namespace.exp: print BBB::CCC::xyzq('x') -PASS: gdb.cp/namespace.exp: break BBB::CCC::xyzq -PASS: gdb.cp/namespace.exp: break ::BBB::CCC::xyzq -PASS: gdb.cp/namespace.exp: print 'BBB::Class::xyzq' -PASS: gdb.cp/namespace.exp: print BBB::Class::xyzq -PASS: gdb.cp/namespace.exp: break BBB::Class::xyzq -PASS: gdb.cp/namespace.exp: whatis C::cOtherFileType -PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileType -PASS: gdb.cp/namespace.exp: whatis C::cOtherFileVar -PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileVar -PASS: gdb.cp/namespace.exp: print C::cOtherFileVar -PASS: gdb.cp/namespace.exp: print ::C::cOtherFileVar -PASS: gdb.cp/namespace.exp: whatis C::OtherFileClass::cOtherFileClassType -PASS: gdb.cp/namespace.exp: whatis ::C::OtherFileClass::cOtherFileClassType -PASS: gdb.cp/namespace.exp: print C::OtherFileClass::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print ::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print ::C::OtherFileClass::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print c -PASS: gdb.cp/namespace.exp: print cc -PASS: gdb.cp/namespace.exp: print 'C::cc' -PASS: gdb.cp/namespace.exp: print C::cc -PASS: gdb.cp/namespace.exp: print cd -PASS: gdb.cp/namespace.exp: print C::D::cd -PASS: gdb.cp/namespace.exp: print 'E::cde' -PASS: gdb.cp/namespace.exp: print E::cde -PASS: gdb.cp/namespace.exp: print shadow -PASS: gdb.cp/namespace.exp: print E::ce -PASS: gdb.cp/namespace.exp: ptype C -PASS: gdb.cp/namespace.exp: ptype E -PASS: gdb.cp/namespace.exp: ptype CClass -PASS: gdb.cp/namespace.exp: ptype CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype NestedClass -PASS: gdb.cp/namespace.exp: ptype ::C::CClass -PASS: gdb.cp/namespace.exp: ptype ::C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype ::C::NestedClass -PASS: gdb.cp/namespace.exp: ptype C::CClass -PASS: gdb.cp/namespace.exp: ptype C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype C::NestedClass -PASS: gdb.cp/namespace.exp: print cOtherFile -PASS: gdb.cp/namespace.exp: ptype OtherFileClass -PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass -PASS: gdb.cp/namespace.exp: ptype C::OtherFileClass -PASS: gdb.cp/namespace.exp: ptype OtherFileClass typedefs -PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass typedefs -PASS: gdb.cp/namespace.exp: print cX -PASS: gdb.cp/namespace.exp: print 'F::cXf' -PASS: gdb.cp/namespace.exp: print F::cXf -PASS: gdb.cp/namespace.exp: print F::cXfX -PASS: gdb.cp/namespace.exp: print X -PASS: gdb.cp/namespace.exp: print 'G::Xg' -PASS: gdb.cp/namespace.exp: print G::Xg -PASS: gdb.cp/namespace.exp: print G::XgX -PASS: gdb.cp/namespace.exp: print cXOtherFile -PASS: gdb.cp/namespace.exp: print XOtherFile -PASS: gdb.cp/namespace.exp: print AAA::ALPHA -PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass * -Running ./gdb.cp/namespace-nested-import.exp ... -PASS: gdb.cp/namespace-nested-import.exp: print C::x -Running ./gdb.cp/nextoverthrow.exp ... -UNSUPPORTED: gdb.cp/nextoverthrow.exp: nextoverthrow.exp could not find _Unwind_DebugHook -Running ./gdb.cp/no-dmgl-verbose.exp ... -PASS: gdb.cp/no-dmgl-verbose.exp: set breakpoint pending off -PASS: gdb.cp/no-dmgl-verbose.exp: DMGL_VERBOSE-demangled f(std::string) is not defined -Running ./gdb.cp/noparam.exp ... -PASS: gdb.cp/noparam.exp: p C::m (int) -Running ./gdb.cp/nsdecl.exp ... -PASS: gdb.cp/nsdecl.exp: print fakex -Running ./gdb.cp/nsimport.exp ... -PASS: gdb.cp/nsimport.exp: print x -PASS: gdb.cp/nsimport.exp: print xx -PASS: gdb.cp/nsimport.exp: print xxx -Running ./gdb.cp/nsnested.exp ... -PASS: gdb.cp/nsnested.exp: print ab -PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::first -PASS: gdb.cp/nsnested.exp: print ab -PASS: gdb.cp/nsnested.exp: print C::D::ab -PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::D::second -PASS: gdb.cp/nsnested.exp: print ab -Running ./gdb.cp/nsnoimports.exp ... -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print abc -PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::first -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print C::abc -PASS: gdb.cp/nsnoimports.exp: print abc -PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::C::second -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print abc -Running ./gdb.cp/nsrecurs.exp ... -PASS: gdb.cp/nsrecurs.exp: print ax -PASS: gdb.cp/nsrecurs.exp: print dx -PASS: gdb.cp/nsrecurs.exp: print xx -KFAIL: gdb.cp/nsrecurs.exp: ptype G::GF (PRMS: gdb/10541) -KFAIL: gdb.cp/nsrecurs.exp: print G::GF::FE::ex (PRMS: gdb/10541) -Running ./gdb.cp/nsstress.exp ... -PASS: gdb.cp/nsstress.exp: print y -Running ./gdb.cp/nsusing.exp ... -PASS: gdb.cp/nsusing.exp: print _a -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker3 -PASS: gdb.cp/nsusing.exp: Print _a without import -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker1 stop -PASS: gdb.cp/nsusing.exp: print _a in a nested scope -PASS: gdb.cp/nsusing.exp: print cc -PASS: gdb.cp/nsusing.exp: print B::_a -PASS: gdb.cp/nsusing.exp: print _a in namespace alias scope -PASS: gdb.cp/nsusing.exp: print x in namespace alias scope -PASS: gdb.cp/nsusing.exp: Print _a without import -PASS: gdb.cp/nsusing.exp: print dx -PASS: gdb.cp/nsusing.exp: print efx -PASS: gdb.cp/nsusing.exp: print ghx -PASS: gdb.cp/nsusing.exp: print jx -PASS: gdb.cp/nsusing.exp: continue to breakpoint: K::marker9 -PASS: gdb.cp/nsusing.exp: print jx -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker10 stop -PASS: gdb.cp/nsusing.exp: print x (from M::x) -Running ./gdb.cp/operator.exp ... -PASS: gdb.cp/operator.exp: global operator -PASS: gdb.cp/operator.exp: global operator overload -PASS: gdb.cp/operator.exp: ADL operator -PASS: gdb.cp/operator.exp: ADL operator overload -PASS: gdb.cp/operator.exp: Fully qualified explicit operator call -PASS: gdb.cp/operator.exp: anonymous namespace operator -PASS: gdb.cp/operator.exp: anonymous namespace operator overload -PASS: gdb.cp/operator.exp: anonymous namespace operator overload float -PASS: gdb.cp/operator.exp: imported operator -PASS: gdb.cp/operator.exp: imported operator overload -PASS: gdb.cp/operator.exp: imported operator overload float -PASS: gdb.cp/operator.exp: member operator -PASS: gdb.cp/operator.exp: member operator overload -PASS: gdb.cp/operator.exp: namespace alias -PASS: gdb.cp/operator.exp: imported declaration -PASS: gdb.cp/operator.exp: p l == 1 -PASS: gdb.cp/operator.exp: p x[0] -Running ./gdb.cp/oranking.exp ... -PASS: gdb.cp/oranking.exp: continue to breakpoint: end of main -KFAIL: gdb.cp/oranking.exp: p foo0(b) (PRMS: gdb/12096) -PASS: gdb.cp/oranking.exp: p test1() -PASS: gdb.cp/oranking.exp: p foo1(b) -PASS: gdb.cp/oranking.exp: p test2() -KFAIL: gdb.cp/oranking.exp: p foo2(b) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test3() -PASS: gdb.cp/oranking.exp: p foo3(1.0f) -PASS: gdb.cp/oranking.exp: p test4() -KFAIL: gdb.cp/oranking.exp: p foo4(&a) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test5() -PASS: gdb.cp/oranking.exp: p foo5(c) -PASS: gdb.cp/oranking.exp: p test6() -PASS: gdb.cp/oranking.exp: p foo6(bp) -PASS: gdb.cp/oranking.exp: p test7() -PASS: gdb.cp/oranking.exp: p foo7(cp) -PASS: gdb.cp/oranking.exp: p test8() -PASS: gdb.cp/oranking.exp: p foo8(co) -PASS: gdb.cp/oranking.exp: p test9() -PASS: gdb.cp/oranking.exp: p foo9(co) -PASS: gdb.cp/oranking.exp: p test10() -KFAIL: gdb.cp/oranking.exp: p foo10(amp) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test101() -KFAIL: gdb.cp/oranking.exp: p foo101("abc") (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test11() -KFAIL: gdb.cp/oranking.exp: p foo11(d) (PRMS: gdb/12096) -PASS: gdb.cp/oranking.exp: p test12() -PASS: gdb.cp/oranking.exp: p foo12(1) -PASS: gdb.cp/oranking.exp: p test13() -KFAIL: gdb.cp/oranking.exp: p foo13(c) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test14() -KFAIL: gdb.cp/oranking.exp: p foo14(e) (PRMS: gdb/12096) -Running ./gdb.cp/overload-const.exp ... -PASS: gdb.cp/overload-const.exp: set language c++ -PASS: gdb.cp/overload-const.exp: setting breakpoint at myclass::func -Running ./gdb.cp/overload.exp ... -PASS: gdb.cp/overload.exp: up from marker1 -PASS: gdb.cp/overload.exp: print foo_instance1 -PASS: gdb.cp/overload.exp: ptype foo_instance1 (shorter match) -PASS: gdb.cp/overload.exp: print foo_instance2 -PASS: gdb.cp/overload.exp: print foo_instance3 -PASS: gdb.cp/overload.exp: print call overloaded func 1 arg -PASS: gdb.cp/overload.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/overload.exp: print call overloaded func 2 args -PASS: gdb.cp/overload.exp: print call overloaded func 3 args -PASS: gdb.cp/overload.exp: print call overloaded func 4 args -PASS: gdb.cp/overload.exp: print call overloaded func 5 args -PASS: gdb.cp/overload.exp: print call overloaded func 6 args -PASS: gdb.cp/overload.exp: print call overloaded func 7 args -PASS: gdb.cp/overload.exp: print call overloaded func 8 args -PASS: gdb.cp/overload.exp: print call overloaded func 9 args -PASS: gdb.cp/overload.exp: print call overloaded func 10 args -PASS: gdb.cp/overload.exp: print call overloaded func 11 args -PASS: gdb.cp/overload.exp: print call overloaded func void arg -PASS: gdb.cp/overload.exp: print call overloaded func char arg -PASS: gdb.cp/overload.exp: print call overloaded func signed char arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned char arg -PASS: gdb.cp/overload.exp: print call overloaded func short arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned short arg -PASS: gdb.cp/overload.exp: print call overloaded func int arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned int arg -PASS: gdb.cp/overload.exp: print call overloaded func long arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned long arg -PASS: gdb.cp/overload.exp: print call overloaded func float arg -PASS: gdb.cp/overload.exp: print call overloaded func double arg -PASS: gdb.cp/overload.exp: print call overloaded func int\* arg -PASS: gdb.cp/overload.exp: print call overloaded func char\* arg -PASS: gdb.cp/overload.exp: print bar(a) -PASS: gdb.cp/overload.exp: print bar(b) -PASS: gdb.cp/overload.exp: print bar(c) -PASS: gdb.cp/overload.exp: print bar(d) -PASS: gdb.cp/overload.exp: list overloaded function with no args -PASS: gdb.cp/overload.exp: list overloaded function with int arg -PASS: gdb.cp/overload.exp: list overloaded function with function ptr args -PASS: gdb.cp/overload.exp: list overloaded function with function ptr args - quotes around argument -PASS: gdb.cp/overload.exp: list overload.cc:intToChar -PASS: gdb.cp/overload.exp: list overload.cc:intToChar(char) -PASS: gdb.cp/overload.exp: list overload.cc:'intToChar(char)' -PASS: gdb.cp/overload.exp: list 'overload.cc:intToChar(char)' -PASS: gdb.cp/overload.exp: list 'overload.cc':intToChar(char) -PASS: gdb.cp/overload.exp: list 'overload.cc':'intToChar(char)' -PASS: gdb.cp/overload.exp: list overload.cc:foo::overloadfnarg(int) -PASS: gdb.cp/overload.exp: list overload.cc:'foo::overloadfnarg(int)' -PASS: gdb.cp/overload.exp: print overloadNamespace(1) -PASS: gdb.cp/overload.exp: print overloadNamespace('a') -PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) -PASS: gdb.cp/overload.exp: print K::staticoverload () -PASS: gdb.cp/overload.exp: print K::staticoverload (2) -PASS: gdb.cp/overload.exp: print K::staticoverload (2, 3) -PASS: gdb.cp/overload.exp: print N::nsoverload () -PASS: gdb.cp/overload.exp: print N::nsoverload (2) -PASS: gdb.cp/overload.exp: print N::nsoverload (2, 3) -PASS: gdb.cp/overload.exp: print overloadNamespace(1) in XXX -PASS: gdb.cp/overload.exp: print overloadNamespace('a') in XXX -PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) in XXX -PASS: gdb.cp/overload.exp: print intToChar(1) -PASS: gdb.cp/overload.exp: print foo::overload1arg -PASS: gdb.cp/overload.exp: print foo::overload1arg(char***) -PASS: gdb.cp/overload.exp: print foo::overload1arg(void) -PASS: gdb.cp/overload.exp: print foo::overload1arg(char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(signed char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(short) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned short) -PASS: gdb.cp/overload.exp: print foo::overload1arg(int) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned int) -PASS: gdb.cp/overload.exp: print foo::overload1arg(long) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned long) -PASS: gdb.cp/overload.exp: print foo::overload1arg(float) -PASS: gdb.cp/overload.exp: print foo::overload1arg(double) -Running ./gdb.cp/ovldbreak.exp ... -PASS: gdb.cp/ovldbreak.exp: detect void -PASS: gdb.cp/ovldbreak.exp: detect char -PASS: gdb.cp/ovldbreak.exp: detect signed_char -PASS: gdb.cp/ovldbreak.exp: detect unsigned_char -PASS: gdb.cp/ovldbreak.exp: detect short_int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_short_int -PASS: gdb.cp/ovldbreak.exp: detect int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_int -PASS: gdb.cp/ovldbreak.exp: detect long_int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_long_int -PASS: gdb.cp/ovldbreak.exp: detect float -PASS: gdb.cp/ovldbreak.exp: detect double -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols ask -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 2 -PASS: gdb.cp/ovldbreak.exp: set bp 2 on foo::overload1arg 2 line 107 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 3 -PASS: gdb.cp/ovldbreak.exp: set bp 3 on foo::overload1arg 3 line 110 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 4 -PASS: gdb.cp/ovldbreak.exp: set bp 4 on foo::overload1arg 4 line 140 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 5 -PASS: gdb.cp/ovldbreak.exp: set bp 5 on foo::overload1arg 5 line 137 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 6 -PASS: gdb.cp/ovldbreak.exp: set bp 6 on foo::overload1arg 6 line 125 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 7 -PASS: gdb.cp/ovldbreak.exp: set bp 7 on foo::overload1arg 7 line 131 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 8 -PASS: gdb.cp/ovldbreak.exp: set bp 8 on foo::overload1arg 8 line 119 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 9 -PASS: gdb.cp/ovldbreak.exp: set bp 9 on foo::overload1arg 9 line 113 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 10 -PASS: gdb.cp/ovldbreak.exp: set bp 10 on foo::overload1arg 10 line 116 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 11 -PASS: gdb.cp/ovldbreak.exp: set bp 11 on foo::overload1arg 11 line 128 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 12 -PASS: gdb.cp/ovldbreak.exp: set bp 12 on foo::overload1arg 12 line 134 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 13 -PASS: gdb.cp/ovldbreak.exp: set bp 13 on foo::overload1arg 13 line 122 -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting one-by-one) -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice cancel -PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg canceled -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after cancel) -PASS: gdb.cp/ovldbreak.exp: delete all breakpoints -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after delete) -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice all -PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg all -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting on all) -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : void -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : signed_char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : short_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_short_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : long_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_long_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : float -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : double -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols cancel -PASS: gdb.cp/ovldbreak.exp: break foo::foofunc -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols all -PASS: gdb.cp/ovldbreak.exp: break foo::foofunc -PASS: gdb.cp/ovldbreak.exp: continue until exit at finish program -Running ./gdb.cp/ovsrch.exp ... -PASS: gdb.cp/ovsrch.exp: break A::stop_here -PASS: gdb.cp/ovsrch.exp: break 'A::stop_here' -PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (void) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (void) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::outer::hibob if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::stop_here_too -PASS: gdb.cp/ovsrch.exp: break 'A::B::stop_here_too' -PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here_too -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (void) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (void) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::hibob if (a_param == 3) -Running ./gdb.cp/paren-type.exp ... -PASS: gdb.cp/paren-type.exp: set breakpoint pending off -PASS: gdb.cp/paren-type.exp: break C::f(long) -PASS: gdb.cp/paren-type.exp: break C::f(short) -Running ./gdb.cp/parse-lang.exp ... -PASS: gdb.cp/parse-lang.exp: breakpoint hit -Running ./gdb.cp/pass-by-ref.exp ... -PASS: gdb.cp/pass-by-ref.exp: call function in obj -PASS: gdb.cp/pass-by-ref.exp: call function in derived -PASS: gdb.cp/pass-by-ref.exp: call function in container -Running ./gdb.cp/pr-1023.exp ... -PASS: gdb.cp/pr-1023.exp: break myClass::performBlocking -PASS: gdb.cp/pr-1023.exp: break myClass::performUnblocking -Running ./gdb.cp/pr10687.exp ... -PASS: gdb.cp/pr10687.exp: continue to breakpoint: marker -PASS: gdb.cp/pr10687.exp: p a -Running ./gdb.cp/pr10728.exp ... -PASS: gdb.cp/pr10728.exp: continue to breakpoint: marker 1 -PASS: gdb.cp/pr10728.exp: print x->y2 - x->y1 -Running ./gdb.cp/pr12028.exp ... -PASS: gdb.cp/pr12028.exp: p D::foo(b) -Running ./gdb.cp/pr-1210.exp ... -PASS: gdb.cp/pr-1210.exp: step past initialization -PASS: gdb.cp/pr-1210.exp: print *obj -PASS: gdb.cp/pr-1210.exp: print obj->myB -Running ./gdb.cp/pr-574.exp ... -PASS: gdb.cp/pr-574.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/pr-574.exp: PR gdb/574 -Running ./gdb.cp/pr9067.exp ... -PASS: gdb.cp/pr9067.exp: print b -Running ./gdb.cp/pr9167.exp ... -PASS: gdb.cp/pr9167.exp: continue to breakpoint: marker -PASS: gdb.cp/pr9167.exp: p b -Running ./gdb.cp/pr9631.exp ... -PASS: gdb.cp/pr9631.exp: continue to breakpoint: after bar tender is initialized -PASS: gdb.cp/pr9631.exp: print tender -Running ./gdb.cp/printmethod.exp ... -PASS: gdb.cp/printmethod.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/printmethod.exp: print virtual method. -PASS: gdb.cp/printmethod.exp: print nonvirtual method. -Running ./gdb.cp/psmang.exp ... -PASS: gdb.cp/psmang.exp: break s::method1 -PASS: gdb.cp/psmang.exp: break s::method2 -Running ./gdb.cp/psymtab-parameter.exp ... -PASS: gdb.cp/psymtab-parameter.exp: set language c++ -PASS: gdb.cp/psymtab-parameter.exp: maintenance info symtabs -PASS: gdb.cp/psymtab-parameter.exp: complete p 'func( -Running ./gdb.cp/ptype-cv-cp.exp ... -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_const_my_int -Running ./gdb.cp/ptype-flags.exp ... -PASS: gdb.cp/ptype-flags.exp: basic test -PASS: gdb.cp/ptype-flags.exp: no methods -PASS: gdb.cp/ptype-flags.exp: no typedefs -PASS: gdb.cp/ptype-flags.exp: no methods or typedefs -PASS: gdb.cp/ptype-flags.exp: raw -PASS: gdb.cp/ptype-flags.exp: raw no methods -PASS: gdb.cp/ptype-flags.exp: raw no typedefs -PASS: gdb.cp/ptype-flags.exp: raw no methods or typedefs -PASS: gdb.cp/ptype-flags.exp: set print type methods off -PASS: gdb.cp/ptype-flags.exp: basic test, default methods off -PASS: gdb.cp/ptype-flags.exp: methods, default methods off -PASS: gdb.cp/ptype-flags.exp: no typedefs, default methods off -PASS: gdb.cp/ptype-flags.exp: methods, no typedefs, default methods off -PASS: gdb.cp/ptype-flags.exp: set print type typedefs off -PASS: gdb.cp/ptype-flags.exp: basic test, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: methods, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: typedefs, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: methods typedefs, default methods+typedefs off -Running ./gdb.cp/punctuator.exp ... -PASS: gdb.cp/punctuator.exp: set lang c++ -PASS: gdb.cp/punctuator.exp: print (0x5a5a bitand 0xaaaa) == (0x5a5a & 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a bitor 0xaaaa) == (0x5a5a | 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a xor 0xaaaa) == (0x5a5a ^ 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a and 0xaaaa) == (0x5a5a && 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a or 0xaaaa) == (0x5a5a || 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (not not 0xaaaa) == (!!0xaaaa) -PASS: gdb.cp/punctuator.exp: print (compl 0xaaaa) == (~0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 1 -PASS: gdb.cp/punctuator.exp: set $v 1 -PASS: gdb.cp/punctuator.exp: print ($u not_eq 0xaaaa) == ($v != 0xaaaa) -PASS: gdb.cp/punctuator.exp: print ($u and_eq 0xaaaa) == ($v &= 0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 2 -PASS: gdb.cp/punctuator.exp: set $v 2 -PASS: gdb.cp/punctuator.exp: print ($u or_eq 0xaaaa) == ($v |= 0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 3 -PASS: gdb.cp/punctuator.exp: set $v 3 -PASS: gdb.cp/punctuator.exp: print ($u xor_eq 0xaaaa) == ($v ^= 0xaaaa) -Running ./gdb.cp/readnow-language.exp ... -PASS: gdb.cp/readnow-language.exp: show language -Running ./gdb.cp/ref-params.exp ... -PASS: gdb.cp/ref-params.exp: print value of a Child in main -PASS: gdb.cp/ref-params.exp: print value of f1 on Child in main -PASS: gdb.cp/ref-params.exp: print value of f2 on Child in main -PASS: gdb.cp/ref-params.exp: print value of f1 on (Child&) in main -PASS: gdb.cp/ref-params.exp: print value of f2 on (Child&) in main -PASS: gdb.cp/ref-params.exp: print value of Child& in f2 -PASS: gdb.cp/ref-params.exp: print value of f1 on Child& in f2 -PASS: gdb.cp/ref-params.exp: print value of Parent& in f1 -PASS: gdb.cp/ref-params.exp: print f1(MQ) -PASS: gdb.cp/ref-params.exp: print mf1(MQ) -PASS: gdb.cp/ref-params.exp: print mf2(MQ) -PASS: gdb.cp/ref-params.exp: print f1(MQR) -PASS: gdb.cp/ref-params.exp: print mf1(MQR) -PASS: gdb.cp/ref-params.exp: print mf2(MQR) -Running ./gdb.cp/ref-types.exp ... -PASS: gdb.cp/ref-types.exp: up from marker1 1 -PASS: gdb.cp/ref-types.exp: print value of s -PASS: gdb.cp/ref-types.exp: ptype s -PASS: gdb.cp/ref-types.exp: print value of ps -PASS: gdb.cp/ref-types.exp: ptype ps -PASS: gdb.cp/ref-types.exp: print value of as[0] -PASS: gdb.cp/ref-types.exp: ptype as -PASS: gdb.cp/ref-types.exp: print value of as[1] -PASS: gdb.cp/ref-types.exp: print value of as[2] -PASS: gdb.cp/ref-types.exp: print value of as[3] -PASS: gdb.cp/ref-types.exp: print value of rs -PASS: gdb.cp/ref-types.exp: ptype rs -PASS: gdb.cp/ref-types.exp: print value of *rps -PASS: gdb.cp/ref-types.exp: examine value at rps -PASS: gdb.cp/ref-types.exp: ptype rps -PASS: gdb.cp/ref-types.exp: print value of ras[0] -PASS: gdb.cp/ref-types.exp: ptype ras -PASS: gdb.cp/ref-types.exp: print value of ras[1] -PASS: gdb.cp/ref-types.exp: print value of ras[2] -PASS: gdb.cp/ref-types.exp: print value of ras[3] -PASS: gdb.cp/ref-types.exp: up from f -PASS: gdb.cp/ref-types.exp: print value of C -PASS: gdb.cp/ref-types.exp: ptype C -PASS: gdb.cp/ref-types.exp: print value of UC -PASS: gdb.cp/ref-types.exp: ptype UC -PASS: gdb.cp/ref-types.exp: print value of S -PASS: gdb.cp/ref-types.exp: ptype S -PASS: gdb.cp/ref-types.exp: print value of US -PASS: gdb.cp/ref-types.exp: ptype US -PASS: gdb.cp/ref-types.exp: print value of I -PASS: gdb.cp/ref-types.exp: ptype I -PASS: gdb.cp/ref-types.exp: print value of UI -PASS: gdb.cp/ref-types.exp: ptype UI -PASS: gdb.cp/ref-types.exp: print value of L -PASS: gdb.cp/ref-types.exp: ptype L -PASS: gdb.cp/ref-types.exp: print value of UL -PASS: gdb.cp/ref-types.exp: ptype UL -PASS: gdb.cp/ref-types.exp: print value of F -PASS: gdb.cp/ref-types.exp: ptype F -PASS: gdb.cp/ref-types.exp: print value of D -PASS: gdb.cp/ref-types.exp: ptype D -PASS: gdb.cp/ref-types.exp: ptype rC -PASS: gdb.cp/ref-types.exp: ptype rUC -PASS: gdb.cp/ref-types.exp: ptype rS -PASS: gdb.cp/ref-types.exp: ptype rUS -PASS: gdb.cp/ref-types.exp: ptype rI -PASS: gdb.cp/ref-types.exp: ptype rUI -PASS: gdb.cp/ref-types.exp: ptype rL -PASS: gdb.cp/ref-types.exp: ptype rUL -PASS: gdb.cp/ref-types.exp: ptype rF -PASS: gdb.cp/ref-types.exp: ptype rD -PASS: gdb.cp/ref-types.exp: print value of rC -PASS: gdb.cp/ref-types.exp: print value of rUC -PASS: gdb.cp/ref-types.exp: print value of rS -PASS: gdb.cp/ref-types.exp: print value of rUS -PASS: gdb.cp/ref-types.exp: print value of rI -PASS: gdb.cp/ref-types.exp: print value of UI -PASS: gdb.cp/ref-types.exp: print value of rL -PASS: gdb.cp/ref-types.exp: print value of rUL -PASS: gdb.cp/ref-types.exp: print value of rF -PASS: gdb.cp/ref-types.exp: print value of rD -Running ./gdb.cp/re-set-overloaded.exp ... -PASS: gdb.cp/re-set-overloaded.exp: set breakpoint pending yes -PASS: gdb.cp/re-set-overloaded.exp: break C::C -PASS: gdb.cp/re-set-overloaded.exp: set variable $brk = $bpnum -PASS: gdb.cp/re-set-overloaded.exp: start -PASS: gdb.cp/re-set-overloaded.exp: breakpoint resolved -Running ./gdb.cp/rtti.exp ... -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in main -PASS: gdb.cp/rtti.exp: print *e1 -PASS: gdb.cp/rtti.exp: print *e2 -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func -PASS: gdb.cp/rtti.exp: print *obj -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func3 -PASS: gdb.cp/rtti.exp: print *obj3 -Running ./gdb.cp/shadow.exp ... -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker1 -PASS: gdb.cp/shadow.exp: Print class x shadowing global x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker2 -PASS: gdb.cp/shadow.exp: Print local x shadowing class x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker3 -PASS: gdb.cp/shadow.exp: Print inner scope x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker4 -PASS: gdb.cp/shadow.exp: Print local x not namespace x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker5 -PASS: gdb.cp/shadow.exp: Print imported namespace x -Running ./gdb.cp/smartp.exp ... -PASS: gdb.cp/smartp.exp: continue to breakpoint: end of main -PASS: gdb.cp/smartp.exp: p mp->foo() -PASS: gdb.cp/smartp.exp: p mtp->foo() -PASS: gdb.cp/smartp.exp: p mt1.foo() -PASS: gdb.cp/smartp.exp: p mt4p.a -PASS: gdb.cp/smartp.exp: p mt4->a -PASS: gdb.cp/smartp.exp: p sp1->foo() -PASS: gdb.cp/smartp.exp: p sp2->foo() -PASS: gdb.cp/smartp.exp: p sp3->foo(1) -PASS: gdb.cp/smartp.exp: p sp3->foo('a') -PASS: gdb.cp/smartp.exp: p sp4->a -PASS: gdb.cp/smartp.exp: p sp4->b -PASS: gdb.cp/smartp.exp: p mt4p->a -PASS: gdb.cp/smartp.exp: p mt4p->b -PASS: gdb.cp/smartp.exp: p mt4->fake -PASS: gdb.cp/smartp.exp: p mt4->fake() -PASS: gdb.cp/smartp.exp: p b->foo() -PASS: gdb.cp/smartp.exp: p c->foo() -PASS: gdb.cp/smartp.exp: p c->inta -KFAIL: gdb.cp/smartp.exp: p c2->inta (PRMS: gdb/11606) -Running ./gdb.cp/static-method.exp ... -PASS: gdb.cp/static-method.exp: info addr A::func() -PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::func -PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list 'static-method.cc':'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::func -PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::A::func -PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: list 'static-method.cc':'xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::A::func -PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::A::func' -Running ./gdb.cp/static-print-quit.exp ... -PASS: gdb.cp/static-print-quit.exp: set width 80 -PASS: gdb.cp/static-print-quit.exp: set height 2 -PASS: gdb.cp/static-print-quit.exp: print c - -PASS: gdb.cp/static-print-quit.exp: print c - q -PASS: gdb.cp/static-print-quit.exp: print c - to quit -PASS: gdb.cp/static-print-quit.exp: q -PASS: gdb.cp/static-print-quit.exp: set pagination off -PASS: gdb.cp/static-print-quit.exp: first print -PASS: gdb.cp/static-print-quit.exp: second print -Running ./gdb.cp/temargs.exp ... -PASS: gdb.cp/temargs.exp: set first breakpoint for temargs -PASS: gdb.cp/temargs.exp: set second breakpoint for temargs -PASS: gdb.cp/temargs.exp: set third breakpoint for temargs -PASS: gdb.cp/temargs.exp: set fourth breakpoint for temargs -PASS: gdb.cp/temargs.exp: set fifth breakpoint for temargs -PASS: gdb.cp/temargs.exp: set sixth breakpoint for temargs -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to first breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in base_m -PASS: gdb.cp/temargs.exp: test value of I in base_m -PASS: gdb.cp/temargs.exp: test value of P in base_m -PASS: gdb.cp/temargs.exp: test value of MP in base_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to second breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in inner_m -PASS: gdb.cp/temargs.exp: test value of I in inner_m -PASS: gdb.cp/temargs.exp: test value of P in inner_m -PASS: gdb.cp/temargs.exp: test value of MP in inner_m -PASS: gdb.cp/temargs.exp: test type of Z in inner_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to third breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in func -PASS: gdb.cp/temargs.exp: test value of I in func -PASS: gdb.cp/temargs.exp: test value of P in func -PASS: gdb.cp/temargs.exp: test value of MP in func -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fourth breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in templ_m -PASS: gdb.cp/temargs.exp: test value of I in templ_m -PASS: gdb.cp/temargs.exp: test value of P in templ_m -PASS: gdb.cp/temargs.exp: test value of MP in templ_m -PASS: gdb.cp/temargs.exp: test type of Q in templ_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fifth breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of F in k2_m -XFAIL: gdb.cp/temargs.exp: test value of F in k2_m (PRMS gcc/49366) -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to sixth breakpoint for temargs -XFAIL: gdb.cp/temargs.exp: test type of F in k3_m (PRMS gcc/49546) -XFAIL: gdb.cp/temargs.exp: test value of F in k3_m (PRMS gcc/49546) -Running ./gdb.cp/templates.exp ... -PASS: gdb.cp/templates.exp: set multiple-symbols ask -KFAIL: gdb.cp/templates.exp: ptype T5 (PRMS: gdb/8218) -KFAIL: gdb.cp/templates.exp: ptype T5 (PRMS: gdb/8218) -PASS: gdb.cp/templates.exp: constructor breakpoint -PASS: gdb.cp/templates.exp: destructor breakpoint -PASS: gdb.cp/templates.exp: value method breakpoint -PASS: gdb.cp/templates.exp: breakpoint on a line with no real code -PASS: gdb.cp/templates.exp: print method of template typedef -XFAIL: gdb.cp/templates.exp: print destructor of template typedef (PRMS gcc/51668) -PASS: gdb.cp/templates.exp: verify GCC PR debug/51668 -PASS: gdb.cp/templates.exp: ptype empty -PASS: gdb.cp/templates.exp: ptype arg -PASS: gdb.cp/templates.exp: print t5i.value() -PASS: gdb.cp/templates.exp: b 770 -PASS: gdb.cp/templates.exp: continue to line 770 -PASS: gdb.cp/templates.exp: print fint -PASS: gdb.cp/templates.exp: print fvpchar -PASS: gdb.cp/templates.exp: ptype Foo -PASS: gdb.cp/templates.exp: ptype fint -PASS: gdb.cp/templates.exp: ptype fchar -KFAIL: gdb.cp/templates.exp: ptype fvpchar (PRMS: gdb/1512) -PASS: gdb.cp/templates.exp: print Foo::foo -PASS: gdb.cp/templates.exp: print Foo::foo -PASS: gdb.cp/templates.exp: ptype Bar -PASS: gdb.cp/templates.exp: ptype bint -PASS: gdb.cp/templates.exp: ptype bint2 -PASS: gdb.cp/templates.exp: ptype Baz -PASS: gdb.cp/templates.exp: ptype bazint -PASS: gdb.cp/templates.exp: ptype bazint2 -PASS: gdb.cp/templates.exp: ptype Qux -PASS: gdb.cp/templates.exp: ptype quxint -PASS: gdb.cp/templates.exp: ptype Spec -PASS: gdb.cp/templates.exp: ptype siip -PASS: gdb.cp/templates.exp: ptype Garply -PASS: gdb.cp/templates.exp: ptype Garply > -PASS: gdb.cp/templates.exp: print Garply >::garply -PASS: gdb.cp/templates.exp: break Garply >::garply -Running ./gdb.cp/try_catch.exp ... -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-catch -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-start -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-next -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-catch -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-catch -Running ./gdb.cp/typedef-operator.exp ... -PASS: gdb.cp/typedef-operator.exp: set language c++ -PASS: gdb.cp/typedef-operator.exp: test crash -PASS: gdb.cp/typedef-operator.exp: test typedef -Running ./gdb.cp/userdef.exp ... -PASS: gdb.cp/userdef.exp: break marker1 -PASS: gdb.cp/userdef.exp: continue to marker1 -PASS: gdb.cp/userdef.exp: up from marker1 -PASS: gdb.cp/userdef.exp: print one + two -PASS: gdb.cp/userdef.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/userdef.exp: print one - two -PASS: gdb.cp/userdef.exp: print one * two -PASS: gdb.cp/userdef.exp: print one / two -PASS: gdb.cp/userdef.exp: print one % two -PASS: gdb.cp/userdef.exp: print one && two -PASS: gdb.cp/userdef.exp: print one || two -PASS: gdb.cp/userdef.exp: print one & two -PASS: gdb.cp/userdef.exp: print one | two -PASS: gdb.cp/userdef.exp: print one ^ two -PASS: gdb.cp/userdef.exp: print one < two -PASS: gdb.cp/userdef.exp: print one <= two -PASS: gdb.cp/userdef.exp: print one > two -PASS: gdb.cp/userdef.exp: print one >= two -PASS: gdb.cp/userdef.exp: print one == two -PASS: gdb.cp/userdef.exp: print one.operator== (two) -PASS: gdb.cp/userdef.exp: print one != two -PASS: gdb.cp/userdef.exp: print one << 31 -PASS: gdb.cp/userdef.exp: print one >> 31 -PASS: gdb.cp/userdef.exp: print !one -PASS: gdb.cp/userdef.exp: print +one -PASS: gdb.cp/userdef.exp: print ~one -PASS: gdb.cp/userdef.exp: print -one -PASS: gdb.cp/userdef.exp: print one++ -PASS: gdb.cp/userdef.exp: print ++one -PASS: gdb.cp/userdef.exp: print one-- -PASS: gdb.cp/userdef.exp: print --one -PASS: gdb.cp/userdef.exp: print one += 7 -PASS: gdb.cp/userdef.exp: print two = one -PASS: gdb.cp/userdef.exp: break A2::operator+ -PASS: gdb.cp/userdef.exp: break A2::operator + -PASS: gdb.cp/userdef.exp: print c -PASS: gdb.cp/userdef.exp: print *c -PASS: gdb.cp/userdef.exp: print &*c -PASS: gdb.cp/userdef.exp: ptype &*c -PASS: gdb.cp/userdef.exp: print operator== (mem1, mem2) -PASS: gdb.cp/userdef.exp: print operator== (mem1, mem1) -Running ./gdb.cp/using-crash.exp ... -PASS: gdb.cp/using-crash.exp: reload file -Running ./gdb.cp/virtbase.exp ... -PASS: gdb.cp/virtbase.exp: continue to breakpoint: first breakpoint -PASS: gdb.cp/virtbase.exp: print *this -PASS: gdb.cp/virtbase.exp: print x in get_y -PASS: gdb.cp/virtbase.exp: continue to breakpoint: second breakpoint -PASS: gdb.cp/virtbase.exp: print x in get_z -PASS: gdb.cp/virtbase.exp: continue to breakpoint: third breakpoint -PASS: gdb.cp/virtbase.exp: print *(D *) e -PASS: gdb.cp/virtbase.exp: set print object on -PASS: gdb.cp/virtbase.exp: print/x b->mA -PASS: gdb.cp/virtbase.exp: print rtti_data -PASS: gdb.cp/virtbase.exp: print pointer to virtual base at non-zero offset of larger object -PASS: gdb.cp/virtbase.exp: print same pointer from history value -PASS: gdb.cp/virtbase.exp: print whole pointed-to object, starting from the virtual base pointer -Running ./gdb.cp/virtfunc2.exp ... -PASS: gdb.cp/virtfunc2.exp: continue to breakpoint: marker 1 -PASS: gdb.cp/virtfunc2.exp: print o.do_print() -PASS: gdb.cp/virtfunc2.exp: print o.do_print3() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print2() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print3() -PASS: gdb.cp/virtfunc2.exp: print o -Running ./gdb.cp/virtfunc.exp ... -PASS: gdb.cp/virtfunc.exp: ptype VA -PASS: gdb.cp/virtfunc.exp: ptype VB -PASS: gdb.cp/virtfunc.exp: ptype V -PASS: gdb.cp/virtfunc.exp: ptype A -PASS: gdb.cp/virtfunc.exp: ptype B -PASS: gdb.cp/virtfunc.exp: ptype C -PASS: gdb.cp/virtfunc.exp: ptype AD -PASS: gdb.cp/virtfunc.exp: ptype D -PASS: gdb.cp/virtfunc.exp: ptype E -PASS: gdb.cp/virtfunc.exp: ptype dd -PASS: gdb.cp/virtfunc.exp: ptype ppd -PASS: gdb.cp/virtfunc.exp: ptype pAd -PASS: gdb.cp/virtfunc.exp: ptype a -PASS: gdb.cp/virtfunc.exp: ptype b -PASS: gdb.cp/virtfunc.exp: ptype c -PASS: gdb.cp/virtfunc.exp: ptype d -PASS: gdb.cp/virtfunc.exp: ptype e -PASS: gdb.cp/virtfunc.exp: ptype v -PASS: gdb.cp/virtfunc.exp: ptype vb -PASS: gdb.cp/virtfunc.exp: ptype pAa -PASS: gdb.cp/virtfunc.exp: ptype pAe -PASS: gdb.cp/virtfunc.exp: ptype pBe -PASS: gdb.cp/virtfunc.exp: ptype pDd -PASS: gdb.cp/virtfunc.exp: ptype pDe -PASS: gdb.cp/virtfunc.exp: ptype pVa -PASS: gdb.cp/virtfunc.exp: ptype pVv -PASS: gdb.cp/virtfunc.exp: ptype pVe -PASS: gdb.cp/virtfunc.exp: ptype pVd -PASS: gdb.cp/virtfunc.exp: ptype pADe -PASS: gdb.cp/virtfunc.exp: ptype pEe -PASS: gdb.cp/virtfunc.exp: ptype pVB -PASS: gdb.cp/virtfunc.exp: info vtbl a -PASS: gdb.cp/virtfunc.exp: info vtbl b -PASS: gdb.cp/virtfunc.exp: info vtbl c -PASS: gdb.cp/virtfunc.exp: info vtbl d -PASS: gdb.cp/virtfunc.exp: info vtbl e -PASS: gdb.cp/virtfunc.exp: info vtbl pEe -PASS: gdb.cp/virtfunc.exp: info vtbl -PASS: gdb.cp/virtfunc.exp: info vtbl va -PASS: gdb.cp/virtfunc.exp: info vtbl all_count -PASS: gdb.cp/virtfunc.exp: print pAe->f() -PASS: gdb.cp/virtfunc.exp: print pAa->f() -PASS: gdb.cp/virtfunc.exp: print pDe->vg() -PASS: gdb.cp/virtfunc.exp: print pADe->vg() -PASS: gdb.cp/virtfunc.exp: print pDd->vg() -PASS: gdb.cp/virtfunc.exp: print pEe->vvb() -PASS: gdb.cp/virtfunc.exp: print pVB->vvb() -PASS: gdb.cp/virtfunc.exp: print pBe->vvb() -PASS: gdb.cp/virtfunc.exp: print pDe->vvb() -PASS: gdb.cp/virtfunc.exp: print pEe->vd() -PASS: gdb.cp/virtfunc.exp: print pEe->fvb() -KFAIL: gdb.cp/virtfunc.exp: print pEe->D::vg() (PRMS: gdb/1064) -PASS: gdb.cp/virtfunc.exp: next to pAa->f call -PASS: gdb.cp/virtfunc.exp: next to pDe->vg call -PASS: gdb.cp/virtfunc.exp: step through thunk into E::vg -Running ./gdb.disasm/am33.exp ... -Running ./gdb.disasm/h8300s.exp ... -Running ./gdb.disasm/hppa.exp ... -Running ./gdb.disasm/mn10300.exp ... -Running ./gdb.disasm/sh3.exp ... -Running ./gdb.disasm/t01_mov.exp ... -Running ./gdb.disasm/t02_mova.exp ... -Running ./gdb.disasm/t03_add.exp ... -Running ./gdb.disasm/t04_sub.exp ... -Running ./gdb.disasm/t05_cmp.exp ... -Running ./gdb.disasm/t06_ari2.exp ... -Running ./gdb.disasm/t07_ari3.exp ... -Running ./gdb.disasm/t08_or.exp ... -Running ./gdb.disasm/t09_xor.exp ... -Running ./gdb.disasm/t10_and.exp ... -Running ./gdb.disasm/t11_logs.exp ... -Running ./gdb.disasm/t12_bit.exp ... -Running ./gdb.disasm/t13_otr.exp ... -Running ./gdb.dwarf2/callframecfa.exp ... -PASS: gdb.dwarf2/callframecfa.exp: set breakpoint for call-frame-cfa -PASS: gdb.dwarf2/callframecfa.exp: continue to breakpoint: continue to breakpoint for call-frame-cfa -PASS: gdb.dwarf2/callframecfa.exp: set display for call-frame-cfa -PASS: gdb.dwarf2/callframecfa.exp: step 1 for call-frame-cfa -PASS: gdb.dwarf2/callframecfa.exp: step 2 for call-frame-cfa -PASS: gdb.dwarf2/callframecfa.exp: step 3 for call-frame-cfa -PASS: gdb.dwarf2/callframecfa.exp: step 4 for call-frame-cfa -Running ./gdb.dwarf2/clztest.exp ... -Running ./gdb.dwarf2/dup-psym.exp ... -PASS: gdb.dwarf2/dup-psym.exp: info sources should contain only one reference to file1.txt -Running ./gdb.dwarf2/dw2-ada-ffffffff.exp ... -PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: p sizeof (t) -PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: ptype t -Running ./gdb.dwarf2/dw2-anon-mptr.exp ... -PASS: gdb.dwarf2/dw2-anon-mptr.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/dw2-anon-mptr.exp: show cp-abi -PASS: gdb.dwarf2/dw2-anon-mptr.exp: ptype crash -Running ./gdb.dwarf2/dw2-anonymous-func.exp ... -PASS: gdb.dwarf2/dw2-anonymous-func.exp: list file1.txt -Running ./gdb.dwarf2/dw2-bad-parameter-type.exp ... -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: is alive -Running ./gdb.dwarf2/dw2-basic.exp ... -PASS: gdb.dwarf2/dw2-basic.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-basic.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-basic.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-canonicalize-type.exp ... -PASS: gdb.dwarf2/dw2-canonicalize-type.exp: ptype f -Running ./gdb.dwarf2/dw2-case-insensitive.exp ... -PASS: gdb.dwarf2/dw2-case-insensitive.exp: show case-sensitive -PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive on -PASS: gdb.dwarf2/dw2-case-insensitive.exp: set case-sensitive off -PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off -PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_lang -PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_symtab -PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_lang -PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_symtab -Running ./gdb.dwarf2/dw2-common-block.exp ... -Running ./gdb.dwarf2/dw2-compdir-oldgcc.exp ... -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: list gcc42 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc42 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: list gcc43 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc43 -Running ./gdb.dwarf2/dw2-compressed.exp ... -PASS: gdb.dwarf2/dw2-compressed.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-compressed.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-compressed.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-const.exp ... -PASS: gdb.dwarf2/dw2-const.exp: print twelve -PASS: gdb.dwarf2/dw2-const.exp: print/x val8 -Running ./gdb.dwarf2/dw2-cp-infcall-ref-static.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: dw2-cp-infcall-ref-static.exp -Running ./gdb.dwarf2/dw2-cu-size.exp ... -PASS: gdb.dwarf2/dw2-cu-size.exp: ptype noloc -Running ./gdb.dwarf2/dw2-dir-file-name.exp ... -PASS: gdb.dwarf2/dw2-dir-file-name.exp: cd .../rdir -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: continue to breakpoint: compdir_missing__ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: continue to breakpoint: compdir_missing__ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: continue to breakpoint: compdir_missing__ldir_missing__file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: continue to breakpoint: compdir_missing__ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: continue to breakpoint: compdir_missing__ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: continue to breakpoint: compdir_missing__ldir_relative_file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: continue to breakpoint: compdir_missing__ldir_absolute_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: continue to breakpoint: compdir_missing__ldir_absolute_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: continue to breakpoint: compdir_missing__ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: continue to breakpoint: compdir_missing__ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: continue to breakpoint: compdir_relative_ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: continue to breakpoint: compdir_relative_ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: continue to breakpoint: compdir_relative_ldir_missing__file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: continue to breakpoint: compdir_relative_ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: continue to breakpoint: compdir_relative_ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: continue to breakpoint: compdir_relative_ldir_relative_file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: continue to breakpoint: compdir_relative_ldir_absolute_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: continue to breakpoint: compdir_relative_ldir_absolute_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: continue to breakpoint: compdir_relative_ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: continue to breakpoint: compdir_relative_ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: continue to breakpoint: compdir_absolute_ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: continue to breakpoint: compdir_absolute_ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: continue to breakpoint: compdir_absolute_ldir_missing__file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: continue to breakpoint: compdir_absolute_ldir_missing__file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: continue to breakpoint: compdir_absolute_ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: continue to breakpoint: compdir_absolute_ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: continue to breakpoint: compdir_absolute_ldir_relative_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: continue to breakpoint: compdir_absolute_ldir_relative_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: continue to breakpoint: compdir_absolute_ldir_absolute_file_basename_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: continue to breakpoint: compdir_absolute_ldir_absolute_file_relative_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: continue to breakpoint: compdir_absolute_ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: continue to breakpoint: compdir_absolute_ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: relative -Running ./gdb.dwarf2/dw2-dos-drive.exp ... -PASS: gdb.dwarf2/dw2-dos-drive.exp: set breakpoint pending off -PASS: gdb.dwarf2/dw2-dos-drive.exp: break 'z:file.c':func -UNSUPPORTED: gdb.dwarf2/dw2-dos-drive.exp: break file.c:func -Running ./gdb.dwarf2/dw2-double-set-die-type.exp ... -PASS: gdb.dwarf2/dw2-double-set-die-type.exp: ptype a -Running ./gdb.dwarf2/dw2-empty-namespace.exp ... -PASS: gdb.dwarf2/dw2-empty-namespace.exp: ptype var -PASS: gdb.dwarf2/dw2-empty-namespace.exp: p var -Running ./gdb.dwarf2/dw2-empty-pc-range.exp ... -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range before CU load -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: valid range after CU load -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range after CU load -Running ./gdb.dwarf2/dw2-entry-value.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-entry-value.exp: dw2-entry-value.exp -Running ./gdb.dwarf2/dw2-error.exp ... -gdb compile failed, dw2-error.c: Assembler messages: -dw2-error.c:33: Error: bad register name `%rbp' -dw2-error.c:36: Error: bad register name `%rsp' -dw2-error.c:43: Error: bad register name `%rbp' -UNTESTED: gdb.dwarf2/dw2-error.exp: dw2-error.exp -Running ./gdb.dwarf2/dw2-filename.exp ... -PASS: gdb.dwarf2/dw2-filename.exp: interpreter-exec mi -file-list-exec-source-files -PASS: gdb.dwarf2/dw2-filename.exp: info sources -Running ./gdb.dwarf2/dw2-icc-opaque.exp ... -PASS: gdb.dwarf2/dw2-icc-opaque.exp: ptype p_struct -Running ./gdb.dwarf2/dw2-ifort-parameter.exp ... -PASS: gdb.dwarf2/dw2-ifort-parameter.exp: p/x param -Running ./gdb.dwarf2/dw2-inheritance.exp ... -PASS: gdb.dwarf2/dw2-inheritance.exp: ptype inherited -Running ./gdb.dwarf2/dw2-inline-break.exp ... -Running ./gdb.dwarf2/dw2-inline-param.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-inline-param.exp: dw2-inline-param.exp -Running ./gdb.dwarf2/dw2-intercu.exp ... -PASS: gdb.dwarf2/dw2-intercu.exp: ptype int2 -PASS: gdb.dwarf2/dw2-intercu.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-intercu.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-intercu.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-intermix.exp ... -PASS: gdb.dwarf2/dw2-intermix.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-intermix.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-intermix.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-linkage-name-trust.exp ... -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set language c++ -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername () -Running ./gdb.dwarf2/dw2-minsym-in-cu.exp ... -PASS: gdb.dwarf2/dw2-minsym-in-cu.exp: info fun func2 -Running ./gdb.dwarf2/dw2-modula2-self-type.exp ... -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: set language modula-2 -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: ptype v -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: alive -Running ./gdb.dwarf2/dw2-namespaceless-anonymous.exp ... -PASS: gdb.dwarf2/dw2-namespaceless-anonymous.exp: ptype '(anonymous namespace)::v' -PASS: gdb.dwarf2/dw2-namespaceless-anonymous.exp: p '(anonymous namespace)::v' -Running ./gdb.dwarf2/dw2-noloc.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-noloc.exp: dw2-noloc.exp -Running ./gdb.dwarf2/dw2-objfile-overlap.exp ... -PASS: gdb.dwarf2/dw2-objfile-overlap.exp: add-symbol-file -PASS: gdb.dwarf2/dw2-objfile-overlap.exp: info line inner -Running ./gdb.dwarf2/dw2-op-call.exp ... -PASS: gdb.dwarf2/dw2-op-call.exp: maintenance set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/dw2-op-call.exp: p array1 -PASS: gdb.dwarf2/dw2-op-call.exp: array2 using DW_OP_call2 -PASS: gdb.dwarf2/dw2-op-call.exp: array3 using DW_OP_call4 -PASS: gdb.dwarf2/dw2-op-call.exp: p arraynoloc -PASS: gdb.dwarf2/dw2-op-call.exp: p arraycallnoloc -Running ./gdb.dwarf2/dw2-op-out-param.exp ... -Running ./gdb.dwarf2/dw2-op-stack-value.exp ... -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x stack2 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x stack8 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: x/wx &aa551234 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x implicit4to2 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x implicit4to4 -Running ./gdb.dwarf2/dw2-param-error.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-param-error.exp: dw2-param-error.exp -Running ./gdb.dwarf2/dw2-producer.exp ... -PASS: gdb.dwarf2/dw2-producer.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-producer.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-producer.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-ranges.exp ... -PASS: gdb.dwarf2/dw2-ranges.exp: info line main -PASS: gdb.dwarf2/dw2-ranges.exp: info line func -PASS: gdb.dwarf2/dw2-ranges.exp: info line main2 -PASS: gdb.dwarf2/dw2-ranges.exp: info line func2 -KFAIL: gdb.dwarf2/dw2-ranges.exp: info line main3 (PRMS: symtab/12497) -Running ./gdb.dwarf2/dw2-ref-missing-frame.exp ... -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_nofb print -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_nofb backtrace -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb print -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb backtrace -Running ./gdb.dwarf2/dw2-restore.exp ... -Running ./gdb.dwarf2/dw2-restrict.exp ... -Running ./gdb.dwarf2/dw2-simple-locdesc.exp ... -KFAIL: gdb.dwarf2/dw2-simple-locdesc.exp: p &s.shl (PRMS: symtab/13307) -PASS: gdb.dwarf2/dw2-simple-locdesc.exp: p &s.data4 -Running ./gdb.dwarf2/dw2-skip-prologue.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-skip-prologue.exp: dw2-skip-prologue.exp -Running ./gdb.dwarf2/dw2-stack-boundary.exp ... -PASS: gdb.dwarf2/dw2-stack-boundary.exp: set complaints 100 -PASS: gdb.dwarf2/dw2-stack-boundary.exp: check partial symtab errors -PASS: gdb.dwarf2/dw2-stack-boundary.exp: p underflow -PASS: gdb.dwarf2/dw2-stack-boundary.exp: p overflow -Running ./gdb.dwarf2/dw2-strp.exp ... -PASS: gdb.dwarf2/dw2-strp.exp: p a_string -PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string -PASS: gdb.dwarf2/dw2-strp.exp: p a_string2 -PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string2 -Running ./gdb.dwarf2/dw2-unresolved.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-unresolved.exp: dw2-unresolved.exp -Running ./gdb.dwarf2/dw2-var-zero-addr.exp ... -PASS: gdb.dwarf2/dw2-var-zero-addr.exp: print &var -Running ./gdb.dwarf2/dw4-sig-types.exp ... -PASS: gdb.dwarf2/dw4-sig-types.exp: maint set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/dw4-sig-types.exp: p myset -PASS: gdb.dwarf2/dw4-sig-types.exp: continue to foo -Running ./gdb.dwarf2/dw4-sig-type-unused.exp ... -PASS: gdb.dwarf2/dw4-sig-type-unused.exp: alive -Running ./gdb.dwarf2/fission-base.exp ... -Running ./gdb.dwarf2/fission-loclists.exp ... -Running ./gdb.dwarf2/fission-reread.exp ... -PASS: gdb.dwarf2/fission-reread.exp: break main -PASS: gdb.dwarf2/fission-reread.exp: fission-reread -PASS: gdb.dwarf2/fission-reread.exp: fission-reread - unload -Running ./gdb.dwarf2/implptr-64bit.exp ... -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -UNTESTED: gdb.dwarf2/implptr-64bit.exp: implptr-64bit.exp -Running ./gdb.dwarf2/implptr.exp ... -PASS: gdb.dwarf2/implptr.exp: maintenance set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/implptr.exp: set bar breakpoint for implptr -PASS: gdb.dwarf2/implptr.exp: continue to breakpoint: continue to bar breakpoint for implptr -PASS: gdb.dwarf2/implptr.exp: print j in implptr:bar -PASS: gdb.dwarf2/implptr.exp: print sizeof (j[0]) in implptr:bar -PASS: gdb.dwarf2/implptr.exp: print *j in implptr:bar -PASS: gdb.dwarf2/implptr.exp: print **k in implptr:bar -PASS: gdb.dwarf2/implptr.exp: print ***l in implptr:bar -PASS: gdb.dwarf2/implptr.exp: set baz breakpoint for implptr -PASS: gdb.dwarf2/implptr.exp: continue to breakpoint: continue to baz breakpoint for implptr -PASS: gdb.dwarf2/implptr.exp: sanity check element 0 -PASS: gdb.dwarf2/implptr.exp: sanity check element 1 -PASS: gdb.dwarf2/implptr.exp: enter the inlined function -PASS: gdb.dwarf2/implptr.exp: check element 0 for the offset -PASS: gdb.dwarf2/implptr.exp: check element 1 for the offset -PASS: gdb.dwarf2/implptr.exp: continue to breakpoint: ignore the second baz breakpoint -PASS: gdb.dwarf2/implptr.exp: set foo breakpoint for implptr -PASS: gdb.dwarf2/implptr.exp: continue to breakpoint: continue to foo breakpoint for implptr -PASS: gdb.dwarf2/implptr.exp: print p[0].x in implptr:foo -PASS: gdb.dwarf2/implptr.exp: print *p[0].x in implptr:foo -PASS: gdb.dwarf2/implptr.exp: print byte inside *p[0].x in implptr:foo -PASS: gdb.dwarf2/implptr.exp: print invalid offset from *p[0].x in implptr:foo -PASS: gdb.dwarf2/implptr.exp: print j in implptr:foo -Running ./gdb.dwarf2/implptr-optimized-out.exp ... -PASS: gdb.dwarf2/implptr-optimized-out.exp: p p->f -Running ./gdb.dwarf2/mac-fileno.exp ... -PASS: gdb.dwarf2/mac-fileno.exp: set listsize 1 -PASS: gdb.dwarf2/mac-fileno.exp: list func_cu1 -PASS: gdb.dwarf2/mac-fileno.exp: ptype func_cu1 -Running ./gdb.dwarf2/member-ptr-forwardref.exp ... -PASS: gdb.dwarf2/member-ptr-forwardref.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/member-ptr-forwardref.exp: show cp-abi -PASS: gdb.dwarf2/member-ptr-forwardref.exp: ptype c -Running ./gdb.dwarf2/method-ptr.exp ... -PASS: gdb.dwarf2/method-ptr.exp: ptype the_typedef -Running ./gdb.dwarf2/pieces.exp ... -PASS: gdb.dwarf2/pieces.exp: set f1 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f1 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: print a in pieces:f1 -PASS: gdb.dwarf2/pieces.exp: print a.j in pieces:f1 -PASS: gdb.dwarf2/pieces.exp: set f2 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f2 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: print a in pieces:f2 -PASS: gdb.dwarf2/pieces.exp: print a[0] in pieces:f2 -PASS: gdb.dwarf2/pieces.exp: print a[1] in pieces:f2 -PASS: gdb.dwarf2/pieces.exp: set f3 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f3 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: print a.i in pieces:f3 -PASS: gdb.dwarf2/pieces.exp: print a.j in pieces:f3 -PASS: gdb.dwarf2/pieces.exp: set a.i in pieces:f3 -PASS: gdb.dwarf2/pieces.exp: print new a.i in pieces:f3 -PASS: gdb.dwarf2/pieces.exp: set f6 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f6 breakpoint for pieces -PASS: gdb.dwarf2/pieces.exp: print a with optimized out piece -PASS: gdb.dwarf2/pieces.exp: print a.i with optimized out piece -Running ./gdb.dwarf2/pr10770.exp ... -PASS: gdb.dwarf2/pr10770.exp: set breakpoint for pr10770 -PASS: gdb.dwarf2/pr10770.exp: cont -PASS: gdb.dwarf2/pr10770.exp: frame 2 -Running ./gdb.dwarf2/pr11465.exp ... -PASS: gdb.dwarf2/pr11465.exp: p N::c.C -Running ./gdb.dwarf2/pr13961.exp ... -PASS: gdb.dwarf2/pr13961.exp: break main -PASS: gdb.dwarf2/pr13961.exp: pr13961 -Running ./gdb.dwarf2/subrange.exp ... -PASS: gdb.dwarf2/subrange.exp: set language pascal -PASS: gdb.dwarf2/subrange.exp: ptype TByteArray -Running ./gdb.dwarf2/trace-crash.exp ... -Running ./gdb.dwarf2/typeddwarf.exp ... -PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of j at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of l at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of m at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of n at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of o at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of p at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of q at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of r at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of s at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of t at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of u at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of v at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of j at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of l at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of m at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of p at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of q at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of r at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of s at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of t at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of u at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of v at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:73 -Running ./gdb.dwarf2/valop.exp ... -PASS: gdb.dwarf2/valop.exp: set breakpoint for valop -PASS: gdb.dwarf2/valop.exp: continue to breakpoint: continue to breakpoint for valop -PASS: gdb.dwarf2/valop.exp: print uses_stack_op -PASS: gdb.dwarf2/valop.exp: print uses_lit_op -Running ./gdb.dwarf2/watch-notconst.exp ... -PASS: gdb.dwarf2/watch-notconst.exp: watch x -Running ./gdb.fortran/array-element.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/array-element.exp: array-element.exp -Running ./gdb.fortran/charset.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/charset.exp: charset.exp -Running ./gdb.fortran/common-block.exp ... -UNTESTED: gdb.fortran/common-block.exp: common-block.exp -Running ./gdb.fortran/complex.exp ... -UNTESTED: gdb.fortran/complex.exp: complex.exp -UNTESTED: gdb.fortran/complex.exp: Couldn't compile complex.f -Running ./gdb.fortran/derived-type.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/derived-type.exp: derived-type.exp -Running ./gdb.fortran/exprs.exp ... -PASS: gdb.fortran/exprs.exp: set print sevenbit-strings -PASS: gdb.fortran/exprs.exp: set language fortran -PASS: gdb.fortran/exprs.exp: set language to "fortran" -PASS: gdb.fortran/exprs.exp: Set value-history[1] using $1 -PASS: gdb.fortran/exprs.exp: Set value-history[2] using $2 -PASS: gdb.fortran/exprs.exp: Set value-history[3] using $3 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] using inplicit index $$ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] again using implicit index $$ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using implicit index $ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-2] using explicit index $$2 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $0 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $$0 -PASS: gdb.fortran/exprs.exp: Print value-history[1] using explicit index $1 -PASS: gdb.fortran/exprs.exp: Print value-history[2] using explicit index $2 -PASS: gdb.fortran/exprs.exp: Print value-history[3] using explicit index $3 -PASS: gdb.fortran/exprs.exp: Print (value-history[MAX] - 3) using implicit index $ -PASS: gdb.fortran/exprs.exp: Use value-history element in arithmetic expression -PASS: gdb.fortran/exprs.exp: Set a new convenience variable -PASS: gdb.fortran/exprs.exp: Print contents of new convenience variable -PASS: gdb.fortran/exprs.exp: Set convenience variable to a new value -PASS: gdb.fortran/exprs.exp: Print new contents of convenience variable -PASS: gdb.fortran/exprs.exp: Set convenience variable $_ -PASS: gdb.fortran/exprs.exp: Print contents of convenience variable $_ -PASS: gdb.fortran/exprs.exp: Use convenience variable in arithmetic expression -PASS: gdb.fortran/exprs.exp: Use convenience variable assignment in arithmetic expression -PASS: gdb.fortran/exprs.exp: Print contents of uninitialized convenience variable -PASS: gdb.fortran/exprs.exp: p 123 -PASS: gdb.fortran/exprs.exp: p -123 -PASS: gdb.fortran/exprs.exp: reject p _ -PASS: gdb.fortran/exprs.exp: p .TRUE. -PASS: gdb.fortran/exprs.exp: p .FALSE. -PASS: gdb.fortran/exprs.exp: p 'a' -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(2:4) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:3) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(5:) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:) -PASS: gdb.fortran/exprs.exp: p .44 .LT. .45 -PASS: gdb.fortran/exprs.exp: p .44 .GT. .45 -PASS: gdb.fortran/exprs.exp: p 0.44 .LT. 0.45 -PASS: gdb.fortran/exprs.exp: p 0.44 .GT. 0.45 -PASS: gdb.fortran/exprs.exp: p 44. .LT. 45. -PASS: gdb.fortran/exprs.exp: p 44. .GT. 45. -PASS: gdb.fortran/exprs.exp: p 44.0 .LT. 45.0 -PASS: gdb.fortran/exprs.exp: p 44.0 .GT. 45.0 -PASS: gdb.fortran/exprs.exp: p 10D20 .LT. 10D21 -PASS: gdb.fortran/exprs.exp: p 10D20 .GT. 10D21 -PASS: gdb.fortran/exprs.exp: p 10d20 .LT. 10d21 -PASS: gdb.fortran/exprs.exp: p 10d20 .GT. 10d21 -PASS: gdb.fortran/exprs.exp: p 10E20 .LT. 10E21 -PASS: gdb.fortran/exprs.exp: p 10E20 .GT. 10E21 -PASS: gdb.fortran/exprs.exp: p 10e20 .LT. 10e21 -PASS: gdb.fortran/exprs.exp: p 10e20 .GT. 10e21 -PASS: gdb.fortran/exprs.exp: p 10.D20 .LT. 10.D21 -PASS: gdb.fortran/exprs.exp: p 10.D20 .GT. 10.D21 -PASS: gdb.fortran/exprs.exp: p 10.d20 .LT. 10.d21 -PASS: gdb.fortran/exprs.exp: p 10.d20 .GT. 10.d21 -PASS: gdb.fortran/exprs.exp: p 10.E20 .LT. 10.E21 -PASS: gdb.fortran/exprs.exp: p 10.E20 .GT. 10.E21 -PASS: gdb.fortran/exprs.exp: p 10.e20 .LT. 10.e21 -PASS: gdb.fortran/exprs.exp: p 10.e20 .GT. 10.e21 -PASS: gdb.fortran/exprs.exp: p 10.0D20 .LT. 10.0D21 -PASS: gdb.fortran/exprs.exp: p 10.0D20 .GT. 10.0D21 -PASS: gdb.fortran/exprs.exp: p 10.0d20 .LT. 10.0d21 -PASS: gdb.fortran/exprs.exp: p 10.0d20 .GT. 10.0d21 -PASS: gdb.fortran/exprs.exp: p 10.0E20 .LT. 10.0E21 -PASS: gdb.fortran/exprs.exp: p 10.0E20 .GT. 10.0E21 -PASS: gdb.fortran/exprs.exp: p 10.0e20 .LT. 10.0e21 -PASS: gdb.fortran/exprs.exp: p 10.0e20 .GT. 10.0e21 -PASS: gdb.fortran/exprs.exp: p 10.0D+20 .LT. 10.0D+21 -PASS: gdb.fortran/exprs.exp: p 10.0D+20 .GT. 10.0D+21 -PASS: gdb.fortran/exprs.exp: p 10.0d+20 .LT. 10.0d+21 -PASS: gdb.fortran/exprs.exp: p 10.0d+20 .GT. 10.0d+21 -PASS: gdb.fortran/exprs.exp: p 10.0E+20 .LT. 10.0E+21 -PASS: gdb.fortran/exprs.exp: p 10.0E+20 .GT. 10.0E+21 -PASS: gdb.fortran/exprs.exp: p 10.0e+20 .LT. 10.0e+21 -PASS: gdb.fortran/exprs.exp: p 10.0e+20 .GT. 10.0e+21 -PASS: gdb.fortran/exprs.exp: p 10.0D-11 .LT. 10.0D-10 -PASS: gdb.fortran/exprs.exp: p 10.0D-11 .GT. 10.0D-10 -PASS: gdb.fortran/exprs.exp: p 10.0d-11 .LT. 10.0d-10 -PASS: gdb.fortran/exprs.exp: p 10.0d-11 .GT. 10.0d-10 -PASS: gdb.fortran/exprs.exp: p 10.0E-11 .LT. 10.0E-10 -PASS: gdb.fortran/exprs.exp: p 10.0E-11 .GT. 10.0E-10 -PASS: gdb.fortran/exprs.exp: p 10.0e-11 .LT. 10.0e-10 -PASS: gdb.fortran/exprs.exp: p 10.0e-11 .GT. 10.0e-10 -PASS: gdb.fortran/exprs.exp: unary minus applied to int -PASS: gdb.fortran/exprs.exp: unary minus applied to real -PASS: gdb.fortran/exprs.exp: bool plus int -PASS: gdb.fortran/exprs.exp: int plus int -PASS: gdb.fortran/exprs.exp: real plus int -PASS: gdb.fortran/exprs.exp: real plus real -PASS: gdb.fortran/exprs.exp: bool minus int -PASS: gdb.fortran/exprs.exp: int minus int -PASS: gdb.fortran/exprs.exp: real minus int -PASS: gdb.fortran/exprs.exp: real minus real -PASS: gdb.fortran/exprs.exp: bool times int -PASS: gdb.fortran/exprs.exp: int times int -PASS: gdb.fortran/exprs.exp: real times int -PASS: gdb.fortran/exprs.exp: real times real -PASS: gdb.fortran/exprs.exp: bool divided by int -PASS: gdb.fortran/exprs.exp: int divided by int -PASS: gdb.fortran/exprs.exp: real divided by int -PASS: gdb.fortran/exprs.exp: real divided by real -PASS: gdb.fortran/exprs.exp: int powered by int -PASS: gdb.fortran/exprs.exp: combined exponentiation expression -PASS: gdb.fortran/exprs.exp: combined exponentiation expression in specified order -PASS: gdb.fortran/exprs.exp: int powered by real -PASS: gdb.fortran/exprs.exp: real powered by real -Running ./gdb.fortran/library-module.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/library-module.exp: Couldn't compile library-module-lib.f90 -Running ./gdb.fortran/logical.exp ... -UNTESTED: gdb.fortran/logical.exp: logical.exp -Running ./gdb.fortran/module.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/module.exp: module.exp -Running ./gdb.fortran/multi-dim.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/multi-dim.exp: multi-dim.exp -Running ./gdb.fortran/subarray.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gfortran. -UNTESTED: gdb.fortran/subarray.exp: subarray.exp -Running ./gdb.fortran/types.exp ... -PASS: gdb.fortran/types.exp: set print sevenbit-strings -PASS: gdb.fortran/types.exp: set language fortran -PASS: gdb.fortran/types.exp: set language to "fortran" -PASS: gdb.fortran/types.exp: pt 123 -PASS: gdb.fortran/types.exp: reject pt _ -PASS: gdb.fortran/types.exp: pt .TRUE. -PASS: gdb.fortran/types.exp: pt .FALSE. -PASS: gdb.fortran/types.exp: pt 'a' -PASS: gdb.fortran/types.exp: pt .44 -PASS: gdb.fortran/types.exp: pt 44.0 -PASS: gdb.fortran/types.exp: pt 10D20 -PASS: gdb.fortran/types.exp: pt 10D20 -PASS: gdb.fortran/types.exp: pt 10d20 -PASS: gdb.fortran/types.exp: pt 10d20 -PASS: gdb.fortran/types.exp: pt 10E20 -PASS: gdb.fortran/types.exp: pt 10E20 -PASS: gdb.fortran/types.exp: pt 10e20 -PASS: gdb.fortran/types.exp: pt 10e20 -Running ./gdb.gdb/complaints.exp ... -Running ./gdb.gdb/observer.exp ... -Running ./gdb.gdb/selftest.exp ... -Running ./gdb.gdb/xfullpath.exp ... -Running ./gdb.go/basic-types.exp ... -PASS: gdb.go/basic-types.exp: set language go -PASS: gdb.go/basic-types.exp: set language to "go" -PASS: gdb.go/basic-types.exp: pt 123 -PASS: gdb.go/basic-types.exp: pt void(42) -PASS: gdb.go/basic-types.exp: pt byte(42) -PASS: gdb.go/basic-types.exp: pt int(42) -PASS: gdb.go/basic-types.exp: pt uint(42) -PASS: gdb.go/basic-types.exp: pt uintptr(42) -PASS: gdb.go/basic-types.exp: pt int8(42) -PASS: gdb.go/basic-types.exp: pt int16(42) -PASS: gdb.go/basic-types.exp: pt int32(42) -PASS: gdb.go/basic-types.exp: pt int64(42) -PASS: gdb.go/basic-types.exp: pt uint8(42) -PASS: gdb.go/basic-types.exp: pt uint16(42) -PASS: gdb.go/basic-types.exp: pt uint32(42) -PASS: gdb.go/basic-types.exp: pt uint64(42) -PASS: gdb.go/basic-types.exp: pt true -PASS: gdb.go/basic-types.exp: pt false -PASS: gdb.go/basic-types.exp: pt bool(0) -PASS: gdb.go/basic-types.exp: pt bool(1) -PASS: gdb.go/basic-types.exp: pt 'a' -PASS: gdb.go/basic-types.exp: pt "a simple string" -PASS: gdb.go/basic-types.exp: pt `a simple raw string` -PASS: gdb.go/basic-types.exp: pt .44 -PASS: gdb.go/basic-types.exp: pt 44.0 -PASS: gdb.go/basic-types.exp: pt 10e20 -PASS: gdb.go/basic-types.exp: pt 10E20 -PASS: gdb.go/basic-types.exp: pt float32(.42) -PASS: gdb.go/basic-types.exp: pt float64(.42) -PASS: gdb.go/basic-types.exp: pt complex64(.42) -XFAIL: gdb.go/basic-types.exp: pt complex64(.42i1.0) -XFAIL: gdb.go/basic-types.exp: pt complex64(i1.0) -PASS: gdb.go/basic-types.exp: pt complex128(.42) -XFAIL: gdb.go/basic-types.exp: pt complex128(.42i1.0) -XFAIL: gdb.go/basic-types.exp: pt complex128(i1.0) -Running ./gdb.go/chan.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/chan.exp: chan.exp -Running ./gdb.go/handcall.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/handcall.exp: handcall.exp -Running ./gdb.go/hello.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/hello.exp: hello.exp -Running ./gdb.go/integers.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/integers.exp: integers.exp -Running ./gdb.go/methods.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/methods.exp: methods.exp -Running ./gdb.go/package.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/package.exp: package -Running ./gdb.go/print.exp ... -PASS: gdb.go/print.exp: set language go -PASS: gdb.go/print.exp: set language to "go" -PASS: gdb.go/print.exp: check fp + text -PASS: gdb.go/print.exp: p 1. -PASS: gdb.go/print.exp: p 1.5 -PASS: gdb.go/print.exp: p 1.f -PASS: gdb.go/print.exp: p 1.5f -PASS: gdb.go/print.exp: p 1.l -PASS: gdb.go/print.exp: p 1.5l -PASS: gdb.go/print.exp: p 0x1.1 -PASS: gdb.go/print.exp: reject p 1.1x -PASS: gdb.go/print.exp: reject p 1.1ff -PASS: gdb.go/print.exp: reject p 1.1ll -Running ./gdb.go/strings.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/strings.exp: strings.exp -Running ./gdb.go/types.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/types.exp: types.exp -Running ./gdb.go/unsafe.exp ... -gdb compile failed, default_target_compile: Can't find i686-pc-linux-gnu-gccgo. -UNTESTED: gdb.go/unsafe.exp: unsafe.exp -Running ./gdb.java/jmain.exp ... -UNSUPPORTED: gdb.java/jmain.exp: compilation jmain.java -Running ./gdb.java/jmisc.exp ... -UNSUPPORTED: gdb.java/jmisc.exp: compilation jmisc.java -Running ./gdb.java/jnpe.exp ... -UNSUPPORTED: gdb.java/jnpe.exp: compilation jnpe.java -UNTESTED: gdb.java/jnpe.exp: Couldn't compile ./gdb.java/jnpe.java -Running ./gdb.java/jprint.exp ... -UNSUPPORTED: gdb.java/jprint.exp: compilation jprint.java -Running ./gdb.java/jv-exp.exp ... -PASS: gdb.java/jv-exp.exp: set print sevenbit-strings -PASS: gdb.java/jv-exp.exp: set width 0 -PASS: gdb.java/jv-exp.exp: set language java -PASS: gdb.java/jv-exp.exp: set language to "java" -PASS: gdb.java/jv-exp.exp: p 1 > 2 -PASS: gdb.java/jv-exp.exp: p 1 < 2 -Running ./gdb.java/jv-print.exp ... -PASS: gdb.java/jv-print.exp: print $pc -PASS: gdb.java/jv-print.exp: set print sevenbit-strings -PASS: gdb.java/jv-print.exp: set width 0 -PASS: gdb.java/jv-print.exp: set language java -PASS: gdb.java/jv-print.exp: set language to "java" -PASS: gdb.java/jv-print.exp: p 123 -PASS: gdb.java/jv-print.exp: p -123 -PASS: gdb.java/jv-print.exp: p/d 123 -PASS: gdb.java/jv-print.exp: p 0123 -PASS: gdb.java/jv-print.exp: p 00123 -PASS: gdb.java/jv-print.exp: p -0123 -PASS: gdb.java/jv-print.exp: p/o 0123 -PASS: gdb.java/jv-print.exp: p 0x123 -PASS: gdb.java/jv-print.exp: p -0x123 -PASS: gdb.java/jv-print.exp: p 0x0123 -PASS: gdb.java/jv-print.exp: p -0x0123 -PASS: gdb.java/jv-print.exp: p 0xABCDEF -PASS: gdb.java/jv-print.exp: p 0xabcdef -PASS: gdb.java/jv-print.exp: p 0xAbCdEf -PASS: gdb.java/jv-print.exp: p/x 0x123 -PASS: gdb.java/jv-print.exp: p 'a' -PASS: gdb.java/jv-print.exp: p/c 'a' -PASS: gdb.java/jv-print.exp: p/c 70 -PASS: gdb.java/jv-print.exp: p/x 'a' -PASS: gdb.java/jv-print.exp: p/d 'a' -PASS: gdb.java/jv-print.exp: p/t 'a' -PASS: gdb.java/jv-print.exp: p/x '\377' -PASS: gdb.java/jv-print.exp: p '\'' -PASS: gdb.java/jv-print.exp: p '\\' -PASS: gdb.java/jv-print.exp: reject p 0x -PASS: gdb.java/jv-print.exp: p '' -PASS: gdb.java/jv-print.exp: p ''' -PASS: gdb.java/jv-print.exp: reject p '\' -PASS: gdb.java/jv-print.exp: reject p '\\\' -PASS: gdb.java/jv-print.exp: reject p DEADBEEF -PASS: gdb.java/jv-print.exp: reject p 123DEADBEEF -PASS: gdb.java/jv-print.exp: reject p 123foobar.bazfoo3 -PASS: gdb.java/jv-print.exp: reject p 123EEEEEEEEEEEEEEEEE33333k333 -PASS: gdb.java/jv-print.exp: check for floating addition -PASS: gdb.java/jv-print.exp: reject p 09 -PASS: gdb.java/jv-print.exp: reject p 079 -PASS: gdb.java/jv-print.exp: reject p 0xG -PASS: gdb.java/jv-print.exp: reject p 0xAG -PASS: gdb.java/jv-print.exp: check fp + text -PASS: gdb.java/jv-print.exp: p 1. -PASS: gdb.java/jv-print.exp: p 1.5 -PASS: gdb.java/jv-print.exp: p 1.f -PASS: gdb.java/jv-print.exp: p 1.5f -PASS: gdb.java/jv-print.exp: p 1.d -PASS: gdb.java/jv-print.exp: p 1.5d -PASS: gdb.java/jv-print.exp: p 0x1.1 -PASS: gdb.java/jv-print.exp: reject p 1.1x -PASS: gdb.java/jv-print.exp: reject p 1.1ff -PASS: gdb.java/jv-print.exp: reject p 1.1dd -Running ./gdb.linespec/break-ask.exp ... -PASS: gdb.linespec/break-ask.exp: set multiple-symbols ask -PASS: gdb.linespec/break-ask.exp: set filename-display absolute -PASS: gdb.linespec/break-ask.exp: break twodup absolute -PASS: gdb.linespec/break-ask.exp: 0 -PASS: gdb.linespec/break-ask.exp: set filename-display relative -PASS: gdb.linespec/break-ask.exp: break twodup relative -PASS: gdb.linespec/break-ask.exp: 2 -PASS: gdb.linespec/break-ask.exp: expect breakpoint -PASS: gdb.linespec/break-ask.exp: info source -PASS: gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere -PASS: gdb.linespec/break-ask.exp: break twodup relative other -PASS: gdb.linespec/break-ask.exp: 3 -PASS: gdb.linespec/break-ask.exp: expect breakpoint other -PASS: gdb.linespec/break-ask.exp: info source other -PASS: gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere other -Running ./gdb.linespec/linespec.exp ... -PASS: gdb.linespec/linespec.exp: set multiple-symbols to all for linespec tests -PASS: gdb.linespec/linespec.exp: single-location break using dir/file:line -PASS: gdb.linespec/linespec.exp: clear breakpoint using dir/file:line -PASS: gdb.linespec/linespec.exp: multi-location break using file:line -PASS: gdb.linespec/linespec.exp: multi-location break using duplicate function name -PASS: gdb.linespec/linespec.exp: multi-location break using duplicate function name and label -PASS: gdb.linespec/linespec.exp: complete condition -PASS: gdb.linespec/linespec.exp: disable pending breakpoints for linespec tests -PASS: gdb.linespec/linespec.exp: set breakpoint on non-existent function -PASS: gdb.linespec/linespec.exp: set breakpoint at all instances of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at lspec.cc instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at non-existent lspec.cc instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at specific instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint in body.h -PASS: gdb.linespec/linespec.exp: set breakpoint in f1 -PASS: gdb.linespec/linespec.exp: add inferior for linespec tests -PASS: gdb.linespec/linespec.exp: switch to inferior 2 for linespec tests -PASS: gdb.linespec/linespec.exp: set the new inferior file for linespec tests -PASS: gdb.linespec/linespec.exp: set breakpoint at main in both inferiors -Running ./gdb.linespec/ls-dollar.exp ... -PASS: gdb.linespec/ls-dollar.exp: set listsize 1 -PASS: gdb.linespec/ls-dollar.exp: list $dollar_var -PASS: gdb.linespec/ls-dollar.exp: break $dollar_func -Running ./gdb.linespec/ls-errs.exp ... -PASS: gdb.linespec/ls-errs.exp: set breakpoint pending off -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break -100 -PASS: gdb.linespec/ls-errs.exp: break +500 -PASS: gdb.linespec/ls-errs.exp: break 1000 -PASS: gdb.linespec/ls-errs.exp: break 3: -PASS: gdb.linespec/ls-errs.exp: break +10: -PASS: gdb.linespec/ls-errs.exp: break -10: -PASS: gdb.linespec/ls-errs.exp: break 3: -PASS: gdb.linespec/ls-errs.exp: break +10: -PASS: gdb.linespec/ls-errs.exp: break -10: -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 1 -PASS: gdb.linespec/ls-errs.exp: break +10 1 -PASS: gdb.linespec/ls-errs.exp: break -10 1 -PASS: gdb.linespec/ls-errs.exp: break 3 +1 -PASS: gdb.linespec/ls-errs.exp: break +10 +1 -PASS: gdb.linespec/ls-errs.exp: break -10 +1 -PASS: gdb.linespec/ls-errs.exp: break 3 +100 -PASS: gdb.linespec/ls-errs.exp: break +10 +100 -PASS: gdb.linespec/ls-errs.exp: break -10 +100 -PASS: gdb.linespec/ls-errs.exp: break 3 -10 -PASS: gdb.linespec/ls-errs.exp: break +10 -10 -PASS: gdb.linespec/ls-errs.exp: break -10 -10 -PASS: gdb.linespec/ls-errs.exp: break 3 foo -PASS: gdb.linespec/ls-errs.exp: break +10 foo -PASS: gdb.linespec/ls-errs.exp: break -10 foo -PASS: gdb.linespec/ls-errs.exp: break this_file_doesn't_exist.c:3 -PASS: gdb.linespec/ls-errs.exp: break this file has spaces.c:3 -PASS: gdb.linespec/ls-errs.exp: break "file::colons.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'file::colons.c':3 -PASS: gdb.linespec/ls-errs.exp: break "this "file" has quotes.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'this "file" has quotes.c':3 -PASS: gdb.linespec/ls-errs.exp: break 'this 'file' has quotes.c':3 -PASS: gdb.linespec/ls-errs.exp: break "this 'file' has quotes.c":3 -PASS: gdb.linespec/ls-errs.exp: break "spaces: and :colons.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'more: :spaces: :and colons::.c':3 -PASS: gdb.linespec/ls-errs.exp: break "src-file.c':3 -PASS: gdb.linespec/ls-errs.exp: break 'src-file.c:3 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main:foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 1 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 +100 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 -100 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:-100 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:-100" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:-100' -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:+500 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:+500" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:+500' -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:1000 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:1000" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:1000' -PASS: gdb.linespec/ls-errs.exp: break foobar -PASS: gdb.linespec/ls-errs.exp: break foo::bar -PASS: gdb.linespec/ls-errs.exp: break foo.bar -PASS: gdb.linespec/ls-errs.exp: break foo . -PASS: gdb.linespec/ls-errs.exp: break foo bar -PASS: gdb.linespec/ls-errs.exp: break foo 1 -PASS: gdb.linespec/ls-errs.exp: break foo 0 -PASS: gdb.linespec/ls-errs.exp: break foo +10 -PASS: gdb.linespec/ls-errs.exp: break foo -10 -PASS: gdb.linespec/ls-errs.exp: break foo +100 -PASS: gdb.linespec/ls-errs.exp: break foo -100 -PASS: gdb.linespec/ls-errs.exp: break main:there -PASS: gdb.linespec/ls-errs.exp: break main:here: -PASS: gdb.linespec/ls-errs.exp: break main: there -PASS: gdb.linespec/ls-errs.exp: break main:here: -PASS: gdb.linespec/ls-errs.exp: break main :there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main 3 -PASS: gdb.linespec/ls-errs.exp: break main +100 -PASS: gdb.linespec/ls-errs.exp: break main -100 -PASS: gdb.linespec/ls-errs.exp: break main foo -PASS: gdb.linespec/ls-errs.exp: break main:here 3 -PASS: gdb.linespec/ls-errs.exp: break main:here +100 -PASS: gdb.linespec/ls-errs.exp: break main:here -100 -PASS: gdb.linespec/ls-errs.exp: break main:here foo -PASS: gdb.linespec/ls-errs.exp: break if -PASS: gdb.linespec/ls-errs.exp: break task -PASS: gdb.linespec/ls-errs.exp: break thread -PASS: gdb.linespec/ls-errs.exp: break 'main.c'flubber -PASS: gdb.linespec/ls-errs.exp: break 'main.c',21 -PASS: gdb.linespec/ls-errs.exp: break 'main.c' -PASS: gdb.linespec/ls-errs.exp: break 'main.c'3 -PASS: gdb.linespec/ls-errs.exp: break 'main.c'+3 -PASS: gdb.linespec/ls-errs.exp: break $zippo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:$zippo -Running ./gdb.linespec/macro-relative.exp ... -FAIL: gdb.linespec/macro-relative.exp: info macro HEADER -Running ./gdb.linespec/skip-two.exp ... -PASS: gdb.linespec/skip-two.exp: skip function dupname -PASS: gdb.linespec/skip-two.exp: dupname ignored from main -PASS: gdb.linespec/skip-two.exp: continue to breakpoint: n -PASS: gdb.linespec/skip-two.exp: dupname ignored from n -PASS: gdb.linespec/skip-two.exp: skip delete 1 -PASS: gdb.linespec/skip-two.exp: skip file thefile.cc -PASS: gdb.linespec/skip-two.exp: step into dupname -PASS: gdb.linespec/skip-two.exp: finish from dupname -PASS: gdb.linespec/skip-two.exp: dupname ignored for thefile.cc -Running ./gdb.linespec/thread.exp ... -PASS: gdb.linespec/thread.exp: breakpoint line number in file -PASS: gdb.linespec/thread.exp: continue to breakpoint: 29 -PASS: gdb.linespec/thread.exp: setting breakpoint at thread -PASS: gdb.linespec/thread.exp: continue to breakpoint: thread function -Running ./gdb.mi/dw2-ref-missing-frame.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-i686-pc-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -Running ./gdb.mi/gdb2549.exp ... -PASS: gdb.mi/gdb2549.exp: wrong arguments -PASS: gdb.mi/gdb2549.exp: no executable -PASS: gdb.mi/gdb2549.exp: breakpoint at main -PASS: gdb.mi/gdb2549.exp: mi runto main -PASS: gdb.mi/gdb2549.exp: register values x -PASS: gdb.mi/gdb2549.exp: register values f -PASS: gdb.mi/gdb2549.exp: register values d -PASS: gdb.mi/gdb2549.exp: register values o -PASS: gdb.mi/gdb2549.exp: register values t -Running ./gdb.mi/gdb669.exp ... -PASS: gdb.mi/gdb669.exp: successfully compiled posix threads test case -PASS: gdb.mi/gdb669.exp: breakpoint at main -PASS: gdb.mi/gdb669.exp: mi runto main -PASS: gdb.mi/gdb669.exp: -thread-list-ids (at main) -PASS: gdb.mi/gdb669.exp: info threads (at main) -PASS: gdb.mi/gdb669.exp: finding MI result string (at main) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (at main) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (at main) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (at main) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (at main) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (at main) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (at main) -PASS: gdb.mi/gdb669.exp: next, try 0 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 0) -PASS: gdb.mi/gdb669.exp: info threads (try 0) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 0) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 0) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 0) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 0) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 0) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 0) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 0) -PASS: gdb.mi/gdb669.exp: next, try 1 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 1) -PASS: gdb.mi/gdb669.exp: info threads (try 1) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 1) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 1) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 1) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 1) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 1) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 1) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 1) -PASS: gdb.mi/gdb669.exp: next, try 2 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 2) -PASS: gdb.mi/gdb669.exp: info threads (try 2) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 2) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 2) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 2) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 2) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 2) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 2) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 2) -PASS: gdb.mi/gdb669.exp: next, try 3 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 3) -PASS: gdb.mi/gdb669.exp: info threads (try 3) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 3) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 3) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 3) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 3) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 3) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 3) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 3) -Running ./gdb.mi/gdb680.exp ... -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 0 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 1 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 2 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 3 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 4 -Running ./gdb.mi/gdb701.exp ... -PASS: gdb.mi/gdb701.exp: breakpoint at main -PASS: gdb.mi/gdb701.exp: mi runto main -PASS: gdb.mi/gdb701.exp: step over "foo = 0" -PASS: gdb.mi/gdb701.exp: create fooPtr -PASS: gdb.mi/gdb701.exp: list children of fooPtr -PASS: gdb.mi/gdb701.exp: list children of fooPtr.x -PASS: gdb.mi/gdb701.exp: list children of fooPtr.y -PASS: gdb.mi/gdb701.exp: list children of fooPtr.z -Running ./gdb.mi/gdb792.exp ... -PASS: gdb.mi/gdb792.exp: breakpoint at main -PASS: gdb.mi/gdb792.exp: mi runto main -PASS: gdb.mi/gdb792.exp: create var for class A -PASS: gdb.mi/gdb792.exp: list children of class A -PASS: gdb.mi/gdb792.exp: list children of A.public -PASS: gdb.mi/gdb792.exp: list children of A.private -PASS: gdb.mi/gdb792.exp: list children of A.protected -PASS: gdb.mi/gdb792.exp: list children of A.protected.b -PASS: gdb.mi/gdb792.exp: list children of A.protected.b.public -PASS: gdb.mi/gdb792.exp: list children of A.protected.b.private -PASS: gdb.mi/gdb792.exp: create var for class C which has baseclass A -PASS: gdb.mi/gdb792.exp: list children of class C -Running ./gdb.mi/mi2-amd64-entry-value.exp ... -Running ./gdb.mi/mi2-prompt.exp ... -PASS: gdb.mi/mi2-prompt.exp: console set prompt -PASS: gdb.mi/mi2-prompt.exp: -break-list -PASS: gdb.mi/mi2-prompt.exp: set prompt (banana) -PASS: gdb.mi/mi2-prompt.exp: interpreter-exec mi -break-list -Running ./gdb.mi/mi2-var-child.exp ... -PASS: gdb.mi/mi2-var-child.exp: breakpoint at do_children_tests -PASS: gdb.mi/mi2-var-child.exp: mi runto do_children_tests -PASS: gdb.mi/mi2-var-child.exp: run to 237 (set breakpoint) -PASS: gdb.mi/mi2-var-child.exp: create local variable struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.character -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.character -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_int -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_int -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.3 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.3 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.4 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.4 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.5 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.5 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.6 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.6 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.7 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.7 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.8 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.8 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.9 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.9 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.a -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.a -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.b -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.b -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.c -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.c -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.d -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.d -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.g -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.g -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.h -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.h -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.i -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.i -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: step to line $line_dct_123 -PASS: gdb.mi/mi2-var-child.exp: create local variable weird -PASS: gdb.mi/mi2-var-child.exp: get children of weird -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird -PASS: gdb.mi/mi2-var-child.exp: get children of weird.long_array -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.long_array -PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: is weird editable -PASS: gdb.mi/mi2-var-child.exp: is weird->int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.u1 editable -PASS: gdb.mi/mi2-var-child.exp: is weird.s2 editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.a editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.b editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.c editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array.0 editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations editable -PASS: gdb.mi/mi2-var-child.exp: delete var weird -PASS: gdb.mi/mi2-var-child.exp: update all vars. None changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 1 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 4 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 5 -PASS: gdb.mi/mi2-var-child.exp: update all vars int_ptr_ptr and children changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 6 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.0 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 7 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.1 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 8 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.2 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_nothing -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.3-9 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_a0_0 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.func_ptr changed -PASS: gdb.mi/mi2-var-child.exp: delete var struct_declarations -PASS: gdb.mi/mi2-var-child.exp: delete var weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 1 -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0 -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0 -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 2 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 3 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 4 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 5 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 6 -XFAIL: gdb.mi/mi2-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 7 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: break in do_anonymous_type_tests -PASS: gdb.mi/mi2-var-child.exp: continue to do_anonymous_type_tests breakpoint -PASS: gdb.mi/mi2-var-child.exp: VT: create root varobj for ptr -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2 -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.a -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.a -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.c.*c -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.c.*c -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.d -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.d -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.e -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.e -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.f -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.f -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.g -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.g -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h.**h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h.**h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.integer -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.integer -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.unsigned_integer -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.unsigned_integer -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.character -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.character -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.signed_character -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.signed_character -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.0 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.0 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.1 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.1 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.2 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.2 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.3 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.3 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.4 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.4 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.5 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.5 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.6 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.6 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.7 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.7 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.8 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.8 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.9 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.9 -PASS: gdb.mi/mi2-var-child.exp: VT: create root varobj for v -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3 -PASS: gdb.mi/mi2-var-child.exp: path expression for v3 -PASS: gdb.mi/mi2-var-child.exp: expression for v3 -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.x -PASS: gdb.mi/mi2-var-child.exp: expression for v3.x -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.1_anonymous.a -PASS: gdb.mi/mi2-var-child.exp: expression for v3.1_anonymous.a -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.2_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: expression for v3.2_anonymous.b -Running ./gdb.mi/mi-async.exp ... -Running ./gdb.mi/mi-basics.exp ... -PASS: gdb.mi/mi-basics.exp: acceptance of MI operations -PASS: gdb.mi/mi-basics.exp: file-exec-and-symbols operation -PASS: gdb.mi/mi-basics.exp: file-exec-file operation -PASS: gdb.mi/mi-basics.exp: file-symbol-file operation -PASS: gdb.mi/mi-basics.exp: break-delete (all) operation -PASS: gdb.mi/mi-basics.exp: all breakpoints removed -PASS: gdb.mi/mi-basics.exp: environment-directory arg operation -PASS: gdb.mi/mi-basics.exp: environment-directory empty-string operation -PASS: gdb.mi/mi-basics.exp: environment-directory operation -PASS: gdb.mi/mi-basics.exp: environment-cd arg operation -PASS: gdb.mi/mi-basics.exp: environment-pwd operation -PASS: gdb.mi/mi-basics.exp: environment-path -PASS: gdb.mi/mi-basics.exp: environment-path no-args operation -PASS: gdb.mi/mi-basics.exp: environment-path dir1 dir2 operation -PASS: gdb.mi/mi-basics.exp: environment-path -r dir operation -PASS: gdb.mi/mi-basics.exp: environment-path -r operation -PASS: gdb.mi/mi-basics.exp: initial tty is mi_inferior_tty_name -PASS: gdb.mi/mi-basics.exp: set tty to /dev/pts/1 -PASS: gdb.mi/mi-basics.exp: tty was set correctly -PASS: gdb.mi/mi-basics.exp: set tty to the empty string -PASS: gdb.mi/mi-basics.exp: make sure tty is empty -PASS: gdb.mi/mi-basics.exp: set tty to mi_inferior_tty_name (the way it was) -PASS: gdb.mi/mi-basics.exp: verify tty is correct -Running ./gdb.mi/mi-break.exp ... -PASS: gdb.mi/mi-break.exp: break-insert -t operation -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:$line_callee3_head -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at "":$line_callee4_head -PASS: gdb.mi/mi-break.exp: list of breakpoints -PASS: gdb.mi/mi-break.exp: delete temp breakpoints -KFAIL: gdb.mi/mi-break.exp: break-insert -r operation (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee2 (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp .*llee (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: list of breakpoints (PRMS: mi/14270) -PASS: gdb.mi/mi-break.exp: delete temp breakpoints -PASS: gdb.mi/mi-break.exp: insert breakpoint with ignore count at callme -PASS: gdb.mi/mi-break.exp: run to breakpoint with ignore count -PASS: gdb.mi/mi-break.exp: breakpoint at nonexistent function -PASS: gdb.mi/mi-break.exp: create varobj for function call -PASS: gdb.mi/mi-break.exp: update varobj for function call -PASS: gdb.mi/mi-break.exp: test disabled creation -PASS: gdb.mi/mi-break.exp: test disabled creation: cleanup -PASS: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-break.exp: breakpoint commands: set commands -PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are set -PASS: gdb.mi/mi-break.exp: breakpoint commands: clear commands -PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are cleared -ERROR: couldn't load /var/tmp/portage/cross-i686-pc-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.mi/mi-break into /var/tmp/portage/cross-i686-pc-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb (timed out). -UNRESOLVED: gdb.mi/mi-break.exp: breakpoint at main -PASS: gdb.mi/mi-break.exp: mi runto main -PASS: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2, again -PASS: gdb.mi/mi-break.exp: breakpoint commands: set commands -PASS: gdb.mi/mi-break.exp: intermediate stop and continue -PASS: gdb.mi/mi-break.exp: test hitting breakpoint with commands -PASS: gdb.mi/mi-break.exp: create local variable tpnum -PASS: gdb.mi/mi-break.exp: eval tpnum before tracepoint -PASS: gdb.mi/mi-break.exp: break-insert -a operation -PASS: gdb.mi/mi-break.exp: update tpnum -PASS: gdb.mi/mi-break.exp: eval tpnum after tracepoint -Running ./gdb.mi/mi-breakpoint-changed.exp ... -PASS: gdb.mi/mi-breakpoint-changed.exp: breakpoint at main -FAIL: gdb.mi/mi-breakpoint-changed.exp: mi runto main (unknown output after running) -PASS: gdb.mi/mi-breakpoint-changed.exp: change command -PASS: gdb.mi/mi-breakpoint-changed.exp: watch watch -PASS: gdb.mi/mi-breakpoint-changed.exp: trace marker -PASS: gdb.mi/mi-breakpoint-changed.exp: catch syscall -PASS: gdb.mi/mi-breakpoint-changed.exp: dprintf marker, "arg" " -PASS: gdb.mi/mi-breakpoint-changed.exp: condition 2 main > 0x0 -PASS: gdb.mi/mi-breakpoint-changed.exp: disable 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: enable 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: ignore 5 1 -PASS: gdb.mi/mi-breakpoint-changed.exp: passcount 1 4 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 4 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 5 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 6 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on pendfunc1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc1 resolved -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc1 resolved: hit_count is updated -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to pendfunc1 breakpoint -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: delete breakpoint on pendfunc1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on marker -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on pendfunc3 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc3 resolved -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 2 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc3 pending again -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: -Running ./gdb.mi/mi-catch-load.exp ... -PASS: gdb.mi/mi-catch-load.exp: breakpoint at main -PASS: gdb.mi/mi-catch-load.exp: mi runto main -PASS: gdb.mi/mi-catch-load.exp: catch-load: auto-solib-add on -PASS: gdb.mi/mi-catch-load.exp: catch-load: catch load -FAIL: gdb.mi/mi-catch-load.exp: catch-load: solib-event stop -PASS: gdb.mi/mi-catch-load.exp: breakpoint at main -PASS: gdb.mi/mi-catch-load.exp: mi runto main -PASS: gdb.mi/mi-catch-load.exp: catch-unload: auto-solib-add on -PASS: gdb.mi/mi-catch-load.exp: catch-unload: catch unload -FAIL: gdb.mi/mi-catch-load.exp: catch-unload: solib-event stop -Running ./gdb.mi/mi-cli.exp ... -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with no arguments -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with one argument -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with bogus interpreter -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console bogus -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "file $binfile" -PASS: gdb.mi/mi-cli.exp: breakpoint at main -PASS: gdb.mi/mi-cli.exp: mi runto main -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set args foobar" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "show args" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "break callee4" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "info break" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set listsize 1" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" -PASS: gdb.mi/mi-cli.exp: continue to callee4 -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "delete 2" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "up" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "down" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "frame 2" -PASS: gdb.mi/mi-cli.exp: -stack-select-frame 0 -PASS: gdb.mi/mi-cli.exp: check *stopped from CLI command -PASS: gdb.mi/mi-cli.exp: -break-insert -t basics.c:$line_main_hello -PASS: gdb.mi/mi-cli.exp: -exec-continue to line $line_main_hello -PASS: gdb.mi/mi-cli.exp: 34 next: run -PASS: gdb.mi/mi-cli.exp: 34 next: stop -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" at basics.c:$line_main_return -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "help set args" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set $pc=0x0" -Running ./gdb.mi/mi-cmd-param-changed.exp ... -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: breakpoint at main -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: mi runto main -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking step" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking step" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking on" no event (requested by MI) -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking step" no event (requested by MI interp) -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking stepr" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache" warmup -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type" warmup -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes foo" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes bar" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes bar" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file foo" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file bar" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file bar" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "maint set profile on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "maint set profile off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set ch type on" -Running ./gdb.mi/mi-console.exp ... -PASS: gdb.mi/mi-console.exp: breakpoint at main -PASS: gdb.mi/mi-console.exp: mi runto main -PASS: gdb.mi/mi-console.exp: Testing console output -UNSUPPORTED: gdb.mi/mi-console.exp: Testing console output inferior output -PASS: gdb.mi/mi-console.exp: finished step over hello -Running ./gdb.mi/mi-disassemble.exp ... -PASS: gdb.mi/mi-disassemble.exp: breakpoint at main -PASS: gdb.mi/mi-disassemble.exp: mi runto main -PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus filename -PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus address -PASS: gdb.mi/mi-disassemble.exp: data-disassemble mix different args -PASS: gdb.mi/mi-disassemble.exp: data-disassemble wrong mode arg -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly mixed -Running ./gdb.mi/mi-eval.exp ... -PASS: gdb.mi/mi-eval.exp: breakpoint at callee4 -PASS: gdb.mi/mi-eval.exp: mi runto callee4 -PASS: gdb.mi/mi-eval.exp: next at callee4 -PASS: gdb.mi/mi-eval.exp: eval A -PASS: gdb.mi/mi-eval.exp: eval &A -PASS: gdb.mi/mi-eval.exp: eval A+3 -PASS: gdb.mi/mi-eval.exp: eval A + 3 -Running ./gdb.mi/mi-file.exp ... -PASS: gdb.mi/mi-file.exp: request path info of current source file (basics.c) -PASS: gdb.mi/mi-file.exp: Getting a list of source files. -Running ./gdb.mi/mi-file-transfer.exp ... -FAIL: gdb.mi/mi-file-transfer.exp: put binary file -FAIL: gdb.mi/mi-file-transfer.exp: get binary file -FAIL: gdb.mi/mi-file-transfer.exp: compare binary file -FAIL: gdb.mi/mi-file-transfer.exp: deleted binary file -Running ./gdb.mi/mi-fill-memory.exp ... -PASS: gdb.mi/mi-fill-memory.exp: breakpoint at main -PASS: gdb.mi/mi-fill-memory.exp: mi runto main -PASS: gdb.mi/mi-fill-memory.exp: next at main -PASS: gdb.mi/mi-fill-memory.exp: no arguments -PASS: gdb.mi/mi-fill-memory.exp: one argument missing -PASS: gdb.mi/mi-fill-memory.exp: memory successfully written -PASS: gdb.mi/mi-fill-memory.exp: memory successfully filled (8 bytes) -PASS: gdb.mi/mi-fill-memory.exp: pattern correctly read from memory -Running ./gdb.mi/mi-fullname-deleted.exp ... -PASS: gdb.mi/mi-fullname-deleted.exp: set substitute-path -PASS: gdb.mi/mi-fullname-deleted.exp: fullname present -PASS: gdb.mi/mi-fullname-deleted.exp: substituted fullname -PASS: gdb.mi/mi-fullname-deleted.exp: compare_filenames_for_search does not match -PASS: gdb.mi/mi-fullname-deleted.exp: compare_filenames_for_search does match -Running ./gdb.mi/mi-hack-cli.exp ... -PASS: gdb.mi/mi-hack-cli.exp: show architecture -PASS: gdb.mi/mi-hack-cli.exp: 47show architecture -Running ./gdb.mi/mi-info-os.exp ... -FAIL: gdb.mi/mi-info-os.exp: -info-os -Running ./gdb.mi/mi-inheritance-syntax-error.exp ... -PASS: gdb.mi/mi-inheritance-syntax-error.exp: breakpoint at C::testLocation -PASS: gdb.mi/mi-inheritance-syntax-error.exp: mi runto C::testLocation -PASS: gdb.mi/mi-inheritance-syntax-error.exp: create var for THIS -PASS: gdb.mi/mi-inheritance-syntax-error.exp: list children of THIS -PASS: gdb.mi/mi-inheritance-syntax-error.exp: -var-info-path-expression var1.A -PASS: gdb.mi/mi-inheritance-syntax-error.exp: -data-evaluate-expression (*(class A*) this) -Running ./gdb.mi/mi-logging.exp ... -PASS: gdb.mi/mi-logging.exp: breakpoint at main -PASS: gdb.mi/mi-logging.exp: mi runto main -PASS: gdb.mi/mi-logging.exp: logging on -PASS: gdb.mi/mi-logging.exp: logged step -PASS: gdb.mi/mi-logging.exp: logged next -PASS: gdb.mi/mi-logging.exp: logging off -PASS: gdb.mi/mi-logging.exp: Log file contents -PASS: gdb.mi/mi-logging.exp: redirect logging on -PASS: gdb.mi/mi-logging.exp: redirect logging off -PASS: gdb.mi/mi-logging.exp: Redirect log file contents -Running ./gdb.mi/mi-memory-changed.exp ... -PASS: gdb.mi/mi-memory-changed.exp: insert breakpoint -PASS: gdb.mi/mi-memory-changed.exp: continue to callee4 -PASS: gdb.mi/mi-memory-changed.exp: set var C = 4 -PASS: gdb.mi/mi-memory-changed.exp: create objvar for C -PASS: gdb.mi/mi-memory-changed.exp: change C thru. varobj -PASS: gdb.mi/mi-memory-changed.exp: change C thru. -data-write-memory-bytes -PASS: gdb.mi/mi-memory-changed.exp: get address of main -Running ./gdb.mi/mi-nonstop-exit.exp ... -PASS: gdb.mi/mi-nonstop-exit.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main -PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue -PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main -PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue (2) -Running ./gdb.mi/mi-nonstop.exp ... -PASS: gdb.mi/mi-nonstop.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nonstop.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop.exp: mi runto main -PASS: gdb.mi/mi-nonstop.exp: breakpoint at marker -PASS: gdb.mi/mi-nonstop.exp: w0,i0 stop -PASS: gdb.mi/mi-nonstop.exp: w1,i0 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 1 -PASS: gdb.mi/mi-nonstop.exp: select thread 2 -PASS: gdb.mi/mi-nonstop.exp: create varobj in first thread -PASS: gdb.mi/mi-nonstop.exp: select thread 3 -PASS: gdb.mi/mi-nonstop.exp: create varobj in second thread -PASS: gdb.mi/mi-nonstop.exp: thread state, resume 1 -PASS: gdb.mi/mi-nonstop.exp: w0,i1 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 2 -PASS: gdb.mi/mi-nonstop.exp: thread state, resume 2 -PASS: gdb.mi/mi-nonstop.exp: w1,i1 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 3 -PASS: gdb.mi/mi-nonstop.exp: update varobj, 1 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w0, 1 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1 -PASS: gdb.mi/mi-nonstop.exp: interrupted -PASS: gdb.mi/mi-nonstop.exp: got interrupt -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 4 -PASS: gdb.mi/mi-nonstop.exp: resume all -PASS: gdb.mi/mi-nonstop.exp: w0,i2 stop -PASS: gdb.mi/mi-nonstop.exp: w1,i2 stop -PASS: gdb.mi/mi-nonstop.exp: set condition, 1 -PASS: gdb.mi/mi-nonstop.exp: w0,i3 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop on cond breakpoint -PASS: gdb.mi/mi-nonstop.exp: update varobj, 2 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1 -PASS: gdb.mi/mi-nonstop.exp: stacktrace of running thread -PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread -PASS: gdb.mi/mi-nonstop.exp: select first worker thread -PASS: gdb.mi/mi-nonstop.exp: ask the second thread to exit -UNSUPPORTED: gdb.mi/mi-nonstop.exp: wait for thread exit -PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread -Running ./gdb.mi/mi-nsintrall.exp ... -PASS: gdb.mi/mi-nsintrall.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nsintrall.exp: breakpoint at main -PASS: gdb.mi/mi-nsintrall.exp: mi runto main -PASS: gdb.mi/mi-nsintrall.exp: breakpoint at thread_function -PASS: gdb.mi/mi-nsintrall.exp: stop 0 -PASS: gdb.mi/mi-nsintrall.exp: stop 1 -PASS: gdb.mi/mi-nsintrall.exp: stop 2 -PASS: gdb.mi/mi-nsintrall.exp: stop 3 -PASS: gdb.mi/mi-nsintrall.exp: stop 4 -PASS: gdb.mi/mi-nsintrall.exp: stop 5 -PASS: gdb.mi/mi-nsintrall.exp: thread state, all stopped -PASS: gdb.mi/mi-nsintrall.exp: resume all, no breakpoint -PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all -PASS: gdb.mi/mi-nsintrall.exp: interrupt all threads -PASS: gdb.mi/mi-nsintrall.exp: interrupt 0 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 1 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 2 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 3 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 4 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 5 -PASS: gdb.mi/mi-nsintrall.exp: thread state, all interrupted -PASS: gdb.mi/mi-nsintrall.exp: resume all after interrupting -PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all after interrupting -Running ./gdb.mi/mi-nsmoribund.exp ... -PASS: gdb.mi/mi-nsmoribund.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at main -PASS: gdb.mi/mi-nsmoribund.exp: mi runto main -PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at thread_function -PASS: gdb.mi/mi-nsmoribund.exp: stop 0 -PASS: gdb.mi/mi-nsmoribund.exp: stop 1 -PASS: gdb.mi/mi-nsmoribund.exp: stop 2 -PASS: gdb.mi/mi-nsmoribund.exp: stop 3 -PASS: gdb.mi/mi-nsmoribund.exp: stop 4 -PASS: gdb.mi/mi-nsmoribund.exp: stop 5 -PASS: gdb.mi/mi-nsmoribund.exp: stop 6 -PASS: gdb.mi/mi-nsmoribund.exp: stop 7 -PASS: gdb.mi/mi-nsmoribund.exp: stop 8 -PASS: gdb.mi/mi-nsmoribund.exp: stop 9 -PASS: gdb.mi/mi-nsmoribund.exp: thread state: all stopped except the main thread -PASS: gdb.mi/mi-nsmoribund.exp: select thread 5 -PASS: gdb.mi/mi-nsmoribund.exp: thread specific breakpoint at thread_function -PASS: gdb.mi/mi-nsmoribund.exp: resume all, thread specific breakpoint -PASS: gdb.mi/mi-nsmoribund.exp: hit thread specific breakpoint -PASS: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread -PASS: gdb.mi/mi-nsmoribund.exp: resume all, program exited normally -Running ./gdb.mi/mi-ns-stale-regcache.exp ... -PASS: gdb.mi/mi-ns-stale-regcache.exp: breakpoint at main -PASS: gdb.mi/mi-ns-stale-regcache.exp: mi runto main -PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale register cache of resumed thread -PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale frame info of resumed thread -PASS: gdb.mi/mi-ns-stale-regcache.exp: main thread still running -Running ./gdb.mi/mi-nsthrexec.exp ... -Running ./gdb.mi/mi-pending.exp ... -PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on pendfunc1 -PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on mi-pendshr.c:pendfunc2 if x==4 -PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1 -PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1 a second time -PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc2 with x==4 -Running ./gdb.mi/mi-pthreads.exp ... -PASS: gdb.mi/mi-pthreads.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-pthreads.exp: breakpoint at done_making_threads -PASS: gdb.mi/mi-pthreads.exp: mi runto done_making_threads -PASS: gdb.mi/mi-pthreads.exp: -thread_list_ids (in check_mi_thread_command_set) -PASS: gdb.mi/mi-pthreads.exp: finding threads in MI output (in check_mi_thread_command_set) -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 123456789 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 6 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 5 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 4 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 3 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 2 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 1 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 6 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 5 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 4 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 3 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 2 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 1 -Running ./gdb.mi/mi-read-memory.exp ... -PASS: gdb.mi/mi-read-memory.exp: breakpoint at main -PASS: gdb.mi/mi-read-memory.exp: mi runto main -PASS: gdb.mi/mi-read-memory.exp: next at main -PASS: gdb.mi/mi-read-memory.exp: no arguments -PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte -PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte offset by -6 -PASS: gdb.mi/mi-read-memory.exp: expression in quotes -PASS: gdb.mi/mi-read-memory.exp: ascii and data -PASS: gdb.mi/mi-read-memory.exp: decimal -PASS: gdb.mi/mi-read-memory.exp: octal -Running ./gdb.mi/mi-record-changed.exp ... -Running ./gdb.mi/mi-regs.exp ... -Running ./gdb.mi/mi-return.exp ... -PASS: gdb.mi/mi-return.exp: breakpoint at callee4 -PASS: gdb.mi/mi-return.exp: mi runto callee4 -PASS: gdb.mi/mi-return.exp: delete all breakpoints -PASS: gdb.mi/mi-return.exp: return from callee4 now -Running ./gdb.mi/mi-reverse.exp ... -Running ./gdb.mi/mi-simplerun.exp ... -PASS: gdb.mi/mi-simplerun.exp: break-insert operation -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:$line_callee3_head -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at "":$line_callee4_head -PASS: gdb.mi/mi-simplerun.exp: list of breakpoints -PASS: gdb.mi/mi-simplerun.exp: disabling of breakpoints -PASS: gdb.mi/mi-simplerun.exp: list of breakpoints, 16 disabled -PASS: gdb.mi/mi-simplerun.exp: run to main -PASS: gdb.mi/mi-simplerun.exp: next at main -PASS: gdb.mi/mi-simplerun.exp: step at main -PASS: gdb.mi/mi-simplerun.exp: step to callee4 -PASS: gdb.mi/mi-simplerun.exp: exec-finish -PASS: gdb.mi/mi-simplerun.exp: continue to end -Running ./gdb.mi/mi-solib.exp ... -PASS: gdb.mi/mi-solib.exp: set stop-on-solib-events -PASS: gdb.mi/mi-solib.exp: check for solib event -Running ./gdb.mi/mi-stack.exp ... -PASS: gdb.mi/mi-stack.exp: breakpoint at callee4 -PASS: gdb.mi/mi-stack.exp: mi runto callee4 -PASS: gdb.mi/mi-stack.exp: stack frame listing -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 1 -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 3 -PASS: gdb.mi/mi-stack.exp: stack frame listing wrong -PASS: gdb.mi/mi-stack.exp: selected frame listing -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 300 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 3 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 3 -PASS: gdb.mi/mi-stack.exp: stack args listing wrong -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 300 -PASS: gdb.mi/mi-stack.exp: stack locals listing of names -PASS: gdb.mi/mi-stack.exp: next's in callee4 -PASS: gdb.mi/mi-stack.exp: stack locals listing of names and values -PASS: gdb.mi/mi-stack.exp: stack locals listing, simple types: names and values, complex type: names and types -PASS: gdb.mi/mi-stack.exp: stack locals listing wrong -PASS: gdb.mi/mi-stack.exp: stack select frame 1 -PASS: gdb.mi/mi-stack.exp: stack locals listing for new frame -PASS: gdb.mi/mi-stack.exp: stack locals for same frame (level 1) -PASS: gdb.mi/mi-stack.exp: stack info-depth -PASS: gdb.mi/mi-stack.exp: stack info-depth 3 -PASS: gdb.mi/mi-stack.exp: stack info-depth 99 -PASS: gdb.mi/mi-stack.exp: stack info-depth wrong usage -Running ./gdb.mi/mi-stepi.exp ... -PASS: gdb.mi/mi-stepi.exp: breakpoint at main -PASS: gdb.mi/mi-stepi.exp: mi runto main -PASS: gdb.mi/mi-stepi.exp: step-instruction at main -PASS: gdb.mi/mi-stepi.exp: step-instruction at main (line check) -PASS: gdb.mi/mi-stepi.exp: next-instruction at main -PASS: gdb.mi/mi-stepi.exp: next-instruction at main (line check) -PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 -PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 (line check) -Running ./gdb.mi/mi-stepn.exp ... -PASS: gdb.mi/mi-stepn.exp: breakpoint at main -PASS: gdb.mi/mi-stepn.exp: mi runto main -PASS: gdb.mi/mi-stepn.exp: breakpoint at do_nothing -PASS: gdb.mi/mi-stepn.exp: breakpoint-hit reported -Running ./gdb.mi/mi-syn-frame.exp ... -PASS: gdb.mi/mi-syn-frame.exp: breakpoint at main -PASS: gdb.mi/mi-syn-frame.exp: mi runto main -PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint foo -PASS: gdb.mi/mi-syn-frame.exp: call inferior's function with a breakpoint set in it -PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function stopped at bp, showing gdb dummy frame -PASS: gdb.mi/mi-syn-frame.exp: finished exec continue -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint subroutine -PASS: gdb.mi/mi-syn-frame.exp: data evaluate expression -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: finished exec continue -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: call inferior function which raises exception -PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function at exception -Running ./gdb.mi/mi-until.exp ... -PASS: gdb.mi/mi-until.exp: break-insert operation -PASS: gdb.mi/mi-until.exp: run to main -PASS: gdb.mi/mi-until.exp: break-delete 1 -KFAIL: gdb.mi/mi-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104) -PASS: gdb.mi/mi-until.exp: until line number -PASS: gdb.mi/mi-until.exp: until line number:file -PASS: gdb.mi/mi-until.exp: until after current function -Running ./gdb.mi/mi-var-block.exp ... -PASS: gdb.mi/mi-var-block.exp: breakpoint at do_block_tests -PASS: gdb.mi/mi-var-block.exp: mi runto do_block_tests -PASS: gdb.mi/mi-var-block.exp: create local variable cb -PASS: gdb.mi/mi-var-block.exp: try to create local variable foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 1 -PASS: gdb.mi/mi-var-block.exp: delete var foo 1 -PASS: gdb.mi/mi-var-block.exp: create local variable foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 2 -PASS: gdb.mi/mi-var-block.exp: update all vars: cb foo changed -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 3 -PASS: gdb.mi/mi-var-block.exp: create local variable inner_foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 4 -PASS: gdb.mi/mi-var-block.exp: create local variable foo2 -XFAIL: gdb.mi/mi-var-block.exp: update inner_foo: should be out of scope: KNOWN PROBLEM -XFAIL: gdb.mi/mi-var-block.exp: evaluate inner_foo: should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: update foo: did not change -PASS: gdb.mi/mi-var-block.exp: delete var inner_foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 5 -XFAIL: gdb.mi/mi-var-block.exp: update foo2: should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 6 -XFAIL: gdb.mi/mi-var-block.exp: update foo2 should be out of scope: KNOWN PROBLEM -XFAIL: gdb.mi/mi-var-block.exp: update foo should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: update cb -PASS: gdb.mi/mi-var-block.exp: delete var foo 2 -PASS: gdb.mi/mi-var-block.exp: delete var foo2 -PASS: gdb.mi/mi-var-block.exp: delete var cb -Running ./gdb.mi/mi-var-child.exp ... -PASS: gdb.mi/mi-var-child.exp: breakpoint at do_children_tests -PASS: gdb.mi/mi-var-child.exp: mi runto do_children_tests -PASS: gdb.mi/mi-var-child.exp: run to 215 (set breakpoint) -PASS: gdb.mi/mi-var-child.exp: create local variable struct_declarations -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.character -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.character -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_int -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_int -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.3 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.3 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.4 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.4 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.5 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.5 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.6 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.6 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.7 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.7 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.8 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.8 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.9 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.9 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.a -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.a -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.b -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.b -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.c -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.c -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.d -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.d -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.g -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.g -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.h -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.h -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.i -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.i -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: step to line $line_dct_123 -PASS: gdb.mi/mi-var-child.exp: create local variable weird -PASS: gdb.mi/mi-var-child.exp: get children of weird -PASS: gdb.mi/mi-var-child.exp: get number of children of weird -PASS: gdb.mi/mi-var-child.exp: get children of weird.long_array -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.long_array -PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: is weird editable -PASS: gdb.mi/mi-var-child.exp: is weird->int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.u1 editable -PASS: gdb.mi/mi-var-child.exp: is weird.s2 editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.a editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.b editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.c editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array.0 editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations editable -PASS: gdb.mi/mi-var-child.exp: delete var weird -PASS: gdb.mi/mi-var-child.exp: update all vars. None changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 1 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 4 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 5 -PASS: gdb.mi/mi-var-child.exp: update all vars int_ptr_ptr and children changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 6 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.0 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 7 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.1 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 8 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.2 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.3-9 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 1 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.func_ptr changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 2 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.10 changed, don't print values. -PASS: gdb.mi/mi-var-child.exp: step $line_dct_a0_0 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.11 changed, print values. -PASS: gdb.mi/mi-var-child.exp: listing of names and values of children -PASS: gdb.mi/mi-var-child.exp: listing of children, simple types: names, type and values, complex types: names and types -PASS: gdb.mi/mi-var-child.exp: delete var struct_declarations -PASS: gdb.mi/mi-var-child.exp: delete var weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 1 -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0 -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0 -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 2 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 3 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 4 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 5 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 6 -XFAIL: gdb.mi/mi-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 7 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: run to mi-var-child.c:323 (set breakpoint) -PASS: gdb.mi/mi-var-child.exp: create varobj for s -PASS: gdb.mi/mi-var-child.exp: list children of S -PASS: gdb.mi/mi-var-child.exp: delete S.a -PASS: gdb.mi/mi-var-child.exp: delete S.b -PASS: gdb.mi/mi-var-child.exp: delete S -Running ./gdb.mi/mi-var-child-f.exp ... -UNSUPPORTED: gdb.mi/mi-var-child-f.exp: compilation array.f -Running ./gdb.mi/mi-var-cmd.exp ... -PASS: gdb.mi/mi-var-cmd.exp: create global variable -PASS: gdb.mi/mi-var-cmd.exp: create non-existent variable -PASS: gdb.mi/mi-var-cmd.exp: create out of scope variable -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: run to 148 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create local variable linteger -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpinteger -PASS: gdb.mi/mi-var-cmd.exp: create local variable lcharacter -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpcharacter -PASS: gdb.mi/mi-var-cmd.exp: create local variable llong -PASS: gdb.mi/mi-var-cmd.exp: create local variable lplong -PASS: gdb.mi/mi-var-cmd.exp: create local variable lfloat -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpfloat -PASS: gdb.mi/mi-var-cmd.exp: create local variable ldouble -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpdouble -PASS: gdb.mi/mi-var-cmd.exp: create local variable lsimple -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpsimple -PASS: gdb.mi/mi-var-cmd.exp: create local variable func -PASS: gdb.mi/mi-var-cmd.exp: create lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: create lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: create lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: create int -PASS: gdb.mi/mi-var-cmd.exp: update all vars -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_test -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (2) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (3) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lcharacter changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (4) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpcharacter changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (5) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: many changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (6) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: func and lpsimple changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (7) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lsimple and others changed -PASS: gdb.mi/mi-var-cmd.exp: assign to global_simple -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed after assign -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger again, same value -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger not changed after same assign -PASS: gdb.mi/mi-var-cmd.exp: eval linteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed after assign -PASS: gdb.mi/mi-var-cmd.exp: update all vars: no changes on second update -PASS: gdb.mi/mi-var-cmd.exp: eval lpinteger -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lcharacter -PASS: gdb.mi/mi-var-cmd.exp: eval lcharacter -PASS: gdb.mi/mi-var-cmd.exp: assign to llong -PASS: gdb.mi/mi-var-cmd.exp: eval llong -PASS: gdb.mi/mi-var-cmd.exp: assign to llong -PASS: gdb.mi/mi-var-cmd.exp: assign to lplong -PASS: gdb.mi/mi-var-cmd.exp: eval lplong -PASS: gdb.mi/mi-var-cmd.exp: assign to lplong -PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat -PASS: gdb.mi/mi-var-cmd.exp: eval lfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to lpfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to ldouble -PASS: gdb.mi/mi-var-cmd.exp: assign to func -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: var update -PASS: gdb.mi/mi-var-cmd.exp: assign same value to func -PASS: gdb.mi/mi-var-cmd.exp: assign same value to func (update) -PASS: gdb.mi/mi-var-cmd.exp: create global variable array_ptr -PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer -PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer (update) -PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer -PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer (update) -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: mi runto subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: create i -PASS: gdb.mi/mi-var-cmd.exp: create l -PASS: gdb.mi/mi-var-cmd.exp: create linteger -PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 -XFAIL: gdb.mi/mi-var-cmd.exp: update all vars: changed FIXME -PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 (2) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: i changed -PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 (3) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: llong changed -PASS: gdb.mi/mi-var-cmd.exp: next out of subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: update all vars: all now out of scope -PASS: gdb.mi/mi-var-cmd.exp: delete var -PASS: gdb.mi/mi-var-cmd.exp: delete var linteger -PASS: gdb.mi/mi-var-cmd.exp: delete var lpinteger -PASS: gdb.mi/mi-var-cmd.exp: delete var lcharacter -PASS: gdb.mi/mi-var-cmd.exp: delete var lpcharacter -PASS: gdb.mi/mi-var-cmd.exp: delete var llong -PASS: gdb.mi/mi-var-cmd.exp: delete var lplong -PASS: gdb.mi/mi-var-cmd.exp: delete var lfloat -PASS: gdb.mi/mi-var-cmd.exp: delete var lpfloat -PASS: gdb.mi/mi-var-cmd.exp: delete var ldouble -PASS: gdb.mi/mi-var-cmd.exp: delete var lpdouble -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple -PASS: gdb.mi/mi-var-cmd.exp: delete var lpsimple -PASS: gdb.mi/mi-var-cmd.exp: delete var func -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: delete var i -PASS: gdb.mi/mi-var-cmd.exp: delete var l -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: create selected_a -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at incr_a -PASS: gdb.mi/mi-var-cmd.exp: mi runto incr_a -PASS: gdb.mi/mi-var-cmd.exp: update selected_a in incr_a -PASS: gdb.mi/mi-var-cmd.exp: step a line in incr_a -PASS: gdb.mi/mi-var-cmd.exp: return from incr_a to do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: update selected_a in do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: floating varobj invalidation -PASS: gdb.mi/mi-var-cmd.exp: delete selected_a -PASS: gdb.mi/mi-var-cmd.exp: delete array_ptr -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:351 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create varobj for v1 -PASS: gdb.mi/mi-var-cmd.exp: create varobj for v2 -PASS: gdb.mi/mi-var-cmd.exp: list children of v1 -PASS: gdb.mi/mi-var-cmd.exp: list children of v1.nested -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 2 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 3 -PASS: gdb.mi/mi-var-cmd.exp: check V2: 4 -PASS: gdb.mi/mi-var-cmd.exp: update varobjs: V2 changed -PASS: gdb.mi/mi-var-cmd.exp: -var-set-frozen V2 1 -PASS: gdb.mi/mi-var-cmd.exp: update varobjs: nothing changed -PASS: gdb.mi/mi-var-cmd.exp: check V2: 5 -PASS: gdb.mi/mi-var-cmd.exp: update V2 explicitly -PASS: gdb.mi/mi-var-cmd.exp: check V2: 6 -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:385 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: -var-set-frozen V1 1 -PASS: gdb.mi/mi-var-cmd.exp: update varobjs: nothing changed -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 2 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 3 -PASS: gdb.mi/mi-var-cmd.exp: update V1.nested.j -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 8 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 3 -PASS: gdb.mi/mi-var-cmd.exp: update V1.nested -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 8 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 9 -PASS: gdb.mi/mi-var-cmd.exp: update V1.i -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 7 -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:410 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: -var-set-frozen V1 0 -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 7 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 8 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 9 -PASS: gdb.mi/mi-var-cmd.exp: update V1 -PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 10 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 11 -PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 12 -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:510 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create varobj for Data -PASS: gdb.mi/mi-var-cmd.exp: list children of Data -PASS: gdb.mi/mi-var-cmd.exp: access bitfield -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:453 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create floating varobj -PASS: gdb.mi/mi-var-cmd.exp: update F (1) -PASS: gdb.mi/mi-var-cmd.exp: check F (1) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:464 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (2) -PASS: gdb.mi/mi-var-cmd.exp: check F (2) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:472 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (--all-values) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:478 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (3) -PASS: gdb.mi/mi-var-cmd.exp: check F (3) -PASS: gdb.mi/mi-var-cmd.exp: inside breakpoint inside callee -PASS: gdb.mi/mi-var-cmd.exp: continue to where i is initialized -PASS: gdb.mi/mi-var-cmd.exp: update F inside callee -PASS: gdb.mi/mi-var-cmd.exp: check F inside callee -PASS: gdb.mi/mi-var-cmd.exp: create null_ptr -PASS: gdb.mi/mi-var-cmd.exp: update null_ptr -PASS: gdb.mi/mi-var-cmd.exp: delete null_ptr -PASS: gdb.mi/mi-var-cmd.exp: kill program before endvar -PASS: gdb.mi/mi-var-cmd.exp: create endvar -PASS: gdb.mi/mi-var-cmd.exp: update endvar -PASS: gdb.mi/mi-var-cmd.exp: delete endvar -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: create varobj -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: check initial value -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at main -PASS: gdb.mi/mi-var-cmd.exp: mi runto main -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now, not changed -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now, not changed -Running ./gdb.mi/mi-var-cp.exp ... -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:20 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for rx -PASS: gdb.mi/mi-var-cp.exp: update RX (1) -PASS: gdb.mi/mi-var-cp.exp: check RX: expect 167 -PASS: gdb.mi/mi-var-cp.exp: update RX (2) -PASS: gdb.mi/mi-var-cp.exp: check RX: expect 567 -PASS: gdb.mi/mi-var-cp.exp: update RX (3) -PASS: gdb.mi/mi-var-cp.exp: delete RX -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:46 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for s2 -PASS: gdb.mi/mi-var-cp.exp: list children of s2 -PASS: gdb.mi/mi-var-cp.exp: list children of s2.s -PASS: gdb.mi/mi-var-cp.exp: list children of s2.s.public -PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.i -PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.j -PASS: gdb.mi/mi-var-cp.exp: delete S2 -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:82 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for rptr_s -PASS: gdb.mi/mi-var-cp.exp: list public child of RPTR -PASS: gdb.mi/mi-var-cp.exp: list children of reference to pointer -PASS: gdb.mi/mi-var-cp.exp: check i member -PASS: gdb.mi/mi-var-cp.exp: check j member -PASS: gdb.mi/mi-var-cp.exp: delete RPTR -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:105 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for s -PASS: gdb.mi/mi-var-cp.exp: create varobj for s -PASS: gdb.mi/mi-var-cp.exp: check attributes of S -PASS: gdb.mi/mi-var-cp.exp: check attributes of R -PASS: gdb.mi/mi-var-cp.exp: -var-update should not list structure varobjs -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:145 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for ip -PASS: gdb.mi/mi-var-cp.exp: list children of IP -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression IP.*ip -PASS: gdb.mi/mi-var-cp.exp: create varobj for dp -PASS: gdb.mi/mi-var-cp.exp: list children of DP -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1 -PASS: gdb.mi/mi-var-cp.exp: list children of DP.public -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public.i -PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1 -PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1.public -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1.public.i -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public -PASS: gdb.mi/mi-var-cp.exp: create varobj for d -PASS: gdb.mi/mi-var-cp.exp: list children of D -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression D.Base1 -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:192 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for array -PASS: gdb.mi/mi-var-cp.exp: list children of A -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression A.2 -PASS: gdb.mi/mi-var-cp.exp: break in anonymous_structs_and_unions -PASS: gdb.mi/mi-var-cp.exp: continue to anonymous_structs breakpoint -PASS: gdb.mi/mi-var-cp.exp: VT: create root varobj for a -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1 -PASS: gdb.mi/mi-var-cp.exp: path expression for a1 -PASS: gdb.mi/mi-var-cp.exp: expression for a1 -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous.public.b -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous.public.b -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous.public.c -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous.public.c -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.d -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.d -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.e -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.e -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.f -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.f -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.i -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.i -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.j -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.j -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.g -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.g -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.h -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.h -Running ./gdb.mi/mi-var-create-rtti.exp ... -PASS: gdb.mi/mi-var-create-rtti.exp: breakpoint at main -PASS: gdb.mi/mi-var-create-rtti.exp: mi runto main -PASS: gdb.mi/mi-var-create-rtti.exp: -var-create sp1 * $sp -Running ./gdb.mi/mi-var-display.exp ... -PASS: gdb.mi/mi-var-display.exp: break-insert operation -PASS: gdb.mi/mi-var-display.exp: run to main -PASS: gdb.mi/mi-var-display.exp: create local variable bar -PASS: gdb.mi/mi-var-display.exp: info type variable bar -PASS: gdb.mi/mi-var-display.exp: show format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar -PASS: gdb.mi/mi-var-display.exp: set format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar with new format -PASS: gdb.mi/mi-var-display.exp: assing to variable bar -PASS: gdb.mi/mi-var-display.exp: set format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar with new value -PASS: gdb.mi/mi-var-display.exp: delete var bar -PASS: gdb.mi/mi-var-display.exp: create local variable foo -PASS: gdb.mi/mi-var-display.exp: info type variable foo -PASS: gdb.mi/mi-var-display.exp: show format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: set format variable foo -PASS: gdb.mi/mi-var-display.exp: show format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: assing to variable foo -PASS: gdb.mi/mi-var-display.exp: set format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo in hex -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in hex -PASS: gdb.mi/mi-var-display.exp: eval variable foo in octal -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in octal -PASS: gdb.mi/mi-var-display.exp: eval variable foo in decimal -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in decimal -PASS: gdb.mi/mi-var-display.exp: eval variable foo in natural -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in natural -PASS: gdb.mi/mi-var-display.exp: eval variable foo in binary -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in binary -PASS: gdb.mi/mi-var-display.exp: delete var foo -PASS: gdb.mi/mi-var-display.exp: create local variable weird -PASS: gdb.mi/mi-var-display.exp: get children local variable weird -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird -PASS: gdb.mi/mi-var-display.exp: set format variable weird.integer -PASS: gdb.mi/mi-var-display.exp: set format variable weird.character -PASS: gdb.mi/mi-var-display.exp: set format variable weird.char_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_int -PASS: gdb.mi/mi-var-display.exp: set format variable weird.int_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_array -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_struct -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.u1 -PASS: gdb.mi/mi-var-display.exp: set format variable weird.s2 -PASS: gdb.mi/mi-var-display.exp: delete var weird -PASS: gdb.mi/mi-var-display.exp: break-insert operation 2 -PASS: gdb.mi/mi-var-display.exp: continue to do_special_tests -PASS: gdb.mi/mi-var-display.exp: create local variable u -PASS: gdb.mi/mi-var-display.exp: eval variable u -PASS: gdb.mi/mi-var-display.exp: info type variable u -PASS: gdb.mi/mi-var-display.exp: is u editable -PASS: gdb.mi/mi-var-display.exp: get number of children of u -PASS: gdb.mi/mi-var-display.exp: get children of u -PASS: gdb.mi/mi-var-display.exp: create local variable anonu -PASS: gdb.mi/mi-var-display.exp: eval variable anonu -PASS: gdb.mi/mi-var-display.exp: info type variable anonu -PASS: gdb.mi/mi-var-display.exp: is anonu editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anonu -PASS: gdb.mi/mi-var-display.exp: get children of anonu -PASS: gdb.mi/mi-var-display.exp: create local variable s -PASS: gdb.mi/mi-var-display.exp: eval variable s -PASS: gdb.mi/mi-var-display.exp: info type variable s -PASS: gdb.mi/mi-var-display.exp: is s editable -PASS: gdb.mi/mi-var-display.exp: get number of children of s -PASS: gdb.mi/mi-var-display.exp: get children of s -PASS: gdb.mi/mi-var-display.exp: create local variable anons -PASS: gdb.mi/mi-var-display.exp: eval variable anons -PASS: gdb.mi/mi-var-display.exp: info type variable anons -PASS: gdb.mi/mi-var-display.exp: is anons editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anons -PASS: gdb.mi/mi-var-display.exp: get children of anons -PASS: gdb.mi/mi-var-display.exp: create local variable e -PASS: gdb.mi/mi-var-display.exp: eval variable e -PASS: gdb.mi/mi-var-display.exp: info type variable e -PASS: gdb.mi/mi-var-display.exp: is e editable -PASS: gdb.mi/mi-var-display.exp: get number of children of e -PASS: gdb.mi/mi-var-display.exp: get children of e -PASS: gdb.mi/mi-var-display.exp: create local variable anone -PASS: gdb.mi/mi-var-display.exp: eval variable anone -PASS: gdb.mi/mi-var-display.exp: create duplicate local variable anone -PASS: gdb.mi/mi-var-display.exp: info type variable anone -PASS: gdb.mi/mi-var-display.exp: is anone editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anone -PASS: gdb.mi/mi-var-display.exp: get children of anone -PASS: gdb.mi/mi-var-display.exp: print FP register -PASS: gdb.mi/mi-var-display.exp: breakpoint at incr_a -PASS: gdb.mi/mi-var-display.exp: mi runto incr_a -PASS: gdb.mi/mi-var-display.exp: create local variable a1 -PASS: gdb.mi/mi-var-display.exp: create variable a2 in different scope -Running ./gdb.mi/mi-var-invalidate.exp ... -PASS: gdb.mi/mi-var-invalidate.exp: create global variable -PASS: gdb.mi/mi-var-invalidate.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-invalidate.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-invalidate.exp: create local variable linteger -PASS: gdb.mi/mi-var-invalidate.exp: create floating variable -PASS: gdb.mi/mi-var-invalidate.exp: breakpoint at main -PASS: gdb.mi/mi-var-invalidate.exp: mi runto main -PASS: gdb.mi/mi-var-invalidate.exp: set format variable float_simple -PASS: gdb.mi/mi-var-invalidate.exp: linteger not anymore in scope due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (1) -PASS: gdb.mi/mi-var-invalidate.exp: global_simple still alive -PASS: gdb.mi/mi-var-invalidate.exp: type simpleton for valid variable global_simple -PASS: gdb.mi/mi-var-invalidate.exp: linteger not valid anymore due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (2) -PASS: gdb.mi/mi-var-invalidate.exp: global_simple not anymore in scope due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable global_simple -Running ./gdb.mi/mi-var-rtti.exp ... -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:37 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:64 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.public (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->A (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.Base (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.Base.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->B (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->C (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.Base (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.Base.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->A (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->B (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->C (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:94 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:149 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->A (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->A (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.Base (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.Base.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->A (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->B (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->C (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.Base (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.Base.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->A (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->B (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->C (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:202 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.First (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:245 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for S in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:269 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr to derived in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->B (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->C (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s.ptr to derived in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->B (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->C (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:281 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr back to base type in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s.ptr back to base type in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:299 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for S in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:323 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr to derived type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s to derived type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:335 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr back to base type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s back to base type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s in skip_type_update_when_not_use_rtti -Running ./gdb.mi/mi-watch.exp ... -PASS: gdb.mi/mi-watch.exp: hw watchpoints toggle (1) -PASS: gdb.mi/mi-watch.exp: sw: breakpoint at callee4 -PASS: gdb.mi/mi-watch.exp: sw: mi runto callee4 -PASS: gdb.mi/mi-watch.exp: sw: break-watch operation -PASS: gdb.mi/mi-watch.exp: sw: list of watchpoints -PASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger -XPASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger -Running ./gdb.mi/mi-watch-nonstop.exp ... -Running ./gdb.mi/pr11022.exp ... -Running ./gdb.modula2/unbounded-array.exp ... -PASS: gdb.modula2/unbounded-array.exp: switch to modula-2 -PASS: gdb.modula2/unbounded-array.exp: print the last legal element of array a -PASS: gdb.modula2/unbounded-array.exp: print unbounded array contents -PASS: gdb.modula2/unbounded-array.exp: print the 1st element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 2nd element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 3rd element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 4th element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 5th element of array a -Running ./gdb.multi/base.exp ... -PASS: gdb.multi/base.exp: add empty inferior 2 -PASS: gdb.multi/base.exp: switch to inferior 2 -PASS: gdb.multi/base.exp: load hangout file in inferior 2 -PASS: gdb.multi/base.exp: add inferior 3 with -exec goodbye -PASS: gdb.multi/base.exp: info inferiors -PASS: gdb.multi/base.exp: info inferior 2 3 -PASS: gdb.multi/base.exp: info inferior 1-2 -PASS: gdb.multi/base.exp: switch to inferior 1 -PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 1 -PASS: gdb.multi/base.exp: switch to inferior 3 -PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 3 -PASS: gdb.multi/base.exp: switch back to inferior 1 -PASS: gdb.multi/base.exp: set listsize 1 -PASS: gdb.multi/base.exp: list commonfun in hello -PASS: gdb.multi/base.exp: print hglob -PASS: gdb.multi/base.exp: print glob (hello) -PASS: gdb.multi/base.exp: switch to inferior 3 to print globals -PASS: gdb.multi/base.exp: print gglob -PASS: gdb.multi/base.exp: print glob (goodbye) -PASS: gdb.multi/base.exp: list commonfun in goodbye -PASS: gdb.multi/base.exp: switch to inferior 1 to run it -PASS: gdb.multi/base.exp: break hello -PASS: gdb.multi/base.exp: continue -PASS: gdb.multi/base.exp: remove-inferiors 2-3 -PASS: gdb.multi/base.exp: check remove-inferiors -Running ./gdb.multi/bkpt-multi-exec.exp ... -Running ./gdb.multi/multi-arch-exec.exp ... -Running ./gdb.multi/multi-arch.exp ... -Running ./gdb.multi/watchpoint-multi.exp ... -UNTESTED: gdb.multi/watchpoint-multi.exp: watchpoint-multi.exp -Running ./gdb.objc/basicclass.exp ... -UNSUPPORTED: gdb.objc/basicclass.exp: Couldn't compile ./gdb.objc/basicclass.m: unrecognized error -Running ./gdb.objc/nondebug.exp ... -UNSUPPORTED: gdb.objc/nondebug.exp: Couldn't compile ./gdb.objc/nondebug.m: unrecognized error -Running ./gdb.objc/objcdecode.exp ... -UNSUPPORTED: gdb.objc/objcdecode.exp: Couldn't compile ./gdb.objc/objcdecode.m: unrecognized error -Running ./gdb.objc/print.exp ... -PASS: gdb.objc/print.exp: set language objective-c -PASS: gdb.objc/print.exp: set language to "objective-c" -PASS: gdb.objc/print.exp: check fp + text -PASS: gdb.objc/print.exp: p 1. -PASS: gdb.objc/print.exp: p 1.5 -PASS: gdb.objc/print.exp: p 1.f -PASS: gdb.objc/print.exp: p 1.5f -PASS: gdb.objc/print.exp: p 1.l -PASS: gdb.objc/print.exp: p 1.5l -PASS: gdb.objc/print.exp: p 0x1.1 -PASS: gdb.objc/print.exp: reject p 1.1x -PASS: gdb.objc/print.exp: reject p 1.1ff -PASS: gdb.objc/print.exp: reject p 1.1ll -Running ./gdb.opencl/callfuncs.exp ... -Running ./gdb.opencl/convs_casts.exp ... -Running ./gdb.opencl/datatypes.exp ... -Running ./gdb.opencl/operators.exp ... -Running ./gdb.opencl/vec_comps.exp ... -Running ./gdb.opt/clobbered-registers-O2.exp ... -PASS: gdb.opt/clobbered-registers-O2.exp: Backtracing -PASS: gdb.opt/clobbered-registers-O2.exp: print operand0 -PASS: gdb.opt/clobbered-registers-O2.exp: print operand1 -Running ./gdb.opt/inline-break.exp ... -PASS: gdb.opt/inline-break.exp: break func1 -PASS: gdb.opt/inline-break.exp: break func2 -PASS: gdb.opt/inline-break.exp: break func3b -PASS: gdb.opt/inline-break.exp: break func4b -PASS: gdb.opt/inline-break.exp: break func5b -PASS: gdb.opt/inline-break.exp: break func6b -PASS: gdb.opt/inline-break.exp: break func7b -PASS: gdb.opt/inline-break.exp: break func8b -PASS: gdb.opt/inline-break.exp: print func1 -PASS: gdb.opt/inline-break.exp: print func2 -Running ./gdb.opt/inline-bt.exp ... -PASS: gdb.opt/inline-bt.exp: continue to bar (1) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (1) -PASS: gdb.opt/inline-bt.exp: bar not inlined -PASS: gdb.opt/inline-bt.exp: continue to bar (2) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (2) -PASS: gdb.opt/inline-bt.exp: up from bar (2) -PASS: gdb.opt/inline-bt.exp: func1 inlined (2) -PASS: gdb.opt/inline-bt.exp: continue to bar (3) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (3) -PASS: gdb.opt/inline-bt.exp: up from bar (3) -PASS: gdb.opt/inline-bt.exp: func1 inlined (3) -PASS: gdb.opt/inline-bt.exp: up from func1 (3) -PASS: gdb.opt/inline-bt.exp: func2 inlined (3) -Running ./gdb.opt/inline-cmds.exp ... -PASS: gdb.opt/inline-cmds.exp: set listsize 1 -PASS: gdb.opt/inline-cmds.exp: continue to bar (1) -PASS: gdb.opt/inline-cmds.exp: backtrace from bar (1) -PASS: gdb.opt/inline-cmds.exp: up from bar (1) -PASS: gdb.opt/inline-cmds.exp: func1 inlined (1) -PASS: gdb.opt/inline-cmds.exp: continue to bar (2) -PASS: gdb.opt/inline-cmds.exp: backtrace from bar (2) -PASS: gdb.opt/inline-cmds.exp: up from bar (2) -PASS: gdb.opt/inline-cmds.exp: func1 inlined (2) -PASS: gdb.opt/inline-cmds.exp: up from func1 (2) -PASS: gdb.opt/inline-cmds.exp: func2 inlined (2) -PASS: gdb.opt/inline-cmds.exp: continue to marker -PASS: gdb.opt/inline-cmds.exp: backtrace from marker -PASS: gdb.opt/inline-cmds.exp: marker not inlined -PASS: gdb.opt/inline-cmds.exp: next over inlined functions -PASS: gdb.opt/inline-cmds.exp: next past inlined func1 -PASS: gdb.opt/inline-cmds.exp: print x before func1 -PASS: gdb.opt/inline-cmds.exp: backtrace does not include func1 -PASS: gdb.opt/inline-cmds.exp: stepped over call to func1 -PASS: gdb.opt/inline-cmds.exp: step into func1 -PASS: gdb.opt/inline-cmds.exp: finish from func1 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: consecutive func1 -PASS: gdb.opt/inline-cmds.exp: next to first func1 -KFAIL: gdb.opt/inline-cmds.exp: next to second func1 (PRMS: gdb/NNNN) -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: func1 then func3 -PASS: gdb.opt/inline-cmds.exp: next to func1 before func3 -PASS: gdb.opt/inline-cmds.exp: next to func3 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: finish into func1 -PASS: gdb.opt/inline-cmds.exp: next to finish marker -PASS: gdb.opt/inline-cmds.exp: step into finish marker -PASS: gdb.opt/inline-cmds.exp: finish from marker to func1 -PASS: gdb.opt/inline-cmds.exp: step into func1 for finish -PASS: gdb.opt/inline-cmds.exp: finish from func1 to func3 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: before the outer_inline call -PASS: gdb.opt/inline-cmds.exp: reach 1 the outer_inline call -PASS: gdb.opt/inline-cmds.exp: reach outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at main of outer_inline -PASS: gdb.opt/inline-cmds.exp: enter outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline2 -PASS: gdb.opt/inline-cmds.exp: enter outer_inline1 from outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline1 -PASS: gdb.opt/inline-cmds.exp: enter noinline from outer_inline1 -PASS: gdb.opt/inline-cmds.exp: backtrace at noinline from outer_inline1 -PASS: gdb.opt/inline-cmds.exp: enter inlined_fn from noinline -PASS: gdb.opt/inline-cmds.exp: backtrace at inlined_fn from noinline -PASS: gdb.opt/inline-cmds.exp: inlined_fn from noinline inlined -PASS: gdb.opt/inline-cmds.exp: up to noinline -PASS: gdb.opt/inline-cmds.exp: noinline from outer_inline1 not inlined -PASS: gdb.opt/inline-cmds.exp: up to outer_inline1 -PASS: gdb.opt/inline-cmds.exp: outer_inline1 inlined -PASS: gdb.opt/inline-cmds.exp: up to outer_inline2 -PASS: gdb.opt/inline-cmds.exp: outer_inline2 inlined -PASS: gdb.opt/inline-cmds.exp: up from outer_inline2 -PASS: gdb.opt/inline-cmds.exp: main not inlined -Running ./gdb.opt/inline-locals.exp ... -PASS: gdb.opt/inline-locals.exp: continue to bar (1) -PASS: gdb.opt/inline-locals.exp: continue to bar (2) -PASS: gdb.opt/inline-locals.exp: backtrace from bar (2) -PASS: gdb.opt/inline-locals.exp: up from bar (2) -PASS: gdb.opt/inline-locals.exp: func1 inlined (2) -PASS: gdb.opt/inline-locals.exp: info locals above bar (2) -PASS: gdb.opt/inline-locals.exp: info args above bar (2) -PASS: gdb.opt/inline-locals.exp: print local (2) -PASS: gdb.opt/inline-locals.exp: print out of scope local -PASS: gdb.opt/inline-locals.exp: continue to bar (3) -PASS: gdb.opt/inline-locals.exp: backtrace from bar (3) -PASS: gdb.opt/inline-locals.exp: up from bar (3) -PASS: gdb.opt/inline-locals.exp: func1 inlined (3) -PASS: gdb.opt/inline-locals.exp: info locals above bar (3) -PASS: gdb.opt/inline-locals.exp: info args above bar (3) -PASS: gdb.opt/inline-locals.exp: print local (3) -Running ./gdb.pascal/floats.exp ... -UNSUPPORTED: gdb.pascal/floats.exp: No pascal compiler found -UNTESTED: gdb.pascal/floats.exp: floats.exp -Running ./gdb.pascal/gdb11492.exp ... -UNSUPPORTED: gdb.pascal/gdb11492.exp: No pascal compiler found -UNTESTED: gdb.pascal/gdb11492.exp: gdb11492.exp -Running ./gdb.pascal/hello.exp ... -UNSUPPORTED: gdb.pascal/hello.exp: No pascal compiler found -Running ./gdb.pascal/integers.exp ... -UNSUPPORTED: gdb.pascal/integers.exp: No pascal compiler found -Running ./gdb.pascal/print.exp ... -PASS: gdb.pascal/print.exp: set language pascal -PASS: gdb.pascal/print.exp: set language to "pascal" -PASS: gdb.pascal/print.exp: check fp + text -PASS: gdb.pascal/print.exp: p 1. -PASS: gdb.pascal/print.exp: p 1.5 -PASS: gdb.pascal/print.exp: p 1.f -PASS: gdb.pascal/print.exp: p 1.5f -PASS: gdb.pascal/print.exp: p 1.l -PASS: gdb.pascal/print.exp: p 1.5l -PASS: gdb.pascal/print.exp: p 0x1.1 -PASS: gdb.pascal/print.exp: reject p 1.1x -PASS: gdb.pascal/print.exp: reject p 1.1ff -PASS: gdb.pascal/print.exp: reject p 1.1ll -Running ./gdb.pascal/types.exp ... -PASS: gdb.pascal/types.exp: set language pascal -PASS: gdb.pascal/types.exp: set language to "pascal" -PASS: gdb.pascal/types.exp: pt 123 -PASS: gdb.pascal/types.exp: pt TRUE -PASS: gdb.pascal/types.exp: pt FALSE -PASS: gdb.pascal/types.exp: pt 'a' -KFAIL: gdb.pascal/types.exp: pt 'a simple string' (PRMS: gdb/2326) -PASS: gdb.pascal/types.exp: pt .44 -PASS: gdb.pascal/types.exp: pt 44.0 -PASS: gdb.pascal/types.exp: pt 10e20 -PASS: gdb.pascal/types.exp: pt 10E20 -Running ./gdb.python/lib-types.exp ... -PASS: gdb.python/lib-types.exp: python import gdb.types -PASS: gdb.python/lib-types.exp: python const_class1_obj = gdb.parse_and_eval ('const_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_const_class1_obj = gdb.types.get_basic_type (const_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (const_class1_obj.type)) -PASS: gdb.python/lib-types.exp: const stripping -PASS: gdb.python/lib-types.exp: python volatile_class1_obj = gdb.parse_and_eval ('volatile_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_volatile_class1_obj = gdb.types.get_basic_type (volatile_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (volatile_class1_obj.type)) -PASS: gdb.python/lib-types.exp: volatile stripping -PASS: gdb.python/lib-types.exp: python const_volatile_class1_obj = gdb.parse_and_eval ('const_volatile_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_const_volatile_class1_obj = gdb.types.get_basic_type (const_volatile_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (const_volatile_class1_obj.type)) -PASS: gdb.python/lib-types.exp: volatile+const stripping -PASS: gdb.python/lib-types.exp: python typedef_class1_obj = gdb.parse_and_eval ('typedef_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_class1_obj = gdb.types.get_basic_type (typedef_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_class1_obj.type)) -PASS: gdb.python/lib-types.exp: typedef stripping -PASS: gdb.python/lib-types.exp: python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj') -PASS: gdb.python/lib-types.exp: python basic_type_class1_ref_obj = gdb.types.get_basic_type (class1_ref_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (class1_ref_obj.type)) -PASS: gdb.python/lib-types.exp: reference stripping -PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_class1_obj.type)) -PASS: gdb.python/lib-types.exp: nested typedef stripping -PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_ref_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_ref_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_ref_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_const_typedef_class1_ref_obj.type)) -PASS: gdb.python/lib-types.exp: nested typedef/ref stripping -PASS: gdb.python/lib-types.exp: python class1_obj = gdb.parse_and_eval ('class1_obj') -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (class1_obj.type, 'x')) -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (class1_obj.type, 'nope')) -PASS: gdb.python/lib-types.exp: python subclass1_obj = gdb.parse_and_eval ('subclass1_obj') -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (subclass1_obj.type, 'x')) -PASS: gdb.python/lib-types.exp: python enum1_obj = gdb.parse_and_eval ('enum1_obj') -PASS: gdb.python/lib-types.exp: python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type) -PASS: gdb.python/lib-types.exp: python enum1_list = sorted (enum1_dict.items ()) -PASS: gdb.python/lib-types.exp: python print (enum1_list) -PASS: gdb.python/lib-types.exp: python struct_a = gdb.lookup_type ('struct A') -PASS: gdb.python/lib-types.exp: python print (struct_a.keys ()) -PASS: gdb.python/lib-types.exp: python print ([k for k,v in gdb.types.deep_items(struct_a)]) -Running ./gdb.python/py-arch.exp ... -PASS: gdb.python/py-arch.exp: test number of instructions 1 -PASS: gdb.python/py-arch.exp: test number of instructions 2 -PASS: gdb.python/py-arch.exp: test number of instructions 3 -PASS: gdb.python/py-arch.exp: test number of instructions 4 -PASS: gdb.python/py-arch.exp: test key addr -PASS: gdb.python/py-arch.exp: test key asm -PASS: gdb.python/py-arch.exp: test key length -PASS: gdb.python/py-arch.exp: test exception -Running ./gdb.python/py-block.exp ... -PASS: gdb.python/py-block.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-block.exp: Check block not None -PASS: gdb.python/py-block.exp: First anonymous block -PASS: gdb.python/py-block.exp: Check start not None -PASS: gdb.python/py-block.exp: Check end not None -PASS: gdb.python/py-block.exp: Not a global block -PASS: gdb.python/py-block.exp: Not a static block -PASS: gdb.python/py-block.exp: Get block -PASS: gdb.python/py-block.exp: Get block -PASS: gdb.python/py-block.exp: Is the global block -PASS: gdb.python/py-block.exp: Is the static block -PASS: gdb.python/py-block.exp: Get superblock -PASS: gdb.python/py-block.exp: Second anonymous block -PASS: gdb.python/py-block.exp: Get superblock 2 -PASS: gdb.python/py-block.exp: Print superblock 2 function -PASS: gdb.python/py-block.exp: up -PASS: gdb.python/py-block.exp: Check Frame 2's block not None -PASS: gdb.python/py-block.exp: main block -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -Running ./gdb.python/py-breakpoint.exp ... -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check for two breakpoints -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count -PASS: gdb.python/py-breakpoint.exp: Check expected variable result after 6 iterations -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint enabled. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint thread -PASS: gdb.python/py-breakpoint.exp: Check breakpoint type -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Number of breakpoints before delete -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint invalidated -PASS: gdb.python/py-breakpoint.exp: Number of breakpoints after delete -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at end. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test conditional has been set -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test conditional breakpoint stopped after five iterations -PASS: gdb.python/py-breakpoint.exp: Test conditional read -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test breakpoint stopped after six iterations -PASS: gdb.python/py-breakpoint.exp: commands $bpnum -PASS: gdb.python/py-breakpoint.exp: print "Command for breakpoint has been executed." -PASS: gdb.python/py-breakpoint.exp: print result -PASS: gdb.python/py-breakpoint.exp: end -PASS: gdb.python/py-breakpoint.exp: python print (blist[len(blist)-1].commands) -PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints shows visible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - class bp_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - inf_i = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.count = self.count + 1 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.inf_i = gdb.parse_and_eval("i") -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - if self.inf_i == 3: -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - end -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - class bp_also_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - self.count = self.count + 1 -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - if self.count == 9: -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - end -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - class basic (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - end -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check inferior value matches python accounting -PASS: gdb.python/py-breakpoint.exp: Check python accounting matches inferior -PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop. -PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop. -PASS: gdb.python/py-breakpoint.exp: Check you cannot add a CLI condition to a Python breakpoint that -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - python -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - def stop_func (): -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - return True -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - end -PASS: gdb.python/py-breakpoint.exp: Assign stop function to a breakpoint that has a condition -PASS: gdb.python/py-breakpoint.exp: Test that evaluate function has not been yet executed (ie count = 0) -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test that evaluate function is run when location also has normal bp -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - class wp_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - self.result = gdb.parse_and_eval("result") -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - if self.result == 788: -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - end -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Check that this unrelated breakpoints eval function was never called. -Running ./gdb.python/py-cmd.exp ... -PASS: gdb.python/py-cmd.exp: input simple command - python -PASS: gdb.python/py-cmd.exp: input simple command - class test_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input simple command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input simple command - super (test_cmd, self).__init__ ("test_cmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input simple command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input simple command - print ("test_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input simple command - test_cmd () -PASS: gdb.python/py-cmd.exp: input simple command - end -PASS: gdb.python/py-cmd.exp: call simple command -PASS: gdb.python/py-cmd.exp: input prefix command - python -PASS: gdb.python/py-cmd.exp: input prefix command - class prefix_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input prefix command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input prefix command - super (prefix_cmd, self).__init__ ("prefix_cmd", gdb.COMMAND_OBSCURE, gdb.COMPLETE_NONE, True) -PASS: gdb.python/py-cmd.exp: input prefix command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input prefix command - print ("prefix_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input prefix command - prefix_cmd () -PASS: gdb.python/py-cmd.exp: input prefix command - end -PASS: gdb.python/py-cmd.exp: call prefix command -PASS: gdb.python/py-cmd.exp: input subcommand - python -PASS: gdb.python/py-cmd.exp: input subcommand - class subcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input subcommand - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input subcommand - super (subcmd, self).__init__ ("prefix_cmd subcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input subcommand - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input subcommand - print ("subcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input subcommand - subcmd () -PASS: gdb.python/py-cmd.exp: input subcommand - end -PASS: gdb.python/py-cmd.exp: call subcmd -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - python -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - class prefix_cmd2 (gdb.Command): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - super (prefix_cmd2, self).__init__ ("prefix_cmd2", gdb.COMMAND_OBSCURE, prefix = True, completer_class = gdb.COMPLETE_FILENAME) -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - print ("prefix_cmd2 output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - prefix_cmd2 () -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - end -PASS: gdb.python/py-cmd.exp: call prefix command, keyword arguments -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - python -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - class subcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - super (subcmd, self).__init__ ("prefix_cmd2 subcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - print ("subcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - subcmd () -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - end -PASS: gdb.python/py-cmd.exp: call subcmd under prefix_cmd2 -PASS: gdb.python/py-cmd.exp: input new subcommand - python -PASS: gdb.python/py-cmd.exp: input new subcommand - class newsubcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input new subcommand - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input new subcommand - super (newsubcmd, self).__init__ ("info newsubcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input new subcommand - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input new subcommand - print ("newsubcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input new subcommand - newsubcmd () -PASS: gdb.python/py-cmd.exp: input new subcommand - end -PASS: gdb.python/py-cmd.exp: call newsubcmd -PASS: gdb.python/py-cmd.exp: input command to throw error - python -PASS: gdb.python/py-cmd.exp: input command to throw error - class test_error_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input command to throw error - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input command to throw error - super (test_error_cmd, self).__init__ ("test_error_cmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input command to throw error - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input command to throw error - raise gdb.GdbError ('you lose!') -PASS: gdb.python/py-cmd.exp: input command to throw error - test_error_cmd () -PASS: gdb.python/py-cmd.exp: input command to throw error - end -PASS: gdb.python/py-cmd.exp: call error command -PASS: gdb.python/py-cmd.exp: string_to_argv ("1 2 3") -PASS: gdb.python/py-cmd.exp: string_to_argv ("'1 2' 3") -PASS: gdb.python/py-cmd.exp: string_to_argv ('"1 2" 3') -PASS: gdb.python/py-cmd.exp: string_to_argv ('1\ 2 3') -PASS: gdb.python/py-cmd.exp: input simple user-defined command - python -PASS: gdb.python/py-cmd.exp: input simple user-defined command - class test_help (gdb.Command): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - """Docstring""" -PASS: gdb.python/py-cmd.exp: input simple user-defined command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - super (test_help, self).__init__ ("test_help", gdb.COMMAND_USER) -PASS: gdb.python/py-cmd.exp: input simple user-defined command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - print ("test_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input simple user-defined command - test_help () -PASS: gdb.python/py-cmd.exp: input simple user-defined command - end -PASS: gdb.python/py-cmd.exp: call simple user-defined command -PASS: gdb.python/py-cmd.exp: see user-defined command in `help user-defined` -Running ./gdb.python/py-error.exp ... -PASS: gdb.python/py-error.exp: set host-charset IBM1047 -PASS: gdb.python/py-error.exp: main reached -PASS: gdb.python/py-error.exp: no delayed error -Running ./gdb.python/py-events.exp ... -Running ./gdb.python/py-evsignal.exp ... -KFAIL: gdb.python/py-evsignal.exp: Signal Thread 3 (PRMS: python/12966) -Running ./gdb.python/py-evthreads.exp ... -KFAIL: gdb.python/py-evthreads.exp: Run to breakpoint 1 (PRMS: python/12966) -Running ./gdb.python/py-explore-cc.exp ... -PASS: gdb.python/py-explore-cc.exp: continue to breakpoint: Break here -PASS: gdb.python/py-explore-cc.exp: explore A -PASS: gdb.python/py-explore-cc.exp: explore a -PASS: gdb.python/py-explore-cc.exp: explore int_ref -PASS: gdb.python/py-explore-cc.exp: explore int_ptr_ref -PASS: gdb.python/py-explore-cc.exp: explore_int_ptr_ref_as_single_value_pointer -PASS: gdb.python/py-explore-cc.exp: explore b -PASS: gdb.python/py-explore-cc.exp: explore_base_class_A -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_A -PASS: gdb.python/py-explore-cc.exp: explore_field_i_of_b -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_i -PASS: gdb.python/py-explore-cc.exp: explore_field_c_of_b -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_i -PASS: gdb.python/py-explore-cc.exp: return_to_gdb_prompt_from_b -PASS: gdb.python/py-explore-cc.exp: explore B -PASS: gdb.python/py-explore-cc.exp: explore_base_class_A -PASS: gdb.python/py-explore-cc.exp: return_to_B -PASS: gdb.python/py-explore-cc.exp: explore_field_i_of_B -PASS: gdb.python/py-explore-cc.exp: return_to_B_from_i -PASS: gdb.python/py-explore-cc.exp: explore_field_c_of_B -PASS: gdb.python/py-explore-cc.exp: return_to_B_from_c -PASS: gdb.python/py-explore-cc.exp: return_to_gdb_prompt_from_B -Running ./gdb.python/py-explore.exp ... -PASS: gdb.python/py-explore.exp: continue to breakpoint: Break here -PASS: gdb.python/py-explore.exp: explore i -PASS: gdb.python/py-explore.exp: explore ss -PASS: gdb.python/py-explore.exp: explore *ss_ptr -PASS: gdb.python/py-explore.exp: explore ss_t -PASS: gdb.python/py-explore.exp: explore ss_ptr -PASS: gdb.python/py-explore.exp: explore ss_ptr as single value pointer -PASS: gdb.python/py-explore.exp: explore darray_ref -PASS: gdb.python/py-explore.exp: no_to_explore_as_pointer -PASS: gdb.python/py-explore.exp: explore_as_array -PASS: gdb.python/py-explore.exp: explore_as_array_index_2 -PASS: gdb.python/py-explore.exp: end explore_as_array_index_2 -PASS: gdb.python/py-explore.exp: end explore_as_array -PASS: gdb.python/py-explore.exp: explore su -PASS: gdb.python/py-explore.exp: explore su.d -PASS: gdb.python/py-explore.exp: end su.d exploration -PASS: gdb.python/py-explore.exp: end su exploration -PASS: gdb.python/py-explore.exp: explore cs -PASS: gdb.python/py-explore.exp: explore cs.s -PASS: gdb.python/py-explore.exp: end cs.s exploration -PASS: gdb.python/py-explore.exp: explore cs.u -PASS: gdb.python/py-explore.exp: end cs.u exploration -PASS: gdb.python/py-explore.exp: end cs exploration -PASS: gdb.python/py-explore.exp: explore cu -PASS: gdb.python/py-explore.exp: explore cu.sa -PASS: gdb.python/py-explore.exp: explore cu.sa[0] -PASS: gdb.python/py-explore.exp: end cu.sa[0] exploration -PASS: gdb.python/py-explore.exp: end cu.sa exploration -PASS: gdb.python/py-explore.exp: end cu exploration -PASS: gdb.python/py-explore.exp: explore int -PASS: gdb.python/py-explore.exp: explore struct SimpleStruct -PASS: gdb.python/py-explore.exp: explore type struct SimpleStruct feild 0 -PASS: gdb.python/py-explore.exp: return to struct SimpleStruct from field 0 -PASS: gdb.python/py-explore.exp: explore type struct SimpleStruct feild 1 -PASS: gdb.python/py-explore.exp: return to struct SimpleStruct from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from struct SimpleStruct -PASS: gdb.python/py-explore.exp: explore union SimpleUnion -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 0 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 1 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 1 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 2 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 2 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 3 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 3 -PASS: gdb.python/py-explore.exp: return to GDB prompt from union SimpleUnion -PASS: gdb.python/py-explore.exp: explore SS -PASS: gdb.python/py-explore.exp: explore type SS feild 0 -PASS: gdb.python/py-explore.exp: return to SS from field 0 -PASS: gdb.python/py-explore.exp: explore type SS feild 1 -PASS: gdb.python/py-explore.exp: return to SS field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from SS -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 0 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 0 -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 1 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 1 -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 2 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 2 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexStruct type exploration -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 0 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 1 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexUnion type exploration -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 0 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 1 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexUnion type exploration -Running ./gdb.python/py-finish-breakpoint2.exp ... -PASS: gdb.python/py-finish-breakpoint2.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint2.exp: run to exception 1 -PASS: gdb.python/py-finish-breakpoint2.exp: check BP count -PASS: gdb.python/py-finish-breakpoint2.exp: set FinishBP after the exception -PASS: gdb.python/py-finish-breakpoint2.exp: check FinishBreakpoint in catch() -PASS: gdb.python/py-finish-breakpoint2.exp: check finish BP removal -PASS: gdb.python/py-finish-breakpoint2.exp: continue to second exception -PASS: gdb.python/py-finish-breakpoint2.exp: set FinishBP after the exception -PASS: gdb.python/py-finish-breakpoint2.exp: FinishBreakpoint with exception thrown not caught -Running ./gdb.python/py-finish-breakpoint.exp ... -PASS: gdb.python/py-finish-breakpoint.exp: disable confirmation -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: continue to the function to finish -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBreakpoint with default frame value -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check return_value at init -PASS: gdb.python/py-finish-breakpoint.exp: check MyFinishBreakpoint hit -PASS: gdb.python/py-finish-breakpoint.exp: check return_value -PASS: gdb.python/py-finish-breakpoint.exp: check finishBP on default frame has been hit -PASS: gdb.python/py-finish-breakpoint.exp: ensure that finish bp is invalid afer normal hit -PASS: gdb.python/py-finish-breakpoint.exp: return to main() -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBP not allowed in main -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: ensure that shared lib has no debug info -PASS: gdb.python/py-finish-breakpoint.exp: continue to do_nothing -PASS: gdb.python/py-finish-breakpoint.exp: set finish breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBreakpoint hit -PASS: gdb.python/py-finish-breakpoint.exp: check return value without debug symbol -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set finish breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: set BP after the jump -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBP out of scope notification -PASS: gdb.python/py-finish-breakpoint.exp: ensure that finish bp is invalid afer out of scope notification -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set a conditional BP -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP in a breakpoint condition -PASS: gdb.python/py-finish-breakpoint.exp: don't allow FinishBreakpoint on dummy frames -PASS: gdb.python/py-finish-breakpoint.exp: check stopped location -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set conditional BP -PASS: gdb.python/py-finish-breakpoint.exp: set BP in condition -PASS: gdb.python/py-finish-breakpoint.exp: stop in condition function -PASS: gdb.python/py-finish-breakpoint.exp: finish condition evaluation -PASS: gdb.python/py-finish-breakpoint.exp: stop at conditional breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check stopped location -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: prepare TestExplicitBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: don't allow FinishBreakpoint on dummy frames -PASS: gdb.python/py-finish-breakpoint.exp: prepare TestExplicitBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: FinishBP stop at during explicit function call -PASS: gdb.python/py-finish-breakpoint.exp: switch to exit() test -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP after the exit() -PASS: gdb.python/py-finish-breakpoint.exp: catch out of scope after exit -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP after the exec -PASS: gdb.python/py-finish-breakpoint.exp: catch exec -PASS: gdb.python/py-finish-breakpoint.exp: catch out of scope after exec -Running ./gdb.python/py-frame.exp ... -PASS: gdb.python/py-frame.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-frame.exp: test Frame.architecture() -PASS: gdb.python/py-frame.exp: test i -PASS: gdb.python/py-frame.exp: test f -PASS: gdb.python/py-frame.exp: test b -PASS: gdb.python/py-frame.exp: test i = 1.1 -PASS: gdb.python/py-frame.exp: test double i -PASS: gdb.python/py-frame.exp: test f = 2.2 -PASS: gdb.python/py-frame.exp: test double f -PASS: gdb.python/py-frame.exp: test i = 99 -PASS: gdb.python/py-frame.exp: test int i -PASS: gdb.python/py-frame.exp: continue to breakpoint: breakpoint at f2 -PASS: gdb.python/py-frame.exp: selected frame -vs- newest frame -PASS: gdb.python/py-frame.exp: newest frame -vs- newest frame -PASS: gdb.python/py-frame.exp: test equality comparison (false) -PASS: gdb.python/py-frame.exp: test equality comparison (true) -PASS: gdb.python/py-frame.exp: test inequality comparison (true) -PASS: gdb.python/py-frame.exp: test inequality comparison (false) -PASS: gdb.python/py-frame.exp: test Frame.is_valid -PASS: gdb.python/py-frame.exp: test Frame.name -PASS: gdb.python/py-frame.exp: test Frame.type -PASS: gdb.python/py-frame.exp: test Frame.type -PASS: gdb.python/py-frame.exp: test gdb.frame_stop_reason_string -PASS: gdb.python/py-frame.exp: test Frame.pc -PASS: gdb.python/py-frame.exp: test Frame.older -PASS: gdb.python/py-frame.exp: test Frame.newer -PASS: gdb.python/py-frame.exp: test Frame.read_var - error -PASS: gdb.python/py-frame.exp: test Frame.read_var - success -PASS: gdb.python/py-frame.exp: test gdb.selected_frame -Running ./gdb.python/py-frame-inline.exp ... -PASS: gdb.python/py-frame-inline.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-frame-inline.exp: info frame -PASS: gdb.python/py-frame-inline.exp: up -PASS: gdb.python/py-frame-inline.exp: python print (gdb.selected_frame().read_var('l')) -Running ./gdb.python/py-function.exp ... -PASS: gdb.python/py-function.exp: input convenience function - python -PASS: gdb.python/py-function.exp: input convenience function - class test_func (gdb.Function): -PASS: gdb.python/py-function.exp: input convenience function - def __init__ (self): -PASS: gdb.python/py-function.exp: input convenience function - super (test_func, self).__init__ ("test_func") -PASS: gdb.python/py-function.exp: input convenience function - def invoke (self, arg): -PASS: gdb.python/py-function.exp: input convenience function - return "test_func output, arg = %s" % arg.string () -PASS: gdb.python/py-function.exp: input convenience function - test_func () -PASS: gdb.python/py-function.exp: input convenience function - end -PASS: gdb.python/py-function.exp: call function -PASS: gdb.python/py-function.exp: input value-returning convenience function - python -PASS: gdb.python/py-function.exp: input value-returning convenience function - class Double (gdb.Function): -PASS: gdb.python/py-function.exp: input value-returning convenience function - def __init__ (self): -PASS: gdb.python/py-function.exp: input value-returning convenience function - super (Double, self).__init__ ("double") -PASS: gdb.python/py-function.exp: input value-returning convenience function - def invoke (self, n): -PASS: gdb.python/py-function.exp: input value-returning convenience function - return n*2 -PASS: gdb.python/py-function.exp: input value-returning convenience function - Double () -PASS: gdb.python/py-function.exp: input value-returning convenience function - end -PASS: gdb.python/py-function.exp: call value-returning function -PASS: gdb.python/py-function.exp: input int-returning function - python -PASS: gdb.python/py-function.exp: input int-returning function - class Yes(gdb.Function): -PASS: gdb.python/py-function.exp: input int-returning function - def __init__(self): -PASS: gdb.python/py-function.exp: input int-returning function - gdb.Function.__init__(self, 'yes') -PASS: gdb.python/py-function.exp: input int-returning function - def invoke(self): -PASS: gdb.python/py-function.exp: input int-returning function - return 1 -PASS: gdb.python/py-function.exp: input int-returning function - Yes () -PASS: gdb.python/py-function.exp: input int-returning function - end -PASS: gdb.python/py-function.exp: call yes with && -PASS: gdb.python/py-function.exp: call yes with || -PASS: gdb.python/py-function.exp: Test GDBError - python -PASS: gdb.python/py-function.exp: Test GDBError - class GDBError(gdb.Function): -PASS: gdb.python/py-function.exp: Test GDBError - def __init__(self): -PASS: gdb.python/py-function.exp: Test GDBError - gdb.Function.__init__(self, 'gdberror') -PASS: gdb.python/py-function.exp: Test GDBError - def invoke(self): -PASS: gdb.python/py-function.exp: Test GDBError - raise gdb.GdbError("This is a GdbError") -PASS: gdb.python/py-function.exp: Test GDBError - GDBError () -PASS: gdb.python/py-function.exp: Test GDBError - end -PASS: gdb.python/py-function.exp: Test GdbError. There should not be a stack trace -PASS: gdb.python/py-function.exp: Test Normal Error - python -PASS: gdb.python/py-function.exp: Test Normal Error - class NormalError(gdb.Function): -PASS: gdb.python/py-function.exp: Test Normal Error - def __init__(self): -PASS: gdb.python/py-function.exp: Test Normal Error - gdb.Function.__init__(self, 'normalerror') -PASS: gdb.python/py-function.exp: Test Normal Error - def invoke(self): -PASS: gdb.python/py-function.exp: Test Normal Error - raise RuntimeError("This is a Normal Error") -PASS: gdb.python/py-function.exp: Test Normal Error - NormalError () -PASS: gdb.python/py-function.exp: Test Normal Error - end -PASS: gdb.python/py-function.exp: set python print-stack full -PASS: gdb.python/py-function.exp: Test a Runtime error. There should be a stack trace. -PASS: gdb.python/py-function.exp: input command-calling function - python -PASS: gdb.python/py-function.exp: input command-calling function - class CallCommand(gdb.Function): -PASS: gdb.python/py-function.exp: input command-calling function - def __init__(self): -PASS: gdb.python/py-function.exp: input command-calling function - gdb.Function.__init__(self, 'call_command') -PASS: gdb.python/py-function.exp: input command-calling function - def invoke(self): -PASS: gdb.python/py-function.exp: input command-calling function - return gdb.execute('print 1', to_string=True) -PASS: gdb.python/py-function.exp: input command-calling function - CallCommand () -PASS: gdb.python/py-function.exp: input command-calling function - end -PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command. -PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command, again. -Running ./gdb.python/py-inferior.exp ... -PASS: gdb.python/py-inferior.exp: successfully compiled posix threads test case -PASS: gdb.python/py-inferior.exp: get inferiors list -PASS: gdb.python/py-inferior.exp: verify inferiors list -PASS: gdb.python/py-inferior.exp: test equality comparison (true) -PASS: gdb.python/py-inferior.exp: test Inferior.num -PASS: gdb.python/py-inferior.exp: test Inferior.pid -PASS: gdb.python/py-inferior.exp: test Inferior.was_attached -PASS: gdb.python/py-inferior.exp: test Inferior.threads -PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to check_threads -PASS: gdb.python/py-inferior.exp: test Inferior.threads 2 -PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to Break here. -PASS: gdb.python/py-inferior.exp: read str contents -PASS: gdb.python/py-inferior.exp: write str -PASS: gdb.python/py-inferior.exp: ensure str was changed in the inferior -PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address -PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof -PASS: gdb.python/py-inferior.exp: find string pattern -PASS: gdb.python/py-inferior.exp: pattern not found at end of range -PASS: gdb.python/py-inferior.exp: pattern found at end of range -PASS: gdb.python/py-inferior.exp: py from struct import * -PASS: gdb.python/py-inferior.exp: set int16_search_buf[10] = 0x1234 -PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('int16_search_buf') -PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address -PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof -PASS: gdb.python/py-inferior.exp: py pattern = pack('"): -PASS: gdb.python/python.exp: prompt substitution readline - pCounter = pCounter + 1 -PASS: gdb.python/python.exp: prompt substitution readline - return "python line " + str (pCounter) + ": " -PASS: gdb.python/python.exp: prompt substitution readline - return None -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set prompt testfake -PASS: gdb.python/python.exp: show prompt shows guarded prompt -PASS: gdb.python/python.exp: set prompt blah overriden -PASS: gdb.python/python.exp: Delete old hook -PASS: gdb.python/python.exp: set default prompt -PASS: gdb.python/python.exp: set programming hook -PASS: gdb.python/python.exp: readline secondary are not substituted -PASS: gdb.python/python.exp: end programming -PASS: gdb.python/python.exp: prompt substitution readline - python -PASS: gdb.python/python.exp: prompt substitution readline - import gdb.command.prompt -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set basic extended prompt -PASS: gdb.python/python.exp: set extended prompt working directory -PASS: gdb.python/python.exp: set extended prompt parameter -PASS: gdb.python/python.exp: Test print-backtrace show setting. Default is message. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: Test print-backtrace show setting to full. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: Test print-backtrace show setting to none. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: prompt substitution readline - python -PASS: gdb.python/python.exp: prompt substitution readline - pCounter = 0 -PASS: gdb.python/python.exp: prompt substitution readline - def error_prompt(current): -PASS: gdb.python/python.exp: prompt substitution readline - raise RuntimeError("Python exception called") -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set the hook to default -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set the hook to default -PASS: gdb.python/python.exp: Get line number of func2 call site -PASS: gdb.python/python.exp: Test find_pc_line at func2 call site -PASS: gdb.python/python.exp: Step into func2 -PASS: gdb.python/python.exp: Step out of func2 -PASS: gdb.python/python.exp: Test find_pc_line with resume address -Running ./gdb.python/py-type.exp ... -PASS: gdb.python/py-type.exp: lang_c: continue to breakpoint: break to inspect struct and array. -PASS: gdb.python/py-type.exp: lang_c: test_fields: c typedef field list -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (st) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (st) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: get fields from st.type -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check number of fields (st) -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check structure field a name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check structure field b name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check that dir includes name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check number of fields (st.type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields lookup by name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields iteration over values -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields items list -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check field name exists test -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check field name nonexists test -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check conversion to bool -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (len (st.type['a'].type)) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type.has_key ('x')) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type.keys ()) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type['x']) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (not not st.type['a'].type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (ar) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: python fields = ar.type.fields() -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check the number of fields -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check array field type -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to array with one argument -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to array with two arguments -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (ar[0].type == ar[0].type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (vec_data_1) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (vec_data_1) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (vec_data_2) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (vec_data_2) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec1 -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to vector with one argument -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec2 -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to vector with two arguments -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print vec1 == vec2 -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec3 -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print vec1 == vec3 -PASS: gdb.python/py-type.exp: lang_c: test_enum: print value (e) -PASS: gdb.python/py-type.exp: lang_c: test_enum: get value (e) from history -PASS: gdb.python/py-type.exp: lang_c: test_enum: extract type fields from e -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check the number of enum fields -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field[0] name -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field[1]name -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check the number of type fields -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field lookup by name (v1) -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field lookup by name (v2) -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check num fields iteration over values -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum fields items list -PASS: gdb.python/py-type.exp: lang_cpp: continue to breakpoint: break to inspect struct and array. -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: c++ typedef field list -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (c) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (c) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get fields from c.type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (c) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check class field c name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check class field d name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (c.type == gdb.parse_and_eval('d').type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (c.type == gdb.parse_and_eval('d').type.fields()[0].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (st) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get fields from st.type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check structure field a name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check structure field b name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check that dir includes name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (st.type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields lookup by name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields iteration over values -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields items list -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check field name exists test -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check field name nonexists test -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check conversion to bool -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (len (st.type['a'].type)) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type.has_key ('x')) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type.keys ()) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type['x']) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (not not st.type['a'].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python fields = ar.type.fields() -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check the number of fields -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check array field type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to array with one argument -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to array with two arguments -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (ar[0].type == ar[0].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (vec_data_1) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (vec_data_1) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (vec_data_2) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (vec_data_2) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec1 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to vector with one argument -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec2 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to vector with two arguments -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print vec1 == vec2 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec3 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print vec1 == vec3 -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: print value (d) -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: get value (d) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: extract type fields from d -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check the number of fields -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check base class (fields[0]) -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check base class (fields[1]) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check correct tuple length -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check range low bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check range high bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: get fields -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: Check range low bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: Check range high bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: print value (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: get value (st) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: Check range for non ranged type. -PASS: gdb.python/py-type.exp: lang_cpp: get type of temvar -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(0)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (isinstance(ttype.template_argument(0), gdb.Type)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(1)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (isinstance(ttype.template_argument(1), gdb.Value)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(2)) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: print value (e) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: get value (e) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: extract type fields from e -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check the number of enum fields -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field[0] name -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field[1]name -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check the number of type fields -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field lookup by name (v1) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field lookup by name (v2) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check num fields iteration over values -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum fields items list -Running ./gdb.python/py-typeprint.exp ... -PASS: gdb.python/py-typeprint.exp: python exec (open ('py-typeprint.py').read ()) -PASS: gdb.python/py-typeprint.exp: basic test -PASS: gdb.python/py-typeprint.exp: raw test -PASS: gdb.python/py-typeprint.exp: disable type-printer string -PASS: gdb.python/py-typeprint.exp: whatis with disabled printer -PASS: gdb.python/py-typeprint.exp: info type-printers -PASS: gdb.python/py-typeprint.exp: enable type-printer string -PASS: gdb.python/py-typeprint.exp: whatis with enabled printer -PASS: gdb.python/py-typeprint.exp: whatis s -Running ./gdb.python/py-value-cc.exp ... -PASS: gdb.python/py-value-cc.exp: continue to breakpoint: Break here -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("a").type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("a").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").referenced_value())) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").dereference().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().dereference())) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().referenced_value())) -Running ./gdb.python/py-value.exp ... -PASS: gdb.python/py-value.exp: create boolean value -PASS: gdb.python/py-value.exp: create integer value -PASS: gdb.python/py-value.exp: create long value -PASS: gdb.python/py-value.exp: create double value -PASS: gdb.python/py-value.exp: create 8-bit string value -PASS: gdb.python/py-value.exp: print 8-bit string -PASS: gdb.python/py-value.exp: verify type of 8-bit string -PASS: gdb.python/py-value.exp: create unicode value -PASS: gdb.python/py-value.exp: print Unicode string -PASS: gdb.python/py-value.exp: verify type of unicode string -PASS: gdb.python/py-value.exp: Test address attribute in non-addressable value -PASS: gdb.python/py-value.exp: add two integer values -PASS: gdb.python/py-value.exp: verify type of integer add result -PASS: gdb.python/py-value.exp: add two double values -PASS: gdb.python/py-value.exp: subtract two integer values -PASS: gdb.python/py-value.exp: subtract two double values -PASS: gdb.python/py-value.exp: multiply two integer values -PASS: gdb.python/py-value.exp: multiply two double values -PASS: gdb.python/py-value.exp: divide two integer values -PASS: gdb.python/py-value.exp: divide two double values -PASS: gdb.python/py-value.exp: take remainder of two integer values -PASS: gdb.python/py-value.exp: integer value raised to the power of another integer value -PASS: gdb.python/py-value.exp: double value raised to the power of integer value -PASS: gdb.python/py-value.exp: negated integer value -PASS: gdb.python/py-value.exp: positive integer value -PASS: gdb.python/py-value.exp: negated double value -PASS: gdb.python/py-value.exp: positive double value -PASS: gdb.python/py-value.exp: absolute of integer value -PASS: gdb.python/py-value.exp: absolute of double value -PASS: gdb.python/py-value.exp: subtract integer value from python integer -PASS: gdb.python/py-value.exp: verify type of mixed integer subtraction result -PASS: gdb.python/py-value.exp: add double value with python float -PASS: gdb.python/py-value.exp: subtract python integer from integer value -PASS: gdb.python/py-value.exp: add python float with double value -PASS: gdb.python/py-value.exp: print evalue -PASS: gdb.python/py-value.exp: python evalue = gdb.history (0) -PASS: gdb.python/py-value.exp: python print (int (evalue)) -PASS: gdb.python/py-value.exp: add pointer value with python integer -PASS: gdb.python/py-value.exp: subtract python integer from pointer value -PASS: gdb.python/py-value.exp: subtract two pointer values -PASS: gdb.python/py-value.exp: catch error in python type conversion -PASS: gdb.python/py-value.exp: catch throw of GDB error -PASS: gdb.python/py-value.exp: define function to test booleans - python -PASS: gdb.python/py-value.exp: define function to test booleans - def test_bool (val): -PASS: gdb.python/py-value.exp: define function to test booleans - if val: -PASS: gdb.python/py-value.exp: define function to test booleans - print ('yay') -PASS: gdb.python/py-value.exp: define function to test booleans - else: -PASS: gdb.python/py-value.exp: define function to test booleans - print ('nay') -PASS: gdb.python/py-value.exp: define function to test booleans - end -PASS: gdb.python/py-value.exp: check evaluation of true boolean value in expression -PASS: gdb.python/py-value.exp: check evaluation of false boolean value in expression -PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression -PASS: gdb.python/py-value.exp: less than, equal -PASS: gdb.python/py-value.exp: less than, less -PASS: gdb.python/py-value.exp: less than, greater -PASS: gdb.python/py-value.exp: less than, None -PASS: gdb.python/py-value.exp: less or equal, equal -PASS: gdb.python/py-value.exp: less or equal, less -PASS: gdb.python/py-value.exp: less or equal, greater -PASS: gdb.python/py-value.exp: less or equal, None -PASS: gdb.python/py-value.exp: equality of gdb.Values -PASS: gdb.python/py-value.exp: inequality of gdb.Values -PASS: gdb.python/py-value.exp: equality of gdb.Value with Python value -PASS: gdb.python/py-value.exp: inequality of gdb.Value with Python value -PASS: gdb.python/py-value.exp: inequality of gdb.Value with None -PASS: gdb.python/py-value.exp: inequality, false -PASS: gdb.python/py-value.exp: inequality, true -PASS: gdb.python/py-value.exp: inequality, None -PASS: gdb.python/py-value.exp: greater than, equal -PASS: gdb.python/py-value.exp: greater than, less -PASS: gdb.python/py-value.exp: greater than, greater -PASS: gdb.python/py-value.exp: greater than, None -PASS: gdb.python/py-value.exp: greater or equal, equal -PASS: gdb.python/py-value.exp: greater or equal, less -PASS: gdb.python/py-value.exp: greater or equal, greater -PASS: gdb.python/py-value.exp: greater or equal, None -PASS: gdb.python/py-value.exp: py-value in file.filename -PASS: gdb.python/py-value.exp: python print (gdb.objfiles()[0].pretty_printers) -PASS: gdb.python/py-value.exp: python gdb.objfiles()[0].pretty_printers = 0 -PASS: gdb.python/py-value.exp: parse_and_eval constant test -PASS: gdb.python/py-value.exp: parse_and_eval simple expression test -PASS: gdb.python/py-value.exp: parse_and_eval type test -PASS: gdb.python/py-value.exp: Simple Python value dictionary - python -PASS: gdb.python/py-value.exp: Simple Python value dictionary - one = gdb.Value(1) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - two = gdb.Value(2) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - three = gdb.Value(3) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - vdict = {one:"one str",two:"two str",three:"three str"} -PASS: gdb.python/py-value.exp: Simple Python value dictionary - end -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test inbuilt hash -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: access element inside struct using 8-bit string name -PASS: gdb.python/py-value.exp: access element inside struct using unicode name -PASS: gdb.python/py-value.exp: dereference value -PASS: gdb.python/py-value.exp: Test is_optimized_out attribute -PASS: gdb.python/py-value.exp: Test address attribute -PASS: gdb.python/py-value.exp: parse_and_eval with memory error -PASS: gdb.python/py-value.exp: python inval = gdb.parse_and_eval('*(int*)0') -PASS: gdb.python/py-value.exp: python print (inval.is_lazy) -PASS: gdb.python/py-value.exp: memory error and lazy values -PASS: gdb.python/py-value.exp: memory error and lazy values -PASS: gdb.python/py-value.exp: python argc_lazy = gdb.parse_and_eval('argc') -PASS: gdb.python/py-value.exp: python argc_notlazy = gdb.parse_and_eval('argc') -PASS: gdb.python/py-value.exp: python argc_notlazy.fetch_lazy() -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: python print (argc_notlazy.is_lazy) -PASS: gdb.python/py-value.exp: sanity check argc -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: set argc=2 -PASS: gdb.python/py-value.exp: python print (argc_notlazy) -PASS: gdb.python/py-value.exp: python print (argc_lazy) -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: print st -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: Test string with no length -PASS: gdb.python/py-value.exp: Test string (length = -1) is all of the string -PASS: gdb.python/py-value.exp: python print (st.string (length = 6)) -PASS: gdb.python/py-value.exp: Test string (length = 0) is empty -PASS: gdb.python/py-value.exp: Test length is 0 -PASS: gdb.python/py-value.exp: print nullst -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: Test string to first null -PASS: gdb.python/py-value.exp: get string beyond null -PASS: gdb.python/py-value.exp: python print (repr(nullst)) -PASS: gdb.python/py-value.exp: p/x fp1 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp1 = fp1.dereference() -PASS: gdb.python/py-value.exp: python result = fp1() -PASS: gdb.python/py-value.exp: python print (result) -PASS: gdb.python/py-value.exp: p/x fp2 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp2 = fp2.dereference() -PASS: gdb.python/py-value.exp: python result2 = fp2(10,20) -PASS: gdb.python/py-value.exp: python print (result2) -PASS: gdb.python/py-value.exp: p i -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python result3 = i() -PASS: gdb.python/py-value.exp: p/x fp2 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp3 = fp3.dereference() -PASS: gdb.python/py-value.exp: python result2 = fp3(10) -PASS: gdb.python/py-value.exp: print sptr -PASS: gdb.python/py-value.exp: Get value from history -PASS: gdb.python/py-value.exp: Aquire lazy string -PASS: gdb.python/py-value.exp: Test type name equality -PASS: gdb.python/py-value.exp: Test type name equality -PASS: gdb.python/py-value.exp: print sn -PASS: gdb.python/py-value.exp: Get value from history -PASS: gdb.python/py-value.exp: Test lazy string -PASS: gdb.python/py-value.exp: Succesfully create a lazy string -PASS: gdb.python/py-value.exp: Test lazy string length -PASS: gdb.python/py-value.exp: Test lazy string address -PASS: gdb.python/py-value.exp: create PTR type -PASS: gdb.python/py-value.exp: kill the inferior -PASS: gdb.python/py-value.exp: Discard the symbols -PASS: gdb.python/py-value.exp: cast arg0 to PTR -PASS: gdb.python/py-value.exp: delete PTR type -PASS: gdb.python/py-value.exp: print value's type -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript -PASS: gdb.python/py-value.exp: Build pointer to array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Access array via pointer with int subscript -PASS: gdb.python/py-value.exp: Access array via pointer with value subscript -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Build array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Test multiple subscript -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect pointer by reference -PASS: gdb.python/py-value.exp: Obtain address -PASS: gdb.python/py-value.exp: Obtains value from GDB -PASS: gdb.python/py-value.exp: Check pointer passed as reference -PASS: gdb.python/py-value.exp: python print (bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer()))) -PASS: gdb.python/py-value.exp: python print (gdb.parse_and_eval('base').dynamic_type) -PASS: gdb.python/py-value.exp: python print (gdb.parse_and_eval('5').dynamic_type) -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript -PASS: gdb.python/py-value.exp: Build pointer to array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Access array via pointer with int subscript -PASS: gdb.python/py-value.exp: Access array via pointer with value subscript -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Build array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Test multiple subscript -Running ./gdb.reverse/amd64-tailcall-reverse.exp ... -Running ./gdb.reverse/break-precsave.exp ... -Running ./gdb.reverse/break-reverse.exp ... -Running ./gdb.reverse/consecutive-precsave.exp ... -Running ./gdb.reverse/consecutive-reverse.exp ... -Running ./gdb.reverse/finish-precsave.exp ... -Running ./gdb.reverse/finish-reverse-bkpt.exp ... -Running ./gdb.reverse/finish-reverse.exp ... -Running ./gdb.reverse/i386-precsave.exp ... -Running ./gdb.reverse/i386-reverse.exp ... -Running ./gdb.reverse/i386-sse-reverse.exp ... -Running ./gdb.reverse/i387-env-reverse.exp ... -PASS: gdb.reverse/i387-env-reverse.exp: Turn on process record -FAIL: gdb.reverse/i387-env-reverse.exp: record to end of main (timeout) -FAIL: gdb.reverse/i387-env-reverse.exp: set reverse direction -FAIL: gdb.reverse/i387-env-reverse.exp: rewind to beginning of main -FAIL: gdb.reverse/i387-env-reverse.exp: set forward direction -PASS: gdb.reverse/i387-env-reverse.exp: begin testing fpu env -PASS: gdb.reverse/i387-env-reverse.exp: save FPU env in memory -PASS: gdb.reverse/i387-env-reverse.exp: restore FPU env -PASS: gdb.reverse/i387-env-reverse.exp: store status word in EAX -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -FAIL: gdb.reverse/i387-env-reverse.exp: verify eax == 0x8040000 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xffff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3fff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3000 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xfff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3ff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2000 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3f -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1000 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xf -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x7 -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1000 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xf -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3f -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2000 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3ff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3000 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xfff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3800 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3fff -PASS: gdb.reverse/i387-env-reverse.exp: push st0 -PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0 -PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xffff -Running ./gdb.reverse/i387-stack-reverse.exp ... -PASS: gdb.reverse/i387-stack-reverse.exp: Turn on process record -PASS: gdb.reverse/i387-stack-reverse.exp: record to end of main -PASS: gdb.reverse/i387-stack-reverse.exp: set reverse direction -PASS: gdb.reverse/i387-stack-reverse.exp: rewind to beginning of main -PASS: gdb.reverse/i387-stack-reverse.exp: set forward direction -PASS: gdb.reverse/i387-stack-reverse.exp: begin test st0 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.321928094* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1.4426950406* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1.4426950* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.3219280* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1.44269506* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 3.32192809* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st6 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 1.44269504* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st6 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st7 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: undo registers, st0-st7 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st6 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.69314* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.301029* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.14159265* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1.44269504088* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1.442695040* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.3219280948* -PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1 -PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1 -Running ./gdb.reverse/machinestate.exp ... -Running ./gdb.reverse/machinestate-precsave.exp ... -Running ./gdb.reverse/next-reverse-bkpt-over-sr.exp ... -Running ./gdb.reverse/sigall-precsave.exp ... -Running ./gdb.reverse/sigall-reverse.exp ... -Running ./gdb.reverse/singlejmp-reverse.exp ... -Running ./gdb.reverse/solib-precsave.exp ... -Running ./gdb.reverse/solib-reverse.exp ... -Running ./gdb.reverse/step-precsave.exp ... -Running ./gdb.reverse/step-reverse.exp ... -Running ./gdb.reverse/until-precsave.exp ... -Running ./gdb.reverse/until-reverse.exp ... -Running ./gdb.reverse/watch-precsave.exp ... -Running ./gdb.reverse/watch-reverse.exp ... -Running ./gdb.server/ext-attach.exp ... -Running ./gdb.server/ext-run.exp ... -PASS: gdb.server/ext-run.exp: disconnect -PASS: gdb.server/ext-run.exp: set remote exec-file -PASS: gdb.server/ext-run.exp: continue to main -PASS: gdb.server/ext-run.exp: get process list -PASS: gdb.server/ext-run.exp: kill -PASS: gdb.server/ext-run.exp: load new file without any gdbserver inferior -PASS: gdb.server/ext-run.exp: monitor exit -Running ./gdb.server/file-transfer.exp ... -PASS: gdb.server/file-transfer.exp: disconnect -FAIL: gdb.server/file-transfer.exp: put binary file -FAIL: gdb.server/file-transfer.exp: get binary file -FAIL: gdb.server/file-transfer.exp: compare binary file -FAIL: gdb.server/file-transfer.exp: deleted binary file -FAIL: gdb.server/file-transfer.exp: put text file -FAIL: gdb.server/file-transfer.exp: get text file -FAIL: gdb.server/file-transfer.exp: compare text file -FAIL: gdb.server/file-transfer.exp: deleted text file -Running ./gdb.server/no-thread-db.exp ... -PASS: gdb.server/no-thread-db.exp: successfully compiled posix threads test case -PASS: gdb.server/no-thread-db.exp: disconnect -PASS: gdb.server/no-thread-db.exp: libthread-db is now unresolvable -PASS: gdb.server/no-thread-db.exp: continue to breakpoint: after tls assignment -PASS: gdb.server/no-thread-db.exp: print foo -Running ./gdb.server/server-exec-info.exp ... -PASS: gdb.server/server-exec-info.exp: file -PASS: gdb.server/server-exec-info.exp: set sysroot remote: -PASS: gdb.server/server-exec-info.exp: info files -Running ./gdb.server/server-kill.exp ... -PASS: gdb.server/server-kill.exp: disconnect -FAIL: gdb.server/server-kill.exp: tstatus -Running ./gdb.server/server-mon.exp ... -PASS: gdb.server/server-mon.exp: disconnect -PASS: gdb.server/server-mon.exp: monitor help -PASS: gdb.server/server-mon.exp: monitor -PASS: gdb.server/server-mon.exp: monitor set debug 1 -PASS: gdb.server/server-mon.exp: monitor set debug 0 -PASS: gdb.server/server-mon.exp: monitor set remote-debug 1 -PASS: gdb.server/server-mon.exp: monitor set remote-debug 0 -Running ./gdb.server/server-run.exp ... -PASS: gdb.server/server-run.exp: disconnect -PASS: gdb.server/server-run.exp: loaded dynamic linker -PASS: gdb.server/server-run.exp: continue to main -Running ./gdb.server/solib-list.exp ... -Running ./gdb.stabs/exclfwd.exp ... -PASS: gdb.stabs/exclfwd.exp: ptype v1 -PASS: gdb.stabs/exclfwd.exp: ptype v2 -PASS: gdb.stabs/exclfwd.exp: ptype v3 -Running ./gdb.stabs/gdb11479.exp ... -PASS: gdb.stabs/gdb11479.exp: Set breakpoints forced_stabs -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs -PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 forced_stabs -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 forced_stabs -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs -PASS: gdb.stabs/gdb11479.exp: Inspect t in test forced_stabs -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test forced_stabs -PASS: gdb.stabs/gdb11479.exp: Set breakpoints natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 natural_debug_format -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Inspect t in test natural_debug_format -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test natural_debug_format -Running ./gdb.stabs/weird.exp ... -PASS: gdb.stabs/weird.exp: weirdx.o read without error -PASS: gdb.stabs/weird.exp: stabs found -PASS: gdb.stabs/weird.exp: variable var0 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var0) -PASS: gdb.stabs/weird.exp: variable var1 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var1) -PASS: gdb.stabs/weird.exp: variable var2 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var2) -PASS: gdb.stabs/weird.exp: variable var3 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var3) -PASS: gdb.stabs/weird.exp: variable attr32 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr32) -PASS: gdb.stabs/weird.exp: variable attr33 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr33) -PASS: gdb.stabs/weird.exp: variable attr35 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr35) -PASS: gdb.stabs/weird.exp: variable attr36 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr36) -PASS: gdb.stabs/weird.exp: variable attr37 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr37) -PASS: gdb.stabs/weird.exp: variable attr38 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr38) -PASS: gdb.stabs/weird.exp: variable attr39 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr39) -PASS: gdb.stabs/weird.exp: variable attr41 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr41) -PASS: gdb.stabs/weird.exp: variable attr42 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr42) -PASS: gdb.stabs/weird.exp: variable attr43 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr43) -PASS: gdb.stabs/weird.exp: variable attr44 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr44) -PASS: gdb.stabs/weird.exp: variable attr46 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr46) -PASS: gdb.stabs/weird.exp: variable attr47 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr47) -PASS: gdb.stabs/weird.exp: variable attr58 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr58) -PASS: gdb.stabs/weird.exp: variable attr59 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr59) -PASS: gdb.stabs/weird.exp: variable attr60 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr60) -PASS: gdb.stabs/weird.exp: variable attr61 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr61) -PASS: gdb.stabs/weird.exp: variable attr62 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr62) -PASS: gdb.stabs/weird.exp: variable attr63 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr63) -PASS: gdb.stabs/weird.exp: variable attr64 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr64) -PASS: gdb.stabs/weird.exp: variable attr65 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr65) -PASS: gdb.stabs/weird.exp: variable attr66 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr66) -PASS: gdb.stabs/weird.exp: variable attr67 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr67) -PASS: gdb.stabs/weird.exp: variable attr68 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr68) -PASS: gdb.stabs/weird.exp: variable attr69 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr69) -PASS: gdb.stabs/weird.exp: variable attr70 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr70) -PASS: gdb.stabs/weird.exp: variable attr71 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr71) -PASS: gdb.stabs/weird.exp: variable attr72 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr72) -PASS: gdb.stabs/weird.exp: variable attr73 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr73) -PASS: gdb.stabs/weird.exp: variable attr74 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr74) -PASS: gdb.stabs/weird.exp: variable attr75 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr75) -PASS: gdb.stabs/weird.exp: variable attr76 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr76) -PASS: gdb.stabs/weird.exp: variable attr77 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr77) -PASS: gdb.stabs/weird.exp: variable attr78 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr78) -PASS: gdb.stabs/weird.exp: variable attr79 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr79) -PASS: gdb.stabs/weird.exp: variable attr80 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr80) -PASS: gdb.stabs/weird.exp: variable attr81 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr81) -PASS: gdb.stabs/weird.exp: variable attr82 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr82) -PASS: gdb.stabs/weird.exp: variable attr83 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr83) -PASS: gdb.stabs/weird.exp: variable attr84 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr84) -PASS: gdb.stabs/weird.exp: variable attr85 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr85) -PASS: gdb.stabs/weird.exp: variable attr86 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr86) -PASS: gdb.stabs/weird.exp: variable attr87 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr87) -PASS: gdb.stabs/weird.exp: variable attr88 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr88) -PASS: gdb.stabs/weird.exp: variable attr89 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr89) -PASS: gdb.stabs/weird.exp: variable attr90 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr90) -PASS: gdb.stabs/weird.exp: variable attr91 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr91) -PASS: gdb.stabs/weird.exp: variable attr92 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr92) -PASS: gdb.stabs/weird.exp: variable attr93 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr93) -PASS: gdb.stabs/weird.exp: variable attr94 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr94) -PASS: gdb.stabs/weird.exp: variable attr95 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr95) -PASS: gdb.stabs/weird.exp: variable attr96 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr96) -PASS: gdb.stabs/weird.exp: variable attr97 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr97) -PASS: gdb.stabs/weird.exp: variable attr98 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr98) -PASS: gdb.stabs/weird.exp: variable attr99 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr99) -PASS: gdb.stabs/weird.exp: variable attr100 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr100) -PASS: gdb.stabs/weird.exp: variable attr101 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr101) -PASS: gdb.stabs/weird.exp: variable attr102 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr102) -PASS: gdb.stabs/weird.exp: variable attr103 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr103) -PASS: gdb.stabs/weird.exp: variable attr104 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr104) -PASS: gdb.stabs/weird.exp: variable attr105 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr105) -PASS: gdb.stabs/weird.exp: variable attr106 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr106) -PASS: gdb.stabs/weird.exp: variable attr107 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr107) -PASS: gdb.stabs/weird.exp: variable attr108 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr108) -PASS: gdb.stabs/weird.exp: variable attr109 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr109) -PASS: gdb.stabs/weird.exp: variable attr110 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr110) -PASS: gdb.stabs/weird.exp: variable attr111 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr111) -PASS: gdb.stabs/weird.exp: variable attr112 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr112) -PASS: gdb.stabs/weird.exp: variable attr113 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr113) -PASS: gdb.stabs/weird.exp: variable attr114 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr114) -PASS: gdb.stabs/weird.exp: variable attr115 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr115) -PASS: gdb.stabs/weird.exp: variable attr116 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr116) -PASS: gdb.stabs/weird.exp: variable attr117 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr117) -PASS: gdb.stabs/weird.exp: variable attr118 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr118) -PASS: gdb.stabs/weird.exp: variable attr119 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr119) -PASS: gdb.stabs/weird.exp: variable attr120 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr120) -PASS: gdb.stabs/weird.exp: variable attr121 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr121) -PASS: gdb.stabs/weird.exp: variable attr122 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr122) -PASS: gdb.stabs/weird.exp: variable attr123 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr123) -PASS: gdb.stabs/weird.exp: variable attr124 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr124) -PASS: gdb.stabs/weird.exp: variable attr125 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr125) -PASS: gdb.stabs/weird.exp: variable attr126 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr126) -PASS: gdb.stabs/weird.exp: 'e' constant on non-enum type -PASS: gdb.stabs/weird.exp: whatis const69 -PASS: gdb.stabs/weird.exp: 'e' constant with embedded type -PASS: gdb.stabs/weird.exp: char constant -PASS: gdb.stabs/weird.exp: String constant 1 -PASS: gdb.stabs/weird.exp: String constant 2 -PASS: gdb.stabs/weird.exp: String constant 3 -PASS: gdb.stabs/weird.exp: String constant 4 -PASS: gdb.stabs/weird.exp: p bad_neg0 -PASS: gdb.stabs/weird.exp: ptype on inttype -PASS: gdb.stabs/weird.exp: unrecognized floating point type -PASS: gdb.stabs/weird.exp: print very big integer -PASS: gdb.stabs/weird.exp: whatis consth -PASS: gdb.stabs/weird.exp: whatis consth2 -XFAIL: gdb.stabs/weird.exp: print struct constant -PASS: gdb.stabs/weird.exp: print bad_type0 -PASS: gdb.stabs/weird.exp: print bad_type1 -XFAIL: gdb.stabs/weird.exp: array0 with strange index -XFAIL: gdb.stabs/weird.exp: array1 with strange index -PASS: gdb.stabs/weird.exp: whatis one_var (known failure in gdb 4.10) -PASS: gdb.stabs/weird.exp: whatis one_var test 2 -PASS: gdb.stabs/weird.exp: whatis two_var (known failure in gdb 4.10) -PASS: gdb.stabs/weird.exp: whatis two_var test 2 -XFAIL: gdb.stabs/weird.exp: whatis pointer_to_int_var -XFAIL: gdb.stabs/weird.exp: whatis intp_var -PASS: gdb.stabs/weird.exp: p common0var0 -XFAIL: gdb.stabs/weird.exp: p common0var1 -XFAIL: gdb.stabs/weird.exp: p common0var2 -Running ./gdb.threads/attach-into-signal.exp ... -Running ./gdb.threads/attach-stopped.exp ... -Running ./gdb.threads/bp_in_thread.exp ... -PASS: gdb.threads/bp_in_thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/bp_in_thread.exp: breakpoint on noreturn -PASS: gdb.threads/bp_in_thread.exp: run to noreturn -Running ./gdb.threads/clone-new-thread-event.exp ... -PASS: gdb.threads/clone-new-thread-event.exp: catch SIGUSR1 -Running ./gdb.threads/corethreads.exp ... -Running ./gdb.threads/create-fail.exp ... -PASS: gdb.threads/create-fail.exp: successfully compiled posix threads test case -PASS: gdb.threads/create-fail.exp: iteration 1: run till end -PASS: gdb.threads/create-fail.exp: iteration 2: run till end -PASS: gdb.threads/create-fail.exp: iteration 3: run till end -PASS: gdb.threads/create-fail.exp: iteration 4: run till end -PASS: gdb.threads/create-fail.exp: iteration 5: run till end -PASS: gdb.threads/create-fail.exp: iteration 6: run till end -PASS: gdb.threads/create-fail.exp: iteration 7: run till end -PASS: gdb.threads/create-fail.exp: iteration 8: run till end -PASS: gdb.threads/create-fail.exp: iteration 9: run till end -PASS: gdb.threads/create-fail.exp: iteration 10: run till end -Running ./gdb.threads/current-lwp-dead.exp ... -PASS: gdb.threads/current-lwp-dead.exp: continue to breakpoint: fn_return -Running ./gdb.threads/execl.exp ... -Running ./gdb.threads/fork-child-threads.exp ... -Running ./gdb.threads/fork-thread-pending.exp ... -Running ./gdb.threads/gcore-thread.exp ... -PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/gcore-thread.exp: help gcore -PASS: gdb.threads/gcore-thread.exp: thread 1 is running -PASS: gdb.threads/gcore-thread.exp: thread 2 is running -PASS: gdb.threads/gcore-thread.exp: save a corefile -PASS: gdb.threads/gcore-thread.exp: clear __stack_user.next -PASS: gdb.threads/gcore-thread.exp: clear stack_used.next -PASS: gdb.threads/gcore-thread.exp: save a zeroed-threads corefile -FAIL: gdb.threads/gcore-thread.exp: corefile: re-load generated corefile (bad file format) -FAIL: gdb.threads/gcore-thread.exp: core0file: re-load generated corefile (bad file format) -Running ./gdb.threads/hand-call-in-threads.exp ... -PASS: gdb.threads/hand-call-in-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on all_threads_running -PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on hand_call -PASS: gdb.threads/hand-call-in-threads.exp: run to all_threads_running -PASS: gdb.threads/hand-call-in-threads.exp: enable scheduler locking -PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking on -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: set confirm off -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: all dummies popped -PASS: gdb.threads/hand-call-in-threads.exp: disable scheduler locking -PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking off -Running ./gdb.threads/ia64-sigill.exp ... -PASS: gdb.threads/ia64-sigill.exp: successfully compiled posix threads test case -PASS: gdb.threads/ia64-sigill.exp: info addr label -PASS: gdb.threads/ia64-sigill.exp: set $sigill_bpnum=$bpnum -PASS: gdb.threads/ia64-sigill.exp: set debug infrun 1 -PASS: gdb.threads/ia64-sigill.exp: continue -PASS: gdb.threads/ia64-sigill.exp: delete $sigill_bpnum -PASS: gdb.threads/ia64-sigill.exp: continue for the pending signal -Running ./gdb.threads/interrupted-hand-call.exp ... -PASS: gdb.threads/interrupted-hand-call.exp: successfully compiled posix threads test case -PASS: gdb.threads/interrupted-hand-call.exp: breakpoint on all_threads_running -PASS: gdb.threads/interrupted-hand-call.exp: run to all_threads_running -PASS: gdb.threads/interrupted-hand-call.exp: hand-call interrupted by signal in another thread -PASS: gdb.threads/interrupted-hand-call.exp: dummy stack frame present -PASS: gdb.threads/interrupted-hand-call.exp: finish hand-call -PASS: gdb.threads/interrupted-hand-call.exp: dummy frame popped -PASS: gdb.threads/interrupted-hand-call.exp: continue until exit -Running ./gdb.threads/killed.exp ... -PASS: gdb.threads/killed.exp: successfully compiled posix threads test case -PASS: gdb.threads/killed.exp: run program to completion -PASS: gdb.threads/killed.exp: GDB exits after multi-threaded program exits messily -Running ./gdb.threads/leader-exit.exp ... -PASS: gdb.threads/leader-exit.exp: successfully compiled posix threads test case -FAIL: gdb.threads/leader-exit.exp: continue to breakpoint: break-here (timeout) -FAIL: gdb.threads/leader-exit.exp: Single thread has been left (timeout) -Running ./gdb.threads/linux-dp.exp ... -PASS: gdb.threads/linux-dp.exp: successfully compiled posix threads test case -PASS: gdb.threads/linux-dp.exp: set print sevenbit-strings -PASS: gdb.threads/linux-dp.exp: info threads 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 0 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 0 -PASS: gdb.threads/linux-dp.exp: info threads after: 0 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 1 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 1 -PASS: gdb.threads/linux-dp.exp: info threads after: 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 2 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 2 -PASS: gdb.threads/linux-dp.exp: info threads after: 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 3 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 3 -PASS: gdb.threads/linux-dp.exp: info threads after: 3 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 4 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 4 -PASS: gdb.threads/linux-dp.exp: info threads after: 4 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: main thread's sleep -PASS: gdb.threads/linux-dp.exp: info threads 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print -PASS: gdb.threads/linux-dp.exp: first thread-specific breakpoint hit -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 0 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 3 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 4 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 5 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 6 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 7 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 8 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 9 -PASS: gdb.threads/linux-dp.exp: thread-specific breakpoint is thread-specific -PASS: gdb.threads/linux-dp.exp: selected thread: 1 -PASS: gdb.threads/linux-dp.exp: main is distinct: 1 -PASS: gdb.threads/linux-dp.exp: selected thread: 2 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 2 -PASS: gdb.threads/linux-dp.exp: selected thread: 3 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 3 -PASS: gdb.threads/linux-dp.exp: selected thread: 4 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 4 -PASS: gdb.threads/linux-dp.exp: selected thread: 5 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 5 -PASS: gdb.threads/linux-dp.exp: selected thread: 6 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 6 -PASS: gdb.threads/linux-dp.exp: found an interesting thread -PASS: gdb.threads/linux-dp.exp: manager thread found (not found) when expected -Running ./gdb.threads/local-watch-wrong-thread.exp ... -Running ./gdb.threads/manythreads.exp ... -PASS: gdb.threads/manythreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/manythreads.exp: set print sevenbit-strings -PASS: gdb.threads/manythreads.exp: shell stty intr '^C' -PASS: gdb.threads/manythreads.exp: first continue -PASS: gdb.threads/manythreads.exp: stop threads 1 -PASS: gdb.threads/manythreads.exp: info threads -PASS: gdb.threads/manythreads.exp: give a name to the thread -PASS: gdb.threads/manythreads.exp: check thread name -PASS: gdb.threads/manythreads.exp: second continue -PASS: gdb.threads/manythreads.exp: check for duplicate SIGINT -PASS: gdb.threads/manythreads.exp: stop threads 2 -PASS: gdb.threads/manythreads.exp: GDB exits after stopping multithreaded program -Running ./gdb.threads/multi-create.exp ... -PASS: gdb.threads/multi-create.exp: successfully compiled posix threads test case -PASS: gdb.threads/multi-create.exp: continue to breakpoint 0 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 1 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 2 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 3 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 4 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 5 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 6 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 7 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 8 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 9 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 10 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 11 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 12 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 13 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 14 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 15 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 16 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 17 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 18 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 19 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 20 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 21 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 22 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 23 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 24 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 25 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 26 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 27 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 28 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 29 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 30 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 31 -Running ./gdb.threads/non-ldr-exc-1.exp ... -Running ./gdb.threads/non-ldr-exc-2.exp ... -Running ./gdb.threads/non-ldr-exc-3.exp ... -Running ./gdb.threads/non-ldr-exc-4.exp ... -Running ./gdb.threads/no-unwaited-for-left.exp ... -PASS: gdb.threads/no-unwaited-for-left.exp: successfully compiled posix threads test case -PASS: gdb.threads/no-unwaited-for-left.exp: continue to breakpoint: break-here -PASS: gdb.threads/no-unwaited-for-left.exp: enable scheduler-locking, for thread 2 -FAIL: gdb.threads/no-unwaited-for-left.exp: continue stops when thread 2 exits (the program exited) -FAIL: gdb.threads/no-unwaited-for-left.exp: only main thread left, thread 2 terminated -PASS: gdb.threads/no-unwaited-for-left.exp: select main thread -FAIL: gdb.threads/no-unwaited-for-left.exp: disable scheduler-locking, letting new thread start -FAIL: gdb.threads/no-unwaited-for-left.exp: continue to breakpoint: break-here-2 -FAIL: gdb.threads/no-unwaited-for-left.exp: enable scheduler-locking, for main thread -FAIL: gdb.threads/no-unwaited-for-left.exp: continue stops when the main thread exits (the program is no longer running) -FAIL: gdb.threads/no-unwaited-for-left.exp: only thread 3 left, main thread terminated -Running ./gdb.threads/pending-step.exp ... -PASS: gdb.threads/pending-step.exp: successfully compiled posix threads test case -PASS: gdb.threads/pending-step.exp: continue to breakpoint: continue to first breakpoint hit -PASS: gdb.threads/pending-step.exp: next in multiple threads with breakpoints -Running ./gdb.threads/print-threads.exp ... -PASS: gdb.threads/print-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/print-threads.exp: set print sevenbit-strings -PASS: gdb.threads/print-threads.exp: set width 0 -PASS: gdb.threads/print-threads.exp: shell stty intr '^C' -PASS: gdb.threads/print-threads.exp: break thread_function -PASS: gdb.threads/print-threads.exp: set var slow = 0 -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (fast) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (fast) -PASS: gdb.threads/print-threads.exp: break thread_function (2) -PASS: gdb.threads/print-threads.exp: set var slow = 1 -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (slow) -PASS: gdb.threads/print-threads.exp: break thread_function (3) -PASS: gdb.threads/print-threads.exp: set var slow = 1 (2) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (slow with kill breakpoint) -Running ./gdb.threads/pthread_cond_wait.exp ... -PASS: gdb.threads/pthread_cond_wait.exp: successfully compiled posix threads test case -PASS: gdb.threads/pthread_cond_wait.exp: breakpoint on break_me -PASS: gdb.threads/pthread_cond_wait.exp: run to break_me -PASS: gdb.threads/pthread_cond_wait.exp: backtrace in blocked thread -Running ./gdb.threads/pthreads.exp ... -PASS: gdb.threads/pthreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/pthreads.exp: set print sevenbit-strings -PASS: gdb.threads/pthreads.exp: set width 0 -PASS: gdb.threads/pthreads.exp: shell stty intr '^C' -PASS: gdb.threads/pthreads.exp: info threads -PASS: gdb.threads/pthreads.exp: break thread1 -PASS: gdb.threads/pthreads.exp: Continue to creation of first thread -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: break thread2 -PASS: gdb.threads/pthreads.exp: Continue to creation of second thread -PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0 -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15 -PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times -PASS: gdb.threads/pthreads.exp: All threads running after startup -PASS: gdb.threads/pthreads.exp: Continue with all threads running -PASS: gdb.threads/pthreads.exp: Stopped with a ^C -PASS: gdb.threads/pthreads.exp: bt -PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0 -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15 -PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times -PASS: gdb.threads/pthreads.exp: All threads running after continuing from ^C stop -PASS: gdb.threads/pthreads.exp: check backtrace from main thread -PASS: gdb.threads/pthreads.exp: check backtrace from thread 1 -PASS: gdb.threads/pthreads.exp: check backtrace from thread 2 -PASS: gdb.threads/pthreads.exp: apply backtrace command to all three threads -PASS: gdb.threads/pthreads.exp: set break at common_routine in thread 2 -PASS: gdb.threads/pthreads.exp: continue to bkpt at common_routine in thread 2 -PASS: gdb.threads/pthreads.exp: backtrace from thread 2 bkpt in common_routine -Running ./gdb.threads/schedlock.exp ... -PASS: gdb.threads/schedlock.exp: successfully compiled posix threads test case -PASS: gdb.threads/schedlock.exp: shell stty intr '^C' -PASS: gdb.threads/schedlock.exp: set print sevenbit-strings -PASS: gdb.threads/schedlock.exp: set width 0 -PASS: gdb.threads/schedlock.exp: scheduler locking set to none -PASS: gdb.threads/schedlock.exp: continue to breakpoint: all threads started -PASS: gdb.threads/schedlock.exp: listed args (1) -PASS: gdb.threads/schedlock.exp: continue (initial) -PASS: gdb.threads/schedlock.exp: stop all threads (initial) -PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (initial) -PASS: gdb.threads/schedlock.exp: listed args (2) -PASS: gdb.threads/schedlock.exp: all threads alive -PASS: gdb.threads/schedlock.exp: find current thread (1) -PASS: gdb.threads/schedlock.exp: set scheduler-locking off -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 0) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 1) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 2) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 3) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 4) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 5) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 6) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 7) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 8) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 9) -PASS: gdb.threads/schedlock.exp: find current thread (2) -PASS: gdb.threads/schedlock.exp: step without lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (3) -PASS: gdb.threads/schedlock.exp: current thread stepped -PASS: gdb.threads/schedlock.exp: other threads ran - unlocked -PASS: gdb.threads/schedlock.exp: set scheduler-locking on -PASS: gdb.threads/schedlock.exp: continue (with lock) -PASS: gdb.threads/schedlock.exp: stop all threads (with lock) -PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (with lock) -PASS: gdb.threads/schedlock.exp: find current thread (3) -PASS: gdb.threads/schedlock.exp: continue with lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (4) -PASS: gdb.threads/schedlock.exp: current thread ran -PASS: gdb.threads/schedlock.exp: other threads didn't run - locked -PASS: gdb.threads/schedlock.exp: step to increment (locked 0) -PASS: gdb.threads/schedlock.exp: step to increment (locked 1) -PASS: gdb.threads/schedlock.exp: step to increment (locked 2) -PASS: gdb.threads/schedlock.exp: step to increment (locked 3) -PASS: gdb.threads/schedlock.exp: step to increment (locked 4) -PASS: gdb.threads/schedlock.exp: step to increment (locked 5) -PASS: gdb.threads/schedlock.exp: step to increment (locked 6) -PASS: gdb.threads/schedlock.exp: step to increment (locked 7) -PASS: gdb.threads/schedlock.exp: step to increment (locked 8) -PASS: gdb.threads/schedlock.exp: step to increment (locked 9) -PASS: gdb.threads/schedlock.exp: find current thread (2) -PASS: gdb.threads/schedlock.exp: step with lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (5) -PASS: gdb.threads/schedlock.exp: current thread stepped locked -PASS: gdb.threads/schedlock.exp: other threads didn't run - step locked -Running ./gdb.threads/siginfo-threads.exp ... -PASS: gdb.threads/siginfo-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/siginfo-threads.exp: handle SIGUSR1 stop print pass -PASS: gdb.threads/siginfo-threads.exp: handle SIGUSR2 stop print pass -PASS: gdb.threads/siginfo-threads.exp: get pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 0 -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 1 -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 2 -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 3 -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_pid -PASS: gdb.threads/siginfo-threads.exp: continue to breakpoint: break-at-exit -Running ./gdb.threads/sigstep-threads.exp ... -PASS: gdb.threads/sigstep-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/sigstep-threads.exp: handle SIGUSR1 nostop print pass -PASS: gdb.threads/sigstep-threads.exp: set scheduler-locking off -PASS: gdb.threads/sigstep-threads.exp: set $step1=$bpnum -PASS: gdb.threads/sigstep-threads.exp: continue to breakpoint: step-1 -PASS: gdb.threads/sigstep-threads.exp: disable $step1 -PASS: gdb.threads/sigstep-threads.exp: step -Running ./gdb.threads/sigthread.exp ... -PASS: gdb.threads/sigthread.exp: successfully compiled posix threads test case -PASS: gdb.threads/sigthread.exp: handle SIGUSR1 nostop noprint pass -PASS: gdb.threads/sigthread.exp: handle SIGUSR2 nostop noprint pass -PASS: gdb.threads/sigthread.exp: continue -PASS: gdb.threads/sigthread.exp: stop with control-c -Running ./gdb.threads/staticthreads.exp ... -PASS: gdb.threads/staticthreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/staticthreads.exp: set print sevenbit-strings -PASS: gdb.threads/staticthreads.exp: break sem_post -PASS: gdb.threads/staticthreads.exp: Continue to main's call of sem_post -PASS: gdb.threads/staticthreads.exp: rerun to main -PASS: gdb.threads/staticthreads.exp: handle SIG32 nostop noprint pass -PASS: gdb.threads/staticthreads.exp: handle SIG32 helps -PASS: gdb.threads/staticthreads.exp: info threads -PASS: gdb.threads/staticthreads.exp: GDB exits with static thread program -Running ./gdb.threads/switch-threads.exp ... -PASS: gdb.threads/switch-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/switch-threads.exp: continue to breakpoint: continue to thread_func -PASS: gdb.threads/switch-threads.exp: next -Running ./gdb.threads/threadapply.exp ... -PASS: gdb.threads/threadapply.exp: successfully compiled posix threads test case -PASS: gdb.threads/threadapply.exp: b 62 -PASS: gdb.threads/threadapply.exp: continue -PASS: gdb.threads/threadapply.exp: macro details -PASS: gdb.threads/threadapply.exp: defining macro -PASS: gdb.threads/threadapply.exp: set backtrace limit 3 -PASS: gdb.threads/threadapply.exp: thread apply all backthread -PASS: gdb.threads/threadapply.exp: step to the thread_function -PASS: gdb.threads/threadapply.exp: go up in the stack frame -PASS: gdb.threads/threadapply.exp: run a simple print command on all threads -PASS: gdb.threads/threadapply.exp: go down and check selected frame -Running ./gdb.threads/thread_check.exp ... -PASS: gdb.threads/thread_check.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread_check.exp: breakpoint at tf -PASS: gdb.threads/thread_check.exp: continue to tf -PASS: gdb.threads/thread_check.exp: backtrace from thread function -Running ./gdb.threads/thread_events.exp ... -Running ./gdb.threads/thread-execl.exp ... -Running ./gdb.threads/thread-find.exp ... -PASS: gdb.threads/thread-find.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-find.exp: set print sevenbit-strings -PASS: gdb.threads/thread-find.exp: continue to breakpoint: main thread's sleep -PASS: gdb.threads/thread-find.exp: info threads -PASS: gdb.threads/thread-find.exp: name thread 1 -PASS: gdb.threads/thread-find.exp: name thread 2 -PASS: gdb.threads/thread-find.exp: name thread 3 -PASS: gdb.threads/thread-find.exp: name thread 4 -PASS: gdb.threads/thread-find.exp: name thread 5 -PASS: gdb.threads/thread-find.exp: name thread 6 -PASS: gdb.threads/thread-find.exp: collect thread id -PASS: gdb.threads/thread-find.exp: got thread ids -PASS: gdb.threads/thread-find.exp: collect process id -PASS: gdb.threads/thread-find.exp: collect lwp id -PASS: gdb.threads/thread-find.exp: find thread name 6 -PASS: gdb.threads/thread-find.exp: find thread name 5 -PASS: gdb.threads/thread-find.exp: find thread name 4 -PASS: gdb.threads/thread-find.exp: find thread name 3 -PASS: gdb.threads/thread-find.exp: find thread name 2 -PASS: gdb.threads/thread-find.exp: find thread name 1 -PASS: gdb.threads/thread-find.exp: find thread id 6 -PASS: gdb.threads/thread-find.exp: find thread id 5 -PASS: gdb.threads/thread-find.exp: find thread id 4 -PASS: gdb.threads/thread-find.exp: find thread id 3 -PASS: gdb.threads/thread-find.exp: find thread id 2 -PASS: gdb.threads/thread-find.exp: find thread id 1 -PASS: gdb.threads/thread-find.exp: no thread -PASS: gdb.threads/thread-find.exp: test regular exp -PASS: gdb.threads/thread-find.exp: info threads 2 4 6 -PASS: gdb.threads/thread-find.exp: info threads 3-5 -PASS: gdb.threads/thread-find.exp: test inverted range -PASS: gdb.threads/thread-find.exp: info threads 3-3 -PASS: gdb.threads/thread-find.exp: info thread foo -PASS: gdb.threads/thread-find.exp: info thread foo -1 -Running ./gdb.threads/thread-specific.exp ... -PASS: gdb.threads/thread-specific.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-specific.exp: set print sevenbit-strings -PASS: gdb.threads/thread-specific.exp: set width 0 -PASS: gdb.threads/thread-specific.exp: thread var when not running -PASS: gdb.threads/thread-specific.exp: continue to breakpoint: all threads started -PASS: gdb.threads/thread-specific.exp: get threads list -PASS: gdb.threads/thread-specific.exp: thread var in main -PASS: gdb.threads/thread-specific.exp: breakpoint 59 main thread -PASS: gdb.threads/thread-specific.exp: continue to thread-specific breakpoint -PASS: gdb.threads/thread-specific.exp: found breakpoint for thread number -PASS: gdb.threads/thread-specific.exp: thread var at break -Running ./gdb.threads/thread-unwindonsignal.exp ... -PASS: gdb.threads/thread-unwindonsignal.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-unwindonsignal.exp: breakpoint on all_threads_running -PASS: gdb.threads/thread-unwindonsignal.exp: run to all_threads_running -PASS: gdb.threads/thread-unwindonsignal.exp: setting unwindonsignal -PASS: gdb.threads/thread-unwindonsignal.exp: showing unwindonsignal -PASS: gdb.threads/thread-unwindonsignal.exp: hand-call interrupted by signal in another thread -PASS: gdb.threads/thread-unwindonsignal.exp: dummy stack frame present -PASS: gdb.threads/thread-unwindonsignal.exp: wrong thread not unwound -PASS: gdb.threads/thread-unwindonsignal.exp: finish hand-call -PASS: gdb.threads/thread-unwindonsignal.exp: dummy frame popped -PASS: gdb.threads/thread-unwindonsignal.exp: continue until exit -Running ./gdb.threads/threxit-hop-specific.exp ... -PASS: gdb.threads/threxit-hop-specific.exp: successfully compiled posix threads test case -PASS: gdb.threads/threxit-hop-specific.exp: continue to thread start -PASS: gdb.threads/threxit-hop-specific.exp: set thread specific breakpoint -PASS: gdb.threads/threxit-hop-specific.exp: get past the thread specific breakpoint -Running ./gdb.threads/tls.exp ... -PASS: gdb.threads/tls.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls.exp: set breakpoint at all threads -PASS: gdb.threads/tls.exp: set breakpoint at synch point -PASS: gdb.threads/tls.exp: set breakpoint at exit -PASS: gdb.threads/tls.exp: continue to first thread: get to thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at first th -PASS: gdb.threads/tls.exp: first thread print me -PASS: gdb.threads/tls.exp: first thread local storage -PASS: gdb.threads/tls.exp: first another thread local storage -PASS: gdb.threads/tls.exp: first info address a_thread_local -PASS: gdb.threads/tls.exp: first info address another_thread_local -PASS: gdb.threads/tls.exp: continue to second thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at second th -PASS: gdb.threads/tls.exp: second thread print me -PASS: gdb.threads/tls.exp: second thread local storage -PASS: gdb.threads/tls.exp: second another thread local storage -PASS: gdb.threads/tls.exp: second info address a_thread_local -PASS: gdb.threads/tls.exp: second info address another_thread_local -PASS: gdb.threads/tls.exp: continue to third thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at third th -PASS: gdb.threads/tls.exp: third thread print me -PASS: gdb.threads/tls.exp: third thread local storage -PASS: gdb.threads/tls.exp: third another thread local storage -PASS: gdb.threads/tls.exp: third info address a_thread_local -PASS: gdb.threads/tls.exp: third info address another_thread_local -PASS: gdb.threads/tls.exp: continue to synch point -PASS: gdb.threads/tls.exp: get number of threads -PASS: gdb.threads/tls.exp: selected thread: 1 -PASS: gdb.threads/tls.exp: backtrace of thread number 1 not relevant -PASS: gdb.threads/tls.exp: selected thread: 2 -PASS: gdb.threads/tls.exp: backtrace of thread number 2 in spin -PASS: gdb.threads/tls.exp: selected thread: 3 -PASS: gdb.threads/tls.exp: backtrace of thread number 3 in spin -PASS: gdb.threads/tls.exp: selected thread: 4 -PASS: gdb.threads/tls.exp: backtrace of thread number 4 in spin -PASS: gdb.threads/tls.exp: selected thread: 4 -PASS: gdb.threads/tls.exp: thread 4 up -PASS: gdb.threads/tls.exp: 4 thread print me -PASS: gdb.threads/tls.exp: 4 thread local storage -PASS: gdb.threads/tls.exp: 4 another thread local storage -PASS: gdb.threads/tls.exp: 4 info address a_thread_local -PASS: gdb.threads/tls.exp: 4 info address another_thread_local -PASS: gdb.threads/tls.exp: selected thread: 2 -PASS: gdb.threads/tls.exp: thread 2 up -PASS: gdb.threads/tls.exp: 2 thread print me -PASS: gdb.threads/tls.exp: 2 thread local storage -PASS: gdb.threads/tls.exp: 2 another thread local storage -PASS: gdb.threads/tls.exp: 2 info address a_thread_local -PASS: gdb.threads/tls.exp: 2 info address another_thread_local -PASS: gdb.threads/tls.exp: selected thread: 3 -PASS: gdb.threads/tls.exp: thread 3 up -PASS: gdb.threads/tls.exp: 3 thread print me -PASS: gdb.threads/tls.exp: 3 thread local storage -PASS: gdb.threads/tls.exp: 3 another thread local storage -PASS: gdb.threads/tls.exp: 3 info address a_thread_local -PASS: gdb.threads/tls.exp: 3 info address another_thread_local -PASS: gdb.threads/tls.exp: threads exited -PASS: gdb.threads/tls.exp: Expect only base thread at end -PASS: gdb.threads/tls.exp: info address a_global -PASS: gdb.threads/tls.exp: info address me -PASS: gdb.threads/tls.exp: p a_thread_local -FAIL: gdb.threads/tls.exp: p file2_thread_local -PASS: gdb.threads/tls.exp: info address file2_thread_local -PASS: gdb.threads/tls.exp: p a_thread_local second time -PASS: gdb.threads/tls.exp: info address a_thread_local -Running ./gdb.threads/tls-nodebug.exp ... -PASS: gdb.threads/tls-nodebug.exp: successfully compiled posix threads test case -FAIL: gdb.threads/tls-nodebug.exp: thread local storage -Running ./gdb.threads/tls-shared.exp ... -PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-shared.exp: print thread local storage variable -PASS: gdb.threads/tls-shared.exp: ptype of thread local storage variable -PASS: gdb.threads/tls-shared.exp: print storage info for thread local storage variable -PASS: gdb.threads/tls-shared.exp: break at and of main -PASS: gdb.threads/tls-shared.exp: continue to break -PASS: gdb.threads/tls-shared.exp: print result -Running ./gdb.threads/tls-var.exp ... -PASS: gdb.threads/tls-var.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-var.exp: whatis tls_var -PASS: gdb.threads/tls-var.exp: print tls_var -Running ./gdb.threads/watchpoint-fork.exp ... -KFAIL: gdb.threads/watchpoint-fork.exp: gdbserver does not support debugging across fork (PRMS: remote/13584) -Running ./gdb.threads/watchthreads2.exp ... -Running ./gdb.threads/watchthreads.exp ... -Running ./gdb.threads/watchthreads-reorder.exp ... -Running ./gdb.trace/actions.exp ... -PASS: gdb.trace/actions.exp: 5.1a: set three tracepoints, no actions -PASS: gdb.trace/actions.exp: 5.1b: set actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.1c: verify actions set for first tracepoint -PASS: gdb.trace/actions.exp: 5.1d: set actions for second tracepoint -PASS: gdb.trace/actions.exp: 5.1e: verify actions set for second tracepoint -PASS: gdb.trace/actions.exp: 5.2a: set actions for last (default) tracepoint -PASS: gdb.trace/actions.exp: 5.2b: verify actions set for second tracepoint -PASS: gdb.trace/actions.exp: 5.3a: reset actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.3b: verify actions set for first tracepoint -PASS: gdb.trace/actions.exp: 5.4: 'end' command out of context -PASS: gdb.trace/actions.exp: 5.5a: set empty actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.5c: verify NO actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.6: actions for invalid tracepoint number -PASS: gdb.trace/actions.exp: 5.7: invalid action -PASS: gdb.trace/actions.exp: 5.8a: help actions -PASS: gdb.trace/actions.exp: 5.8b: help collect -PASS: gdb.trace/actions.exp: 5.8c: help while-stepping -PASS: gdb.trace/actions.exp: 5.8d: help end -PASS: gdb.trace/actions.exp: 5.9a: set default-collect -PASS: gdb.trace/actions.exp: 5.9b: show default-collect -PASS: gdb.trace/actions.exp: 5.9c: set default-collect -PASS: gdb.trace/actions.exp: Create a trace state variable -PASS: gdb.trace/actions.exp: 5.10a: set teval action for first tracepoint -PASS: gdb.trace/actions.exp: 5.10a: set teval action for second tracepoint -PASS: gdb.trace/actions.exp: 5.10a: verify teval actions set for two tracepoints -Running ./gdb.trace/ax.exp ... -PASS: gdb.trace/ax.exp: maint agent 12 -PASS: gdb.trace/ax.exp: maint agent gdb_char_test -PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[12] -PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[gdb_short_test] -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.s -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.arr[gdb_struct1_test.c] -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->l -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->bfield -PASS: gdb.trace/ax.exp: maint agent gdb_long_test + gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test - gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test * gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test / gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test + 1 -PASS: gdb.trace/ax.exp: maint agent gdb_long_test == gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test != gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test < gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test <= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test > gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test >= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent &gdb_long_test == &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent &gdb_long_test < &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval 12 -PASS: gdb.trace/ax.exp: maint agent-eval gdb_char_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[12] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[gdb_short_test] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.s -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.arr[gdb_struct1_test.c] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->l -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->bfield -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test + gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test - gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test * gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test / gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test + 1 -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test == gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test != gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test < gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test <= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test > gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test >= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test == &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test < &gdb_short_test -Running ./gdb.trace/backtrace.exp ... -PASS: gdb.trace/backtrace.exp: 8.6: setup TP to collect regs -PASS: gdb.trace/backtrace.exp: 8.6: setup TP to collect regs, args, and locals -PASS: gdb.trace/backtrace.exp: 8.6: setup TP to collect stack mem cast expr -PASS: gdb.trace/backtrace.exp: run trace experiment -PASS: gdb.trace/backtrace.exp: init: make sure not debugging any trace frame -PASS: gdb.trace/backtrace.exp: 8.6: find start frame -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 1 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 2 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 4 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 8.6: find frame 5 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 2, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 6 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 2, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 7 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 2, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 9 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 8.6: find frame 10 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 3, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 11 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 3, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 12 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 3, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 14 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 8.6: find frame 15 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 4, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 16 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 4, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 17 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 4, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 19 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 1.13: trace in recursion: depth not equal to 3 -Running ./gdb.trace/change-loc.exp ... -PASS: gdb.trace/change-loc.exp: 1 trace: delete break 1 -PASS: gdb.trace/change-loc.exp: 1 trace: next -PASS: gdb.trace/change-loc.exp: 1 trace: set tracepoint on main -PASS: gdb.trace/change-loc.exp: 1 trace: breakpoint on marker -PASS: gdb.trace/change-loc.exp: 1 trace: tstart -PASS: gdb.trace/change-loc.exp: 1 trace: continue to marker 1 -PASS: gdb.trace/change-loc.exp: 1 trace: set tracepoint on set_tracepoint -PASS: gdb.trace/change-loc.exp: 1 trace: set action for tracepoint -FAIL: gdb.trace/change-loc.exp: 1 trace: tracepoint with two locations -PASS: gdb.trace/change-loc.exp: 1 trace: continue to marker 2 -FAIL: gdb.trace/change-loc.exp: 1 trace: tracepoint with three locations -PASS: gdb.trace/change-loc.exp: 1 trace: continue to marker 3 -FAIL: gdb.trace/change-loc.exp: 1 trace: tracepoint with two locations (unload) -PASS: gdb.trace/change-loc.exp: 1 trace: tstop -FAIL: gdb.trace/change-loc.exp: 1 trace: tfind frame 0 -PASS: gdb.trace/change-loc.exp: 1 trace: tfind -PASS: gdb.trace/change-loc.exp: 2 trace: set pending tracepoint -PASS: gdb.trace/change-loc.exp: 2 trace: set action for tracepoint -PASS: gdb.trace/change-loc.exp: 2 trace: single pending tracepoint info (without symbols) -PASS: gdb.trace/change-loc.exp: 2 trace: tracepoint with one location -PASS: gdb.trace/change-loc.exp: 2 trace: run to main -PASS: gdb.trace/change-loc.exp: 2 trace: delete break 2 -FAIL: gdb.trace/change-loc.exp: 2 trace: tracepoint with two locations -PASS: gdb.trace/change-loc.exp: 2 trace: breakpoint on marker -PASS: gdb.trace/change-loc.exp: 2 trace: tstart -PASS: gdb.trace/change-loc.exp: 2 trace: continue to marker 1 -PASS: gdb.trace/change-loc.exp: 2 trace: continue to marker 2 -FAIL: gdb.trace/change-loc.exp: 2 trace: tracepoint with three locations -PASS: gdb.trace/change-loc.exp: 2 trace: continue to marker 3 -FAIL: gdb.trace/change-loc.exp: 2 trace: tracepoint with two locations (unload) -PASS: gdb.trace/change-loc.exp: 2 trace: tstop -PASS: gdb.trace/change-loc.exp: 2 trace: tfind frame 0 -FAIL: gdb.trace/change-loc.exp: 2 trace: tfind frame 1 -FAIL: gdb.trace/change-loc.exp: 2 trace: tfind frame 2 -PASS: gdb.trace/change-loc.exp: 2 trace: tfind -ERROR: (DejaGnu) proc "else\{" does not exist. -Running ./gdb.xml/tdesc-arch.exp ... -PASS: gdb.xml/tdesc-arch.exp: read valid architectures -PASS: gdb.xml/tdesc-arch.exp: read default architecture -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (first architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (first architecture) -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (second architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (second architecture) -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (invalid architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (invalid architecture) -Running ./gdb.xml/tdesc-errors.exp ... -PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-bogus.xml -PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-unknown.xml -Running ./gdb.xml/tdesc-regs.exp ... -PASS: gdb.xml/tdesc-regs.exp: set tdesc file single-reg.xml -PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from extra-regs.xml -PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg -PASS: gdb.xml/tdesc-regs.exp: ptype $uintreg -PASS: gdb.xml/tdesc-regs.exp: ptype $vecreg -PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg -PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg.v4 -PASS: gdb.xml/tdesc-regs.exp: ptype $structreg -PASS: gdb.xml/tdesc-regs.exp: ptype $structreg.v4 -PASS: gdb.xml/tdesc-regs.exp: ptype $bitfields -PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from core-only.xml -PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg -Running ./gdb.xml/tdesc-xinclude.exp ... -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/includes.xml -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/bad-include.xml -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/loop.xml - - === gdb Summary === - -# of expected passes 17663 -# of unexpected failures 251 -# of unexpected successes 1 -# of expected failures 30 -# of unknown successes 1 -# of known failures 41 -# of untested testcases 54 -# of unresolved testcases 9 -# of unsupported tests 106 -/var/tmp/portage/cross-i686-pc-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb version 7.6.1 -nw -nx -data-directory /var/tmp/portage/cross-i686-pc-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../data-directory - diff --git a/deprecated/dejagnu/gdb_baseline/x86_64-cros-linux-gnu b/deprecated/dejagnu/gdb_baseline/x86_64-cros-linux-gnu deleted file mode 100644 index a9245eab..00000000 --- a/deprecated/dejagnu/gdb_baseline/x86_64-cros-linux-gnu +++ /dev/null @@ -1,19294 +0,0 @@ -Test Run By yunlian on Mon Dec 16 14:52:38 2013 -Target is x86_64-cros-linux-gnu - - === gdb tests === - -Schedule of variations: - lumpy - -Running target lumpy -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 ... -PASS: gdb.arch/amd64-byte.exp: set first breakpoint in main -PASS: gdb.arch/amd64-byte.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/amd64-byte.exp: check contents of %al -PASS: gdb.arch/amd64-byte.exp: check contents of %bl -PASS: gdb.arch/amd64-byte.exp: check contents of %cl -PASS: gdb.arch/amd64-byte.exp: check contents of %dl -PASS: gdb.arch/amd64-byte.exp: check contents of %sil -PASS: gdb.arch/amd64-byte.exp: check contents of %dil -PASS: gdb.arch/amd64-byte.exp: check contents of %ah -PASS: gdb.arch/amd64-byte.exp: check contents of %bh -PASS: gdb.arch/amd64-byte.exp: check contents of %ch -PASS: gdb.arch/amd64-byte.exp: check contents of %dh -PASS: gdb.arch/amd64-byte.exp: set second breakpoint in main -PASS: gdb.arch/amd64-byte.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/amd64-byte.exp: check contents of %r8l -PASS: gdb.arch/amd64-byte.exp: check contents of %r9l -PASS: gdb.arch/amd64-byte.exp: check contents of %r10l -PASS: gdb.arch/amd64-byte.exp: check contents of %r11l -PASS: gdb.arch/amd64-byte.exp: check contents of %r12l -PASS: gdb.arch/amd64-byte.exp: check contents of %r13l -PASS: gdb.arch/amd64-byte.exp: check contents of %r14l -PASS: gdb.arch/amd64-byte.exp: check contents of %r15l -PASS: gdb.arch/amd64-byte.exp: set %al -PASS: gdb.arch/amd64-byte.exp: set %bl -PASS: gdb.arch/amd64-byte.exp: set %cl -PASS: gdb.arch/amd64-byte.exp: set %dl -PASS: gdb.arch/amd64-byte.exp: set %sil -PASS: gdb.arch/amd64-byte.exp: set %dil -PASS: gdb.arch/amd64-byte.exp: set %ah -PASS: gdb.arch/amd64-byte.exp: set %bh -PASS: gdb.arch/amd64-byte.exp: set %ch -PASS: gdb.arch/amd64-byte.exp: set %dh -PASS: gdb.arch/amd64-byte.exp: set third breakpoint in main -PASS: gdb.arch/amd64-byte.exp: continue to breakpoint: continue to third breakpoint in main -PASS: gdb.arch/amd64-byte.exp: check contents of %al -PASS: gdb.arch/amd64-byte.exp: check contents of %bl -PASS: gdb.arch/amd64-byte.exp: check contents of %cl -PASS: gdb.arch/amd64-byte.exp: check contents of %dl -PASS: gdb.arch/amd64-byte.exp: check contents of %sil -PASS: gdb.arch/amd64-byte.exp: check contents of %dil -PASS: gdb.arch/amd64-byte.exp: check contents of %ah -PASS: gdb.arch/amd64-byte.exp: check contents of %bh -PASS: gdb.arch/amd64-byte.exp: check contents of %ch -PASS: gdb.arch/amd64-byte.exp: check contents of %dh -PASS: gdb.arch/amd64-byte.exp: set %r8l -PASS: gdb.arch/amd64-byte.exp: set %r9l -PASS: gdb.arch/amd64-byte.exp: set %r10l -PASS: gdb.arch/amd64-byte.exp: set %r11l -PASS: gdb.arch/amd64-byte.exp: set %r12l -PASS: gdb.arch/amd64-byte.exp: set %r13l -PASS: gdb.arch/amd64-byte.exp: set %r14l -PASS: gdb.arch/amd64-byte.exp: set %r15l -PASS: gdb.arch/amd64-byte.exp: set forth breakpoint in main -PASS: gdb.arch/amd64-byte.exp: continue to breakpoint: continue to forth breakpoint in main -PASS: gdb.arch/amd64-byte.exp: check contents of %r8l -PASS: gdb.arch/amd64-byte.exp: check contents of %r9l -PASS: gdb.arch/amd64-byte.exp: check contents of %r10l -PASS: gdb.arch/amd64-byte.exp: check contents of %r11l -PASS: gdb.arch/amd64-byte.exp: check contents of %r12l -PASS: gdb.arch/amd64-byte.exp: check contents of %r13l -PASS: gdb.arch/amd64-byte.exp: check contents of %r14l -PASS: gdb.arch/amd64-byte.exp: check contents of %r15l -Running ./gdb.arch/amd64-disp-step.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /tmp/ccQtpEfb.o: requires unsupported dynamic reloc 11; recompile with -fPIC -collect2: error: ld returned 1 exit status -UNTESTED: gdb.arch/amd64-disp-step.exp: amd64-disp-step.exp -Running ./gdb.arch/amd64-dword.exp ... -PASS: gdb.arch/amd64-dword.exp: set first breakpoint in main -PASS: gdb.arch/amd64-dword.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/amd64-dword.exp: check contents of %eax -PASS: gdb.arch/amd64-dword.exp: check contents of %ebx -PASS: gdb.arch/amd64-dword.exp: check contents of %ecx -PASS: gdb.arch/amd64-dword.exp: check contents of %edx -PASS: gdb.arch/amd64-dword.exp: check contents of %esi -PASS: gdb.arch/amd64-dword.exp: check contents of %edi -PASS: gdb.arch/amd64-dword.exp: set second breakpoint in main -PASS: gdb.arch/amd64-dword.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/amd64-dword.exp: check contents of %r8d -PASS: gdb.arch/amd64-dword.exp: check contents of %r9d -PASS: gdb.arch/amd64-dword.exp: check contents of %r10d -PASS: gdb.arch/amd64-dword.exp: check contents of %r11d -PASS: gdb.arch/amd64-dword.exp: check contents of %r12d -PASS: gdb.arch/amd64-dword.exp: check contents of %r13d -PASS: gdb.arch/amd64-dword.exp: check contents of %r14d -PASS: gdb.arch/amd64-dword.exp: check contents of %r15d -PASS: gdb.arch/amd64-dword.exp: set %eax -PASS: gdb.arch/amd64-dword.exp: set %ebx -PASS: gdb.arch/amd64-dword.exp: set %ecx -PASS: gdb.arch/amd64-dword.exp: set %edx -PASS: gdb.arch/amd64-dword.exp: set %esi -PASS: gdb.arch/amd64-dword.exp: set %edi -PASS: gdb.arch/amd64-dword.exp: set third breakpoint in main -PASS: gdb.arch/amd64-dword.exp: continue to breakpoint: continue to third breakpoint in main -PASS: gdb.arch/amd64-dword.exp: check contents of %eax -PASS: gdb.arch/amd64-dword.exp: check contents of %ebx -PASS: gdb.arch/amd64-dword.exp: check contents of %ecx -PASS: gdb.arch/amd64-dword.exp: check contents of %edx -PASS: gdb.arch/amd64-dword.exp: check contents of %esi -PASS: gdb.arch/amd64-dword.exp: check contents of %edi -PASS: gdb.arch/amd64-dword.exp: set %r8d -PASS: gdb.arch/amd64-dword.exp: set %r9d -PASS: gdb.arch/amd64-dword.exp: set %r10d -PASS: gdb.arch/amd64-dword.exp: set %r11d -PASS: gdb.arch/amd64-dword.exp: set %r12d -PASS: gdb.arch/amd64-dword.exp: set %r13d -PASS: gdb.arch/amd64-dword.exp: set %r14d -PASS: gdb.arch/amd64-dword.exp: set %r15d -PASS: gdb.arch/amd64-dword.exp: set forth breakpoint in main -PASS: gdb.arch/amd64-dword.exp: continue to breakpoint: continue to forth breakpoint in main -PASS: gdb.arch/amd64-dword.exp: check contents of %r8d -PASS: gdb.arch/amd64-dword.exp: check contents of %r9d -PASS: gdb.arch/amd64-dword.exp: check contents of %r10d -PASS: gdb.arch/amd64-dword.exp: check contents of %r11d -PASS: gdb.arch/amd64-dword.exp: check contents of %r12d -PASS: gdb.arch/amd64-dword.exp: check contents of %r13d -PASS: gdb.arch/amd64-dword.exp: check contents of %r14d -PASS: gdb.arch/amd64-dword.exp: check contents of %r15d -Running ./gdb.arch/amd64-entry-value.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.arch/amd64-entry-value0.o: requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC -collect2: error: ld returned 1 exit status -UNTESTED: gdb.arch/amd64-entry-value.exp: amd64-entry-value.exp -Running ./gdb.arch/amd64-entry-value-inline.exp ... -PASS: gdb.arch/amd64-entry-value-inline.exp: continue to breakpoint: break-here -FAIL: gdb.arch/amd64-entry-value-inline.exp: p y -Running ./gdb.arch/amd64-entry-value-param.exp ... -PASS: gdb.arch/amd64-entry-value-param.exp: continue to breakpoint: break-here -FAIL: gdb.arch/amd64-entry-value-param.exp: p y -FAIL: gdb.arch/amd64-entry-value-param.exp: p b -PASS: gdb.arch/amd64-entry-value-param.exp: continue to breakpoint: break-here -FAIL: gdb.arch/amd64-entry-value-param.exp: p y -FAIL: gdb.arch/amd64-entry-value-param.exp: p b -PASS: gdb.arch/amd64-entry-value-param.exp: continue to breakpoint: break-here -FAIL: gdb.arch/amd64-entry-value-param.exp: p y -FAIL: gdb.arch/amd64-entry-value-param.exp: p b -Running ./gdb.arch/amd64-i386-address.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: cannot find -lm -collect2: error: ld returned 1 exit status -UNTESTED: gdb.arch/amd64-i386-address.exp: amd64-i386-address.exp -Running ./gdb.arch/amd64-prologue-xmm.exp ... -PASS: gdb.arch/amd64-prologue-xmm.exp: continue to breakpoint: func -PASS: gdb.arch/amd64-prologue-xmm.exp: stopped at func -Running ./gdb.arch/amd64-tailcall-cxx.exp ... -FAIL: gdb.arch/amd64-tailcall-cxx.exp: bt -Running ./gdb.arch/amd64-tailcall-noret.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.arch/amd64-tailcall-noret0.o: requires dynamic R_X86_64_PC32 reloc against 'abort' which may overflow at runtime; recompile with -fPIC -collect2: error: ld returned 1 exit status -UNTESTED: gdb.arch/amd64-tailcall-noret.exp: amd64-tailcall-noret.exp -Running ./gdb.arch/amd64-tailcall-ret.exp ... -PASS: gdb.arch/amd64-tailcall-ret.exp: continue to breakpoint: g -PASS: gdb.arch/amd64-tailcall-ret.exp: return -PASS: gdb.arch/amd64-tailcall-ret.exp: continue to breakpoint: g -PASS: gdb.arch/amd64-tailcall-ret.exp: finish -Running ./gdb.arch/amd64-word.exp ... -PASS: gdb.arch/amd64-word.exp: set first breakpoint in main -PASS: gdb.arch/amd64-word.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/amd64-word.exp: check contents of %ax -PASS: gdb.arch/amd64-word.exp: check contents of %bx -PASS: gdb.arch/amd64-word.exp: check contents of %cx -PASS: gdb.arch/amd64-word.exp: check contents of %dx -PASS: gdb.arch/amd64-word.exp: check contents of %si -PASS: gdb.arch/amd64-word.exp: check contents of %di -PASS: gdb.arch/amd64-word.exp: set second breakpoint in main -PASS: gdb.arch/amd64-word.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/amd64-word.exp: check contents of %r8w -PASS: gdb.arch/amd64-word.exp: check contents of %r9w -PASS: gdb.arch/amd64-word.exp: check contents of %r10w -PASS: gdb.arch/amd64-word.exp: check contents of %r11w -PASS: gdb.arch/amd64-word.exp: check contents of %r12w -PASS: gdb.arch/amd64-word.exp: check contents of %r13w -PASS: gdb.arch/amd64-word.exp: check contents of %r14w -PASS: gdb.arch/amd64-word.exp: check contents of %r15w -PASS: gdb.arch/amd64-word.exp: set %ax -PASS: gdb.arch/amd64-word.exp: set %bx -PASS: gdb.arch/amd64-word.exp: set %cx -PASS: gdb.arch/amd64-word.exp: set %dx -PASS: gdb.arch/amd64-word.exp: set %si -PASS: gdb.arch/amd64-word.exp: set %di -PASS: gdb.arch/amd64-word.exp: set third breakpoint in main -PASS: gdb.arch/amd64-word.exp: continue to breakpoint: continue to third breakpoint in main -PASS: gdb.arch/amd64-word.exp: check contents of %ax -PASS: gdb.arch/amd64-word.exp: check contents of %bx -PASS: gdb.arch/amd64-word.exp: check contents of %cx -PASS: gdb.arch/amd64-word.exp: check contents of %dx -PASS: gdb.arch/amd64-word.exp: check contents of %si -PASS: gdb.arch/amd64-word.exp: check contents of %di -PASS: gdb.arch/amd64-word.exp: set %r8w -PASS: gdb.arch/amd64-word.exp: set %r9w -PASS: gdb.arch/amd64-word.exp: set %r10w -PASS: gdb.arch/amd64-word.exp: set %r11w -PASS: gdb.arch/amd64-word.exp: set %r12w -PASS: gdb.arch/amd64-word.exp: set %r13w -PASS: gdb.arch/amd64-word.exp: set %r14w -PASS: gdb.arch/amd64-word.exp: set %r15w -PASS: gdb.arch/amd64-word.exp: set forth breakpoint in main -PASS: gdb.arch/amd64-word.exp: continue to breakpoint: continue to forth breakpoint in main -PASS: gdb.arch/amd64-word.exp: check contents of %r8w -PASS: gdb.arch/amd64-word.exp: check contents of %r9w -PASS: gdb.arch/amd64-word.exp: check contents of %r10w -PASS: gdb.arch/amd64-word.exp: check contents of %r11w -PASS: gdb.arch/amd64-word.exp: check contents of %r12w -PASS: gdb.arch/amd64-word.exp: check contents of %r13w -PASS: gdb.arch/amd64-word.exp: check contents of %r14w -PASS: gdb.arch/amd64-word.exp: check contents of %r15w -Running ./gdb.arch/arm-bl-branch-dest.exp ... -Running ./gdb.arch/arm-disp-step.exp ... -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 ... -PASS: gdb.arch/i386-avx.exp: check whether processor supports AVX -PASS: gdb.arch/i386-avx.exp: set first breakpoint in main -PASS: gdb.arch/i386-avx.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm0 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm0 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm1 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm1 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm2 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm2 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm3 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm3 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm4 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm4 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm5 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm5 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm6 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm6 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm7 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm7 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm8 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm8 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm9 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm9 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm10 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm10 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm11 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm11 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm12 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm12 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm13 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm13 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm14 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm14 -PASS: gdb.arch/i386-avx.exp: check float contents of %ymm15 -PASS: gdb.arch/i386-avx.exp: check int8 contents of %ymm15 -PASS: gdb.arch/i386-avx.exp: set %ymm0 -PASS: gdb.arch/i386-avx.exp: set %ymm1 -PASS: gdb.arch/i386-avx.exp: set %ymm2 -PASS: gdb.arch/i386-avx.exp: set %ymm3 -PASS: gdb.arch/i386-avx.exp: set %ymm4 -PASS: gdb.arch/i386-avx.exp: set %ymm5 -PASS: gdb.arch/i386-avx.exp: set %ymm6 -PASS: gdb.arch/i386-avx.exp: set %ymm7 -PASS: gdb.arch/i386-avx.exp: set %ymm8 -PASS: gdb.arch/i386-avx.exp: set %ymm9 -PASS: gdb.arch/i386-avx.exp: set %ymm10 -PASS: gdb.arch/i386-avx.exp: set %ymm11 -PASS: gdb.arch/i386-avx.exp: set %ymm12 -PASS: gdb.arch/i386-avx.exp: set %ymm13 -PASS: gdb.arch/i386-avx.exp: set %ymm14 -PASS: gdb.arch/i386-avx.exp: set %ymm15 -PASS: gdb.arch/i386-avx.exp: set second breakpoint in main -PASS: gdb.arch/i386-avx.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/i386-avx.exp: check contents of data[0] -PASS: gdb.arch/i386-avx.exp: check contents of data[1] -PASS: gdb.arch/i386-avx.exp: check contents of data[2] -PASS: gdb.arch/i386-avx.exp: check contents of data[3] -PASS: gdb.arch/i386-avx.exp: check contents of data[4] -PASS: gdb.arch/i386-avx.exp: check contents of data[5] -PASS: gdb.arch/i386-avx.exp: check contents of data[6] -PASS: gdb.arch/i386-avx.exp: check contents of data[7] -PASS: gdb.arch/i386-avx.exp: check contents of data[8] -PASS: gdb.arch/i386-avx.exp: check contents of data[9] -PASS: gdb.arch/i386-avx.exp: check contents of data[10] -PASS: gdb.arch/i386-avx.exp: check contents of data[11] -PASS: gdb.arch/i386-avx.exp: check contents of data[12] -PASS: gdb.arch/i386-avx.exp: check contents of data[13] -PASS: gdb.arch/i386-avx.exp: check contents of data[14] -PASS: gdb.arch/i386-avx.exp: check contents of data[15] -Running ./gdb.arch/i386-bp_permanent.exp ... -Running ./gdb.arch/i386-byte.exp ... -PASS: gdb.arch/i386-byte.exp: set first breakpoint in main -PASS: gdb.arch/i386-byte.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/i386-byte.exp: check contents of %al -PASS: gdb.arch/i386-byte.exp: check contents of %ah -PASS: gdb.arch/i386-byte.exp: check contents of %bl -PASS: gdb.arch/i386-byte.exp: check contents of %bh -PASS: gdb.arch/i386-byte.exp: check contents of %cl -PASS: gdb.arch/i386-byte.exp: check contents of %ch -PASS: gdb.arch/i386-byte.exp: check contents of %dl -PASS: gdb.arch/i386-byte.exp: check contents of %dh -PASS: gdb.arch/i386-byte.exp: set %al -PASS: gdb.arch/i386-byte.exp: set %ah -PASS: gdb.arch/i386-byte.exp: set %bl -PASS: gdb.arch/i386-byte.exp: set %bh -PASS: gdb.arch/i386-byte.exp: set %cl -PASS: gdb.arch/i386-byte.exp: set %ch -PASS: gdb.arch/i386-byte.exp: set %dl -PASS: gdb.arch/i386-byte.exp: set %dh -PASS: gdb.arch/i386-byte.exp: set second breakpoint in main -PASS: gdb.arch/i386-byte.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/i386-byte.exp: check contents of %al -PASS: gdb.arch/i386-byte.exp: check contents of %ah -PASS: gdb.arch/i386-byte.exp: check contents of %bl -PASS: gdb.arch/i386-byte.exp: check contents of %bh -PASS: gdb.arch/i386-byte.exp: check contents of %cl -PASS: gdb.arch/i386-byte.exp: check contents of %ch -PASS: gdb.arch/i386-byte.exp: check contents of %dl -PASS: gdb.arch/i386-byte.exp: check contents of %dh -Running ./gdb.arch/i386-cfi-notcurrent.exp ... -Running ./gdb.arch/i386-disp-step.exp ... -Running ./gdb.arch/i386-dr3-watch.exp ... -PASS: gdb.arch/i386-dr3-watch.exp: set breakpoint always-inserted on -PASS: gdb.arch/i386-dr3-watch.exp: watch i1 -PASS: gdb.arch/i386-dr3-watch.exp: watch i2 -PASS: gdb.arch/i386-dr3-watch.exp: watch i3 -PASS: gdb.arch/i386-dr3-watch.exp: watch i4 -PASS: gdb.arch/i386-dr3-watch.exp: continue to i1 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: continue to i2 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: continue to i3 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: continue to i4 watchpoint -PASS: gdb.arch/i386-dr3-watch.exp: set watchpoint occuping one debug register -PASS: gdb.arch/i386-dr3-watch.exp: watchpoint on gap1 does not fit debug registers -PASS: gdb.arch/i386-dr3-watch.exp: delete all watchpoints -PASS: gdb.arch/i386-dr3-watch.exp: watch i1 still fits -PASS: gdb.arch/i386-dr3-watch.exp: watch i2 still fits -PASS: gdb.arch/i386-dr3-watch.exp: watch i3 still fits -PASS: gdb.arch/i386-dr3-watch.exp: watch i4 still fits -Running ./gdb.arch/i386-float.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.arch/i386-float0.o: requires unsupported dynamic reloc 11; recompile with -fPIC -collect2: error: ld returned 1 exit status -UNTESTED: gdb.arch/i386-float.exp: break.exp -Running ./gdb.arch/i386-gnu-cfi.exp ... -Running ./gdb.arch/i386-permbkpt.exp ... -PASS: gdb.arch/i386-permbkpt.exp: First permanent break -PASS: gdb.arch/i386-permbkpt.exp: Second permanent break -Running ./gdb.arch/i386-prologue.exp ... -Running ./gdb.arch/i386-signal.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /tmp/ccAjQh8y.o: requires unsupported dynamic reloc 11; recompile with -fPIC -collect2: error: ld returned 1 exit status -UNTESTED: gdb.arch/i386-signal.exp: i386-signal.exp -Running ./gdb.arch/i386-size.exp ... -Running ./gdb.arch/i386-size-overlap.exp ... -Running ./gdb.arch/i386-sse.exp ... -PASS: gdb.arch/i386-sse.exp: check whether processor supports SSE -PASS: gdb.arch/i386-sse.exp: set first breakpoint in main -PASS: gdb.arch/i386-sse.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm0 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm0 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm1 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm1 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm2 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm2 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm3 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm3 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm4 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm4 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm5 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm5 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm6 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm6 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm7 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm7 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm8 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm8 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm9 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm9 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm10 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm10 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm11 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm11 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm12 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm12 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm13 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm13 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm14 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm14 -PASS: gdb.arch/i386-sse.exp: check float contents of %xmm15 -PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm15 -PASS: gdb.arch/i386-sse.exp: set %xmm0 -PASS: gdb.arch/i386-sse.exp: set %xmm1 -PASS: gdb.arch/i386-sse.exp: set %xmm2 -PASS: gdb.arch/i386-sse.exp: set %xmm3 -PASS: gdb.arch/i386-sse.exp: set %xmm4 -PASS: gdb.arch/i386-sse.exp: set %xmm5 -PASS: gdb.arch/i386-sse.exp: set %xmm6 -PASS: gdb.arch/i386-sse.exp: set %xmm7 -PASS: gdb.arch/i386-sse.exp: set %xmm8 -PASS: gdb.arch/i386-sse.exp: set %xmm9 -PASS: gdb.arch/i386-sse.exp: set %xmm10 -PASS: gdb.arch/i386-sse.exp: set %xmm11 -PASS: gdb.arch/i386-sse.exp: set %xmm12 -PASS: gdb.arch/i386-sse.exp: set %xmm13 -PASS: gdb.arch/i386-sse.exp: set %xmm14 -PASS: gdb.arch/i386-sse.exp: set %xmm15 -PASS: gdb.arch/i386-sse.exp: set second breakpoint in main -PASS: gdb.arch/i386-sse.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/i386-sse.exp: check contents of data[0] -PASS: gdb.arch/i386-sse.exp: check contents of data[1] -PASS: gdb.arch/i386-sse.exp: check contents of data[2] -PASS: gdb.arch/i386-sse.exp: check contents of data[3] -PASS: gdb.arch/i386-sse.exp: check contents of data[4] -PASS: gdb.arch/i386-sse.exp: check contents of data[5] -PASS: gdb.arch/i386-sse.exp: check contents of data[6] -PASS: gdb.arch/i386-sse.exp: check contents of data[7] -PASS: gdb.arch/i386-sse.exp: check contents of data[8] -PASS: gdb.arch/i386-sse.exp: check contents of data[9] -PASS: gdb.arch/i386-sse.exp: check contents of data[10] -PASS: gdb.arch/i386-sse.exp: check contents of data[11] -PASS: gdb.arch/i386-sse.exp: check contents of data[12] -PASS: gdb.arch/i386-sse.exp: check contents of data[13] -PASS: gdb.arch/i386-sse.exp: check contents of data[14] -PASS: gdb.arch/i386-sse.exp: check contents of data[15] -Running ./gdb.arch/i386-sse-stack-align.exp ... -Running ./gdb.arch/i386-unwind.exp ... -Running ./gdb.arch/i386-word.exp ... -PASS: gdb.arch/i386-word.exp: set first breakpoint in main -PASS: gdb.arch/i386-word.exp: continue to breakpoint: continue to first breakpoint in main -PASS: gdb.arch/i386-word.exp: check contents of %ax -PASS: gdb.arch/i386-word.exp: check contents of %bx -PASS: gdb.arch/i386-word.exp: check contents of %cx -PASS: gdb.arch/i386-word.exp: check contents of %dx -PASS: gdb.arch/i386-word.exp: set %ax -PASS: gdb.arch/i386-word.exp: set %bx -PASS: gdb.arch/i386-word.exp: set %cx -PASS: gdb.arch/i386-word.exp: set %dx -PASS: gdb.arch/i386-word.exp: set second breakpoint in main -PASS: gdb.arch/i386-word.exp: continue to breakpoint: continue to second breakpoint in main -PASS: gdb.arch/i386-word.exp: check contents of %ax -PASS: gdb.arch/i386-word.exp: check contents of %bx -PASS: gdb.arch/i386-word.exp: check contents of %cx -PASS: gdb.arch/i386-word.exp: check contents of %dx -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 ... -PASS: gdb.arch/system-gcore.exp: help gcore -PASS: gdb.arch/system-gcore.exp: set breakpoint at terminal_func -PASS: gdb.arch/system-gcore.exp: continue to terminal_func -PASS: gdb.arch/system-gcore.exp: save a corefile -FAIL: gdb.arch/system-gcore.exp: re-load generated corefile (bad file format) -Running ./gdb.arch/thumb2-it.exp ... -Running ./gdb.arch/thumb-bx-pc.exp ... -Running ./gdb.arch/thumb-prologue.exp ... -Running ./gdb.arch/thumb-singlestep.exp ... -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 -FAIL: gdb.base/auxv.exp: load core file for info auxv on gcore-created dump -FAIL: gdb.base/auxv.exp: info auxv on gcore-created dump -FAIL: 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 *) 0x55555555470c = $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 -PASS: 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 -PASS: gdb.base/break.exp: check disable with history values -PASS: gdb.base/break.exp: disable with convenience values -PASS: 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 -PASS: 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 -PASS: 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) -PASS: gdb.base/break.exp: continue until exit at recursive next test -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) -PASS: gdb.base/callfuncs.exp: p t_float_values(3.14159,-2.3765) -PASS: gdb.base/callfuncs.exp: p t_float_values(float_val1,float_val2) -PASS: gdb.base/callfuncs.exp: p t_float_values(3.14159,float_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_float_values2(3.14159,float_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_double_values(45.654,-67.66) -PASS: gdb.base/callfuncs.exp: p t_double_values(double_val1,double_val2) -PASS: gdb.base/callfuncs.exp: p t_double_values(45.654,double_val2) -PASS: gdb.base/callfuncs.exp: p t_double_values(double_val1,-67.66) -PASS: gdb.base/callfuncs.exp: Call function with many double arguments. -PASS: gdb.base/callfuncs.exp: p t_double_int(99.0, 1) -PASS: gdb.base/callfuncs.exp: p t_double_int(99.0, 99) -PASS: gdb.base/callfuncs.exp: p t_int_double(99, 1.0) -PASS: gdb.base/callfuncs.exp: p t_int_double(99, 99.0) -PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc1, fc2) -PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc3, fc4) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2) -PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc3, dc4) -PASS: 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) -PASS: 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) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_string_values("string 1","string 2") -PASS: gdb.base/callfuncs.exp: p t_string_values("string 1",string_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p t_char_array_values("carray 1","carray 2") -PASS: gdb.base/callfuncs.exp: p t_char_array_values("carray 1",char_array_val2) -PASS: 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) -PASS: gdb.base/callfuncs.exp: p sum_args(1,{2}) -PASS: gdb.base/callfuncs.exp: p sum_args(2,{2,3}) -PASS: gdb.base/callfuncs.exp: p sum_args(3,{2,3,4}) -PASS: 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 -PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex -PASS: 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 -PASS: 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() -PASS: 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 -PASS: gdb.base/call-strs.exp: step after assignment to s -PASS: gdb.base/call-strs.exp: next over strcpy -PASS: gdb.base/call-strs.exp: print buf -PASS: gdb.base/call-strs.exp: print s -Running ./gdb.base/catch-load.exp ... -PASS: 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 -PASS: gdb.base/catch-load.exp: plain load: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: plain load with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx load: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx load with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: non-matching load: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: plain unload: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx unload: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: continue -PASS: 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 -PASS: gdb.base/catch-load.exp: non-matching unload: continue -PASS: 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 -PASS: 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 -PASS: gdb.base/charset.exp: Assign String16 with prefix u -PASS: gdb.base/charset.exp: Display String String16 with x/hs -PASS: gdb.base/charset.exp: Assign String32 with prefix U -PASS: gdb.base/charset.exp: Display String String32 with x/ws -PASS: gdb.base/charset.exp: Assign String32 with prefix L -PASS: 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 -PASS: gdb.base/chng-syms.exp: continue until exit at breakpoint first time through -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' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete (2) 'p no_var_named_this-' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete 'p values[0].a' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete 'p values[0] . a' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: complete 'p &values[0] -> a' -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: completion of field in anonymous union -ERROR: internal buffer is full. -UNRESOLVED: gdb.base/completion.exp: ptype completion of field in anonymous union -ERROR: internal buffer is full. -UNRESOLVED: 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 -PASS: 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 ... -PASS: gdb.base/ctxobj.exp: break in get_version functions -PASS: gdb.base/ctxobj.exp: continue to get_version_1 -PASS: gdb.base/ctxobj.exp: print libctxobj1's this_version_num from partial symtab -PASS: gdb.base/ctxobj.exp: print libctxobj1's this_version_num from symtab -PASS: gdb.base/ctxobj.exp: continue to get_version_2 -PASS: gdb.base/ctxobj.exp: print libctxobj2's this_version_num from partial symtab -PASS: 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 -PASS: 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 -PASS: 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 ... -PASS: gdb.base/dfp-test.exp: get integer valueof "sizeof (long)" (8) -PASS: gdb.base/dfp-test.exp: next after initializing d32 -PASS: gdb.base/dfp-test.exp: d32 is initialized to 1.2345 -PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d32 -PASS: gdb.base/dfp-test.exp: d32 is positive Infinity -PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d32 -PASS: gdb.base/dfp-test.exp: d32 is negative Infinity -PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d32 -PASS: gdb.base/dfp-test.exp: d32 is NaN -PASS: gdb.base/dfp-test.exp: p d32=123.45df -PASS: gdb.base/dfp-test.exp: p d32=12345.df -PASS: gdb.base/dfp-test.exp: p d32=12345.67df -PASS: gdb.base/dfp-test.exp: p d32=1234567.df -PASS: gdb.base/dfp-test.exp: p d32=1.234567E0df -PASS: gdb.base/dfp-test.exp: p d32=1.234567E10df -PASS: gdb.base/dfp-test.exp: p d32=1.234567E+96df -PASS: gdb.base/dfp-test.exp: p d32=9.999999E96df -PASS: gdb.base/dfp-test.exp: p d32=1.0E-95df -PASS: gdb.base/dfp-test.exp: p d32=1.E-101df -PASS: gdb.base/dfp-test.exp: p d32=0.000001E-95df -PASS: gdb.base/dfp-test.exp: 1.2345678 is rounded to 1.234568 -PASS: gdb.base/dfp-test.exp: 1.0E-101 is rounded to 1E-101 -PASS: gdb.base/dfp-test.exp: 1.234567E+97 is Infinity -PASS: gdb.base/dfp-test.exp: 12345. is a valid number -PASS: gdb.base/dfp-test.exp: 12345 is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number -PASS: gdb.base/dfp-test.exp: next after initializing d64 -PASS: gdb.base/dfp-test.exp: d64 is initialized to 1.2345 -PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d64 -PASS: gdb.base/dfp-test.exp: d64 is positive Infinity -PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d64 -PASS: gdb.base/dfp-test.exp: d64 is negative Infinity -PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d64 -PASS: gdb.base/dfp-test.exp: d64 is NaN -PASS: gdb.base/dfp-test.exp: p d64=123.45dd -PASS: gdb.base/dfp-test.exp: p d64=12345.dd -PASS: gdb.base/dfp-test.exp: p d64=12345.67dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E10dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E100dd -PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E384dd -PASS: gdb.base/dfp-test.exp: p d64=9.999999999999999E384dd -PASS: gdb.base/dfp-test.exp: p d64=1.E-383dd -PASS: gdb.base/dfp-test.exp: p d64=1.E-398dd -PASS: gdb.base/dfp-test.exp: p d64=0.000000000000001E-383dd -PASS: gdb.base/dfp-test.exp: 1.2345678901234567 is rounded to 1.234567890123457 -PASS: gdb.base/dfp-test.exp: d64=9.9999999999999999E384 is Infinity -PASS: gdb.base/dfp-test.exp: d64=1.234567890123456E385 is Infinity -PASS: gdb.base/dfp-test.exp: 12345dd is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number -PASS: gdb.base/dfp-test.exp: next after initializing d128 -PASS: gdb.base/dfp-test.exp: d128 is initialized to 1.2345 -PASS: gdb.base/dfp-test.exp: p d128=123.45dl -PASS: gdb.base/dfp-test.exp: p d128=12345.dl -PASS: gdb.base/dfp-test.exp: p d128=12345.67dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456789012345678901234dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E10dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E100dl -PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E1000dl -PASS: gdb.base/dfp-test.exp: p d128=9.999999999999999999999999999999999E6144dl -PASS: gdb.base/dfp-test.exp: p d128=1.E-6143dl -PASS: gdb.base/dfp-test.exp: p d128=1.E-6176dl -PASS: gdb.base/dfp-test.exp: p d128=0.000000000000000000000000000000001E-6143dl -PASS: gdb.base/dfp-test.exp: 1.2345678901234567890123456789012345 is rounded to 1.234567890123456789012345678901234 -PASS: gdb.base/dfp-test.exp: d128=1.234567890123456E6145 is Infinity -PASS: gdb.base/dfp-test.exp: 12345dl is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number -PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number -PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d128 -PASS: gdb.base/dfp-test.exp: d128 is positive Infinity -PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d128 -PASS: gdb.base/dfp-test.exp: d128 is negative Infinity -PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d128 -PASS: gdb.base/dfp-test.exp: d128 is NaN -PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_32 -PASS: gdb.base/dfp-test.exp: backtrace at arg0_32 -PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_64 -PASS: gdb.base/dfp-test.exp: backtrace at arg0_64 -PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_128 -PASS: gdb.base/dfp-test.exp: backtrace at arg0_128 -PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal32 arguments. -PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal32 arguments. -PASS: gdb.base/dfp-test.exp: Correct _Decimal32 return value from called function. -PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal64 arguments. -PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal64 arguments. -PASS: gdb.base/dfp-test.exp: Correct _Decimal64 return value from called function. -PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal128 arguments. -PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal128 arguments. -PASS: gdb.base/dfp-test.exp: Correct _Decimal128 return value from called function. -PASS: gdb.base/dfp-test.exp: Call function with mixed decimal float arguments TEST. -PASS: gdb.base/dfp-test.exp: Call function with mixed decimal float arguments. -PASS: gdb.base/dfp-test.exp: Call function with many _Decimal32 arguments. -PASS: gdb.base/dfp-test.exp: Call function with many _Decimal64 arguments. -PASS: gdb.base/dfp-test.exp: Call function with many _Decimal128 arguments. -PASS: gdb.base/dfp-test.exp: Call function with many mixed decimal float arguments. -PASS: gdb.base/dfp-test.exp: continue to breakpoint: Setting a decimal struct -PASS: gdb.base/dfp-test.exp: print ds.dec32 -PASS: gdb.base/dfp-test.exp: print ds.dec64 -PASS: gdb.base/dfp-test.exp: print ds.dec128 -PASS: gdb.base/dfp-test.exp: print d32 + ds.dec32 -PASS: gdb.base/dfp-test.exp: print d64 + ds.dec64 -PASS: gdb.base/dfp-test.exp: print d128 + ds.dec128 -PASS: gdb.base/dfp-test.exp: ptype d64 + ds.dec32 -PASS: gdb.base/dfp-test.exp: ptype d128 + ds.dec32 -PASS: gdb.base/dfp-test.exp: ptype d128 + ds.dec64 -PASS: gdb.base/dfp-test.exp: p d32 + 1 -PASS: gdb.base/dfp-test.exp: p 2 + d64 -PASS: gdb.base/dfp-test.exp: p ds.int4 + d128 -PASS: gdb.base/dfp-test.exp: ptype d32 + 1 -PASS: gdb.base/dfp-test.exp: ptype ds.int4 + d128 -PASS: gdb.base/dfp-test.exp: p !d32 -PASS: gdb.base/dfp-test.exp: p !d64 -PASS: gdb.base/dfp-test.exp: p !d128 -PASS: gdb.base/dfp-test.exp: p +d32 -PASS: gdb.base/dfp-test.exp: p +d64 -PASS: gdb.base/dfp-test.exp: p +d128 -PASS: gdb.base/dfp-test.exp: p d64 == d128 -PASS: gdb.base/dfp-test.exp: p d128 == ds.dec32 -PASS: gdb.base/dfp-test.exp: p d128 == d32 -PASS: gdb.base/dfp-test.exp: p ds.dec32 == ds.dec64 -PASS: gdb.base/dfp-test.exp: p d32 < ds.dec32 -PASS: gdb.base/dfp-test.exp: p d64 < ds.dec64 -PASS: gdb.base/dfp-test.exp: p d128 < ds.dec128 -PASS: gdb.base/dfp-test.exp: p ds.dec32 < d32 -PASS: gdb.base/dfp-test.exp: p d64 > ds.dec64 -PASS: gdb.base/dfp-test.exp: p ds.dec128 > d128 -PASS: gdb.base/dfp-test.exp: p d32 < ds.int4 -PASS: gdb.base/dfp-test.exp: p ds.int4 > d32 -PASS: gdb.base/dfp-test.exp: p ds.dec32 < ds.int4 -PASS: gdb.base/dfp-test.exp: p ds.int4 > ds.dec64 -PASS: gdb.base/dfp-test.exp: p ds.dec128 > ds.int4 -PASS: gdb.base/dfp-test.exp: p d32 + ds.long8 -PASS: gdb.base/dfp-test.exp: p d64 + ds.float4 -PASS: gdb.base/dfp-test.exp: p ds.double8 + d128 -PASS: gdb.base/dfp-test.exp: print ds.dec32=d32 -PASS: gdb.base/dfp-test.exp: print ds.dec64=d64 -PASS: gdb.base/dfp-test.exp: print ds.dec128=d128 -PASS: gdb.base/dfp-test.exp: print ds.dec32 = -d32 -PASS: gdb.base/dfp-test.exp: print ds.dec64 = -d64 -PASS: gdb.base/dfp-test.exp: print ds.dec128 = -d128 -PASS: gdb.base/dfp-test.exp: print ds.double8 = ds.dec64 -PASS: gdb.base/dfp-test.exp: print ds.dec64 = ds.float4 -PASS: gdb.base/dfp-test.exp: print ds.dec128 = -ds.double8 -PASS: gdb.base/dfp-test.exp: print ds.dec128 = ds.dec32 -PASS: gdb.base/dfp-test.exp: print ds.dec32 = ds.int4 -PASS: gdb.base/dfp-test.exp: print ds.int4 = 7.3dl -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 ... -PASS: gdb.base/disp-step-syscall.exp: fork: delete break 1 -PASS: gdb.base/disp-step-syscall.exp: fork: break marker -PASS: gdb.base/disp-step-syscall.exp: fork: set displaced-stepping off -PASS: gdb.base/disp-step-syscall.exp: fork: break fork -PASS: gdb.base/disp-step-syscall.exp: fork: continue to fork (1st time) -PASS: gdb.base/disp-step-syscall.exp: fork: continue to fork (2nd time) -PASS: gdb.base/disp-step-syscall.exp: fork: display/i $pc -PASS: gdb.base/disp-step-syscall.exp: fork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: fork: stepi fork insn -PASS: gdb.base/disp-step-syscall.exp: fork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: fork: continue to fork (3rd time) -PASS: gdb.base/disp-step-syscall.exp: fork: break on syscall insns -PASS: gdb.base/disp-step-syscall.exp: fork: delete break fork -PASS: gdb.base/disp-step-syscall.exp: fork: continue to syscall insn fork -PASS: gdb.base/disp-step-syscall.exp: fork: set displaced-stepping on -PASS: gdb.base/disp-step-syscall.exp: fork: single step over fork -PASS: gdb.base/disp-step-syscall.exp: fork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: fork: single step over fork final pc -PASS: gdb.base/disp-step-syscall.exp: fork: delete break fork insn -PASS: gdb.base/disp-step-syscall.exp: fork: continue to marker (fork) -PASS: gdb.base/disp-step-syscall.exp: vfork: delete break 1 -PASS: gdb.base/disp-step-syscall.exp: vfork: break marker -PASS: gdb.base/disp-step-syscall.exp: vfork: set displaced-stepping off -PASS: gdb.base/disp-step-syscall.exp: vfork: break vfork -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to vfork (1st time) -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to vfork (2nd time) -PASS: gdb.base/disp-step-syscall.exp: vfork: display/i $pc -PASS: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: vfork: stepi vfork insn -PASS: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to vfork (3rd time) -PASS: gdb.base/disp-step-syscall.exp: vfork: break on syscall insns -PASS: gdb.base/disp-step-syscall.exp: vfork: delete break vfork -PASS: gdb.base/disp-step-syscall.exp: vfork: continue to syscall insn vfork -PASS: gdb.base/disp-step-syscall.exp: vfork: set displaced-stepping on -KFAIL: gdb.base/disp-step-syscall.exp: vfork: single step over vfork (PRMS: server/13796) -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 -PASS: gdb.base/dprintf.exp: 1st dprintf, agent -PASS: gdb.base/dprintf.exp: 2nd dprintf, agent -PASS: gdb.base/dprintf.exp: dprintf info 2 -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 -PASS: 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 -PASS: gdb.base/dprintf-pending.exp: without symbols: run to resolved dprintf -PASS: gdb.base/dprintf-pending.exp: set pending dprintf -PASS: gdb.base/dprintf-pending.exp: single pending dprintf info -PASS: gdb.base/dprintf-pending.exp: run to resolved dprintf -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 -FAIL: gdb.base/dump.exp: dump array as value, intel hex -FAIL: 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 -FAIL: gdb.base/dump.exp: dump array as memory, ihex -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: gdb.base/dump.exp: struct as memory, srec; value restored ok -PASS: gdb.base/dump.exp: print zero_all () -FAIL: gdb.base/dump.exp: array as value, ihex; file restored ok -PASS: gdb.base/dump.exp: array as value, ihex; capture intarray -FAIL: gdb.base/dump.exp: array as value, ihex; value restored ok -FAIL: gdb.base/dump.exp: struct as value, ihex; file restored ok -PASS: gdb.base/dump.exp: struct as value, ihex; capture intstruct -FAIL: gdb.base/dump.exp: struct as value, ihex; value restored ok -PASS: gdb.base/dump.exp: print zero_all () -FAIL: gdb.base/dump.exp: array as memory, ihex; file restored ok -PASS: gdb.base/dump.exp: array as memory, ihex; capture intarray -FAIL: gdb.base/dump.exp: array as memory, ihex; value restored ok -FAIL: gdb.base/dump.exp: struct as memory, ihex; file restored ok -PASS: gdb.base/dump.exp: struct as memory, ihex; capture intstruct -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: 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 -FAIL: gdb.base/dump.exp: struct copy, srec; value restored ok -PASS: gdb.base/dump.exp: print zero_all () -FAIL: gdb.base/dump.exp: array copy, ihex; file restored ok -PASS: gdb.base/dump.exp: array copy, ihex; capture intarray2 -FAIL: gdb.base/dump.exp: array copy, ihex; value restored ok -FAIL: gdb.base/dump.exp: struct copy, ihex; file restored ok -PASS: gdb.base/dump.exp: struct copy, ihex; capture intstruct2 -FAIL: 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 -FAIL: 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 -FAIL: 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 () -FAIL: gdb.base/dump.exp: array partial, srec; file restored ok -PASS: gdb.base/dump.exp: array partial, srec; capture intarray[3] -FAIL: 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 () -FAIL: gdb.base/dump.exp: array partial, ihex; file restored ok -PASS: gdb.base/dump.exp: array partial, ihex; capture intarray[3] -FAIL: 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 () -FAIL: gdb.base/dump.exp: array partial, tekhex; file restored ok -PASS: gdb.base/dump.exp: array partial, tekhex; capture intarray[3] -FAIL: 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 -FAIL: gdb.base/dump.exp: array partial with expressions; file restored ok -PASS: gdb.base/dump.exp: array partial with expressions; capture intarray2[3] -FAIL: 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]) 0x555555556040 -FAIL: 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 *) 0x555555556140 -FAIL: 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]) 0x555555556040 -FAIL: 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 *) 0x555555556140 -FAIL: gdb.base/dump.exp: reload struct as memory, srec; value restored ok -ERROR: Couldn't load intarr1.ihex into /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb. -UNRESOLVED: gdb.base/dump.exp: reload array as value, intel hex; capture * (int (*)[32]) 0x555555556040 -FAIL: gdb.base/dump.exp: reload array as value, intel hex; value restored ok -ERROR: Couldn't load intstr1.ihex into /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb. -UNRESOLVED: gdb.base/dump.exp: reload struct as value, intel hex; capture * (struct teststruct *) 0x555555556140 -FAIL: gdb.base/dump.exp: reload struct as value, intel hex; value restored ok -ERROR: Couldn't load intarr2.ihex into /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb. -UNRESOLVED: gdb.base/dump.exp: reload array as memory, intel hex; capture * (int (*)[32]) 0x555555556040 -FAIL: gdb.base/dump.exp: reload array as memory, intel hex; value restored ok -ERROR: Couldn't load intstr2.ihex into /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb. -UNRESOLVED: gdb.base/dump.exp: reload struct as memory, intel hex; capture * (struct teststruct *) 0x555555556140 -FAIL: 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]) 0x555555556040 -FAIL: 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 *) 0x555555556140 -FAIL: 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]) 0x555555556040 -FAIL: 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 *) 0x555555556140 -FAIL: 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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop -PASS: gdb.base/ena-dis-br.exp: rerun to main -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at auto-disabled break marker2 -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored break marker1 -PASS: gdb.base/ena-dis-br.exp: rerun to main -PASS: gdb.base/ena-dis-br.exp: continue to break marker1, 2nd time -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored & auto-deleted break marker1 -PASS: gdb.base/ena-dis-br.exp: rerun to main -PASS: gdb.base/ena-dis-br.exp: continue to ignored & auto-deleted break marker1 -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 -PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored & disabled break marker1 -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 -PASS: gdb.base/ending-run.exp: step out of main -Running ./gdb.base/enum_cond.exp ... -PASS: gdb.base/enum_cond.exp: break call_me if param.e == 1 -PASS: gdb.base/enum_cond.exp: continue to conditional breakpoint in call_me -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 ... -PASS: gdb.base/exe-lock.exp: continue until 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) (false) -XFAIL: gdb.base/exprs.exp: truncate (void*) 0x00000000ffffffff + 1 -XFAIL: 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 -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 (little-endian, 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 (little-endian, sizeof long != sizeof int) -PASS: gdb.base/funcargs.exp: print un (little-endian, 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 -FAIL: gdb.base/gcore.exp: re-load generated corefile (bad file format) -Running ./gdb.base/gcore-relro.exp ... -PASS: gdb.base/gcore-relro.exp: help gcore -PASS: gdb.base/gcore-relro.exp: save a corefile -FAIL: gdb.base/gcore-relro.exp: re-load generated corefile -FAIL: gdb.base/gcore-relro.exp: library got loaded -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 ... -PASS: gdb.base/gdb1250.exp: backtrace from abort -Running ./gdb.base/gdb1555.exp ... -PASS: gdb.base/gdb1555.exp: Step into shared lib function -PASS: 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 x86_64-cros-linux-gnu-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 x86_64-cros-linux-gnu-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 ... -PASS: gdb.base/gnu-ifunc.exp: continue to breakpoint: break-at-call -FAIL: gdb.base/gnu-ifunc.exp: p gnu_ifunc (3) -FAIL: gdb.base/gnu-ifunc.exp: step -FAIL: gdb.base/gnu-ifunc.exp: continue to break-at-nextcall -FAIL: gdb.base/gnu-ifunc.exp: continue to breakpoint: nextcall gnu_ifunc -FAIL: gdb.base/gnu-ifunc.exp: nextcall gnu_ifunc skipped -PASS: gdb.base/gnu-ifunc.exp: p gnu_ifunc executing -PASS: gdb.base/gnu-ifunc.exp: info sym gnu_ifunc executing -PASS: gdb.base/gnu-ifunc.exp: info addr gnu_ifunc -PASS: gdb.base/gnu-ifunc.exp: info sym -PASS: gdb.base/gnu-ifunc.exp: static 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 -PASS: 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) -PASS: 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) -PASS: gdb.base/hbreak2.exp: continue until exit at recursive next test -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 -FAIL: gdb.base/info-proc.exp: core break.gcore -FAIL: 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 -PASS: gdb.base/jit.exp: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit.exp: one_jit_test-1: set var count = 1 -PASS: gdb.base/jit.exp: one_jit_test-1: continue to breakpoint: break here 1 -PASS: gdb.base/jit.exp: one_jit_test-1: info function jit_function -PASS: 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 -PASS: gdb.base/jit.exp: one_jit_test-2: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit.exp: one_jit_test-2: set var count = 2 -PASS: gdb.base/jit.exp: one_jit_test-2: continue to breakpoint: break here 1 -PASS: gdb.base/jit.exp: one_jit_test-2: info function jit_function -PASS: 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 -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: set var count = 1 -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: continue to breakpoint: break here 1 -PASS: gdb.base/jit.exp: PIE: one_jit_test-1: info function jit_function -PASS: 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 -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var jit_libname = "jit-main.so" -PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here after-dlopen -PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 0 -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var argc = 2 -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit-so.exp: one_jit_test-1: set var count = 1 -PASS: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 1 -PASS: gdb.base/jit-so.exp: one_jit_test-1: info function jit_function -PASS: 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 -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var jit_libname = "jit-main.so" -PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here after-dlopen -PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 0 -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var argc = 2 -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var libname = "SHLIBDIR/jit-solib.so" -PASS: gdb.base/jit-so.exp: one_jit_test-2: set var count = 2 -PASS: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 1 -PASS: gdb.base/jit-so.exp: one_jit_test-2: info function jit_function -PASS: 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 ... -PASS: gdb.base/kill-after-signal.exp: handle SIGUSR1 stop print pass -PASS: gdb.base/kill-after-signal.exp: continue -PASS: gdb.base/kill-after-signal.exp: stepi -PASS: gdb.base/kill-after-signal.exp: kill -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 -PASS: gdb.base/langs.exp: continue until exit at langs.exp -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 ... -PASS: gdb.base/longest-types.exp: print &f->buf -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)" (8) -PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long long)" (8) -PASS: gdb.base/long_long.exp: get integer valueof "sizeof (void *)" (8) -PASS: gdb.base/long_long.exp: get integer valueof "sizeof (double)" (8) -PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long double)" (16) -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 -PASS: 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 ... -PASS: gdb.base/morestack.exp: continue -PASS: gdb.base/morestack.exp: up 3000 -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 -PASS: 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) -PASS: gdb.base/pending.exp: run to resolved breakpoint 1 (without symbols) -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 -PASS: gdb.base/pending.exp: continue to resolved breakpoint 2 -PASS: gdb.base/pending.exp: continue to resolved breakpoint 1 -PASS: gdb.base/pending.exp: Disable other breakpoints -PASS: gdb.base/pending.exp: Disable other breakpoints -PASS: gdb.base/pending.exp: continue to resolved breakpoint 3 -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 ... -PASS: 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 -PASS: gdb.base/pointers.exp: print object pointed to -PASS: 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++ -PASS: gdb.base/pointers.exp: pointer assignment -PASS: gdb.base/pointers.exp: and post-increment -PASS: gdb.base/pointers.exp: set y = *--v_int_pointer2 -PASS: gdb.base/pointers.exp: pointer assignment -PASS: 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 -PASS: gdb.base/pointers.exp: print array element through pointer -PASS: 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 -PASS: 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" -PASS: gdb.base/printcmds.exp: p *"foo" -PASS: gdb.base/printcmds.exp: ptype *"foo" -PASS: gdb.base/printcmds.exp: p &*"foo" -PASS: gdb.base/printcmds.exp: ptype &*"foo" -PASS: 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 -PASS: gdb.base/printcmds.exp: printf "string=%.4sxx\n", teststring -PASS: 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 -PASS: 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 -PASS: gdb.base/print-file-var.exp: print 'print-file-var-lib1.c'::this_version_id == v1 -PASS: 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 -PASS: gdb.base/step-test.exp: continue until exit at step-test.exp -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 -PASS: 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 -PASS: 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 -PASS: 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 -FAIL: gdb.base/store.exp: var doublest l; print old l, expecting -1 -FAIL: gdb.base/store.exp: var doublest l; print old r, expecting -2 -FAIL: gdb.base/store.exp: var doublest l; setting l to 4 -FAIL: 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 -FAIL: gdb.base/store.exp: upvar doublest l; print old l, expecting -1 -FAIL: gdb.base/store.exp: upvar doublest l; print old r, expecting -2 -FAIL: gdb.base/store.exp: upvar doublest l; set l to 4 -FAIL: gdb.base/store.exp: upvar doublest l; print new l, expecting 4 -PASS: gdb.base/store.exp: tbreak wack_struct_1 -PASS: gdb.base/store.exp: continue to wack_struct_1 -PASS: 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 -PASS: gdb.base/store.exp: var struct 1 u; print new u, expecting {s = \{1}} -PASS: gdb.base/store.exp: tbreak wack_struct_2 -PASS: gdb.base/store.exp: continue to wack_struct_2 -PASS: 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 -PASS: gdb.base/store.exp: var struct 2 u; print new u, expecting {s = \{1, 2}} -PASS: gdb.base/store.exp: tbreak wack_struct_3 -PASS: gdb.base/store.exp: continue to wack_struct_3 -PASS: 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 -PASS: 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 -PASS: gdb.base/store.exp: continue to wack_struct_4 -PASS: 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 -PASS: 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 -PASS: gdb.base/structs2.exp: structs2 sanity check -PASS: gdb.base/structs2.exp: structs2 breakpoint set -PASS: gdb.base/structs2.exp: structs2 continue1 -PASS: 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; call 17 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tc -PASS: gdb.base/structs.exp: return foo; return 1 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 3 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 3 structs-tc -PASS: gdb.base/structs.exp: return foo; return 3 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 3 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 3 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 3 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 3 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 3 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 4 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 4 structs-tc -PASS: gdb.base/structs.exp: return foo; return 4 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 4 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 4 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 4 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 4 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 4 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 5 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 5 structs-tc -PASS: gdb.base/structs.exp: return foo; return 5 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 5 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 5 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 5 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 5 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 5 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 5 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 6 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 6 structs-tc -PASS: gdb.base/structs.exp: return foo; return 6 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 6 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 6 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 6 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 6 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 6 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 6 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 7 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 7 structs-tc -PASS: gdb.base/structs.exp: return foo; return 7 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 7 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 7 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 7 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 7 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 7 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 7 structs-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 8 structs-tc -PASS: gdb.base/structs.exp: zed L for return; return 8 structs-tc -PASS: gdb.base/structs.exp: return foo; return 8 structs-tc -PASS: gdb.base/structs.exp: value foo returned; return 8 structs-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 8 structs-tc -PASS: gdb.base/structs.exp: zed L for finish; return 8 structs-tc -PASS: gdb.base/structs.exp: finish foo; return 8 structs-tc -PASS: gdb.base/structs.exp: value foo finished; return 8 structs-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 8 structs-tc -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: ptype foo1; structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 1 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ts -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ts -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-ts -PASS: gdb.base/structs.exp: return foo; return 1 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 1 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ts -PASS: gdb.base/structs.exp: return foo; return 2 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 3 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 3 structs-ts -PASS: gdb.base/structs.exp: return foo; return 3 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 3 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 3 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 3 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 3 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 3 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 4 structs-ts -PASS: gdb.base/structs.exp: zed L for return; return 4 structs-ts -PASS: gdb.base/structs.exp: return foo; return 4 structs-ts -PASS: gdb.base/structs.exp: value foo returned; return 4 structs-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 4 structs-ts -PASS: gdb.base/structs.exp: zed L for finish; return 4 structs-ts -PASS: gdb.base/structs.exp: finish foo; return 4 structs-ts -PASS: gdb.base/structs.exp: value foo finished; return 4 structs-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-ts -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: ptype foo1; structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 1 structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ti -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ti -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-ti -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-ti -PASS: gdb.base/structs.exp: return foo; return 1 structs-ti -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-ti -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-ti -PASS: gdb.base/structs.exp: finish foo; return 1 structs-ti -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ti -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ti -PASS: gdb.base/structs.exp: return foo; return 2 structs-ti -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ti -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ti -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ti -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti -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: ptype foo1; structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tl -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tl -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tl -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tl -PASS: gdb.base/structs.exp: return foo; return 1 structs-tl -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tl -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tl -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tl -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tl -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tl -PASS: gdb.base/structs.exp: return foo; return 2 structs-tl -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tl -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tl -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tl -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl -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: ptype foo1; structs-tll -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tll -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tll -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tll -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tll -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tll -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tll -PASS: gdb.base/structs.exp: return foo; return 1 structs-tll -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tll -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tll -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tll -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tll -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tll -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tll -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: ptype foo1; structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tf -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tf -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tf -PASS: gdb.base/structs.exp: return foo; return 1 structs-tf -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tf -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tf -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tf -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf -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: ptype foo1; structs-td -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-td -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-td -PASS: gdb.base/structs.exp: p/c L; call 1 structs-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-td -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-td -PASS: gdb.base/structs.exp: return foo; return 1 structs-td -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-td -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-td -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-td -PASS: gdb.base/structs.exp: finish foo; return 1 structs-td -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-td -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-td -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: ptype foo1; structs-tld -PASS: gdb.base/structs.exp: p/c fun(); call 1 structs-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 1 structs-tld -PASS: gdb.base/structs.exp: p/c L; call 1 structs-tld -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tld -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tld -PASS: gdb.base/structs.exp: advance to fun for return; return 1 structs-tld -PASS: gdb.base/structs.exp: zed L for return; return 1 structs-tld -PASS: gdb.base/structs.exp: return foo; return 1 structs-tld -PASS: gdb.base/structs.exp: value foo returned; return 1 structs-tld -PASS: gdb.base/structs.exp: advance to fun for finish; return 1 structs-tld -PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tld -PASS: gdb.base/structs.exp: finish foo; return 1 structs-tld -PASS: gdb.base/structs.exp: value foo finished; return 1 structs-tld -PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tld -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: ptype foo2; structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 7 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 7 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 7 structs-ts-tc -PASS: gdb.base/structs.exp: p/c fun(); call 8 structs-ts-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 8 structs-ts-tc -PASS: gdb.base/structs.exp: p/c L; call 8 structs-ts-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ts-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts-tc -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: ptype foo2; structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-ti-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-ti-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-ti-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-ti-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-ti-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti-tc -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: ptype foo2; structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tl-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tl-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tl-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tl-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tl-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl-tc -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: ptype foo2; structs-tll-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tll-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tll-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tll-tc -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: ptype foo2; structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tf-tc -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tf-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tf-tc -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tf-tc -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf-tc -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-tc -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: ptype foo2; structs-td-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td-tc -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: ptype foo2; structs-tld-tc -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tld-tc -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tld-tc -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tld-tc -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: ptype foo2; structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 5 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 5 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 5 structs-tc-ts -PASS: gdb.base/structs.exp: p/c fun(); call 6 structs-tc-ts -PASS: gdb.base/structs.exp: call Fun(foo); call 6 structs-tc-ts -PASS: gdb.base/structs.exp: p/c L; call 6 structs-tc-ts -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-ts -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ts -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: ptype foo2; structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-ti -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-ti -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-ti -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-ti -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-ti -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ti -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: ptype foo2; structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-tl -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-tl -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-tl -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-tl -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: return foo; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tc-tl -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-tl -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: ptype foo2; structs-tc-tll -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tll -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tll -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tll -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: ptype foo2; structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 3 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 3 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 3 structs-tc-tf -PASS: gdb.base/structs.exp: p/c fun(); call 4 structs-tc-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 4 structs-tc-tf -PASS: gdb.base/structs.exp: p/c L; call 4 structs-tc-tf -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: ptype foo2; structs-tc-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-td -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: ptype foo2; structs-tc-tld -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tc-tld -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tc-tld -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tc-tld -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: ptype foo2; structs-td-tf -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-td-tf -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-td-tf -PASS: gdb.base/structs.exp: p/c L; call 2 structs-td-tf -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-td-tf -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-td-tf -PASS: gdb.base/structs.exp: return foo; return 2 structs-td-tf -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-td-tf -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-td-tf -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-td-tf -PASS: gdb.base/structs.exp: finish foo; return 2 structs-td-tf -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-td-tf -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-td-tf -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: ptype foo2; structs-tf-td -PASS: gdb.base/structs.exp: p/c fun(); call 2 structs-tf-td -PASS: gdb.base/structs.exp: call Fun(foo); call 2 structs-tf-td -PASS: gdb.base/structs.exp: p/c L; call 2 structs-tf-td -PASS: gdb.base/structs.exp: advance to fun for return; return 2 structs-tf-td -PASS: gdb.base/structs.exp: zed L for return; return 2 structs-tf-td -PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-td -PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-td -PASS: gdb.base/structs.exp: advance to fun for finish; return 2 structs-tf-td -PASS: gdb.base/structs.exp: zed L for finish; return 2 structs-tf-td -PASS: gdb.base/structs.exp: finish foo; return 2 structs-tf-td -PASS: gdb.base/structs.exp: value foo finished; return 2 structs-tf-td -PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-td -Running ./gdb.base/subst.exp ... -PASS: gdb.base/subst.exp: deactivate GDB's confirmation interface -PASS: gdb.base/subst.exp: show substitute-path, no rule entered yet -PASS: gdb.base/subst.exp: show substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: show substitute-path, too many arguments -PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet -PASS: gdb.base/subst.exp: unset substitute-path, too many arguments -PASS: gdb.base/subst.exp: set substitute-path, too many arguments -PASS: gdb.base/subst.exp: set substitute-path, too few arguments -PASS: gdb.base/subst.exp: set substitute-path, first argument is empty string -PASS: gdb.base/subst.exp: add from -> to substitution rule -PASS: gdb.base/subst.exp: add from1 -> to1 substitution rule -PASS: gdb.base/subst.exp: add source -> destination substitution rule -PASS: gdb.base/subst.exp: add depuis -> vers substitution rule -PASS: gdb.base/subst.exp: add substitution rule to empty string -PASS: gdb.base/subst.exp: show substitute-path after all paths added -PASS: gdb.base/subst.exp: show substitute-path from, after all paths added -PASS: gdb.base/subst.exp: show substitute-path depuis, after all paths added -PASS: gdb.base/subst.exp: show substitute-path garbage, after all paths added -PASS: gdb.base/subst.exp: unset substitute-path from -PASS: gdb.base/subst.exp: show substitute-path from, after unsetting it -PASS: gdb.base/subst.exp: show substitute-path after from rule removed -PASS: gdb.base/subst.exp: unset substitute-path from after the rule was removed -PASS: gdb.base/subst.exp: unset substitute-path depuis (middle of list) -PASS: gdb.base/subst.exp: show substitute-path after depuis rule removed -PASS: gdb.base/subst.exp: unset substitute-path empty (end of list) -PASS: gdb.base/subst.exp: show substitute-path after empty rule removed -PASS: gdb.base/subst.exp: remove all remaining substitution rules -PASS: gdb.base/subst.exp: show substitute-path after all remaining rules removed -Running ./gdb.base/symbol-without-target_section.exp ... -PASS: gdb.base/symbol-without-target_section.exp: add-symbol-file -PASS: gdb.base/symbol-without-target_section.exp: list main -PASS: gdb.base/symbol-without-target_section.exp: print symbol_without_target_section -Running ./gdb.base/term.exp ... -Running ./gdb.base/testenv.exp ... -Running ./gdb.base/trace-commands.exp ... -PASS: gdb.base/trace-commands.exp: show trace-commands says off -PASS: gdb.base/trace-commands.exp: source -v -PASS: gdb.base/trace-commands.exp: set trace-commands -PASS: gdb.base/trace-commands.exp: show trace-commands says on -PASS: gdb.base/trace-commands.exp: simple trace-commands test -PASS: gdb.base/trace-commands.exp: nested trace-commands test -PASS: gdb.base/trace-commands.exp: define user command -PASS: gdb.base/trace-commands.exp: nested trace-commands test with source -PASS: gdb.base/trace-commands.exp: depth resets on error part 1 -PASS: gdb.base/trace-commands.exp: depth resets on error part 2 -Running ./gdb.base/tui-layout.exp ... -PASS: gdb.base/tui-layout.exp: layout asm -Running ./gdb.base/twice.exp ... -PASS: gdb.base/twice.exp: step -Running ./gdb.base/type-opaque.exp ... -PASS: gdb.base/type-opaque.exp: opaque struct type resolving -PASS: gdb.base/type-opaque.exp: empty struct type resolving -PASS: gdb.base/type-opaque.exp: filled struct type resolving -PASS: gdb.base/type-opaque.exp: opaque union type resolving -PASS: gdb.base/type-opaque.exp: empty union type resolving -PASS: gdb.base/type-opaque.exp: filled union type resolving -Running ./gdb.base/ui-redirect.exp ... -PASS: gdb.base/ui-redirect.exp: commands -PASS: gdb.base/ui-redirect.exp: print 1 -PASS: gdb.base/ui-redirect.exp: end -PASS: gdb.base/ui-redirect.exp: set logging file /dev/null -PASS: gdb.base/ui-redirect.exp: set logging on -PASS: gdb.base/ui-redirect.exp: save breakpoints /dev/null -PASS: gdb.base/ui-redirect.exp: set logging off -PASS: gdb.base/ui-redirect.exp: help -Running ./gdb.base/unload.exp ... -PASS: gdb.base/unload.exp: pending breakpoint info before run -PASS: gdb.base/unload.exp: running program -PASS: gdb.base/unload.exp: pending breakpoint info on first run at shrfunc1 -PASS: gdb.base/unload.exp: continuing to unloaded libfile -PASS: gdb.base/unload.exp: print y from libfile -PASS: gdb.base/unload.exp: rerun to shared library breakpoint -PASS: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc1 -PASS: gdb.base/unload.exp: continuing to unloaded libfile -PASS: gdb.base/unload.exp: continue to shrfunc2 -PASS: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc2 -PASS: gdb.base/unload.exp: continuing to unloaded libfile2 -PASS: gdb.base/unload.exp: print y from libfile2 -Running ./gdb.base/until.exp ... -PASS: gdb.base/until.exp: until line number -PASS: gdb.base/until.exp: malformed until -PASS: gdb.base/until.exp: until factorial, recursive function -PASS: gdb.base/until.exp: until func, not called by current frame -Running ./gdb.base/unwindonsignal.exp ... -Running ./gdb.base/valgrind-db-attach.exp ... -Running ./gdb.base/valgrind-infcall.exp ... -Running ./gdb.base/value-double-free.exp ... -PASS: gdb.base/value-double-free.exp: watch var -PASS: gdb.base/value-double-free.exp: continue -PASS: gdb.base/value-double-free.exp: print empty() -PASS: gdb.base/value-double-free.exp: help help -Running ./gdb.base/varargs.exp ... -PASS: gdb.base/varargs.exp: set print sevenbit-strings -PASS: gdb.base/varargs.exp: set print address off -PASS: gdb.base/varargs.exp: set width 0 -Running ./gdb.base/volatile.exp ... -PASS: gdb.base/volatile.exp: continue to marker1 -PASS: gdb.base/volatile.exp: up from marker1 -PASS: gdb.base/volatile.exp: ptype vox -PASS: gdb.base/volatile.exp: ptype victuals -PASS: gdb.base/volatile.exp: ptype vixen -PASS: gdb.base/volatile.exp: ptype vitriol -PASS: gdb.base/volatile.exp: ptype vellum -PASS: gdb.base/volatile.exp: ptype valve -PASS: gdb.base/volatile.exp: ptype vacuity -PASS: gdb.base/volatile.exp: ptype vertigo -PASS: gdb.base/volatile.exp: ptype vampire -PASS: gdb.base/volatile.exp: ptype viper -PASS: gdb.base/volatile.exp: ptype vigour -PASS: gdb.base/volatile.exp: ptype vapour -PASS: gdb.base/volatile.exp: ptype ventricle -PASS: gdb.base/volatile.exp: ptype vigintillion -PASS: gdb.base/volatile.exp: ptype vocation -PASS: gdb.base/volatile.exp: ptype veracity -PASS: gdb.base/volatile.exp: ptype vapidity -PASS: gdb.base/volatile.exp: ptype velocity -PASS: gdb.base/volatile.exp: ptype veneer -PASS: gdb.base/volatile.exp: ptype video -PASS: gdb.base/volatile.exp: ptype vacuum -PASS: gdb.base/volatile.exp: ptype veniality -PASS: gdb.base/volatile.exp: ptype vitality -PASS: gdb.base/volatile.exp: ptype voracity -PASS: gdb.base/volatile.exp: ptype victor -PASS: gdb.base/volatile.exp: ptype vicar -PASS: gdb.base/volatile.exp: ptype victory -PASS: gdb.base/volatile.exp: ptype vicarage -PASS: gdb.base/volatile.exp: ptype vein -PASS: gdb.base/volatile.exp: ptype vogue -PASS: gdb.base/volatile.exp: ptype cavern -PASS: gdb.base/volatile.exp: ptype coverlet -PASS: gdb.base/volatile.exp: ptype caveat -PASS: gdb.base/volatile.exp: ptype covenant -PASS: gdb.base/volatile.exp: ptype vizier -PASS: gdb.base/volatile.exp: ptype vanadium -PASS: gdb.base/volatile.exp: ptype vane -PASS: gdb.base/volatile.exp: ptype veldt -PASS: gdb.base/volatile.exp: ptype cove -PASS: gdb.base/volatile.exp: ptype cavity -PASS: gdb.base/volatile.exp: ptype vagus -PASS: gdb.base/volatile.exp: ptype vagrancy -PASS: gdb.base/volatile.exp: ptype vagary -PASS: gdb.base/volatile.exp: ptype vendor -PASS: gdb.base/volatile.exp: ptype qux2 -Running ./gdb.base/watch-cond.exp ... -PASS: gdb.base/watch-cond.exp: set write watchpoint on global variable, local condition -PASS: gdb.base/watch-cond.exp: watchpoint with global expression, local condition evaluates in correct frame -PASS: gdb.base/watch-cond.exp: set write watchpoint on local variable, local condition -PASS: gdb.base/watch-cond.exp: watchpoint with local expression, local condition evaluates in correct frame -PASS: gdb.base/watch-cond.exp: set write watchpoint on global2 variable -PASS: gdb.base/watch-cond.exp: watchpoint on global2 variable triggers -PASS: gdb.base/watch-cond.exp: condition of watchpoint 2 changes -PASS: gdb.base/watch-cond.exp: watchpoint stops with untestable local expression -Running ./gdb.base/watch-cond-infcall.exp ... -PASS: gdb.base/watch-cond-infcall.exp: sw: watch var if return_1 () -PASS: gdb.base/watch-cond-infcall.exp: sw: continue -Running ./gdb.base/watch-non-mem.exp ... -PASS: gdb.base/watch-non-mem.exp: set write watchpoint on $pc -PASS: gdb.base/watch-non-mem.exp: watchpoint on $pc works -Running ./gdb.base/watchpoint-cond-gone.exp ... -PASS: gdb.base/watchpoint-cond-gone.exp: set can-use-hw-watchpoints 0 -PASS: gdb.base/watchpoint-cond-gone.exp: continue to breakpoint: Place to set the watchpoint -PASS: gdb.base/watchpoint-cond-gone.exp: Place the watchpoint -PASS: gdb.base/watchpoint-cond-gone.exp: Catch the no longer valid watchpoint -Running ./gdb.base/watchpoint-delete.exp ... -PASS: gdb.base/watchpoint-delete.exp: set can-use-hw-watchpoints 0 -PASS: gdb.base/watchpoint-delete.exp: continue to breakpoint: break-here -PASS: gdb.base/watchpoint-delete.exp: watch x -PASS: gdb.base/watchpoint-delete.exp: delete $bpnum -Running ./gdb.base/watchpoint.exp ... -PASS: gdb.base/watchpoint.exp: disable fast watches -PASS: gdb.base/watchpoint.exp: show disable fast watches -PASS: gdb.base/watchpoint.exp: set slow conditional watch -PASS: gdb.base/watchpoint.exp: trigger slow conditional watch -PASS: gdb.base/watchpoint.exp: delete watch ival3 -PASS: gdb.base/watchpoint.exp: set slow condition watch w/thread -PASS: gdb.base/watchpoint.exp: delete watch w/condition and thread -PASS: gdb.base/watchpoint.exp: rwatch disallowed when can-set-hw-watchpoints cleared -PASS: gdb.base/watchpoint.exp: set breakpoint at marker1 -PASS: gdb.base/watchpoint.exp: set breakpoint at marker2 -PASS: gdb.base/watchpoint.exp: info break in watchpoint.exp -PASS: gdb.base/watchpoint.exp: set watchpoint on ival3 -PASS: gdb.base/watchpoint.exp: watchpoint found in watchpoint/breakpoint table -PASS: gdb.base/watchpoint.exp: disable watchpoint -PASS: gdb.base/watchpoint.exp: disable watchpoint in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: run to marker1 in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: enable watchpoint -PASS: gdb.base/watchpoint.exp: break func1 -PASS: gdb.base/watchpoint.exp: set $func1_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: continue to breakpoint at func1 -PASS: gdb.base/watchpoint.exp: watchpoint hit, first time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 1 -PASS: gdb.base/watchpoint.exp: delete $func1_breakpoint_number -PASS: gdb.base/watchpoint.exp: watchpoint hit, second time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 2 -PASS: gdb.base/watchpoint.exp: watchpoint hit, third time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 3 -PASS: gdb.base/watchpoint.exp: watchpoint hit, fourth time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 4 -PASS: gdb.base/watchpoint.exp: watchpoint hit, fifth time -PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 5 -PASS: gdb.base/watchpoint.exp: continue to marker2 -PASS: gdb.base/watchpoint.exp: watchpoint disabled -PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_simple_watchpoint -PASS: gdb.base/watchpoint.exp: watchpoints found in watchpoint/breakpoint table -PASS: gdb.base/watchpoint.exp: disable watchpoint in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: run to marker1 in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watchpoint enabled -PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, first time -PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, second time -PASS: gdb.base/watchpoint.exp: disable watchpoint #2 in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watchpoint disabled in table -PASS: gdb.base/watchpoint.exp: disabled watchpoint skipped -PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_disabling_watchpoints -PASS: gdb.base/watchpoint.exp: watch ival2 -PASS: gdb.base/watchpoint.exp: break func2 if 0 -PASS: gdb.base/watchpoint.exp: p $func2_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: calling function with watchpoint enabled -PASS: gdb.base/watchpoint.exp: finish from marker1 -PASS: gdb.base/watchpoint.exp: back at main from marker1 -PASS: gdb.base/watchpoint.exp: next to `for' in watchpoint.exp -PASS: gdb.base/watchpoint.exp: until to ival1 assignment -PASS: gdb.base/watchpoint.exp: until to ival3 assignment -PASS: gdb.base/watchpoint.exp: until out of loop -PASS: gdb.base/watchpoint.exp: step to ival2 assignment -PASS: gdb.base/watchpoint.exp: watch ptr1->val -PASS: gdb.base/watchpoint.exp: break marker5 -PASS: gdb.base/watchpoint.exp: Test complex watchpoint -PASS: gdb.base/watchpoint.exp: did not trigger wrong watchpoint -PASS: gdb.base/watchpoint.exp: disable in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: break marker6 -PASS: gdb.base/watchpoint.exp: continue to marker6 -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set local watch -PASS: gdb.base/watchpoint.exp: trigger local watch -PASS: gdb.base/watchpoint.exp: self-delete local watch -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set partially local watch -PASS: gdb.base/watchpoint.exp: trigger1 partially local watch -PASS: gdb.base/watchpoint.exp: trigger2 partially local watch -PASS: gdb.base/watchpoint.exp: self-delete partially local watch -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func2 breakpoint here -PASS: gdb.base/watchpoint.exp: set static local watch -PASS: gdb.base/watchpoint.exp: trigger static local watch -PASS: gdb.base/watchpoint.exp: continue after trigger static local watch -PASS: gdb.base/watchpoint.exp: static local watch did not self-delete -PASS: gdb.base/watchpoint.exp: tbreak recurser -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: next past local_x initialization -PASS: gdb.base/watchpoint.exp: set local watch in recursive call -PASS: gdb.base/watchpoint.exp: trigger local watch in recursive call -PASS: gdb.base/watchpoint.exp: self-delete local watch in recursive call -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: tbreak recurser -PASS: gdb.base/watchpoint.exp: cont -PASS: gdb.base/watchpoint.exp: next past local_x initialization -PASS: gdb.base/watchpoint.exp: set local watch in recursive call with explicit scope -PASS: gdb.base/watchpoint.exp: trigger local watch with explicit scope in recursive call -PASS: gdb.base/watchpoint.exp: self-delete local watch with explicit scope in recursive call (2) -PASS: gdb.base/watchpoint.exp: disable in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_complex_watchpoint -PASS: gdb.base/watchpoint.exp: watchpoint refused to insert on nonexistent struct member -PASS: gdb.base/watchpoint.exp: watch global_ptr -PASS: gdb.base/watchpoint.exp: watch *(int *) 0 -PASS: gdb.base/watchpoint.exp: watch -location *global_ptr -PASS: gdb.base/watchpoint.exp: watch *global_ptr -PASS: gdb.base/watchpoint.exp: set $global_ptr_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: global_ptr next -PASS: gdb.base/watchpoint.exp: next over ptr init -PASS: gdb.base/watchpoint.exp: next over buffer set -PASS: gdb.base/watchpoint.exp: delete $global_ptr_breakpoint_number -PASS: gdb.base/watchpoint.exp: watch **global_ptr_ptr -PASS: gdb.base/watchpoint.exp: set $global_ptr_ptr_breakpoint_number = $bpnum -PASS: gdb.base/watchpoint.exp: global_ptr_ptr next -PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr init -PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr buffer set -PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr pointer advance -PASS: gdb.base/watchpoint.exp: delete $global_ptr_ptr_breakpoint_number -PASS: gdb.base/watchpoint.exp: continue to breakpoint: second x assignment -PASS: gdb.base/watchpoint.exp: watch x -PASS: gdb.base/watchpoint.exp: next after watch x -PASS: gdb.base/watchpoint.exp: delete watch x -PASS: gdb.base/watchpoint.exp: watch buf -PASS: gdb.base/watchpoint.exp: watchpoint on buf hit -PASS: gdb.base/watchpoint.exp: delete watch buf -PASS: gdb.base/watchpoint.exp: number is constant -PASS: gdb.base/watchpoint.exp: number with cast is constant -PASS: gdb.base/watchpoint.exp: marker1 is constant -PASS: gdb.base/watchpoint.exp: watch count + 6 -PASS: gdb.base/watchpoint.exp: delete watchpoint `count + 6' -PASS: gdb.base/watchpoint.exp: watch 7 + count -PASS: gdb.base/watchpoint.exp: delete watchpoint `7 + count' -PASS: gdb.base/watchpoint.exp: watch $pc -PASS: gdb.base/watchpoint.exp: disable watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: reenable watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: watchpoint `$pc' is enabled -PASS: gdb.base/watchpoint.exp: delete watchpoint `$pc' -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func5 breakpoint here -PASS: gdb.base/watchpoint.exp: watch -location .x -PASS: gdb.base/watchpoint.exp: continue with watch -location -PASS: gdb.base/watchpoint.exp: delete watch -location -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func6 breakpoint here -PASS: gdb.base/watchpoint.exp: watch foo2 -PASS: gdb.base/watchpoint.exp: continue with watch foo2 -PASS: gdb.base/watchpoint.exp: delete watch foo2 -PASS: gdb.base/watchpoint.exp: continue to breakpoint: func7 breakpoint here -PASS: gdb.base/watchpoint.exp: watch foo4 -PASS: gdb.base/watchpoint.exp: continue with watch foo4 -PASS: gdb.base/watchpoint.exp: delete watch foo4 -Running ./gdb.base/watchpoint-hw.exp ... -Running ./gdb.base/watchpoint-hw-hit-once.exp ... -Running ./gdb.base/watchpoints.exp ... -PASS: gdb.base/watchpoints.exp: watchpoint hit, first time -PASS: gdb.base/watchpoints.exp: watchpoint hit, first time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 1 -PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, second time -PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 2 -PASS: gdb.base/watchpoints.exp: watchpoint hit, second time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 2 -PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, third time -PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 3 -PASS: gdb.base/watchpoints.exp: watchpoint hit, third time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 3 -PASS: gdb.base/watchpoints.exp: watchpoint hit, fourth time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 4 -PASS: gdb.base/watchpoints.exp: watchpoint hit, fifth time -PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 5 -Running ./gdb.base/watchpoint-solib.exp ... -PASS: gdb.base/watchpoint-solib.exp: set pending breakpoint -PASS: gdb.base/watchpoint-solib.exp: continue to foo -PASS: gdb.base/watchpoint-solib.exp: set watchpoint on g -PASS: gdb.base/watchpoint-solib.exp: continue to watchpoint hit -PASS: gdb.base/watchpoint-solib.exp: rerun to main -PASS: gdb.base/watchpoint-solib.exp: continue to foo again -PASS: gdb.base/watchpoint-solib.exp: continue to watchpoint hit again -Running ./gdb.base/watch-read.exp ... -Running ./gdb.base/watch_thread_num.exp ... -Running ./gdb.base/watch-vfork.exp ... -Running ./gdb.base/wchar.exp ... -PASS: gdb.base/wchar.exp: print narrow -PASS: gdb.base/wchar.exp: print single -PASS: gdb.base/wchar.exp: print simple -PASS: gdb.base/wchar.exp: print difficile -PASS: gdb.base/wchar.exp: print simple[2] -PASS: gdb.base/wchar.exp: print difficile[2] -PASS: gdb.base/wchar.exp: print repeat -PASS: gdb.base/wchar.exp: print repeat_p -PASS: gdb.base/wchar.exp: set print null on -PASS: gdb.base/wchar.exp: print repeat (print null on) -PASS: gdb.base/wchar.exp: set print elements 3 -PASS: gdb.base/wchar.exp: print repeat (print elements 3) -PASS: gdb.base/wchar.exp: print repeat_p (print elements 3) -Running ./gdb.base/whatis.exp ... -PASS: gdb.base/whatis.exp: whatis char -PASS: gdb.base/whatis.exp: whatis signed char -PASS: gdb.base/whatis.exp: whatis unsigned char -PASS: gdb.base/whatis.exp: whatis short -PASS: gdb.base/whatis.exp: whatis signed short -PASS: gdb.base/whatis.exp: whatis unsigned short -PASS: gdb.base/whatis.exp: whatis int -PASS: gdb.base/whatis.exp: whatis signed int -PASS: gdb.base/whatis.exp: whatis unsigned int -PASS: gdb.base/whatis.exp: whatis long -PASS: gdb.base/whatis.exp: whatis signed long -PASS: gdb.base/whatis.exp: whatis unsigned long -PASS: gdb.base/whatis.exp: whatis unsigned long long -PASS: gdb.base/whatis.exp: whatis float -PASS: gdb.base/whatis.exp: whatis double -PASS: gdb.base/whatis.exp: whatis char array -PASS: gdb.base/whatis.exp: whatis signed char array -PASS: gdb.base/whatis.exp: whatis unsigned char array -PASS: gdb.base/whatis.exp: whatis short array -PASS: gdb.base/whatis.exp: whatis signed short array -PASS: gdb.base/whatis.exp: whatis unsigned short array -PASS: gdb.base/whatis.exp: whatis int array -PASS: gdb.base/whatis.exp: whatis signed int array -PASS: gdb.base/whatis.exp: whatis unsigned int array -PASS: gdb.base/whatis.exp: whatis long array -PASS: gdb.base/whatis.exp: whatis signed long array -PASS: gdb.base/whatis.exp: whatis unsigned long array -PASS: gdb.base/whatis.exp: whatis unsigned long array -PASS: gdb.base/whatis.exp: whatis float array -PASS: gdb.base/whatis.exp: whatis double array -PASS: gdb.base/whatis.exp: whatis char pointer -PASS: gdb.base/whatis.exp: whatis signed char pointer -PASS: gdb.base/whatis.exp: whatis unsigned char pointer -PASS: gdb.base/whatis.exp: whatis short pointer -PASS: gdb.base/whatis.exp: whatis signed short pointer -PASS: gdb.base/whatis.exp: whatis unsigned short pointer -PASS: gdb.base/whatis.exp: whatis int pointer -PASS: gdb.base/whatis.exp: whatis signed int pointer -PASS: gdb.base/whatis.exp: whatis unsigned int pointer -PASS: gdb.base/whatis.exp: whatis long pointer -PASS: gdb.base/whatis.exp: whatis signed long pointer -PASS: gdb.base/whatis.exp: whatis unsigned long pointer -PASS: gdb.base/whatis.exp: whatis long long pointer -PASS: gdb.base/whatis.exp: whatis signed long long pointer -PASS: gdb.base/whatis.exp: whatis unsigned long long pointer -PASS: gdb.base/whatis.exp: whatis float pointer -PASS: gdb.base/whatis.exp: whatis double pointer -PASS: gdb.base/whatis.exp: whatis named structure -PASS: gdb.base/whatis.exp: whatis named structure using type name -PASS: gdb.base/whatis.exp: whatis unnamed structure -PASS: gdb.base/whatis.exp: whatis named union -PASS: gdb.base/whatis.exp: whatis named union using type name -PASS: gdb.base/whatis.exp: whatis unnamed union -PASS: gdb.base/whatis.exp: whatis char function -PASS: gdb.base/whatis.exp: whatis signed char function -PASS: gdb.base/whatis.exp: whatis unsigned char function -PASS: gdb.base/whatis.exp: whatis short function -PASS: gdb.base/whatis.exp: whatis signed short function -PASS: gdb.base/whatis.exp: whatis unsigned short function -PASS: gdb.base/whatis.exp: whatis int function -PASS: gdb.base/whatis.exp: whatis signed int function -PASS: gdb.base/whatis.exp: whatis unsigned int function -PASS: gdb.base/whatis.exp: whatis long function -PASS: gdb.base/whatis.exp: whatis signed long function -PASS: gdb.base/whatis.exp: whatis unsigned long function -PASS: gdb.base/whatis.exp: whatis long long function -PASS: gdb.base/whatis.exp: whatis signed long long function -PASS: gdb.base/whatis.exp: whatis unsigned long long function -PASS: gdb.base/whatis.exp: whatis float function -PASS: gdb.base/whatis.exp: whatis double function -PASS: gdb.base/whatis.exp: whatis complicated structure -PASS: gdb.base/whatis.exp: whatis complicated union -PASS: gdb.base/whatis.exp: whatis enumeration -PASS: gdb.base/whatis.exp: whatis enumeration using type name -PASS: gdb.base/whatis.exp: whatis outer structure -PASS: gdb.base/whatis.exp: whatis outer structure member -PASS: gdb.base/whatis.exp: whatis inner structure -PASS: gdb.base/whatis.exp: whatis inner structure member -PASS: gdb.base/whatis.exp: whatis inner union -PASS: gdb.base/whatis.exp: whatis inner union member -PASS: gdb.base/whatis.exp: whatis using typedef type name -PASS: gdb.base/whatis.exp: whatis applied to variable defined by typedef -PASS: gdb.base/whatis.exp: whatis applied to pointer to pointer to function -PASS: gdb.base/whatis.exp: whatis applied to const pointer to pointer to function -PASS: gdb.base/whatis.exp: whatis applied to pointer to const pointer to function -PASS: gdb.base/whatis.exp: whatis applied to pointer to function returning pointer to int -PASS: gdb.base/whatis.exp: whatis applied to pointer to pointer to function returning pointer to int -PASS: gdb.base/whatis.exp: whatis applied to pointer to function returning pointer to array -PASS: gdb.base/whatis.exp: whatis applied to pointer to function taking int,int and returning int -PASS: gdb.base/whatis.exp: whatis applied to pointer to function taking const int ptr and varargs and returning int -PASS: gdb.base/whatis.exp: whatis applied to function with types trailing 'void' -PASS: gdb.base/whatis.exp: whatis applied to function with 'void' parameter type -Running ./gdb.base/whatis-exp.exp ... -PASS: gdb.base/whatis-exp.exp: set variable x=14 -PASS: gdb.base/whatis-exp.exp: set variable y=2 -PASS: gdb.base/whatis-exp.exp: set variable z=2 -PASS: gdb.base/whatis-exp.exp: set variable w=3 -PASS: gdb.base/whatis-exp.exp: print value of x -PASS: gdb.base/whatis-exp.exp: print value of y -PASS: gdb.base/whatis-exp.exp: print value of z -PASS: gdb.base/whatis-exp.exp: print value of w -PASS: gdb.base/whatis-exp.exp: whatis value of x+y -PASS: gdb.base/whatis-exp.exp: whatis value of x-y -PASS: gdb.base/whatis-exp.exp: whatis value of x*y -PASS: gdb.base/whatis-exp.exp: whatis value of x/y -PASS: gdb.base/whatis-exp.exp: whatis value of x%y -PASS: gdb.base/whatis-exp.exp: whatis value of x=y -PASS: gdb.base/whatis-exp.exp: whatis value of x+=2 -PASS: gdb.base/whatis-exp.exp: whatis value of ++x -PASS: gdb.base/whatis-exp.exp: whatis value of --x -PASS: gdb.base/whatis-exp.exp: whatis value of x++ -PASS: gdb.base/whatis-exp.exp: whatis value of x-- -Running ./gdb.btrace/enable.exp ... -Running ./gdb.btrace/function_call_history.exp ... -Running ./gdb.btrace/instruction_history.exp ... -Running ./gdb.cell/arch.exp ... -Running ./gdb.cell/break.exp ... -Running ./gdb.cell/bt.exp ... -Running ./gdb.cell/core.exp ... -Running ./gdb.cell/data.exp ... -Running ./gdb.cell/dwarfaddr.exp ... -Running ./gdb.cell/ea-cache.exp ... -Running ./gdb.cell/ea-standalone.exp ... -Running ./gdb.cell/ea-test.exp ... -Running ./gdb.cell/fork.exp ... -Running ./gdb.cell/f-regs.exp ... -Running ./gdb.cell/gcore.exp ... -Running ./gdb.cell/mem-access.exp ... -Running ./gdb.cell/ptype.exp ... -Running ./gdb.cell/registers.exp ... -Running ./gdb.cell/sizeof.exp ... -Running ./gdb.cell/solib.exp ... -Running ./gdb.cell/solib-symbol.exp ... -Running ./gdb.cp/abstract-origin.exp ... -PASS: gdb.cp/abstract-origin.exp: continue to breakpoint: break-here -PASS: gdb.cp/abstract-origin.exp: p problem -Running ./gdb.cp/ambiguous.exp ... -Running ./gdb.cp/annota2.exp ... -Running ./gdb.cp/annota3.exp ... -Running ./gdb.cp/anon-ns.exp ... -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::doit(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::doit(void)' -PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void) -PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)' -PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void) -PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)' -Running ./gdb.cp/anon-struct.exp ... -FAIL: gdb.cp/anon-struct.exp: print type of t::t -PASS: gdb.cp/anon-struct.exp: print type of X::t2 -FAIL: gdb.cp/anon-struct.exp: print type of X::t2::t2 -FAIL: gdb.cp/anon-struct.exp: print type of t3::~t3 -Running ./gdb.cp/anon-union.exp ... -PASS: gdb.cp/anon-union.exp: set width 0 -PASS: gdb.cp/anon-union.exp: next 1 -PASS: gdb.cp/anon-union.exp: print foo 1 -PASS: gdb.cp/anon-union.exp: next 2 -PASS: gdb.cp/anon-union.exp: print foo 2 -PASS: gdb.cp/anon-union.exp: set var foo.cloth -PASS: gdb.cp/anon-union.exp: print foo 3 -PASS: gdb.cp/anon-union.exp: next 3 -PASS: gdb.cp/anon-union.exp: print foo 4 -PASS: gdb.cp/anon-union.exp: set var foo.pebble -PASS: gdb.cp/anon-union.exp: print foo 5 -PASS: gdb.cp/anon-union.exp: set var foo.qux -PASS: gdb.cp/anon-union.exp: print foo 6 -PASS: gdb.cp/anon-union.exp: set var foo.mux -PASS: gdb.cp/anon-union.exp: print foo 7 -PASS: gdb.cp/anon-union.exp: set var foo.x.rock -PASS: gdb.cp/anon-union.exp: print foo 8 -PASS: gdb.cp/anon-union.exp: set var foo.x.rock2 -PASS: gdb.cp/anon-union.exp: print foo 9 -PASS: gdb.cp/anon-union.exp: next 4 -PASS: gdb.cp/anon-union.exp: print w 1 -PASS: gdb.cp/anon-union.exp: print z 1 -PASS: gdb.cp/anon-union.exp: next 5 -PASS: gdb.cp/anon-union.exp: print w 2 -PASS: gdb.cp/anon-union.exp: print z 2 -PASS: gdb.cp/anon-union.exp: set var z -PASS: gdb.cp/anon-union.exp: print w 3 -PASS: gdb.cp/anon-union.exp: print z 3 -Running ./gdb.cp/arg-reference.exp ... -PASS: gdb.cp/arg-reference.exp: No false reference -Running ./gdb.cp/baseenum.exp ... -PASS: gdb.cp/baseenum.exp: continue to breakpoint: breakpoint 1 -PASS: gdb.cp/baseenum.exp: Print enum constant X of class A -PASS: gdb.cp/baseenum.exp: continue to breakpoint: breakpoint 2 -PASS: gdb.cp/baseenum.exp: Print enum constant X of class A in namespace N -Running ./gdb.cp/bool.exp ... -PASS: gdb.cp/bool.exp: print return_true() -PASS: gdb.cp/bool.exp: print return_false() -Running ./gdb.cp/breakpoint.exp ... -PASS: gdb.cp/breakpoint.exp: continue to C1::Nested::foo -PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method -PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method 2 -PASS: gdb.cp/breakpoint.exp: continue to breakpoint -PASS: gdb.cp/breakpoint.exp: check the member variable -PASS: gdb.cp/breakpoint.exp: continue to breakpoint -PASS: gdb.cp/breakpoint.exp: check the member variable -Running ./gdb.cp/bs15503.exp ... -PASS: gdb.cp/bs15503.exp: break StringTest::testFunction -PASS: gdb.cp/bs15503.exp: continue to StringTest -PASS: gdb.cp/bs15503.exp: continue to breakpoint: find position where blank needs to be inserted -FAIL: gdb.cp/bs15503.exp: print s.length() -FAIL: gdb.cp/bs15503.exp: print s[0] -FAIL: gdb.cp/bs15503.exp: print s[s.length()-1] -PASS: gdb.cp/bs15503.exp: print (const char *) s -FAIL: gdb.cp/bs15503.exp: print (const char *) s.substr(0,4) -FAIL: gdb.cp/bs15503.exp: print (const char *) (s=s.substr(0,4)) -Running ./gdb.cp/call-c.exp ... -PASS: gdb.cp/call-c.exp: b 43 -PASS: gdb.cp/call-c.exp: print foo(1) -PASS: gdb.cp/call-c.exp: continue to bp -PASS: gdb.cp/call-c.exp: print rf->func() -PASS: gdb.cp/call-c.exp: print handle->func() -Running ./gdb.cp/casts.exp ... -PASS: gdb.cp/casts.exp: cast base class pointer to derived class pointer -PASS: gdb.cp/casts.exp: let compiler cast base class pointer to derived class pointer -PASS: gdb.cp/casts.exp: cast derived class pointer to base class pointer -PASS: gdb.cp/casts.exp: cast derived class reference to base class reference -PASS: gdb.cp/casts.exp: cast base class reference to derived class reference -PASS: gdb.cp/casts.exp: let compiler cast base class reference to derived class reference -PASS: gdb.cp/casts.exp: basic test of const_cast -PASS: gdb.cp/casts.exp: const_cast of 0 -PASS: gdb.cp/casts.exp: basic test of static_cast -PASS: gdb.cp/casts.exp: static_cast to reference type -PASS: gdb.cp/casts.exp: basic test of reinterpret_cast -PASS: gdb.cp/casts.exp: test invalid reinterpret_cast -PASS: gdb.cp/casts.exp: reinterpret_cast to reference type -PASS: gdb.cp/casts.exp: whatis decltype(5) -PASS: gdb.cp/casts.exp: old-style cast using __typeof__ -PASS: gdb.cp/casts.exp: static_cast using __typeof__ -PASS: gdb.cp/casts.exp: reinterpret_cast using __typeof__ -PASS: gdb.cp/casts.exp: old-style cast using __typeof -PASS: gdb.cp/casts.exp: static_cast using __typeof -PASS: gdb.cp/casts.exp: reinterpret_cast using __typeof -PASS: gdb.cp/casts.exp: old-style cast using __decltype -PASS: gdb.cp/casts.exp: static_cast using __decltype -PASS: gdb.cp/casts.exp: reinterpret_cast using __decltype -PASS: gdb.cp/casts.exp: whatis __decltype(*a) -PASS: gdb.cp/casts.exp: invalid dynamic_cast -PASS: gdb.cp/casts.exp: dynamic_cast of 0 to void* -PASS: gdb.cp/casts.exp: dynamic_cast simple upcast -PASS: gdb.cp/casts.exp: dynamic_cast upcast to unique base -PASS: gdb.cp/casts.exp: dynamic_cast simple upcast to reference -PASS: gdb.cp/casts.exp: dynamic_cast simple downcast -PASS: gdb.cp/casts.exp: dynamic_cast simple downcast to intermediate class -PASS: gdb.cp/casts.exp: dynamic_cast to non-existing base -PASS: gdb.cp/casts.exp: dynamic_cast to reference to non-existing base -PASS: gdb.cp/casts.exp: dynamic_cast unique downcast -PASS: gdb.cp/casts.exp: dynamic_cast to sibling -Running ./gdb.cp/class2.exp ... -PASS: gdb.cp/class2.exp: set print object off -PASS: gdb.cp/class2.exp: print alpha at marker return 0 -PASS: gdb.cp/class2.exp: print beta at marker return 0 -PASS: gdb.cp/class2.exp: print * aap at marker return 0 -PASS: gdb.cp/class2.exp: print * bbp at marker return 0 -PASS: gdb.cp/class2.exp: print * abp at marker return 0, s-p-o off -PASS: gdb.cp/class2.exp: print * (B *) abp at marker return 0 -PASS: gdb.cp/class2.exp: print object with no data fields -PASS: gdb.cp/class2.exp: set print object on -PASS: gdb.cp/class2.exp: p acp -PASS: gdb.cp/class2.exp: p acp->c1 -PASS: gdb.cp/class2.exp: p acp->c2 -Running ./gdb.cp/classes.exp ... -PASS: gdb.cp/classes.exp: ptype struct default_public_struct -PASS: gdb.cp/classes.exp: ptype struct explicit_public_struct -PASS: gdb.cp/classes.exp: ptype struct protected_struct -PASS: gdb.cp/classes.exp: ptype struct private_struct -PASS: gdb.cp/classes.exp: ptype struct mixed_protection_struct -PASS: gdb.cp/classes.exp: ptype class public_class -PASS: gdb.cp/classes.exp: ptype class protected_class -PASS: gdb.cp/classes.exp: ptype class default_private_class -PASS: gdb.cp/classes.exp: ptype class explicit_private_class -PASS: gdb.cp/classes.exp: ptype class mixed_protection_class -PASS: gdb.cp/classes.exp: ptype class A -PASS: gdb.cp/classes.exp: ptype class B -PASS: gdb.cp/classes.exp: ptype class C -PASS: gdb.cp/classes.exp: ptype class D -PASS: gdb.cp/classes.exp: ptype class E -PASS: gdb.cp/classes.exp: ptype class Static -PASS: gdb.cp/classes.exp: ptype class vA -PASS: gdb.cp/classes.exp: ptype class vB -PASS: gdb.cp/classes.exp: ptype class vC -PASS: gdb.cp/classes.exp: ptype class vD -PASS: gdb.cp/classes.exp: ptype class vE -PASS: gdb.cp/classes.exp: ptype class Base1 -PASS: gdb.cp/classes.exp: ptype class Foo -PASS: gdb.cp/classes.exp: ptype class Bar -PASS: gdb.cp/classes.exp: print g_A.a -PASS: gdb.cp/classes.exp: print g_A.x -PASS: gdb.cp/classes.exp: print g_B.b -PASS: gdb.cp/classes.exp: print g_B.x -PASS: gdb.cp/classes.exp: print g_C.c -PASS: gdb.cp/classes.exp: print g_C.x -PASS: gdb.cp/classes.exp: print g_D.d -PASS: gdb.cp/classes.exp: print g_D.x -PASS: gdb.cp/classes.exp: print g_E.e -PASS: gdb.cp/classes.exp: print g_E.x -PASS: gdb.cp/classes.exp: print g_A.b -PASS: gdb.cp/classes.exp: print g_B.c -PASS: gdb.cp/classes.exp: print g_B.d -PASS: gdb.cp/classes.exp: print g_C.b -PASS: gdb.cp/classes.exp: print g_C.d -PASS: gdb.cp/classes.exp: print g_D.e -PASS: gdb.cp/classes.exp: print g_A.y -PASS: gdb.cp/classes.exp: print g_B.z -PASS: gdb.cp/classes.exp: print g_C.q -PASS: gdb.cp/classes.exp: print g_D.p -PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_A) -PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_A) -PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_B) -PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_B) -PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_A) -PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_B) -PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_B) -PASS: gdb.cp/classes.exp: unrelated class *param -PASS: gdb.cp/classes.exp: unrelated class ¶m -PASS: gdb.cp/classes.exp: unrelated class param -PASS: gdb.cp/classes.exp: continue to enums2(\(\)|) -PASS: gdb.cp/classes.exp: print obj_with_enum (1) -PASS: gdb.cp/classes.exp: next -PASS: gdb.cp/classes.exp: print obj_with_enum (2) -PASS: gdb.cp/classes.exp: print obj_with_enum.priv_enum -PASS: gdb.cp/classes.exp: ptype obj_with_enum.priv_enum -PASS: gdb.cp/classes.exp: ptype obj_with_enum -PASS: gdb.cp/classes.exp: print (ClassWithEnum::PrivEnum) 42 -PASS: gdb.cp/classes.exp: print ('ClassWithEnum::PrivEnum') 42 -PASS: gdb.cp/classes.exp: print Bar::z -PASS: gdb.cp/classes.exp: print &Foo::x -PASS: gdb.cp/classes.exp: print (int)&Foo::x -PASS: gdb.cp/classes.exp: print (int)&Bar::y == 2*sizeof(int) -PASS: gdb.cp/classes.exp: ptype Bar::z -PASS: gdb.cp/classes.exp: ptype &Bar::z -PASS: gdb.cp/classes.exp: print (int)pmi == sizeof(int) -PASS: gdb.cp/classes.exp: print Foo::st -PASS: gdb.cp/classes.exp: print bar.st -PASS: gdb.cp/classes.exp: print &foo.st -PASS: gdb.cp/classes.exp: print &Bar::st -PASS: gdb.cp/classes.exp: print *$ -PASS: gdb.cp/classes.exp: set print static-members off -PASS: gdb.cp/classes.exp: print csi without static members -PASS: gdb.cp/classes.exp: print cnsi without static members -PASS: gdb.cp/classes.exp: set print static-members on -PASS: gdb.cp/classes.exp: print csi with static members -PASS: gdb.cp/classes.exp: print cnsi with static members -PASS: gdb.cp/classes.exp: finish from marker_reg1 -PASS: gdb.cp/classes.exp: calling method for small class -FAIL: gdb.cp/classes.exp: print ctor of typedef class -FAIL: gdb.cp/classes.exp: print dtor of typedef class -PASS: gdb.cp/classes.exp: list ByAnyOtherName::times -Running ./gdb.cp/cmpd-minsyms.exp ... -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::a() const' -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::b() volatile' -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB::c() const volatile' -PASS: gdb.cp/cmpd-minsyms.exp: set language c++ -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::operator == -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::operator==(GDB const&) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::harder(char) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::harder(int) -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at "int GDB::even_harder(char)" -PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB::simple() -Running ./gdb.cp/converts.exp ... -PASS: gdb.cp/converts.exp: continue to breakpoint: end of main -PASS: gdb.cp/converts.exp: typedef to another typedef -PASS: gdb.cp/converts.exp: typedef to typedef of a typedef -PASS: gdb.cp/converts.exp: Pointer-to-pointer-to-pointer derived to Pointer-to-pointer-to-pointer base. -PASS: gdb.cp/converts.exp: pointer to pointer -PASS: gdb.cp/converts.exp: pointer to array -PASS: gdb.cp/converts.exp: pointer to pointer of wrong type -PASS: gdb.cp/converts.exp: pointer to pointer of wrong type -PASS: gdb.cp/converts.exp: pointer to ancestor pointer -PASS: gdb.cp/converts.exp: pointer to void pointer -PASS: gdb.cp/converts.exp: pointer to void pointer pointer -PASS: gdb.cp/converts.exp: pointer to boolean -PASS: gdb.cp/converts.exp: pointer to long int -PASS: gdb.cp/converts.exp: pointer pointer to void pointer -PASS: gdb.cp/converts.exp: pointer pointer to pointer pointer -PASS: gdb.cp/converts.exp: pointer pointer to array of arrays -PASS: gdb.cp/converts.exp: pointer pointer to array of pointers -PASS: gdb.cp/converts.exp: pointer pointer to array of wrong pointers -PASS: gdb.cp/converts.exp: check all parameters for badness -PASS: gdb.cp/converts.exp: null pointer conversion -PASS: gdb.cp/converts.exp: p foo3_1 (0, 1) -PASS: gdb.cp/converts.exp: p foo3_1 (0, (const char**) 1) -PASS: gdb.cp/converts.exp: p foo3_2 (0, 0) -PASS: gdb.cp/converts.exp: p foo3_2 (0, (char const**) 0) -PASS: gdb.cp/converts.exp: p foo1_7(0) -PASS: gdb.cp/converts.exp: p foo1_7(integer) -PASS: gdb.cp/converts.exp: p foo1_7(long_int) -PASS: gdb.cp/converts.exp: p foo1_7(*a) -PASS: gdb.cp/converts.exp: p foo1_7(MY_A) -PASS: gdb.cp/converts.exp: p foo1_7(&foo1_7) -PASS: gdb.cp/converts.exp: p foo1_7(&A::member_) -PASS: gdb.cp/converts.exp: p foo1_7(a) -PASS: gdb.cp/converts.exp: p foo1_7(fp) -PASS: gdb.cp/converts.exp: p foo1_7(dp) -PASS: gdb.cp/converts.exp: p foo1_7(-1.23) -PASS: gdb.cp/converts.exp: p foo1_7(ta) -PASS: gdb.cp/converts.exp: show check type -PASS: gdb.cp/converts.exp: p foo1_type_check (123) -PASS: gdb.cp/converts.exp: p foo2_type_check (0, 1) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 0) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 0, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 0, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 1) -PASS: gdb.cp/converts.exp: set check type off -PASS: gdb.cp/converts.exp: show check type -PASS: gdb.cp/converts.exp: p foo1_type_check (123) -PASS: gdb.cp/converts.exp: p foo2_type_check (0, 1) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 0) -PASS: gdb.cp/converts.exp: p foo2_type_check (1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 0, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 0, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (0, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 0) -PASS: gdb.cp/converts.exp: p foo3_type_check (1, 1, 1) -PASS: gdb.cp/converts.exp: p foo3_2 (1,1) -Running ./gdb.cp/cpcompletion.exp ... -PASS: gdb.cp/cpcompletion.exp: complete class methods -PASS: gdb.cp/cpcompletion.exp: complete class methods beginning with F -PASS: gdb.cp/cpcompletion.exp: complete p foo1.g -PASS: gdb.cp/cpcompletion.exp: complete p foo1.base -PASS: gdb.cp/cpcompletion.exp: complete p foo1.Fo -PASS: gdb.cp/cpcompletion.exp: complete p a.g -Running ./gdb.cp/cpexprs.exp ... -PASS: gdb.cp/cpexprs.exp: set listsize 1 -PASS: gdb.cp/cpexprs.exp: print base1::a_function -FAIL: gdb.cp/cpexprs.exp: print base1::base1(int) -FAIL: gdb.cp/cpexprs.exp: print base1::base1(void) -PASS: gdb.cp/cpexprs.exp: print base2::a_function -FAIL: gdb.cp/cpexprs.exp: print base2::base2 -FAIL: gdb.cp/cpexprs.exp: print base::base(int) -FAIL: gdb.cp/cpexprs.exp: print base::base(void) -PASS: gdb.cp/cpexprs.exp: print base::operator char* -PASS: gdb.cp/cpexprs.exp: print base::operator delete -PASS: gdb.cp/cpexprs.exp: print base::operator delete[] -PASS: gdb.cp/cpexprs.exp: print base::operator fluff* -PASS: gdb.cp/cpexprs.exp: print base::operator fluff** -PASS: gdb.cp/cpexprs.exp: print base::operator int -PASS: gdb.cp/cpexprs.exp: print base::operator new -PASS: gdb.cp/cpexprs.exp: print base::operator new[] -PASS: gdb.cp/cpexprs.exp: print base::operator! -PASS: gdb.cp/cpexprs.exp: print base::operator!= -PASS: gdb.cp/cpexprs.exp: print base::operator% -PASS: gdb.cp/cpexprs.exp: print base::operator%= -PASS: gdb.cp/cpexprs.exp: print base::operator& -PASS: gdb.cp/cpexprs.exp: print base::operator&& -PASS: gdb.cp/cpexprs.exp: print base::operator&= -PASS: gdb.cp/cpexprs.exp: print base::operator() -PASS: gdb.cp/cpexprs.exp: print base::operator* -PASS: gdb.cp/cpexprs.exp: print base::operator*= -PASS: gdb.cp/cpexprs.exp: print base::operator+ -PASS: gdb.cp/cpexprs.exp: print base::operator++ -PASS: gdb.cp/cpexprs.exp: print base::operator+= -PASS: gdb.cp/cpexprs.exp: print base::operator- -PASS: gdb.cp/cpexprs.exp: print base::operator-- -PASS: gdb.cp/cpexprs.exp: print base::operator-= -PASS: gdb.cp/cpexprs.exp: print base::operator/ -PASS: gdb.cp/cpexprs.exp: print base::operator/= -PASS: gdb.cp/cpexprs.exp: print base::operator< -PASS: gdb.cp/cpexprs.exp: print base::operator<< -PASS: gdb.cp/cpexprs.exp: print base::operator<<= -PASS: gdb.cp/cpexprs.exp: print base::operator<= -PASS: gdb.cp/cpexprs.exp: print base::operator= -PASS: gdb.cp/cpexprs.exp: print base::operator== -PASS: gdb.cp/cpexprs.exp: print base::operator> -PASS: gdb.cp/cpexprs.exp: print base::operator>= -PASS: gdb.cp/cpexprs.exp: print base::operator>> -PASS: gdb.cp/cpexprs.exp: print base::operator>>= -PASS: gdb.cp/cpexprs.exp: print base::operator[] -PASS: gdb.cp/cpexprs.exp: print base::operator^ -PASS: gdb.cp/cpexprs.exp: print base::operator^= -PASS: gdb.cp/cpexprs.exp: print base::operator| -PASS: gdb.cp/cpexprs.exp: print base::operator|= -PASS: gdb.cp/cpexprs.exp: print base::operator|| -PASS: gdb.cp/cpexprs.exp: print base::operator~ -PASS: gdb.cp/cpexprs.exp: print base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: print base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: print base::overload(int) const -PASS: gdb.cp/cpexprs.exp: print base::overload(long) const -PASS: gdb.cp/cpexprs.exp: print base::overload(short) const -PASS: gdb.cp/cpexprs.exp: print base::overload(void) const -FAIL: gdb.cp/cpexprs.exp: print base::~base -PASS: gdb.cp/cpexprs.exp: print derived::a_function -FAIL: gdb.cp/cpexprs.exp: print derived::derived -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print flubber -PASS: gdb.cp/cpexprs.exp: print policy1::function -FAIL: gdb.cp/cpexprs.exp: print policy1::policy -PASS: gdb.cp/cpexprs.exp: print policy2::function -FAIL: gdb.cp/cpexprs.exp: print policy2::policy -PASS: gdb.cp/cpexprs.exp: print policy3::function -FAIL: gdb.cp/cpexprs.exp: print policy3::policy -PASS: gdb.cp/cpexprs.exp: print policy4::function -FAIL: gdb.cp/cpexprs.exp: print policy4::policy -PASS: gdb.cp/cpexprs.exp: print policyd1::function -FAIL: gdb.cp/cpexprs.exp: print policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd2::function -FAIL: gdb.cp/cpexprs.exp: print policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd3::function -FAIL: gdb.cp/cpexprs.exp: print policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd4::function -FAIL: gdb.cp/cpexprs.exp: print policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd5::function -FAIL: gdb.cp/cpexprs.exp: print policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd >::function -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::function -FAIL: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::policyd -FAIL: gdb.cp/cpexprs.exp: print policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print tclass::do_something -PASS: gdb.cp/cpexprs.exp: print test_function -PASS: gdb.cp/cpexprs.exp: list base1::a_function -PASS: gdb.cp/cpexprs.exp: list base1::base1(int) -PASS: gdb.cp/cpexprs.exp: list base1::base1(void) -PASS: gdb.cp/cpexprs.exp: list base2::a_function -PASS: gdb.cp/cpexprs.exp: list base2::base2 -PASS: gdb.cp/cpexprs.exp: list base::base(int) -PASS: gdb.cp/cpexprs.exp: list base::base(void) -PASS: gdb.cp/cpexprs.exp: list base::operator char* -PASS: gdb.cp/cpexprs.exp: list base::operator delete -PASS: gdb.cp/cpexprs.exp: list base::operator delete[] -PASS: gdb.cp/cpexprs.exp: list base::operator fluff* -PASS: gdb.cp/cpexprs.exp: list base::operator fluff** -PASS: gdb.cp/cpexprs.exp: list base::operator int -PASS: gdb.cp/cpexprs.exp: list base::operator new -PASS: gdb.cp/cpexprs.exp: list base::operator new[] -PASS: gdb.cp/cpexprs.exp: list base::operator! -PASS: gdb.cp/cpexprs.exp: list base::operator!= -PASS: gdb.cp/cpexprs.exp: list base::operator% -PASS: gdb.cp/cpexprs.exp: list base::operator%= -PASS: gdb.cp/cpexprs.exp: list base::operator& -PASS: gdb.cp/cpexprs.exp: list base::operator&& -PASS: gdb.cp/cpexprs.exp: list base::operator&= -PASS: gdb.cp/cpexprs.exp: list base::operator() -PASS: gdb.cp/cpexprs.exp: list base::operator* -PASS: gdb.cp/cpexprs.exp: list base::operator*= -PASS: gdb.cp/cpexprs.exp: list base::operator+ -PASS: gdb.cp/cpexprs.exp: list base::operator++ -PASS: gdb.cp/cpexprs.exp: list base::operator+= -PASS: gdb.cp/cpexprs.exp: list base::operator- -PASS: gdb.cp/cpexprs.exp: list base::operator-- -PASS: gdb.cp/cpexprs.exp: list base::operator-= -PASS: gdb.cp/cpexprs.exp: list base::operator/ -PASS: gdb.cp/cpexprs.exp: list base::operator/= -PASS: gdb.cp/cpexprs.exp: list base::operator< -PASS: gdb.cp/cpexprs.exp: list base::operator<< -PASS: gdb.cp/cpexprs.exp: list base::operator<<= -PASS: gdb.cp/cpexprs.exp: list base::operator<= -PASS: gdb.cp/cpexprs.exp: list base::operator= -PASS: gdb.cp/cpexprs.exp: list base::operator== -PASS: gdb.cp/cpexprs.exp: list base::operator> -PASS: gdb.cp/cpexprs.exp: list base::operator>= -PASS: gdb.cp/cpexprs.exp: list base::operator>> -PASS: gdb.cp/cpexprs.exp: list base::operator>>= -PASS: gdb.cp/cpexprs.exp: list base::operator[] -PASS: gdb.cp/cpexprs.exp: list base::operator^ -PASS: gdb.cp/cpexprs.exp: list base::operator^= -PASS: gdb.cp/cpexprs.exp: list base::operator| -PASS: gdb.cp/cpexprs.exp: list base::operator|= -PASS: gdb.cp/cpexprs.exp: list base::operator|| -PASS: gdb.cp/cpexprs.exp: list base::operator~ -PASS: gdb.cp/cpexprs.exp: list base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: list base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: list base::overload(int) const -PASS: gdb.cp/cpexprs.exp: list base::overload(long) const -PASS: gdb.cp/cpexprs.exp: list base::overload(short) const -PASS: gdb.cp/cpexprs.exp: list base::overload(void) const -PASS: gdb.cp/cpexprs.exp: list base::~base -PASS: gdb.cp/cpexprs.exp: list derived::a_function -PASS: gdb.cp/cpexprs.exp: list derived::derived -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list flubber -PASS: gdb.cp/cpexprs.exp: list policy1::function -PASS: gdb.cp/cpexprs.exp: list policy1::policy -PASS: gdb.cp/cpexprs.exp: list policy2::function -PASS: gdb.cp/cpexprs.exp: list policy2::policy -PASS: gdb.cp/cpexprs.exp: list policy3::function -PASS: gdb.cp/cpexprs.exp: list policy3::policy -PASS: gdb.cp/cpexprs.exp: list policy4::function -PASS: gdb.cp/cpexprs.exp: list policy4::policy -PASS: gdb.cp/cpexprs.exp: list policyd1::function -PASS: gdb.cp/cpexprs.exp: list policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd2::function -PASS: gdb.cp/cpexprs.exp: list policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd3::function -PASS: gdb.cp/cpexprs.exp: list policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd4::function -PASS: gdb.cp/cpexprs.exp: list policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd5::function -PASS: gdb.cp/cpexprs.exp: list policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: list policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::function -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::function -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::policyd -PASS: gdb.cp/cpexprs.exp: list policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list tclass::do_something -PASS: gdb.cp/cpexprs.exp: list test_function -PASS: gdb.cp/cpexprs.exp: continue to base1::a_function -PASS: gdb.cp/cpexprs.exp: continue to base1::base1(int) -PASS: gdb.cp/cpexprs.exp: continue to base1::base1(void) -PASS: gdb.cp/cpexprs.exp: continue to base2::a_function -PASS: gdb.cp/cpexprs.exp: continue to base2::base2 -PASS: gdb.cp/cpexprs.exp: continue to base::base(int) -PASS: gdb.cp/cpexprs.exp: continue to base::base(void) -PASS: gdb.cp/cpexprs.exp: continue to base::operator char* -PASS: gdb.cp/cpexprs.exp: continue to base::operator delete -PASS: gdb.cp/cpexprs.exp: continue to base::operator delete[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff* -PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff** -PASS: gdb.cp/cpexprs.exp: continue to base::operator int -PASS: gdb.cp/cpexprs.exp: continue to base::operator new -PASS: gdb.cp/cpexprs.exp: continue to base::operator new[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator! -PASS: gdb.cp/cpexprs.exp: continue to base::operator!= -PASS: gdb.cp/cpexprs.exp: continue to base::operator% -PASS: gdb.cp/cpexprs.exp: continue to base::operator%= -PASS: gdb.cp/cpexprs.exp: continue to base::operator& -PASS: gdb.cp/cpexprs.exp: continue to base::operator&& -PASS: gdb.cp/cpexprs.exp: continue to base::operator&= -PASS: gdb.cp/cpexprs.exp: continue to base::operator() -PASS: gdb.cp/cpexprs.exp: continue to base::operator* -PASS: gdb.cp/cpexprs.exp: continue to base::operator*= -PASS: gdb.cp/cpexprs.exp: continue to base::operator+ -PASS: gdb.cp/cpexprs.exp: continue to base::operator++ -PASS: gdb.cp/cpexprs.exp: continue to base::operator+= -PASS: gdb.cp/cpexprs.exp: continue to base::operator- -PASS: gdb.cp/cpexprs.exp: continue to base::operator-- -PASS: gdb.cp/cpexprs.exp: continue to base::operator-= -PASS: gdb.cp/cpexprs.exp: continue to base::operator/ -PASS: gdb.cp/cpexprs.exp: continue to base::operator/= -PASS: gdb.cp/cpexprs.exp: continue to base::operator< -PASS: gdb.cp/cpexprs.exp: continue to base::operator<< -PASS: gdb.cp/cpexprs.exp: continue to base::operator<<= -PASS: gdb.cp/cpexprs.exp: continue to base::operator<= -PASS: gdb.cp/cpexprs.exp: continue to base::operator= -PASS: gdb.cp/cpexprs.exp: continue to base::operator== -PASS: gdb.cp/cpexprs.exp: continue to base::operator> -PASS: gdb.cp/cpexprs.exp: continue to base::operator>= -PASS: gdb.cp/cpexprs.exp: continue to base::operator>> -PASS: gdb.cp/cpexprs.exp: continue to base::operator>>= -PASS: gdb.cp/cpexprs.exp: continue to base::operator[] -PASS: gdb.cp/cpexprs.exp: continue to base::operator^ -PASS: gdb.cp/cpexprs.exp: continue to base::operator^= -PASS: gdb.cp/cpexprs.exp: continue to base::operator| -PASS: gdb.cp/cpexprs.exp: continue to base::operator|= -PASS: gdb.cp/cpexprs.exp: continue to base::operator|| -PASS: gdb.cp/cpexprs.exp: continue to base::operator~ -PASS: gdb.cp/cpexprs.exp: continue to base::overload(base&) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(char*) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(int) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(long) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(short) const -PASS: gdb.cp/cpexprs.exp: continue to base::overload(void) const -PASS: gdb.cp/cpexprs.exp: continue to base::~base -PASS: gdb.cp/cpexprs.exp: continue to derived::a_function -PASS: gdb.cp/cpexprs.exp: continue to derived::derived -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to flubber -PASS: gdb.cp/cpexprs.exp: continue to policy1::function -PASS: gdb.cp/cpexprs.exp: continue to policy1::policy -PASS: gdb.cp/cpexprs.exp: continue to policy2::function -PASS: gdb.cp/cpexprs.exp: continue to policy2::policy -PASS: gdb.cp/cpexprs.exp: continue to policy3::function -PASS: gdb.cp/cpexprs.exp: continue to policy3::policy -PASS: gdb.cp/cpexprs.exp: continue to policy4::function -PASS: gdb.cp/cpexprs.exp: continue to policy4::policy -PASS: gdb.cp/cpexprs.exp: continue to policyd1::function -PASS: gdb.cp/cpexprs.exp: continue to policyd1::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd1::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd1::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd2::function -PASS: gdb.cp/cpexprs.exp: continue to policyd2::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd2::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd2::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd3::function -PASS: gdb.cp/cpexprs.exp: continue to policyd3::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd3::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd3::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd4::function -PASS: gdb.cp/cpexprs.exp: continue to policyd4::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd4::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd4::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd5::function -PASS: gdb.cp/cpexprs.exp: continue to policyd5::policyd -FAIL: gdb.cp/cpexprs.exp: setting breakpoint at policyd5::~policyd -FAIL: gdb.cp/cpexprs.exp: continue to policyd5::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::function -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::policyd -PASS: gdb.cp/cpexprs.exp: continue to policyd, operation_1 > >::~policyd -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: continue to tclass::do_something -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int)' -PASS: gdb.cp/cpexprs.exp: p CV::m(int) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) const' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) volatile' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) volatile (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p 'CV::m(int) const volatile' -KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const volatile (PRMS: c++/14186) -PASS: gdb.cp/cpexprs.exp: p CV_f(int) -PASS: gdb.cp/cpexprs.exp: p CV_f(CV::t) -PASS: gdb.cp/cpexprs.exp: p CV_f(CV::i) -Running ./gdb.cp/cplabel.exp ... -PASS: gdb.cp/cplabel.exp: break foo::bar:to_the_top -PASS: gdb.cp/cplabel.exp: break foo::bar:get_out_of_here -PASS: gdb.cp/cplabel.exp: break foo::baz:to_the_top -PASS: gdb.cp/cplabel.exp: break foo::baz:get_out_of_here -Running ./gdb.cp/cplusfuncs.exp ... -PASS: gdb.cp/cplusfuncs.exp: set width 0 -PASS: gdb.cp/cplusfuncs.exp: set language c++ -PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_comma -PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_char_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_char_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_foo_ref -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_int_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_int -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void_star -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_short -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_short -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_long -PASS: gdb.cp/cplusfuncs.exp: detect dm_type_typedef -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(void)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(signed char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned char)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(short)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned short)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(long)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned long)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(float)' -PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(double)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int, int)' -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&&(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator++(int) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator,(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator==(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator||(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator~(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator--(int) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^=(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->*(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator[](foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator()(foo&) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new[] -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator int(void) -PASS: gdb.cp/cplusfuncs.exp: print &foo::operator char*(void) -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc1 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc2 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc3 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc4 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc5 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc6 -PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc7 -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator%(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator-(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator!=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator|(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&&(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator!(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator++(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator+=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator%=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator|=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator,(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator/(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator+(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator==(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator^(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator||(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator~(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator--(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator->(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator-=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator/=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator&=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator^=(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator->\*(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator\[\](" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator new(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator delete(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator int(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator()(" -PASS: gdb.cp/cplusfuncs.exp: info function for "operator char\*(" -PASS: gdb.cp/cplusfuncs.exp: list foo::operator int* -Running ./gdb.cp/cp-relocate.exp ... -PASS: gdb.cp/cp-relocate.exp: info functions -PASS: gdb.cp/cp-relocate.exp: get address of func<1>(int) -PASS: gdb.cp/cp-relocate.exp: get address of func<2>(int) -PASS: gdb.cp/cp-relocate.exp: get address of caller -PASS: gdb.cp/cp-relocate.exp: C++ functions have different addresses -PASS: gdb.cp/cp-relocate.exp: info file -PASS: gdb.cp/cp-relocate.exp: add-symbol-file cp-relocate.o -PASS: gdb.cp/cp-relocate.exp: break *func<1>(int) -PASS: gdb.cp/cp-relocate.exp: break *func<2>(int) -Running ./gdb.cp/ctti.exp ... -PASS: gdb.cp/ctti.exp: continue to breakpoint: marker add1 -PASS: gdb.cp/ctti.exp: print c -PASS: gdb.cp/ctti.exp: print f -PASS: gdb.cp/ctti.exp: print i -Running ./gdb.cp/debug-expr.exp ... -PASS: gdb.cp/debug-expr.exp: set language c++ -PASS: gdb.cp/debug-expr.exp: set debug expression 1 -PASS: gdb.cp/debug-expr.exp: print static_cast(0) -PASS: gdb.cp/debug-expr.exp: print reinterpret_cast(0) -PASS: gdb.cp/debug-expr.exp: print dynamic_cast(0) -Running ./gdb.cp/demangle.exp ... -PASS: gdb.cp/demangle.exp: set language c++ -PASS: gdb.cp/demangle.exp: set width 0 -PASS: gdb.cp/demangle.exp: lucid: set demangle-style -PASS: gdb.cp/demangle.exp: lucid: check demangling style -PASS: gdb.cp/demangle.exp: lucid: WS__FR7istream -PASS: gdb.cp/demangle.exp: lucid: __aa__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __aad__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ad__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __adv__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __adv__7complexF7complex -PASS: gdb.cp/demangle.exp: lucid: __aer__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __als__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amd__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ami__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amu__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __amu__7complexF7complex -PASS: gdb.cp/demangle.exp: lucid: __aor__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __apl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ars__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFR7istream -PASS: gdb.cp/demangle.exp: lucid: __as__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __as__3iosFR3ios -PASS: gdb.cp/demangle.exp: lucid: __cl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __cm__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __co__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPc -PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPci -PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFPciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFv -PASS: gdb.cp/demangle.exp: lucid: __ct__10smanip_intFPFR3iosi_R3iosi -PASS: gdb.cp/demangle.exp: lucid: __ct__11c_exceptionFPcRC7complexT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFi -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFv -PASS: gdb.cp/demangle.exp: lucid: __ct__11smanip_longFPFR3iosl_R3iosl -PASS: gdb.cp/demangle.exp: lucid: __ct__11stdiostreamFP4FILE -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPFl_PvPFPv_v -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPUciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFi -PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFv -PASS: gdb.cp/demangle.exp: lucid: __ct__13strstreambaseFPciT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiN31 -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiPCc -PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiR3fooT1T2T1T2 -PASS: gdb.cp/demangle.exp: lucid: __ct__3iosFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7filebufFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambufiP7ostream -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiT1P7ostream -PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFiPc -PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFiPcT1 -PASS: gdb.cp/demangle.exp: lucid: __ct__Q23foo3barFv -PASS: gdb.cp/demangle.exp: lucid: __ct__Q33foo3bar4bellFv -PASS: gdb.cp/demangle.exp: lucid: __dl__3fooSFPv -PASS: gdb.cp/demangle.exp: lucid: __dl__FPv -PASS: gdb.cp/demangle.exp: lucid: __dt__10istrstreamFv -PASS: gdb.cp/demangle.exp: lucid: __dt__Q23foo3barFv -PASS: gdb.cp/demangle.exp: lucid: __dt__Q33foo3bar4bellFv -PASS: gdb.cp/demangle.exp: lucid: __dv__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __dv__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __er__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ge__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __gt__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __le__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ls__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPCc -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPv -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUi -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUl -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFd -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFf -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFi -PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFl -PASS: gdb.cp/demangle.exp: lucid: __ls__FR7ostream7complex -PASS: gdb.cp/demangle.exp: lucid: __lt__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __md__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __mi__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ml__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __ml__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: __mm__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __ne__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __nt__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __nw__3fooSFi -PASS: gdb.cp/demangle.exp: lucid: __nw__FUi -PASS: gdb.cp/demangle.exp: lucid: __nw__FUiPv -PASS: gdb.cp/demangle.exp: lucid: __oo__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __opPc__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __opi__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __or__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __pl__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __pp__3fooFi -PASS: gdb.cp/demangle.exp: lucid: __pt__3fooFv -PASS: gdb.cp/demangle.exp: lucid: __rm__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __rs__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR7istream_R7istream -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPUc -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPc -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUi -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUl -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUs -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRd -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRf -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRi -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRl -PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRs -PASS: gdb.cp/demangle.exp: lucid: __rs__FR7istreamR7complex -PASS: gdb.cp/demangle.exp: lucid: __vc__3fooFR3foo -PASS: gdb.cp/demangle.exp: lucid: __vtbl__10istrstream -PASS: gdb.cp/demangle.exp: lucid: __vtbl__17ostream__iostream__19iostream_withassign -PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios -PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios__13strstreambase -KFAIL: gdb.cp/demangle.exp: lucid: __vtbl__3foo__vt_cc_main_ (PRMS: gdb/945) -PASS: gdb.cp/demangle.exp: lucid: abs__F7complex -PASS: gdb.cp/demangle.exp: lucid: allocate__9streambufFv -PASS: gdb.cp/demangle.exp: lucid: attach__11fstreambaseFi -PASS: gdb.cp/demangle.exp: lucid: bitalloc__3iosSFv -PASS: gdb.cp/demangle.exp: lucid: chr__FiT1 -PASS: gdb.cp/demangle.exp: lucid: complex_error__FR11c_exception -PASS: gdb.cp/demangle.exp: lucid: complexfunc2__FPFPc_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc3__FPFPFPl_s_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc4__FPFPFPc_s_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc5__FPFPc_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc6__FPFPi_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complexfunc7__FPFPFPc_i_PFl_i -PASS: gdb.cp/demangle.exp: lucid: complicated_put__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: conv10__FlPc -PASS: gdb.cp/demangle.exp: lucid: conv16__FUlPc -PASS: gdb.cp/demangle.exp: lucid: dec__FR3ios -PASS: gdb.cp/demangle.exp: lucid: dec__Fli -PASS: gdb.cp/demangle.exp: lucid: dofield__FP7ostreamPciT2T3 -PASS: gdb.cp/demangle.exp: lucid: flags__3iosFl -PASS: gdb.cp/demangle.exp: lucid: flags__3iosFv -PASS: gdb.cp/demangle.exp: lucid: foo__FiN31 -PASS: gdb.cp/demangle.exp: lucid: foo__FiR3fooT1T2T1T2 -PASS: gdb.cp/demangle.exp: lucid: foo___3barFl -PASS: gdb.cp/demangle.exp: lucid: form__FPCce -PASS: gdb.cp/demangle.exp: lucid: get__7istreamFPcic -PASS: gdb.cp/demangle.exp: lucid: get__7istreamFR9streambufc -PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRUc -PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRc -PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPUcic -PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPcic -PASS: gdb.cp/demangle.exp: lucid: ignore__7istreamFiT1 -PASS: gdb.cp/demangle.exp: lucid: init__12strstreambufFPciT1 -PASS: gdb.cp/demangle.exp: lucid: init__3iosFP9streambuf -PASS: gdb.cp/demangle.exp: lucid: initcount__13Iostream_init -PASS: gdb.cp/demangle.exp: lucid: ipfx__7istreamFi -PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFUc -PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: open__11fstreambaseFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: open__7filebufFPCciT2 -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FSc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUi -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUl -PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUs -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fc -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fd -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Ff -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fi -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fl -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fs -PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fv -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN21 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN31 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN41 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN51 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN61 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN71 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN81 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91N11 -PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiT1 -PASS: gdb.cp/demangle.exp: lucid: polar__FdT1 -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexT1 -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexd -PASS: gdb.cp/demangle.exp: lucid: pow__F7complexi -PASS: gdb.cp/demangle.exp: lucid: pow__Fd7complex -PASS: gdb.cp/demangle.exp: lucid: pstart__FPciT2 -PASS: gdb.cp/demangle.exp: lucid: put__7ostreamFc -PASS: gdb.cp/demangle.exp: lucid: read__7istreamFPci -PASS: gdb.cp/demangle.exp: lucid: resetiosflags__FR3iosl -PASS: gdb.cp/demangle.exp: lucid: restore_errno__FRi -PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRUc -PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRc -PASS: gdb.cp/demangle.exp: lucid: seekg__7istreamFl8seek_dir -PASS: gdb.cp/demangle.exp: lucid: seekoff__12strstreambufFl8seek_diri -PASS: gdb.cp/demangle.exp: lucid: seekoff__9streambufFlQ2_3ios12ios_seek_diri -PASS: gdb.cp/demangle.exp: lucid: seekpos__9streambufFli -PASS: gdb.cp/demangle.exp: lucid: set_new_handler__FPFv_v -PASS: gdb.cp/demangle.exp: lucid: setb__9streambufFPcT1i -PASS: gdb.cp/demangle.exp: lucid: setb__FR3iosi -PASS: gdb.cp/demangle.exp: lucid: setbuf__11fstreambaseFPci -PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPUci -PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPciT2 -PASS: gdb.cp/demangle.exp: lucid: setf__3iosFlT1 -PASS: gdb.cp/demangle.exp: lucid: setfill__FR3iosi -PASS: gdb.cp/demangle.exp: lucid: setg__9streambufFPcN21 -PASS: gdb.cp/demangle.exp: lucid: setp__9streambufFPcT1 -PASS: gdb.cp/demangle.exp: lucid: sputn__9streambufFPCci -PASS: gdb.cp/demangle.exp: lucid: str__FPCci -PASS: gdb.cp/demangle.exp: lucid: tie__3iosFP7ostream -PASS: gdb.cp/demangle.exp: lucid: uconv10__FUlPc -PASS: gdb.cp/demangle.exp: lucid: write__7ostreamFPCci -PASS: gdb.cp/demangle.exp: lucid: xget__7istreamFPc -PASS: gdb.cp/demangle.exp: lucid: xsgetn__9streambufFPci -PASS: gdb.cp/demangle.exp: lucid: xsputn__9streambufFPCci -PASS: gdb.cp/demangle.exp: lucid: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: gnu: set demangle-style -PASS: gdb.cp/demangle.exp: gnu: check demangling style -PASS: gdb.cp/demangle.exp: gnu: Abort__FP6EditoriPCc -PASS: gdb.cp/demangle.exp: gnu: AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue -PASS: gdb.cp/demangle.exp: gnu: Append__15NameChooserViewPCc -PASS: gdb.cp/demangle.exp: gnu: ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic -PASS: gdb.cp/demangle.exp: gnu: AtEnd__13ivRubberGroup -PASS: gdb.cp/demangle.exp: gnu: BgFilter__9ivTSolverP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: BitPatterntoa__FRC10BitPatternccc -PASS: gdb.cp/demangle.exp: gnu: Check__6UArrayi -PASS: gdb.cp/demangle.exp: gnu: CoreConstDecls__8TextCodeR7ostream -PASS: gdb.cp/demangle.exp: gnu: Detach__8StateVarP12StateVarView -PASS: gdb.cp/demangle.exp: gnu: Done__9ComponentG8Iterator -PASS: gdb.cp/demangle.exp: gnu: DrawDestinationTransformedImage__FP7_XImageiiT0iiUlUiiiUiUlUlP4_XGCRC13ivTransformeriiii -PASS: gdb.cp/demangle.exp: gnu: Edit__12StringEditorPCcii -PASS: gdb.cp/demangle.exp: gnu: Effect__11RelateManipR7ivEvent -PASS: gdb.cp/demangle.exp: gnu: FilterName__FPCc -PASS: gdb.cp/demangle.exp: gnu: Filter__6PSTextPCci -PASS: gdb.cp/demangle.exp: gnu: FindColor__7CatalogPCciii -PASS: gdb.cp/demangle.exp: gnu: FindFixed__FRP4CNetP4CNet -PASS: gdb.cp/demangle.exp: gnu: FindFont__7CatalogPCcN21 -PASS: gdb.cp/demangle.exp: gnu: Fix48_abort__FR8twolongs -PASS: gdb.cp/demangle.exp: gnu: GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2 -PASS: gdb.cp/demangle.exp: gnu: GetBgColor__C9ivPainter -PASS: gdb.cp/demangle.exp: gnu: Iisdouble__FPC6IntRep -PASS: gdb.cp/demangle.exp: gnu: InsertBody__15H_PullrightMenuii -PASS: gdb.cp/demangle.exp: gnu: InsertCharacter__9TextManipc -PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1 -PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1iiUi -PASS: gdb.cp/demangle.exp: gnu: IsADirectory__FPCcR4stat -PASS: gdb.cp/demangle.exp: gnu: IsAGroup__FP11GraphicViewP11GraphicComp -PASS: gdb.cp/demangle.exp: gnu: IsA__10ButtonCodeUl -PASS: gdb.cp/demangle.exp: gnu: ReadName__FR7istreamPc -PASS: gdb.cp/demangle.exp: gnu: Redraw__13StringBrowseriiii -PASS: gdb.cp/demangle.exp: gnu: Rotate__13ivTransformerf -PASS: gdb.cp/demangle.exp: gnu: Rotated__C13ivTransformerf -PASS: gdb.cp/demangle.exp: gnu: Round__Ff -PASS: gdb.cp/demangle.exp: gnu: SetExport__16MemberSharedNameUi -PASS: gdb.cp/demangle.exp: gnu: Set__14ivControlState13ControlStatusUi -PASS: gdb.cp/demangle.exp: gnu: Set__5DFacePcii -PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP12ivInteractorRP8TElementT2 -PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP7ivTGlueRP8TElement -PASS: gdb.cp/demangle.exp: gnu: VOrder__9ivTSolverUiRP12ivInteractorT2 -PASS: gdb.cp/demangle.exp: gnu: Valid__7CatalogPCcRP4Tool -PASS: gdb.cp/demangle.exp: gnu: _10PageButton$__both -PASS: gdb.cp/demangle.exp: gnu: _3RNG$singleMantissa -PASS: gdb.cp/demangle.exp: gnu: _5IComp$_release -PASS: gdb.cp/demangle.exp: gnu: _$_10BitmapComp -PASS: gdb.cp/demangle.exp: gnu: _$_9__io_defs -PASS: gdb.cp/demangle.exp: gnu: _$_Q23foo3bar -PASS: gdb.cp/demangle.exp: gnu: _$_Q33foo3bar4bell -PASS: gdb.cp/demangle.exp: gnu: __10ivTelltaleiP7ivGlyph -PASS: gdb.cp/demangle.exp: gnu: __10ivViewportiP12ivInteractorUi -PASS: gdb.cp/demangle.exp: gnu: __10ostrstream -PASS: gdb.cp/demangle.exp: gnu: __10ostrstreamPcii -PASS: gdb.cp/demangle.exp: gnu: __11BasicDialogiPCcP13ivButtonStateN22Ui -PASS: gdb.cp/demangle.exp: gnu: __11BitmapTablei -PASS: gdb.cp/demangle.exp: gnu: __12ViewportCodeP12ViewportComp -PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_BorderiPCci -PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_Borderii -PASS: gdb.cp/demangle.exp: gnu: __12ivBackgroundiP7ivGlyphPC7ivColor -PASS: gdb.cp/demangle.exp: gnu: __12ivBreak_Listl -PASS: gdb.cp/demangle.exp: gnu: __14TextInteractoriPCcUi -PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiPCcP12ivInteractor -PASS: gdb.cp/demangle.exp: gnu: __20DisplayList_IteratorR11DisplayList -PASS: gdb.cp/demangle.exp: gnu: __3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __3fooiN31 -PASS: gdb.cp/demangle.exp: gnu: __3fooiPCc -PASS: gdb.cp/demangle.exp: gnu: __3fooiRT0iT2iT2 -PASS: gdb.cp/demangle.exp: gnu: __6GetOptiPPcPCc -PASS: gdb.cp/demangle.exp: gnu: __6KeyMapPT0 -PASS: gdb.cp/demangle.exp: gnu: __7ivWorldPCcRiPPcPC12ivOptionDescPC14ivPropertyData -PASS: gdb.cp/demangle.exp: gnu: __7procbufPCci -PASS: gdb.cp/demangle.exp: gnu: __8ArrowCmdP6EditorUiUi -PASS: gdb.cp/demangle.exp: gnu: __9F_EllipseiiiiP7Graphic -PASS: gdb.cp/demangle.exp: gnu: __9FrameDataP9FrameCompi -PASS: gdb.cp/demangle.exp: gnu: __9HVGraphicP9CanvasVarP7Graphic -PASS: gdb.cp/demangle.exp: gnu: __Q23foo3bar -PASS: gdb.cp/demangle.exp: gnu: __Q33foo3bar4bell -PASS: gdb.cp/demangle.exp: gnu: __aa__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aad__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ad__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __adv__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aer__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __als__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __amd__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ami__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __aml__3FixRT0 -PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix16i -PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix32RT0 -PASS: gdb.cp/demangle.exp: gnu: __aor__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __apl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ars__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __as__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __cl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __cl__6Normal -PASS: gdb.cp/demangle.exp: gnu: __cl__6Stringii -PASS: gdb.cp/demangle.exp: gnu: __cm__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __co__3foo -PASS: gdb.cp/demangle.exp: gnu: __dl__3fooPv -PASS: gdb.cp/demangle.exp: gnu: __dv__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __er__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ge__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __gt__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __le__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ls__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamPFR3ios_R3ios -PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamR3Fix -PASS: gdb.cp/demangle.exp: gnu: __lt__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __md__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __mi__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ml__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __mm__3fooi -PASS: gdb.cp/demangle.exp: gnu: __ne__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7ComplexT0 -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7Complexd -PASS: gdb.cp/demangle.exp: gnu: __ne__FRC9SubStringRC6String -PASS: gdb.cp/demangle.exp: gnu: __nt__3foo -PASS: gdb.cp/demangle.exp: gnu: __nw__3fooi -PASS: gdb.cp/demangle.exp: gnu: __oo__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __opPc__3foo -PASS: gdb.cp/demangle.exp: gnu: __opi__3foo -PASS: gdb.cp/demangle.exp: gnu: __or__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __pl__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __pp__3fooi -PASS: gdb.cp/demangle.exp: gnu: __rf__3foo -PASS: gdb.cp/demangle.exp: gnu: __rm__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __rs__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __vc__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: _gsub__6StringRC5RegexPCci -PASS: gdb.cp/demangle.exp: gnu: _new_Fix__FUs -PASS: gdb.cp/demangle.exp: gnu: _vt.foo -PASS: gdb.cp/demangle.exp: gnu: _vt.foo.bar -PASS: gdb.cp/demangle.exp: gnu: _vt$foo -PASS: gdb.cp/demangle.exp: gnu: _vt$foo$bar -PASS: gdb.cp/demangle.exp: gnu: append__7ivGlyphPT0 -PASS: gdb.cp/demangle.exp: gnu: arg__FRC7Complex -PASS: gdb.cp/demangle.exp: gnu: clearok__FP7_win_sti -PASS: gdb.cp/demangle.exp: gnu: complexfunc2__FPFPc_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc3__FPFPFPl_s_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc4__FPFPFPc_s_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc5__FPFPc_PFl_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc6__FPFPi_PFl_i -PASS: gdb.cp/demangle.exp: gnu: complexfunc7__FPFPFPc_i_PFl_i -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC10BitPattern -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC12BitSubStringi -PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRT0 -PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntRepT0P6IntRep -PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntReplP6IntRep -PASS: gdb.cp/demangle.exp: gnu: div__FRC8RationalT0R8Rational -PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerT0R7IntegerT2 -PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerlR7IntegerRl -PASS: gdb.cp/demangle.exp: gnu: enable__14DocumentViewerPCcUi -PASS: gdb.cp/demangle.exp: gnu: foo__FiN30 -PASS: gdb.cp/demangle.exp: gnu: foo__FiR3fooiT1iT1 -PASS: gdb.cp/demangle.exp: gnu: foo___3barl -PASS: gdb.cp/demangle.exp: gnu: insert__15ivClippingStacklRP8_XRegion -PASS: gdb.cp/demangle.exp: gnu: insert__16ChooserInfo_ListlR11ChooserInfo -PASS: gdb.cp/demangle.exp: gnu: insert__17FontFamilyRepListlRP15ivFontFamilyRep -PASS: gdb.cp/demangle.exp: gnu: leaveok__FP7_win_stc -PASS: gdb.cp/demangle.exp: gnu: left_mover__C7ivMFKitP12ivAdjustableP7ivStyle -PASS: gdb.cp/demangle.exp: gnu: matches__C9BitStringRC10BitPatterni -PASS: gdb.cp/demangle.exp: gnu: matches__C9SubStringRC5Regex -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FSc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUi -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUl -PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUs -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fc -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fd -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Ff -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fi -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fl -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fs -PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fv -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fi -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiiii -PASS: gdb.cp/demangle.exp: gnu: pick__13ivCompositionP8ivCanvasRC12ivAllocationiR5ivHit -PASS: gdb.cp/demangle.exp: gnu: pointer__C11ivHScrollerRC7ivEventRC12ivAllocation -PASS: gdb.cp/demangle.exp: gnu: poke__8ivRasterUlUlffff -PASS: gdb.cp/demangle.exp: gnu: polar__Fdd -PASS: gdb.cp/demangle.exp: gnu: read__10osStdInputRPCc -PASS: gdb.cp/demangle.exp: gnu: scale__13ivTransformerff -PASS: gdb.cp/demangle.exp: gnu: scanw__12CursesWindowPCce -PASS: gdb.cp/demangle.exp: gnu: scmp__FPCcT0 -PASS: gdb.cp/demangle.exp: gnu: sgetn__7filebufPci -PASS: gdb.cp/demangle.exp: gnu: shift__FP5_FrepiT0 -PASS: gdb.cp/demangle.exp: gnu: test__C6BitSeti -PASS: gdb.cp/demangle.exp: gnu: test__C6BitSetii -PASS: gdb.cp/demangle.exp: gnu: testbit__FRC7Integerl -PASS: gdb.cp/demangle.exp: gnu: text_source__8Documentl -PASS: gdb.cp/demangle.exp: gnu: variance__6Erlangd -PASS: gdb.cp/demangle.exp: gnu: vform__8iostreamPCcPc -PASS: gdb.cp/demangle.exp: gnu: view__14DocumentViewerP8ItemViewP11TabularItem -PASS: gdb.cp/demangle.exp: gnu: xy_extents__11ivExtensionffff -PASS: gdb.cp/demangle.exp: gnu: zero__8osMemoryPvUi -PASS: gdb.cp/demangle.exp: gnu: _2T4$N -PASS: gdb.cp/demangle.exp: gnu: _Q22T42t1$N -PASS: gdb.cp/demangle.exp: gnu: get__2T1 -PASS: gdb.cp/demangle.exp: gnu: get__Q22T11a -PASS: gdb.cp/demangle.exp: gnu: get__Q32T11a1b -PASS: gdb.cp/demangle.exp: gnu: get__Q42T11a1b1c -PASS: gdb.cp/demangle.exp: gnu: get__Q52T11a1b1c1d -PASS: gdb.cp/demangle.exp: gnu: put__2T1i -PASS: gdb.cp/demangle.exp: gnu: put__Q22T11ai -PASS: gdb.cp/demangle.exp: gnu: put__Q32T11a1bi -PASS: gdb.cp/demangle.exp: gnu: put__Q42T11a1b1ci -PASS: gdb.cp/demangle.exp: gnu: put__Q52T11a1b1c1di -PASS: gdb.cp/demangle.exp: gnu: bar__3fooPv -PASS: gdb.cp/demangle.exp: gnu: bar__3fooPCv -PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPv -PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPCv -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRC3foo -PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooR3foo -PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooRT0 -PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zdi -PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zii -PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11ZcUi -PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11Z1tUi -PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11ZcPv -PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11Z1tPv -PASS: gdb.cp/demangle.exp: gnu: __t2T11Zci -PASS: gdb.cp/demangle.exp: gnu: __t2T11Zc -PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1ti -PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1t -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0 -PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element -PASS: gdb.cp/demangle.exp: gnu: __cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PASS: gdb.cp/demangle.exp: gnu: next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix -PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$D$set -PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$I$set -PASS: gdb.cp/demangle.exp: gnu: __as__t5ListS1ZUiRCt5ListS1ZUi -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCUiPT0 -PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCt10ListS_link1ZUi -PASS: gdb.cp/demangle.exp: gnu: __t5ListS1ZUiRCt5ListS1ZUi -PASS: gdb.cp/demangle.exp: gnu: next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t5SetLS1ZUi3Vix -PASS: gdb.cp/demangle.exp: gnu: __t8ListElem1Z5LabelRt4List1Z5Label -PASS: gdb.cp/demangle.exp: gnu: __t8BDDHookV1ZPcRCPc -PASS: gdb.cp/demangle.exp: gnu: _vt$t8BDDHookV1ZPc -PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ211BDDFunction4VixB -PASS: gdb.cp/demangle.exp: gnu: __eq__FPvRCQ211BDDFunction4VixB -PASS: gdb.cp/demangle.exp: gnu: relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters -PASS: gdb.cp/demangle.exp: gnu: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: gnu: foo__I40 -PASS: gdb.cp/demangle.exp: gnu: foo__I_200_ -PASS: gdb.cp/demangle.exp: gnu: foo__I_200 -PASS: gdb.cp/demangle.exp: gnu: foo__I_4000000000000000000000000000000000000000000000000000000000000000000000000 -PASS: gdb.cp/demangle.exp: gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator -PASS: gdb.cp/demangle.exp: arm: set demangle-style -PASS: gdb.cp/demangle.exp: arm: check demangling style -PASS: gdb.cp/demangle.exp: arm: __dt__21T5__pt__11_PFiPPdPv_iFv -PASS: gdb.cp/demangle.exp: arm: __ct__1cFi -PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_iFv -PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __ct__2T2Fi -PASS: gdb.cp/demangle.exp: arm: __dt__2T1Fv -PASS: gdb.cp/demangle.exp: arm: __dt__12T5__pt__3_1xFv -PASS: gdb.cp/demangle.exp: arm: __dt__17T5__pt__8_PFcPv_iFv -PASS: gdb.cp/demangle.exp: arm: g__FP1cPC1cT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUlPCUlT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUiPCUiT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUsPCUsT1 -PASS: gdb.cp/demangle.exp: arm: g__FPUcPCUcT1 -PASS: gdb.cp/demangle.exp: arm: g__F1TPlPClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRlRClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPiPCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRiRCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPsPCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRsRCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TPcPCcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRcRCcT2 -PASS: gdb.cp/demangle.exp: arm: __ct__21T5__pt__11_PFiPPdPv_iFi -PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2c -PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2i -PASS: gdb.cp/demangle.exp: arm: __nw__2T1SFUi -PASS: gdb.cp/demangle.exp: arm: __dl__2T1SFPv -PASS: gdb.cp/demangle.exp: arm: put__2T7SFi -PASS: gdb.cp/demangle.exp: arm: __dl__12T5__pt__3_1xSFPv -PASS: gdb.cp/demangle.exp: arm: h__FUc -PASS: gdb.cp/demangle.exp: arm: f__Fic -PASS: gdb.cp/demangle.exp: arm: h__FUi -PASS: gdb.cp/demangle.exp: arm: h__Fci -PASS: gdb.cp/demangle.exp: arm: h__FUl -PASS: gdb.cp/demangle.exp: arm: h__Fcl -PASS: gdb.cp/demangle.exp: arm: h__FUs -PASS: gdb.cp/demangle.exp: arm: h__Fcs -PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUlRPCUlT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUiRPCUiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUsRPCUsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPUcRPCUcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPlRPClT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPiRPCiT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPcRPCcT3 -PASS: gdb.cp/demangle.exp: arm: X__12T5__pt__3_1x -PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_cFi -PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2T1 -PASS: gdb.cp/demangle.exp: arm: g__FcR1cRC1cT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRPdRPCdT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRPfRPCfT2 -PASS: gdb.cp/demangle.exp: arm: h__FcT1 -PASS: gdb.cp/demangle.exp: arm: f__Ficd -PASS: gdb.cp/demangle.exp: arm: g__F1T1SdRPsRPCsT4 -PASS: gdb.cp/demangle.exp: arm: g__F1cC1cT1 -PASS: gdb.cp/demangle.exp: arm: g__FPdPCdT1 -PASS: gdb.cp/demangle.exp: arm: g__FPfPCfT1 -PASS: gdb.cp/demangle.exp: arm: g__FUlCUlT1 -PASS: gdb.cp/demangle.exp: arm: g__FPlPClT1 -PASS: gdb.cp/demangle.exp: arm: g__FUiCUiT1 -PASS: gdb.cp/demangle.exp: arm: g__FPiPCiT1 -PASS: gdb.cp/demangle.exp: arm: g__FUsCUsT1 -PASS: gdb.cp/demangle.exp: arm: g__FPsPCsT1 -PASS: gdb.cp/demangle.exp: arm: g__FUcCUcT1 -PASS: gdb.cp/demangle.exp: arm: g__FPcPCcT1 -PASS: gdb.cp/demangle.exp: arm: g__F1TlClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TiCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TsCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1TcCcT2 -PASS: gdb.cp/demangle.exp: arm: __dl__17T5__pt__8_PFcPv_iSFPv -PASS: gdb.cp/demangle.exp: arm: printf__FPCce -PASS: gdb.cp/demangle.exp: arm: X__17T5__pt__8_PFcPv_i -PASS: gdb.cp/demangle.exp: arm: __ct__12T5__pt__3_1xFi -PASS: gdb.cp/demangle.exp: arm: g__F1SRUlRCUlT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPlRPClT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUiRCUiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPiRPCiT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUsRCUsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPsRPCsT2 -PASS: gdb.cp/demangle.exp: arm: g__F1RRUcRCUcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1SRPcRPCcT2 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRlRClT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRiRCiT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRsRCsT3 -PASS: gdb.cp/demangle.exp: arm: g__F1T1RRcRCcT3 -PASS: gdb.cp/demangle.exp: arm: __dl__21T5__pt__11_PFiPPdPv_iSFPv -PASS: gdb.cp/demangle.exp: arm: __std__foo -PASS: gdb.cp/demangle.exp: arm: __sti__bar -PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFci_v -PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFic_v -PASS: gdb.cp/demangle.exp: arm: get__2T7SFv -PASS: gdb.cp/demangle.exp: arm: X__21T5__pt__11_PFiPPdPv_i -PASS: gdb.cp/demangle.exp: arm: g__FcRdRCdT2 -PASS: gdb.cp/demangle.exp: arm: g__FcRfRCfT2 -PASS: gdb.cp/demangle.exp: arm: __md__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2i -PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_iSFPv -PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_cSFPv -PASS: gdb.cp/demangle.exp: arm: h__Fc -PASS: gdb.cp/demangle.exp: arm: h__Fd -PASS: gdb.cp/demangle.exp: arm: h__Ff -PASS: gdb.cp/demangle.exp: arm: h__Fi -PASS: gdb.cp/demangle.exp: arm: f__Fi -PASS: gdb.cp/demangle.exp: arm: h__Fl -PASS: gdb.cp/demangle.exp: arm: h__Fs -PASS: gdb.cp/demangle.exp: arm: __md__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: arm: g__FcRP1cRPC1cT2 -PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_c -PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_i -PASS: gdb.cp/demangle.exp: arm: g__FdCdT1 -PASS: gdb.cp/demangle.exp: arm: g__FfCfT1 -PASS: gdb.cp/demangle.exp: arm: g__FlClT1 -PASS: gdb.cp/demangle.exp: arm: g__FiCiT1 -PASS: gdb.cp/demangle.exp: arm: g__FsCsT1 -PASS: gdb.cp/demangle.exp: arm: g__FcCcT1 -PASS: gdb.cp/demangle.exp: arm: __ct__17T5__pt__8_PFcPv_iFi -PASS: gdb.cp/demangle.exp: arm: f__FicdPc -PASS: gdb.cp/demangle.exp: arm: __nw__FUi -PASS: gdb.cp/demangle.exp: arm: __ct__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: __dt__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: put__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: arm: get__Q2_2T11aSFv -PASS: gdb.cp/demangle.exp: arm: put__2T1SFi -PASS: gdb.cp/demangle.exp: arm: put__Q5_2T11a1b1c1dSFi -PASS: gdb.cp/demangle.exp: arm: get__Q4_2T11a1b1cSFv -PASS: gdb.cp/demangle.exp: arm: put__Q2_2T11aSFi -PASS: gdb.cp/demangle.exp: arm: put__Q4_2T11a1b1cSFi -PASS: gdb.cp/demangle.exp: arm: get__Q3_2T11a1bSFv -PASS: gdb.cp/demangle.exp: arm: get__2T1SFv -PASS: gdb.cp/demangle.exp: arm: get__Q5_2T11a1b1c1dSFv -PASS: gdb.cp/demangle.exp: arm: __dt__11T1__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __dt__12T1__pt__3_1tFv -PASS: gdb.cp/demangle.exp: arm: __dl__12T1__pt__3_1tSFPv -PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFi -PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFv -PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFi -PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFv -PASS: gdb.cp/demangle.exp: arm: __dl__11T1__pt__2_cSFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPCv -PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPv -PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPCv -PASS: gdb.cp/demangle.exp: arm: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooFRC3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFR3foo -PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFRC3foo -PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_dFi -PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_dFi -PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_iFi -PASS: gdb.cp/demangle.exp: arm: __ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2 -PASS: gdb.cp/demangle.exp: arm: bar__3fooFiT16FooBar -PASS: gdb.cp/demangle.exp: arm: bar__3fooFPiN51PdN37PcN211T1iN215 -PASS: gdb.cp/demangle.exp: arm: _Utf390_1__1_9223372036854775807__9223372036854775 -PASS: gdb.cp/demangle.exp: hp: set demangle-style -PASS: gdb.cp/demangle.exp: hp: check demangling style -PASS: gdb.cp/demangle.exp: hp: g__FP1cPC1cT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUlPCUlT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUiPCUiT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUsPCUsT1 -PASS: gdb.cp/demangle.exp: hp: g__FPUcPCUcT1 -PASS: gdb.cp/demangle.exp: hp: g__F1TPlPClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRlRClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPiPCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRiRCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPsPCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRsRCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TPcPCcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRcRCcT2 -PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2c -PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2i -PASS: gdb.cp/demangle.exp: hp: __nw__2T1SFUi -PASS: gdb.cp/demangle.exp: hp: __dl__2T1SFPv -PASS: gdb.cp/demangle.exp: hp: put__2T7SFi -PASS: gdb.cp/demangle.exp: hp: h__FUc -PASS: gdb.cp/demangle.exp: hp: f__Fic -PASS: gdb.cp/demangle.exp: hp: h__FUi -PASS: gdb.cp/demangle.exp: hp: h__Fci -PASS: gdb.cp/demangle.exp: hp: h__FUl -PASS: gdb.cp/demangle.exp: hp: h__Fcl -PASS: gdb.cp/demangle.exp: hp: h__FUs -PASS: gdb.cp/demangle.exp: hp: h__Fcs -PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUlRPCUlT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUiRPCUiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUsRPCUsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPUcRPCUcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPlRPClT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPiRPCiT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPcRPCcT3 -PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2T1 -PASS: gdb.cp/demangle.exp: hp: g__FcR1cRC1cT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRPdRPCdT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRPfRPCfT2 -PASS: gdb.cp/demangle.exp: hp: h__FcT1 -PASS: gdb.cp/demangle.exp: hp: f__Ficd -PASS: gdb.cp/demangle.exp: hp: g__F1T1SdRPsRPCsT4 -PASS: gdb.cp/demangle.exp: hp: g__F1cC1cT1 -PASS: gdb.cp/demangle.exp: hp: g__FPdPCdT1 -PASS: gdb.cp/demangle.exp: hp: g__FPfPCfT1 -PASS: gdb.cp/demangle.exp: hp: g__FUlCUlT1 -PASS: gdb.cp/demangle.exp: hp: g__FPlPClT1 -PASS: gdb.cp/demangle.exp: hp: g__FUiCUiT1 -PASS: gdb.cp/demangle.exp: hp: g__FPiPCiT1 -PASS: gdb.cp/demangle.exp: hp: g__FUsCUsT1 -PASS: gdb.cp/demangle.exp: hp: g__FPsPCsT1 -PASS: gdb.cp/demangle.exp: hp: g__FUcCUcT1 -PASS: gdb.cp/demangle.exp: hp: g__FPcPCcT1 -PASS: gdb.cp/demangle.exp: hp: g__F1TlClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TiCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TsCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1TcCcT2 -PASS: gdb.cp/demangle.exp: hp: printf__FPCce -PASS: gdb.cp/demangle.exp: hp: g__F1SRUlRCUlT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPlRPClT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUiRCUiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPiRPCiT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUsRCUsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPsRPCsT2 -PASS: gdb.cp/demangle.exp: hp: g__F1RRUcRCUcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1SRPcRPCcT2 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRlRClT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRiRCiT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRsRCsT3 -PASS: gdb.cp/demangle.exp: hp: g__F1T1RRcRCcT3 -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFic_v -PASS: gdb.cp/demangle.exp: hp: get__2T7SFv -PASS: gdb.cp/demangle.exp: hp: g__FcRdRCdT2 -PASS: gdb.cp/demangle.exp: hp: g__FcRfRCfT2 -PASS: gdb.cp/demangle.exp: hp: __md__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2i -PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2i -PASS: gdb.cp/demangle.exp: hp: h__Fc -PASS: gdb.cp/demangle.exp: hp: h__Fd -PASS: gdb.cp/demangle.exp: hp: h__Ff -PASS: gdb.cp/demangle.exp: hp: h__Fi -PASS: gdb.cp/demangle.exp: hp: f__Fi -PASS: gdb.cp/demangle.exp: hp: h__Fl -PASS: gdb.cp/demangle.exp: hp: h__Fs -PASS: gdb.cp/demangle.exp: hp: __md__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2RC2T2 -PASS: gdb.cp/demangle.exp: hp: g__FcRP1cRPC1cT2 -PASS: gdb.cp/demangle.exp: hp: g__FdCdT1 -PASS: gdb.cp/demangle.exp: hp: g__FfCfT1 -PASS: gdb.cp/demangle.exp: hp: g__FlClT1 -PASS: gdb.cp/demangle.exp: hp: g__FiCiT1 -PASS: gdb.cp/demangle.exp: hp: g__FsCsT1 -PASS: gdb.cp/demangle.exp: hp: g__FcCcT1 -PASS: gdb.cp/demangle.exp: hp: f__FicdPc -PASS: gdb.cp/demangle.exp: hp: __nw__FUi -PASS: gdb.cp/demangle.exp: hp: __ct__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: __dt__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: put__Q3_2T11a1bSFi -PASS: gdb.cp/demangle.exp: hp: get__Q2_2T11aSFv -PASS: gdb.cp/demangle.exp: hp: put__2T1SFi -PASS: gdb.cp/demangle.exp: hp: put__Q5_2T11a1b1c1dSFi -PASS: gdb.cp/demangle.exp: hp: get__Q4_2T11a1b1cSFv -PASS: gdb.cp/demangle.exp: hp: put__Q2_2T11aSFi -PASS: gdb.cp/demangle.exp: hp: put__Q4_2T11a1b1cSFi -PASS: gdb.cp/demangle.exp: hp: get__Q3_2T11a1bSFv -PASS: gdb.cp/demangle.exp: hp: get__2T1SFv -PASS: gdb.cp/demangle.exp: hp: get__Q5_2T11a1b1c1dSFv -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPv -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPCv -PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPv -PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPCv -PASS: gdb.cp/demangle.exp: hp: __eq__3fooFR3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooFRC3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFR3foo -PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFRC3foo -PASS: gdb.cp/demangle.exp: hp: bar__3fooFiT16FooBar -PASS: gdb.cp/demangle.exp: hp: bar__3fooFPiN51PdN37PcN211T1iN215 -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFiPPdPv_i__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__1cFi -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTi__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T2Fi -PASS: gdb.cp/demangle.exp: hp: __dt__2T1Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XT1x__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFcPv_i__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFiPPdPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XT1x__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XT1x -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTc__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFcPv_i__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFcPv_i -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XT1x__Fi -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFiPPdPv_i__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFiPPdPv_i -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTi__SFPv -PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTc__SFPv -PASS: gdb.cp/demangle.exp: hp: X__2T5XTc -PASS: gdb.cp/demangle.exp: hp: X__2T5XTi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: __dt__2T1XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __dt__2T1XT1t__Fv -PASS: gdb.cp/demangle.exp: hp: __dl__2T1XT1t__SFPv -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fv -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fv -PASS: gdb.cp/demangle.exp: hp: __dl__2T1XTc__SFPv -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTd__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTd__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTi__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2 -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiUP34__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXUP2701Td__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSP334__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSM__SCFPPd -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67UP4000TRs__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67TRdTFPv_i__Fi -PASS: gdb.cp/demangle.exp: hp: X__6vectorXTiSN67TdTPvUP5TRs -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3foo__Fi -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3fooTPvA5Label__FiPPvT2 -PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN42A3foo__Fi -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_2 -PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_19 -PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v_34 -PASS: gdb.cp/demangle.exp: hp: spec__13Spec<%1,%1.*>XTiTPi_FPi -PASS: gdb.cp/demangle.exp: hp: spec__16Spec<%1,%1.&,%1>XTiTRiTi_FPi -PASS: gdb.cp/demangle.exp: hp: add__XTc_FcT1 -PASS: gdb.cp/demangle.exp: hp: add__XTcSP9A5label_FcPPlT1 -PASS: gdb.cp/demangle.exp: hp: add__XTPfTFPd_f_FcT1 -PASS: gdb.cp/demangle.exp: hp: unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv -PASS: gdb.cp/demangle.exp: hp: _Utf390_1__1_9223372036854775807__9223372036854775 -Running ./gdb.cp/derivation.exp ... -PASS: gdb.cp/derivation.exp: before run: ptype A::value_type -PASS: gdb.cp/derivation.exp: before run: whatis A::value_type -PASS: gdb.cp/derivation.exp: before run: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype D::value_type -PASS: gdb.cp/derivation.exp: before run: whatis D::value_type -PASS: gdb.cp/derivation.exp: before run: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype E::value_type -PASS: gdb.cp/derivation.exp: before run: whatis E::value_type -PASS: gdb.cp/derivation.exp: before run: p (E::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype F::value_type -PASS: gdb.cp/derivation.exp: before run: whatis F::value_type -PASS: gdb.cp/derivation.exp: before run: p (F::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype A2::value_type -PASS: gdb.cp/derivation.exp: before run: whatis A2::value_type -PASS: gdb.cp/derivation.exp: before run: p (A2::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype D2::value_type -PASS: gdb.cp/derivation.exp: before run: whatis D2::value_type -PASS: gdb.cp/derivation.exp: before run: p (D2::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype Z::value_type -PASS: gdb.cp/derivation.exp: before run: whatis Z::value_type -PASS: gdb.cp/derivation.exp: before run: p (Z::value_type) 0 -PASS: gdb.cp/derivation.exp: before run: ptype ZZ::value_type -PASS: gdb.cp/derivation.exp: before run: whatis ZZ::value_type -PASS: gdb.cp/derivation.exp: before run: p (ZZ::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype A::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis A::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype D::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis D::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype A2::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis A2::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (A2::value_type) 0 -PASS: gdb.cp/derivation.exp: at marker1: ptype D2::value_type -PASS: gdb.cp/derivation.exp: at marker1: whatis D2::value_type -PASS: gdb.cp/derivation.exp: at marker1: p (D2::value_type) 0 -PASS: gdb.cp/derivation.exp: up from marker1 -PASS: gdb.cp/derivation.exp: print value of a_instance -PASS: gdb.cp/derivation.exp: ptype a_instance -PASS: gdb.cp/derivation.exp: print value of d_instance -PASS: gdb.cp/derivation.exp: ptype d_instance -PASS: gdb.cp/derivation.exp: print value of e_instance -PASS: gdb.cp/derivation.exp: ptype e_instance -PASS: gdb.cp/derivation.exp: print value of f_instance -PASS: gdb.cp/derivation.exp: ptype f_instance -PASS: gdb.cp/derivation.exp: ptype g_instance -PASS: gdb.cp/derivation.exp: print value of d_instance.a -PASS: gdb.cp/derivation.exp: print value of d_instance.aa -PASS: gdb.cp/derivation.exp: print value of d_instance.b -PASS: gdb.cp/derivation.exp: print value of d_instance.bb -PASS: gdb.cp/derivation.exp: print value of d_instance.c -PASS: gdb.cp/derivation.exp: print value of d_instance.cc -PASS: gdb.cp/derivation.exp: print value of d_instance.d -PASS: gdb.cp/derivation.exp: print value of d_instance.dd -PASS: gdb.cp/derivation.exp: print value of g_instance.a -PASS: gdb.cp/derivation.exp: print value of g_instance.b -PASS: gdb.cp/derivation.exp: print value of g_instance.c -PASS: gdb.cp/derivation.exp: print value of g_instance.afoo() -PASS: gdb.cp/derivation.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/derivation.exp: print value of g_instance.bfoo() -PASS: gdb.cp/derivation.exp: print value of g_instance.cfoo() -PASS: gdb.cp/derivation.exp: whatis c_instance.c -PASS: gdb.cp/derivation.exp: ptype c_instance.c -PASS: gdb.cp/derivation.exp: whatis g_instance.g -PASS: gdb.cp/derivation.exp: ptype g_instance.g -PASS: gdb.cp/derivation.exp: whatis a_instance.a -PASS: gdb.cp/derivation.exp: ptype a_instance.a -PASS: gdb.cp/derivation.exp: p (A::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis b_instance.b -PASS: gdb.cp/derivation.exp: ptype b_instance.b -PASS: gdb.cp/derivation.exp: whatis d_instance.d -PASS: gdb.cp/derivation.exp: ptype d_instance.d -PASS: gdb.cp/derivation.exp: p (D::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis e_instance.e -PASS: gdb.cp/derivation.exp: ptype e_instance.e -PASS: gdb.cp/derivation.exp: p (E::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis f_instance.f -PASS: gdb.cp/derivation.exp: ptype f_instance.f -PASS: gdb.cp/derivation.exp: p (F::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis z_instance.z -PASS: gdb.cp/derivation.exp: ptype z_instance.z -PASS: gdb.cp/derivation.exp: p (Z::value_type) 0 -PASS: gdb.cp/derivation.exp: whatis zz_instance.zz -PASS: gdb.cp/derivation.exp: ptype zz_instance.zz -PASS: gdb.cp/derivation.exp: p (ZZ::value_type) 0 -PASS: gdb.cp/derivation.exp: ptype vderived -PASS: gdb.cp/derivation.exp: print vderived -PASS: gdb.cp/derivation.exp: ptype N::value_type -PASS: gdb.cp/derivation.exp: ptype N::Derived::value_type -PASS: gdb.cp/derivation.exp: ptype value_type -Running ./gdb.cp/destrprint.exp ... -PASS: gdb.cp/destrprint.exp: continue to breakpoint: Break here -PASS: gdb.cp/destrprint.exp: go up to ~Derived -PASS: gdb.cp/destrprint.exp: set print object on -PASS: gdb.cp/destrprint.exp: print *this with print object = on -PASS: gdb.cp/destrprint.exp: set print object off -PASS: gdb.cp/destrprint.exp: print *this with print object = off -Running ./gdb.cp/dispcxx.exp ... -PASS: gdb.cp/dispcxx.exp: continue to breakpoint: here -PASS: gdb.cp/dispcxx.exp: display k -Running ./gdb.cp/exception.exp ... -PASS: gdb.cp/exception.exp: catch catch (before inferior run) -PASS: gdb.cp/exception.exp: catch throw (before inferior run) -PASS: gdb.cp/exception.exp: info breakpoints (before inferior run) -PASS: gdb.cp/exception.exp: Set temporary breakpoint at main -PASS: gdb.cp/exception.exp: Run to main -PASS: gdb.cp/exception.exp: info breakpoints (after inferior run) -PASS: gdb.cp/exception.exp: break catcher -PASS: gdb.cp/exception.exp: continue to first throw -PASS: gdb.cp/exception.exp: backtrace after first throw -PASS: gdb.cp/exception.exp: continue to first catch -PASS: gdb.cp/exception.exp: backtrace after first catch -PASS: gdb.cp/exception.exp: continue to catcher for the first time -PASS: gdb.cp/exception.exp: continue to second throw -PASS: gdb.cp/exception.exp: backtrace after second throw -PASS: gdb.cp/exception.exp: continue to second catch -PASS: gdb.cp/exception.exp: backtrace after second catch -PASS: gdb.cp/exception.exp: continue to catcher for the second time -Running ./gdb.cp/expand-psymtabs-cxx.exp ... -PASS: gdb.cp/expand-psymtabs-cxx.exp: set language c++ -PASS: gdb.cp/expand-psymtabs-cxx.exp: before expand -PASS: gdb.cp/expand-psymtabs-cxx.exp: force expand -PASS: gdb.cp/expand-psymtabs-cxx.exp: after expand -Running ./gdb.cp/expand-sals.exp ... -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: func -PASS: gdb.cp/expand-sals.exp: up -PASS: gdb.cp/expand-sals.exp: break -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: caller -PASS: gdb.cp/expand-sals.exp: bt from A -PASS: gdb.cp/expand-sals.exp: continue to breakpoint: next caller func -Running ./gdb.cp/extern-c.exp ... -PASS: gdb.cp/extern-c.exp: setting breakpoint at c_func -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_func -PASS: gdb.cp/extern-c.exp: initialize counter -PASS: gdb.cp/extern-c.exp: rbreak c_funcs -PASS: gdb.cp/extern-c.exp: command details for multiple breakpoints -PASS: gdb.cp/extern-c.exp: set commands on multiple breakpoints -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_1 -PASS: gdb.cp/extern-c.exp: verify counter at first breakpoint -PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_2 -PASS: gdb.cp/extern-c.exp: verify counter at second breakpoint -Running ./gdb.cp/formatted-ref.exp ... -PASS: gdb.cp/formatted-ref.exp: print/x s -PASS: gdb.cp/formatted-ref.exp: print/x e -PASS: gdb.cp/formatted-ref.exp: print/x i -PASS: gdb.cp/formatted-ref.exp: print/x &s -PASS: gdb.cp/formatted-ref.exp: print/x &e -PASS: gdb.cp/formatted-ref.exp: print/x &i -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&s)) -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&i)) -PASS: gdb.cp/formatted-ref.exp: print/x *(&(&e)) -PASS: gdb.cp/formatted-ref.exp: print s.x == 13 -Running ./gdb.cp/fpointer.exp ... -PASS: gdb.cp/fpointer.exp: p p1() -PASS: gdb.cp/fpointer.exp: p p2() -PASS: gdb.cp/fpointer.exp: p p[0]() -PASS: gdb.cp/fpointer.exp: p p[1]() -PASS: gdb.cp/fpointer.exp: p p3('a') -PASS: gdb.cp/fpointer.exp: p p4(1) -Running ./gdb.cp/gdb1355.exp ... -PASS: gdb.cp/gdb1355.exp: ptype s1 -PASS: gdb.cp/gdb1355.exp: print s1 -Running ./gdb.cp/gdb2384.exp ... -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/gdb2384.exp: print d1.meth () -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/gdb2384.exp: gdb2384 -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second) -PASS: gdb.cp/gdb2384.exp: print d2.meth() -PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second) -PASS: gdb.cp/gdb2384.exp: gdb2384 (second) -Running ./gdb.cp/gdb2495.exp ... -PASS: gdb.cp/gdb2495.exp: p exceptions.no_throw_function() -PASS: gdb.cp/gdb2495.exp: p exceptions.throw_function_with_handler() -FAIL: gdb.cp/gdb2495.exp: Call a function that raises an exception without a handler. -FAIL: gdb.cp/gdb2495.exp: bt after returning from a popped frame -PASS: gdb.cp/gdb2495.exp: info breakpoints -PASS: gdb.cp/gdb2495.exp: set unwinn-on-terminating-exception off -PASS: gdb.cp/gdb2495.exp: Turn off unwind on terminating exception flag -PASS: gdb.cp/gdb2495.exp: Call a function that raises an exception with unwinding off.. -PASS: gdb.cp/gdb2495.exp: set unwindonsignal on -PASS: gdb.cp/gdb2495.exp: Turn on unwind on signal -PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1) -PASS: gdb.cp/gdb2495.exp: set unwindonsignal off -PASS: gdb.cp/gdb2495.exp: Turn off unwind on signal -PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1) -Running ./gdb.cp/hang.exp ... -PASS: gdb.cp/hang.exp: doesn't overwrite struct type -PASS: gdb.cp/hang.exp: doesn't corrupt cv_type chain -Running ./gdb.cp/infcall-dlopen.exp ... -PASS: gdb.cp/infcall-dlopen.exp: test 0 -PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 1 -PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 2 -PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 3 -PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 4 -PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 5 -PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 6 -PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 7 -PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 8 -PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 2 -PASS: gdb.cp/infcall-dlopen.exp: test 9 -PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 1 -PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 2 -Running ./gdb.cp/inherit.exp ... -PASS: gdb.cp/inherit.exp: set width 0 -PASS: gdb.cp/inherit.exp: set language c++ -PASS: gdb.cp/inherit.exp: ptype A (FIXME) -PASS: gdb.cp/inherit.exp: ptype class A (FIXME) -PASS: gdb.cp/inherit.exp: ptype g_A (FIXME) -PASS: gdb.cp/inherit.exp: ptype B -PASS: gdb.cp/inherit.exp: ptype class B -PASS: gdb.cp/inherit.exp: ptype g_B -PASS: gdb.cp/inherit.exp: ptype C -PASS: gdb.cp/inherit.exp: ptype class C -PASS: gdb.cp/inherit.exp: ptype g_C -PASS: gdb.cp/inherit.exp: ptype tagless struct -PASS: gdb.cp/inherit.exp: ptype variable of type tagless struct -PASS: gdb.cp/inherit.exp: ptype D -PASS: gdb.cp/inherit.exp: ptype class D -PASS: gdb.cp/inherit.exp: ptype g_D -PASS: gdb.cp/inherit.exp: ptype E -PASS: gdb.cp/inherit.exp: ptype class E -PASS: gdb.cp/inherit.exp: ptype g_E -PASS: gdb.cp/inherit.exp: ptype vA -PASS: gdb.cp/inherit.exp: ptype class vA -PASS: gdb.cp/inherit.exp: ptype g_vA -PASS: gdb.cp/inherit.exp: ptype vB -PASS: gdb.cp/inherit.exp: ptype class vB -PASS: gdb.cp/inherit.exp: ptype g_vB -PASS: gdb.cp/inherit.exp: ptype vC -PASS: gdb.cp/inherit.exp: ptype class vC -PASS: gdb.cp/inherit.exp: ptype g_vC -PASS: gdb.cp/inherit.exp: ptype vD -PASS: gdb.cp/inherit.exp: ptype class vD -PASS: gdb.cp/inherit.exp: ptype g_vD -PASS: gdb.cp/inherit.exp: ptype vE -PASS: gdb.cp/inherit.exp: ptype class vE -PASS: gdb.cp/inherit.exp: ptype g_vE -PASS: gdb.cp/inherit.exp: print g_A.A::a -PASS: gdb.cp/inherit.exp: print g_A.A::x -PASS: gdb.cp/inherit.exp: print g_A.a -PASS: gdb.cp/inherit.exp: print g_A.x -PASS: gdb.cp/inherit.exp: print g_B.A::a -PASS: gdb.cp/inherit.exp: print g_B.A::x -PASS: gdb.cp/inherit.exp: print g_B.B::b -PASS: gdb.cp/inherit.exp: print g_B.B::x -PASS: gdb.cp/inherit.exp: print g_B.a -PASS: gdb.cp/inherit.exp: print g_B.b -PASS: gdb.cp/inherit.exp: print g_B.x -PASS: gdb.cp/inherit.exp: print g_C.A::a -PASS: gdb.cp/inherit.exp: print g_C.A::x -PASS: gdb.cp/inherit.exp: print g_C.C::c -PASS: gdb.cp/inherit.exp: print g_C.C::x -PASS: gdb.cp/inherit.exp: print g_C.a -PASS: gdb.cp/inherit.exp: print g_C.c -PASS: gdb.cp/inherit.exp: print g_C.x -PASS: gdb.cp/inherit.exp: print g_A -PASS: gdb.cp/inherit.exp: print g_B -PASS: gdb.cp/inherit.exp: print g_C -PASS: gdb.cp/inherit.exp: print g_A.A::a -PASS: gdb.cp/inherit.exp: print g_A.A::x -PASS: gdb.cp/inherit.exp: print g_B.A::a -PASS: gdb.cp/inherit.exp: print g_B.A::x -PASS: gdb.cp/inherit.exp: print g_B.B::b -PASS: gdb.cp/inherit.exp: print g_B.B::x -PASS: gdb.cp/inherit.exp: print g_C.A::a -PASS: gdb.cp/inherit.exp: print g_C.A::x -PASS: gdb.cp/inherit.exp: print g_C.C::c -PASS: gdb.cp/inherit.exp: print g_C.C::x -PASS: gdb.cp/inherit.exp: print g_D.A::a -PASS: gdb.cp/inherit.exp: print g_D.C::a -PASS: gdb.cp/inherit.exp: print g_D.B::a -PASS: gdb.cp/inherit.exp: print g_D.A::x -PASS: gdb.cp/inherit.exp: print g_D.B::b -PASS: gdb.cp/inherit.exp: print g_D.B::x -PASS: gdb.cp/inherit.exp: print g_D.C::c -PASS: gdb.cp/inherit.exp: print g_D.C::x -PASS: gdb.cp/inherit.exp: print g_D.D::d -PASS: gdb.cp/inherit.exp: print g_D.D::x -PASS: gdb.cp/inherit.exp: print g_E.A::a -PASS: gdb.cp/inherit.exp: print g_E.A::x -PASS: gdb.cp/inherit.exp: print g_E.B::b -PASS: gdb.cp/inherit.exp: print g_E.B::x -PASS: gdb.cp/inherit.exp: print g_E.C::c -PASS: gdb.cp/inherit.exp: print g_E.C::x -PASS: gdb.cp/inherit.exp: print g_E.D::d -PASS: gdb.cp/inherit.exp: print g_E.D::x -PASS: gdb.cp/inherit.exp: print g_E.E::e -PASS: gdb.cp/inherit.exp: print g_E.E::x -PASS: gdb.cp/inherit.exp: ptype g_D.b -PASS: gdb.cp/inherit.exp: ptype g_D.c -PASS: gdb.cp/inherit.exp: ptype g_D.d -PASS: gdb.cp/inherit.exp: ptype g_A.A::a -PASS: gdb.cp/inherit.exp: ptype g_A.A::x -PASS: gdb.cp/inherit.exp: ptype g_B.A::a -PASS: gdb.cp/inherit.exp: ptype g_B.A::x -PASS: gdb.cp/inherit.exp: ptype g_B.B::b -PASS: gdb.cp/inherit.exp: ptype g_B.B::x -PASS: gdb.cp/inherit.exp: ptype g_C.A::a -PASS: gdb.cp/inherit.exp: ptype g_C.A::x -PASS: gdb.cp/inherit.exp: ptype g_C.C::c -PASS: gdb.cp/inherit.exp: ptype g_C.C::x -PASS: gdb.cp/inherit.exp: ptype g_D.A::a -PASS: gdb.cp/inherit.exp: ptype g_D.A::x -PASS: gdb.cp/inherit.exp: ptype g_D.B::b -PASS: gdb.cp/inherit.exp: ptype g_D.B::x -PASS: gdb.cp/inherit.exp: ptype g_D.C::c -PASS: gdb.cp/inherit.exp: ptype g_D.C::x -PASS: gdb.cp/inherit.exp: ptype g_D.D::d -PASS: gdb.cp/inherit.exp: ptype g_D.D::x -PASS: gdb.cp/inherit.exp: ptype g_E.A::a -PASS: gdb.cp/inherit.exp: ptype g_E.A::x -PASS: gdb.cp/inherit.exp: ptype g_E.B::b -PASS: gdb.cp/inherit.exp: ptype g_E.B::x -PASS: gdb.cp/inherit.exp: ptype g_E.C::c -PASS: gdb.cp/inherit.exp: ptype g_E.C::x -PASS: gdb.cp/inherit.exp: ptype g_E.D::d -PASS: gdb.cp/inherit.exp: ptype g_E.D::x -PASS: gdb.cp/inherit.exp: ptype g_E.E::e -PASS: gdb.cp/inherit.exp: ptype g_E.E::x -PASS: gdb.cp/inherit.exp: print g_D -PASS: gdb.cp/inherit.exp: print g_E -PASS: gdb.cp/inherit.exp: print anonymous union member -PASS: gdb.cp/inherit.exp: print variable of type anonymous union -PASS: gdb.cp/inherit.exp: print type of anonymous union -PASS: gdb.cp/inherit.exp: print g_vA.vA::va -PASS: gdb.cp/inherit.exp: print g_vA.vA::vx -PASS: gdb.cp/inherit.exp: print g_vA.va -PASS: gdb.cp/inherit.exp: print g_vA.vx -PASS: gdb.cp/inherit.exp: print g_vB.vA::va -PASS: gdb.cp/inherit.exp: print g_vB.vA::vx -PASS: gdb.cp/inherit.exp: print g_vB.vB::vb -PASS: gdb.cp/inherit.exp: print g_vB.vB::vx -PASS: gdb.cp/inherit.exp: print g_vB.va -PASS: gdb.cp/inherit.exp: print g_vB.vb -PASS: gdb.cp/inherit.exp: print g_vB.vx -PASS: gdb.cp/inherit.exp: print g_vC.vA::va -PASS: gdb.cp/inherit.exp: print g_vC.vA::vx -PASS: gdb.cp/inherit.exp: print g_vC.vC::vc -PASS: gdb.cp/inherit.exp: print g_vC.vC::vx -PASS: gdb.cp/inherit.exp: print g_vC.va -PASS: gdb.cp/inherit.exp: print g_vC.vc -PASS: gdb.cp/inherit.exp: print g_vC.vx -PASS: gdb.cp/inherit.exp: print g_vA -PASS: gdb.cp/inherit.exp: print g_vB -PASS: gdb.cp/inherit.exp: print g_vC -PASS: gdb.cp/inherit.exp: print g_vD.vA::va -PASS: gdb.cp/inherit.exp: print g_vD.vA::vx -PASS: gdb.cp/inherit.exp: print g_vD.vB::vb -PASS: gdb.cp/inherit.exp: print g_vD.vB::vx -PASS: gdb.cp/inherit.exp: print g_vD.vC::vc -PASS: gdb.cp/inherit.exp: print g_vD.vC::vx -PASS: gdb.cp/inherit.exp: print g_vD.vD::vd -PASS: gdb.cp/inherit.exp: print g_vD.vD::vx -PASS: gdb.cp/inherit.exp: print g_vE.vA::va -PASS: gdb.cp/inherit.exp: print g_vE.vA::vx -PASS: gdb.cp/inherit.exp: print g_vE.vB::vb -PASS: gdb.cp/inherit.exp: print g_vE.vB::vx -PASS: gdb.cp/inherit.exp: print g_vE.vC::vc -PASS: gdb.cp/inherit.exp: print g_vE.vC::vx -PASS: gdb.cp/inherit.exp: print g_vE.vD::vd -PASS: gdb.cp/inherit.exp: print g_vE.vD::vx -PASS: gdb.cp/inherit.exp: print g_vE.vE::ve -PASS: gdb.cp/inherit.exp: print g_vE.vE::vx -PASS: gdb.cp/inherit.exp: print g_vD (FIXME v3 vtbl ptr) -PASS: gdb.cp/inherit.exp: print g_vE (FIXME v3 vtbl ptr) -Running ./gdb.cp/koenig.exp ... -PASS: gdb.cp/koenig.exp: p first(c) -PASS: gdb.cp/koenig.exp: p second(0,0,c,0,0) -PASS: gdb.cp/koenig.exp: p entry (c) -PASS: gdb.cp/koenig.exp: p first(0,c) -PASS: gdb.cp/koenig.exp: p first(b.c) -PASS: gdb.cp/koenig.exp: p foo(eo) -PASS: gdb.cp/koenig.exp: p foo(eo, eo) -PASS: gdb.cp/koenig.exp: p foo(eo, eo, 1) -PASS: gdb.cp/koenig.exp: p foo(fo, eo) -PASS: gdb.cp/koenig.exp: p foo(1 ,fo, eo) -PASS: gdb.cp/koenig.exp: p foo(go, fo, eo) -PASS: gdb.cp/koenig.exp: p fake(eo) -PASS: gdb.cp/koenig.exp: p foo (fake) -PASS: gdb.cp/koenig.exp: p foo(io) -PASS: gdb.cp/koenig.exp: p foo(ix) -PASS: gdb.cp/koenig.exp: p foo(ju) -PASS: gdb.cp/koenig.exp: p foo(js) -PASS: gdb.cp/koenig.exp: p foo(je) -XFAIL: gdb.cp/koenig.exp: p foo(jab) -PASS: gdb.cp/koenig.exp: p foo(jap) -PASS: gdb.cp/koenig.exp: p foo(japp) -PASS: gdb.cp/koenig.exp: p foo(jca) -PASS: gdb.cp/koenig.exp: p foo(ko,1) -PASS: gdb.cp/koenig.exp: p foo(ko,1.0f) -XFAIL: gdb.cp/koenig.exp: p bar(ko,1) -PASS: gdb.cp/koenig.exp: p foo(labo) -PASS: gdb.cp/koenig.exp: p ma.foo('a') -PASS: gdb.cp/koenig.exp: p foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::N::foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::FAKE::foo(ma,'a') -PASS: gdb.cp/koenig.exp: p M::N::fake(ma,'a') -PASS: gdb.cp/koenig.exp: p M::bar('a') -PASS: gdb.cp/koenig.exp: p M::N::bar('a') -PASS: gdb.cp/koenig.exp: p foo(ttoa, 'a') -PASS: gdb.cp/koenig.exp: p foo (p_union) -PASS: gdb.cp/koenig.exp: p q == 5 -PASS: gdb.cp/koenig.exp: p q == 5.0f -PASS: gdb.cp/koenig.exp: p q != 5 -PASS: gdb.cp/koenig.exp: p q != 5.0f -PASS: gdb.cp/koenig.exp: p q + 5.0f -PASS: gdb.cp/koenig.exp: p q + 5 -PASS: gdb.cp/koenig.exp: p ++q -PASS: gdb.cp/koenig.exp: p r.rfoo() -PASS: gdb.cp/koenig.exp: continue to breakpoint: marker1 -PASS: gdb.cp/koenig.exp: p rfoo() -PASS: gdb.cp/koenig.exp: p this->rfoo() -Running ./gdb.cp/local.exp ... -PASS: gdb.cp/local.exp: up from marker1 -PASS: gdb.cp/local.exp: ptype l -PASS: gdb.cp/local.exp: ptype Local -PASS: gdb.cp/local.exp: break marker2 -PASS: gdb.cp/local.exp: continuing to marker2 -PASS: gdb.cp/local.exp: up from marker2 -PASS: gdb.cp/local.exp: Local out of scope -PASS: gdb.cp/local.exp: ptype InnerLocal (pattern 1) -PASS: gdb.cp/local.exp: ptype NestedInnerLocal -KFAIL: gdb.cp/local.exp: ptype InnerLocal::NestedInnerLocal (PRMS: gdb/482) -Running ./gdb.cp/maint.exp ... -PASS: gdb.cp/maint.exp: help maintenance cplus -PASS: gdb.cp/maint.exp: help maint cp -PASS: gdb.cp/maint.exp: maint cp -PASS: gdb.cp/maint.exp: help maint cp first_component -PASS: gdb.cp/maint.exp: help maint cp namespace -PASS: gdb.cp/maint.exp: set complaints 1000 -PASS: gdb.cp/maint.exp: maint cp first_component foo -PASS: gdb.cp/maint.exp: maint cp first_component operator<< -PASS: gdb.cp/maint.exp: maint cp first_component operator>> -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component operator() -PASS: gdb.cp/maint.exp: maint cp first_component operator> -PASS: gdb.cp/maint.exp: maint cp first_component operator< -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component operator -> -PASS: gdb.cp/maint.exp: maint cp first_component foo() -PASS: gdb.cp/maint.exp: maint cp first_component foo(int) -PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y) -PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y, A::B) -PASS: gdb.cp/maint.exp: maint cp first_component foo(std::basic_streambuf >) -PASS: gdb.cp/maint.exp: maint cp first_component operator>(X::Y) -PASS: gdb.cp/maint.exp: maint cp first_component int operator<< () -PASS: gdb.cp/maint.exp: maint cp first_component T -PASS: gdb.cp/maint.exp: maint cp first_component int foo<&(operator<<(C, C))>() -PASS: gdb.cp/maint.exp: maint cp first_component int foo<&operator<<(C, C)>() -PASS: gdb.cp/maint.exp: maint cp first_component int foo() -PASS: gdb.cp/maint.exp: maint cp first_component foo::bar -PASS: gdb.cp/maint.exp: maint cp first_component foo::bar::baz -PASS: gdb.cp/maint.exp: maint cp first_component C::bar -PASS: gdb.cp/maint.exp: maint cp first_component C > >::bar -PASS: gdb.cp/maint.exp: maint cp first_component foo< -PASS: gdb.cp/maint.exp: maint cp first_component foo( -PASS: gdb.cp/maint.exp: maint cp first_component bool operator< -PASS: gdb.cp/maint.exp: maint cp namespace -Running ./gdb.cp/mb-ctor.exp ... -PASS: gdb.cp/mb-ctor.exp: set-breakpoint at ctor -PASS: gdb.cp/mb-ctor.exp: set-breakpoint at dtor -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v1 -PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v2 -PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v1 -PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v2 -PASS: gdb.cp/mb-ctor.exp: run to exit -Running ./gdb.cp/mb-inline.exp ... -PASS: gdb.cp/mb-inline.exp: set breakpoint -PASS: gdb.cp/mb-inline.exp: info break -PASS: gdb.cp/mb-inline.exp: run to breakpoint -PASS: gdb.cp/mb-inline.exp: run to breakpoint 2 -PASS: gdb.cp/mb-inline.exp: disabling location: disable -PASS: gdb.cp/mb-inline.exp: disabling location: run to breakpoint -PASS: gdb.cp/mb-inline.exp: disabled breakpoint 1.2 -PASS: gdb.cp/mb-inline.exp: set multi_line_foo breakpoint -PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 afn -PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 bfn -Running ./gdb.cp/mb-templates.exp ... -PASS: gdb.cp/mb-templates.exp: initial condition: set breakpoint -PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint -PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: kill -PASS: gdb.cp/mb-templates.exp: separate condition: set breakpoint -PASS: gdb.cp/mb-templates.exp: separate condition: set condition -PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint -PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: disabling location: disable -PASS: gdb.cp/mb-templates.exp: disabling location: run to breakpoint -PASS: gdb.cp/mb-templates.exp: disabling location: enable -PASS: gdb.cp/mb-templates.exp: disable breakpoint: disable -PASS: gdb.cp/mb-templates.exp: disable breakpoint: run to breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: set breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint -PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint 2 -PASS: gdb.cp/mb-templates.exp: set multi_line_foo breakpoint -PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 -PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 -Running ./gdb.cp/m-data.exp ... -PASS: gdb.cp/m-data.exp: continue to breakpoint: end of first constructors -PASS: gdb.cp/m-data.exp: simple object, const bool -PASS: gdb.cp/m-data.exp: simple object, const int -PASS: gdb.cp/m-data.exp: simple object, long -PASS: gdb.cp/m-data.exp: simple object, enum -PASS: gdb.cp/m-data.exp: derived template object, base const bool -PASS: gdb.cp/m-data.exp: derived template object, base const int -PASS: gdb.cp/m-data.exp: derived template object, base long -PASS: gdb.cp/m-data.exp: derived template object, base enum -PASS: gdb.cp/m-data.exp: derived template object, derived enum -PASS: gdb.cp/m-data.exp: template object, const bool -PASS: gdb.cp/m-data.exp: template object, const int -PASS: gdb.cp/m-data.exp: template object, long -PASS: gdb.cp/m-data.exp: template object, base enum -PASS: gdb.cp/m-data.exp: template object, derived enum -PASS: gdb.cp/m-data.exp: continue to breakpoint: continue to shadow breakpoint -PASS: gdb.cp/m-data.exp: shadowing member -PASS: gdb.cp/m-data.exp: shadowed global variable -Running ./gdb.cp/member-name.exp ... -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to first breakpoint -PASS: gdb.cp/member-name.exp: print C::x from first breakpoint -PASS: gdb.cp/member-name.exp: print B::b from first breakpoint -PASS: gdb.cp/member-name.exp: print inner::z from first breakpoint -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to second breakpoint -PASS: gdb.cp/member-name.exp: print C::x from second breakpoint -PASS: gdb.cp/member-name.exp: print B::b from second breakpoint -PASS: gdb.cp/member-name.exp: print inner::z from second breakpoint -PASS: gdb.cp/member-name.exp: continue to breakpoint: continue to third breakpoint -PASS: gdb.cp/member-name.exp: print Templ::y from third breakpoint -Running ./gdb.cp/member-ptr.exp ... -PASS: gdb.cp/member-ptr.exp: continue to breakpoint: continue to pmi = NULL -PASS: gdb.cp/member-ptr.exp: ptype pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (A::j) -PASS: gdb.cp/member-ptr.exp: set var pmi = &A::jj -PASS: gdb.cp/member-ptr.exp: print pmi (A::jj) -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::jj) -PASS: gdb.cp/member-ptr.exp: set var pmi = &A::j -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (again) -PASS: gdb.cp/member-ptr.exp: print a.*pmi = 33 -PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (33) -PASS: gdb.cp/member-ptr.exp: print a (j = 33) -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi = 44 -PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (44) -PASS: gdb.cp/member-ptr.exp: print a (j = 44) -PASS: gdb.cp/member-ptr.exp: ptype a.*pmi -PASS: gdb.cp/member-ptr.exp: print *pmi -PASS: gdb.cp/member-ptr.exp: ptype *pmi -PASS: gdb.cp/member-ptr.exp: print (int) pmi -PASS: gdb.cp/member-ptr.exp: print ((int) pmi) == ((char *) &a.j - (char *) &a) -PASS: gdb.cp/member-ptr.exp: ptype diamond_pfunc_ptr -PASS: gdb.cp/member-ptr.exp: ptype diamond.*diamond_pfunc_ptr -PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pfunc_ptr (20) -PASS: gdb.cp/member-ptr.exp: print (diamond.*diamond_pfunc_ptr) (20) -PASS: gdb.cp/member-ptr.exp: print diamond.func_ptr (20) -PASS: gdb.cp/member-ptr.exp: ptype pmf -PASS: gdb.cp/member-ptr.exp: print pmf -PASS: gdb.cp/member-ptr.exp: ptype pmf_p -PASS: gdb.cp/member-ptr.exp: gdb/NNNN -PASS: gdb.cp/member-ptr.exp: print a.*pmf -PASS: gdb.cp/member-ptr.exp: print a_p->*pmf -PASS: gdb.cp/member-ptr.exp: set var pmf = &A::foo -PASS: gdb.cp/member-ptr.exp: print *pmf -PASS: gdb.cp/member-ptr.exp: ptype *pmf -PASS: gdb.cp/member-ptr.exp: print (a.*pmf)(3) -PASS: gdb.cp/member-ptr.exp: ptype a.*pmf -PASS: gdb.cp/member-ptr.exp: ptype (a.*pmf)(3) -PASS: gdb.cp/member-ptr.exp: print diamond_pmi -PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pmi -PASS: gdb.cp/member-ptr.exp: print diamond.*left_pmf -PASS: gdb.cp/member-ptr.exp: print diamond.*right_pmf -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_pmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*right_pmf) () -PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf -PASS: gdb.cp/member-ptr.exp: print diamond.*right_vpmf -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_vpmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*left_base_vpmf) () -PASS: gdb.cp/member-ptr.exp: print (diamond.*right_vpmf) () -PASS: gdb.cp/member-ptr.exp: print left_vpmf -PASS: gdb.cp/member-ptr.exp: print right_vpmf -PASS: gdb.cp/member-ptr.exp: print base_vpmf -PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf () -PASS: gdb.cp/member-ptr.exp: print null_pmi -PASS: gdb.cp/member-ptr.exp: print null_pmi = &A::j -PASS: gdb.cp/member-ptr.exp: print null_pmi = 0 -PASS: gdb.cp/member-ptr.exp: print null_pmf -PASS: gdb.cp/member-ptr.exp: print null_pmf = &A::foo -PASS: gdb.cp/member-ptr.exp: print null_pmf = 0 -Running ./gdb.cp/method2.exp ... -PASS: gdb.cp/method2.exp: set multiple-symbols ask -PASS: gdb.cp/method2.exp: setting language c -PASS: gdb.cp/method2.exp: breaking in method (c) -PASS: gdb.cp/method2.exp: setting language c++ -PASS: gdb.cp/method2.exp: breaking in method (c++) -PASS: gdb.cp/method2.exp: continue until exit at continue to end -Running ./gdb.cp/method.exp ... -PASS: gdb.cp/method.exp: break A::foo -PASS: gdb.cp/method.exp: continue to A::foo -PASS: gdb.cp/method.exp: print x in A::foo -PASS: gdb.cp/method.exp: print this in A::foo -PASS: gdb.cp/method.exp: break A::bar -PASS: gdb.cp/method.exp: continue to A::bar -PASS: gdb.cp/method.exp: print x in A::bar -PASS: gdb.cp/method.exp: print this in A::bar -PASS: gdb.cp/method.exp: break 21 -PASS: gdb.cp/method.exp: continue to 21 -PASS: gdb.cp/method.exp: print data_ in funk::getFunky -PASS: gdb.cp/method.exp: print this in funk::getFunky -PASS: gdb.cp/method.exp: print res in funk::getFunky -PASS: gdb.cp/method.exp: ptype A -PASS: gdb.cp/method.exp: finish program -Running ./gdb.cp/meth-typedefs.exp ... -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_other_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_other_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(my_type_2, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(my_type_2, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, my_type)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(int, const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(int, const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(aenum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(aenum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, astruct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, astruct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, astruct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, astruct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, anon_struct const&, aunion const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, anon_struct const&, aunion const***)' -PASS: gdb.cp/meth-typedefs.exp: list test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: list 'test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: break test(anon_enum, anon_struct const&, anon_union const***) -PASS: gdb.cp/meth-typedefs.exp: break 'test(anon_enum, anon_struct const&, anon_union const***)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(fptr1*) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(fptr1*)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (**) (const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (**) (const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(fptr3) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(fptr3) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(fptr3) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(fptr3) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(fptr3)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_other_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), my_type))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(fptr2, const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(fptr2, const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_other_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), my_type_2), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(fptr1, int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_other_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (my_type), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*)) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(void (*)(void (*)(void (*) (const char* const*), int), const char* const*))' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: list 'test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: break test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: break 'test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_other_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_other_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(my_type, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(my_type, int)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, my_other_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, my_other_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, my_type_2) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, my_type_2)' -PASS: gdb.cp/meth-typedefs.exp: list B::test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: list 'B::test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: break B::test(const char* const*, int) -PASS: gdb.cp/meth-typedefs.exp: break 'B::test(const char* const*, int)' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::foo(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::foo(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::foo(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::foo(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(CORE_ADDR (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(CORE_ADDR (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list A::FOO::test(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: list 'A::FOO::test(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: break A::FOO::test(unsigned long (*) [10]) -PASS: gdb.cp/meth-typedefs.exp: break 'A::FOO::test(unsigned long (*) [10])' -PASS: gdb.cp/meth-typedefs.exp: list test(_BAR_&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(_BAR_&)' -PASS: gdb.cp/meth-typedefs.exp: break test(_BAR_&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(_BAR_&)' -PASS: gdb.cp/meth-typedefs.exp: list test(a::b::BAR&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(a::b::BAR&)' -PASS: gdb.cp/meth-typedefs.exp: break test(a::b::BAR&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(a::b::BAR&)' -PASS: gdb.cp/meth-typedefs.exp: list test(a::b::c::d::bar&) -PASS: gdb.cp/meth-typedefs.exp: list 'test(a::b::c::d::bar&)' -PASS: gdb.cp/meth-typedefs.exp: break test(a::b::c::d::bar&) -PASS: gdb.cp/meth-typedefs.exp: break 'test(a::b::c::d::bar&)' -Running ./gdb.cp/minsym-fallback.exp ... -PASS: gdb.cp/minsym-fallback.exp: set breakpoint pending off -PASS: gdb.cp/minsym-fallback.exp: break C::f() -PASS: gdb.cp/minsym-fallback.exp: break C::operator()() -Running ./gdb.cp/misc.exp ... -PASS: gdb.cp/misc.exp: deduced language is C++, before full symbols -PASS: gdb.cp/misc.exp: deduced language is C++, after full symbols -PASS: gdb.cp/misc.exp: print s.a for foo struct (known gcc 2.7.2 and earlier bug) -PASS: gdb.cp/misc.exp: print as bool (setup) -PASS: gdb.cp/misc.exp: print as bool (print 1 == 1) -PASS: gdb.cp/misc.exp: print as bool (print 1 == 2) -PASS: gdb.cp/misc.exp: print a bool var -PASS: gdb.cp/misc.exp: set a bool var (setup) -PASS: gdb.cp/misc.exp: set a bool var (print v_bool) -PASS: gdb.cp/misc.exp: print a bool array -PASS: gdb.cp/misc.exp: set a bool array elem (setup) -PASS: gdb.cp/misc.exp: set a bool array elem (print v_bool_array) -PASS: gdb.cp/misc.exp: print true -PASS: gdb.cp/misc.exp: print false -PASS: gdb.cp/misc.exp: 1 + true -PASS: gdb.cp/misc.exp: 3 + false -PASS: gdb.cp/misc.exp: 1 < 2 < 3 -PASS: gdb.cp/misc.exp: 2 < 1 > 4 -PASS: gdb.cp/misc.exp: (bool)43 -PASS: gdb.cp/misc.exp: (bool)0 -PASS: gdb.cp/misc.exp: (bool)17.93 -PASS: gdb.cp/misc.exp: (bool)0.0 -PASS: gdb.cp/misc.exp: (int)true -PASS: gdb.cp/misc.exp: (int)false -Running ./gdb.cp/m-static.exp ... -PASS: gdb.cp/m-static.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/m-static.exp: simple object, static const int, accessing via 'class::method::variable -PASS: gdb.cp/m-static.exp: simple object, static const bool -PASS: gdb.cp/m-static.exp: simple object, static const int -PASS: gdb.cp/m-static.exp: simple object, static long -PASS: gdb.cp/m-static.exp: simple object, static enum -FAIL: gdb.cp/m-static.exp: simple object instance, print quoted destructor -FAIL: gdb.cp/m-static.exp: simple object class, ptype quoted destructor -PASS: gdb.cp/m-static.exp: derived template object, base static const bool -PASS: gdb.cp/m-static.exp: derived template object, base static const int -PASS: gdb.cp/m-static.exp: derived template object, base static long -PASS: gdb.cp/m-static.exp: derived template object, base static enum -PASS: gdb.cp/m-static.exp: derived template object, static enum -PASS: gdb.cp/m-static.exp: template object, static const bool -PASS: gdb.cp/m-static.exp: template object, static const int -PASS: gdb.cp/m-static.exp: template object, static long -PASS: gdb.cp/m-static.exp: template object, static enum -PASS: gdb.cp/m-static.exp: template object, static derived enum -PASS: gdb.cp/m-static.exp: static const int initialized elsewhere -PASS: gdb.cp/m-static.exp: static const int initialized nowhere -PASS: gdb.cp/m-static.exp: static const int initialized in class definition -PASS: gdb.cp/m-static.exp: static const float initialized in class definition -PASS: gdb.cp/m-static.exp: info variable everywhere -PASS: gdb.cp/m-static.exp: step -PASS: gdb.cp/m-static.exp: print svar -Running ./gdb.cp/namespace-enum.exp ... -PASS: gdb.cp/namespace-enum.exp: print foo::B::B_B -PASS: gdb.cp/namespace-enum.exp: print foo::B_B -PASS: gdb.cp/namespace-enum.exp: print A_A -Running ./gdb.cp/namespace.exp ... -PASS: gdb.cp/namespace.exp: show lang -PASS: gdb.cp/namespace.exp: up from marker1 -PASS: gdb.cp/namespace.exp: print 'AAA::c' -PASS: gdb.cp/namespace.exp: print AAA::c -PASS: gdb.cp/namespace.exp: print ina -PASS: gdb.cp/namespace.exp: ptype ina -PASS: gdb.cp/namespace.exp: info func xyzq -PASS: gdb.cp/namespace.exp: print 'AAA::xyzq'('x') -PASS: gdb.cp/namespace.exp: print AAA::xyzq('x') -PASS: gdb.cp/namespace.exp: break AAA::xyzq -PASS: gdb.cp/namespace.exp: break ::ensureOtherRefs -PASS: gdb.cp/namespace.exp: print 'BBB::CCC::xyzq'('x') -PASS: gdb.cp/namespace.exp: print BBB::CCC::xyzq('x') -PASS: gdb.cp/namespace.exp: break BBB::CCC::xyzq -PASS: gdb.cp/namespace.exp: break ::BBB::CCC::xyzq -PASS: gdb.cp/namespace.exp: print 'BBB::Class::xyzq' -PASS: gdb.cp/namespace.exp: print BBB::Class::xyzq -PASS: gdb.cp/namespace.exp: break BBB::Class::xyzq -PASS: gdb.cp/namespace.exp: whatis C::cOtherFileType -PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileType -PASS: gdb.cp/namespace.exp: whatis C::cOtherFileVar -PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileVar -PASS: gdb.cp/namespace.exp: print C::cOtherFileVar -PASS: gdb.cp/namespace.exp: print ::C::cOtherFileVar -PASS: gdb.cp/namespace.exp: whatis C::OtherFileClass::cOtherFileClassType -PASS: gdb.cp/namespace.exp: whatis ::C::OtherFileClass::cOtherFileClassType -PASS: gdb.cp/namespace.exp: print C::OtherFileClass::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print ::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print ::C::OtherFileClass::cOtherFileClassVar -PASS: gdb.cp/namespace.exp: print c -PASS: gdb.cp/namespace.exp: print cc -PASS: gdb.cp/namespace.exp: print 'C::cc' -PASS: gdb.cp/namespace.exp: print C::cc -PASS: gdb.cp/namespace.exp: print cd -PASS: gdb.cp/namespace.exp: print C::D::cd -PASS: gdb.cp/namespace.exp: print 'E::cde' -PASS: gdb.cp/namespace.exp: print E::cde -PASS: gdb.cp/namespace.exp: print shadow -PASS: gdb.cp/namespace.exp: print E::ce -PASS: gdb.cp/namespace.exp: ptype C -PASS: gdb.cp/namespace.exp: ptype E -PASS: gdb.cp/namespace.exp: ptype CClass -PASS: gdb.cp/namespace.exp: ptype CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype NestedClass -PASS: gdb.cp/namespace.exp: ptype ::C::CClass -PASS: gdb.cp/namespace.exp: ptype ::C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype ::C::NestedClass -PASS: gdb.cp/namespace.exp: ptype C::CClass -PASS: gdb.cp/namespace.exp: ptype C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: ptype C::NestedClass -PASS: gdb.cp/namespace.exp: print cOtherFile -PASS: gdb.cp/namespace.exp: ptype OtherFileClass -PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass -PASS: gdb.cp/namespace.exp: ptype C::OtherFileClass -PASS: gdb.cp/namespace.exp: ptype OtherFileClass typedefs -PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass typedefs -PASS: gdb.cp/namespace.exp: print cX -PASS: gdb.cp/namespace.exp: print 'F::cXf' -PASS: gdb.cp/namespace.exp: print F::cXf -PASS: gdb.cp/namespace.exp: print F::cXfX -PASS: gdb.cp/namespace.exp: print X -PASS: gdb.cp/namespace.exp: print 'G::Xg' -PASS: gdb.cp/namespace.exp: print G::Xg -PASS: gdb.cp/namespace.exp: print G::XgX -PASS: gdb.cp/namespace.exp: print cXOtherFile -PASS: gdb.cp/namespace.exp: print XOtherFile -PASS: gdb.cp/namespace.exp: print AAA::ALPHA -PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass -PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass * -Running ./gdb.cp/namespace-nested-import.exp ... -PASS: gdb.cp/namespace-nested-import.exp: print C::x -Running ./gdb.cp/nextoverthrow.exp ... -UNSUPPORTED: gdb.cp/nextoverthrow.exp: nextoverthrow.exp could not find _Unwind_DebugHook -Running ./gdb.cp/no-dmgl-verbose.exp ... -PASS: gdb.cp/no-dmgl-verbose.exp: set breakpoint pending off -PASS: gdb.cp/no-dmgl-verbose.exp: DMGL_VERBOSE-demangled f(std::string) is not defined -Running ./gdb.cp/noparam.exp ... -PASS: gdb.cp/noparam.exp: p C::m (int) -Running ./gdb.cp/nsdecl.exp ... -PASS: gdb.cp/nsdecl.exp: print fakex -Running ./gdb.cp/nsimport.exp ... -PASS: gdb.cp/nsimport.exp: print x -PASS: gdb.cp/nsimport.exp: print xx -PASS: gdb.cp/nsimport.exp: print xxx -Running ./gdb.cp/nsnested.exp ... -PASS: gdb.cp/nsnested.exp: print ab -PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::first -PASS: gdb.cp/nsnested.exp: print ab -PASS: gdb.cp/nsnested.exp: print C::D::ab -PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::D::second -PASS: gdb.cp/nsnested.exp: print ab -Running ./gdb.cp/nsnoimports.exp ... -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print abc -PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::first -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print C::abc -PASS: gdb.cp/nsnoimports.exp: print abc -PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::C::second -PASS: gdb.cp/nsnoimports.exp: print A::_a -PASS: gdb.cp/nsnoimports.exp: print A::B::ab -PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc -PASS: gdb.cp/nsnoimports.exp: print _a -PASS: gdb.cp/nsnoimports.exp: print ab -PASS: gdb.cp/nsnoimports.exp: print abc -Running ./gdb.cp/nsrecurs.exp ... -PASS: gdb.cp/nsrecurs.exp: print ax -PASS: gdb.cp/nsrecurs.exp: print dx -PASS: gdb.cp/nsrecurs.exp: print xx -KFAIL: gdb.cp/nsrecurs.exp: ptype G::GF (PRMS: gdb/10541) -KFAIL: gdb.cp/nsrecurs.exp: print G::GF::FE::ex (PRMS: gdb/10541) -Running ./gdb.cp/nsstress.exp ... -PASS: gdb.cp/nsstress.exp: print y -Running ./gdb.cp/nsusing.exp ... -PASS: gdb.cp/nsusing.exp: print _a -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker3 -PASS: gdb.cp/nsusing.exp: Print _a without import -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker1 stop -PASS: gdb.cp/nsusing.exp: print _a in a nested scope -PASS: gdb.cp/nsusing.exp: print cc -PASS: gdb.cp/nsusing.exp: print B::_a -PASS: gdb.cp/nsusing.exp: print _a in namespace alias scope -PASS: gdb.cp/nsusing.exp: print x in namespace alias scope -PASS: gdb.cp/nsusing.exp: Print _a without import -PASS: gdb.cp/nsusing.exp: print dx -PASS: gdb.cp/nsusing.exp: print efx -PASS: gdb.cp/nsusing.exp: print ghx -PASS: gdb.cp/nsusing.exp: print jx -PASS: gdb.cp/nsusing.exp: continue to breakpoint: K::marker9 -PASS: gdb.cp/nsusing.exp: print jx -PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker10 stop -PASS: gdb.cp/nsusing.exp: print x (from M::x) -Running ./gdb.cp/operator.exp ... -PASS: gdb.cp/operator.exp: global operator -PASS: gdb.cp/operator.exp: global operator overload -PASS: gdb.cp/operator.exp: ADL operator -PASS: gdb.cp/operator.exp: ADL operator overload -PASS: gdb.cp/operator.exp: Fully qualified explicit operator call -PASS: gdb.cp/operator.exp: anonymous namespace operator -PASS: gdb.cp/operator.exp: anonymous namespace operator overload -PASS: gdb.cp/operator.exp: anonymous namespace operator overload float -PASS: gdb.cp/operator.exp: imported operator -PASS: gdb.cp/operator.exp: imported operator overload -PASS: gdb.cp/operator.exp: imported operator overload float -PASS: gdb.cp/operator.exp: member operator -PASS: gdb.cp/operator.exp: member operator overload -PASS: gdb.cp/operator.exp: namespace alias -PASS: gdb.cp/operator.exp: imported declaration -PASS: gdb.cp/operator.exp: p l == 1 -PASS: gdb.cp/operator.exp: p x[0] -Running ./gdb.cp/oranking.exp ... -PASS: gdb.cp/oranking.exp: continue to breakpoint: end of main -KFAIL: gdb.cp/oranking.exp: p foo0(b) (PRMS: gdb/12096) -PASS: gdb.cp/oranking.exp: p test1() -PASS: gdb.cp/oranking.exp: p foo1(b) -PASS: gdb.cp/oranking.exp: p test2() -KFAIL: gdb.cp/oranking.exp: p foo2(b) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test3() -PASS: gdb.cp/oranking.exp: p foo3(1.0f) -PASS: gdb.cp/oranking.exp: p test4() -KFAIL: gdb.cp/oranking.exp: p foo4(&a) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test5() -PASS: gdb.cp/oranking.exp: p foo5(c) -PASS: gdb.cp/oranking.exp: p test6() -PASS: gdb.cp/oranking.exp: p foo6(bp) -PASS: gdb.cp/oranking.exp: p test7() -PASS: gdb.cp/oranking.exp: p foo7(cp) -PASS: gdb.cp/oranking.exp: p test8() -PASS: gdb.cp/oranking.exp: p foo8(co) -PASS: gdb.cp/oranking.exp: p test9() -PASS: gdb.cp/oranking.exp: p foo9(co) -PASS: gdb.cp/oranking.exp: p test10() -KFAIL: gdb.cp/oranking.exp: p foo10(amp) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test101() -KFAIL: gdb.cp/oranking.exp: p foo101("abc") (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test11() -KFAIL: gdb.cp/oranking.exp: p foo11(d) (PRMS: gdb/12096) -PASS: gdb.cp/oranking.exp: p test12() -PASS: gdb.cp/oranking.exp: p foo12(1) -PASS: gdb.cp/oranking.exp: p test13() -KFAIL: gdb.cp/oranking.exp: p foo13(c) (PRMS: gdb/12098) -PASS: gdb.cp/oranking.exp: p test14() -KFAIL: gdb.cp/oranking.exp: p foo14(e) (PRMS: gdb/12096) -Running ./gdb.cp/overload-const.exp ... -PASS: gdb.cp/overload-const.exp: set language c++ -PASS: gdb.cp/overload-const.exp: setting breakpoint at myclass::func -Running ./gdb.cp/overload.exp ... -PASS: gdb.cp/overload.exp: up from marker1 -PASS: gdb.cp/overload.exp: print foo_instance1 -PASS: gdb.cp/overload.exp: ptype foo_instance1 (shorter match) -PASS: gdb.cp/overload.exp: print foo_instance2 -PASS: gdb.cp/overload.exp: print foo_instance3 -PASS: gdb.cp/overload.exp: print call overloaded func 1 arg -PASS: gdb.cp/overload.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/overload.exp: print call overloaded func 2 args -PASS: gdb.cp/overload.exp: print call overloaded func 3 args -PASS: gdb.cp/overload.exp: print call overloaded func 4 args -PASS: gdb.cp/overload.exp: print call overloaded func 5 args -PASS: gdb.cp/overload.exp: print call overloaded func 6 args -PASS: gdb.cp/overload.exp: print call overloaded func 7 args -PASS: gdb.cp/overload.exp: print call overloaded func 8 args -PASS: gdb.cp/overload.exp: print call overloaded func 9 args -PASS: gdb.cp/overload.exp: print call overloaded func 10 args -PASS: gdb.cp/overload.exp: print call overloaded func 11 args -PASS: gdb.cp/overload.exp: print call overloaded func void arg -PASS: gdb.cp/overload.exp: print call overloaded func char arg -PASS: gdb.cp/overload.exp: print call overloaded func signed char arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned char arg -PASS: gdb.cp/overload.exp: print call overloaded func short arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned short arg -PASS: gdb.cp/overload.exp: print call overloaded func int arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned int arg -PASS: gdb.cp/overload.exp: print call overloaded func long arg -PASS: gdb.cp/overload.exp: print call overloaded func unsigned long arg -PASS: gdb.cp/overload.exp: print call overloaded func float arg -PASS: gdb.cp/overload.exp: print call overloaded func double arg -PASS: gdb.cp/overload.exp: print call overloaded func int\* arg -PASS: gdb.cp/overload.exp: print call overloaded func char\* arg -PASS: gdb.cp/overload.exp: print bar(a) -PASS: gdb.cp/overload.exp: print bar(b) -PASS: gdb.cp/overload.exp: print bar(c) -PASS: gdb.cp/overload.exp: print bar(d) -PASS: gdb.cp/overload.exp: list overloaded function with no args -PASS: gdb.cp/overload.exp: list overloaded function with int arg -PASS: gdb.cp/overload.exp: list overloaded function with function ptr args -PASS: gdb.cp/overload.exp: list overloaded function with function ptr args - quotes around argument -PASS: gdb.cp/overload.exp: list overload.cc:intToChar -PASS: gdb.cp/overload.exp: list overload.cc:intToChar(char) -PASS: gdb.cp/overload.exp: list overload.cc:'intToChar(char)' -PASS: gdb.cp/overload.exp: list 'overload.cc:intToChar(char)' -PASS: gdb.cp/overload.exp: list 'overload.cc':intToChar(char) -PASS: gdb.cp/overload.exp: list 'overload.cc':'intToChar(char)' -PASS: gdb.cp/overload.exp: list overload.cc:foo::overloadfnarg(int) -PASS: gdb.cp/overload.exp: list overload.cc:'foo::overloadfnarg(int)' -PASS: gdb.cp/overload.exp: print overloadNamespace(1) -PASS: gdb.cp/overload.exp: print overloadNamespace('a') -PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) -PASS: gdb.cp/overload.exp: print K::staticoverload () -PASS: gdb.cp/overload.exp: print K::staticoverload (2) -PASS: gdb.cp/overload.exp: print K::staticoverload (2, 3) -PASS: gdb.cp/overload.exp: print N::nsoverload () -PASS: gdb.cp/overload.exp: print N::nsoverload (2) -PASS: gdb.cp/overload.exp: print N::nsoverload (2, 3) -PASS: gdb.cp/overload.exp: print overloadNamespace(1) in XXX -PASS: gdb.cp/overload.exp: print overloadNamespace('a') in XXX -PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) in XXX -PASS: gdb.cp/overload.exp: print intToChar(1) -PASS: gdb.cp/overload.exp: print foo::overload1arg -PASS: gdb.cp/overload.exp: print foo::overload1arg(char***) -PASS: gdb.cp/overload.exp: print foo::overload1arg(void) -PASS: gdb.cp/overload.exp: print foo::overload1arg(char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(signed char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned char) -PASS: gdb.cp/overload.exp: print foo::overload1arg(short) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned short) -PASS: gdb.cp/overload.exp: print foo::overload1arg(int) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned int) -PASS: gdb.cp/overload.exp: print foo::overload1arg(long) -PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned long) -PASS: gdb.cp/overload.exp: print foo::overload1arg(float) -PASS: gdb.cp/overload.exp: print foo::overload1arg(double) -Running ./gdb.cp/ovldbreak.exp ... -PASS: gdb.cp/ovldbreak.exp: detect void -PASS: gdb.cp/ovldbreak.exp: detect char -PASS: gdb.cp/ovldbreak.exp: detect signed_char -PASS: gdb.cp/ovldbreak.exp: detect unsigned_char -PASS: gdb.cp/ovldbreak.exp: detect short_int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_short_int -PASS: gdb.cp/ovldbreak.exp: detect int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_int -PASS: gdb.cp/ovldbreak.exp: detect long_int -PASS: gdb.cp/ovldbreak.exp: detect unsigned_long_int -PASS: gdb.cp/ovldbreak.exp: detect float -PASS: gdb.cp/ovldbreak.exp: detect double -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols ask -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 2 -PASS: gdb.cp/ovldbreak.exp: set bp 2 on foo::overload1arg 2 line 107 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 3 -PASS: gdb.cp/ovldbreak.exp: set bp 3 on foo::overload1arg 3 line 110 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 4 -PASS: gdb.cp/ovldbreak.exp: set bp 4 on foo::overload1arg 4 line 140 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 5 -PASS: gdb.cp/ovldbreak.exp: set bp 5 on foo::overload1arg 5 line 137 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 6 -PASS: gdb.cp/ovldbreak.exp: set bp 6 on foo::overload1arg 6 line 125 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 7 -PASS: gdb.cp/ovldbreak.exp: set bp 7 on foo::overload1arg 7 line 131 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 8 -PASS: gdb.cp/ovldbreak.exp: set bp 8 on foo::overload1arg 8 line 119 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 9 -PASS: gdb.cp/ovldbreak.exp: set bp 9 on foo::overload1arg 9 line 113 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 10 -PASS: gdb.cp/ovldbreak.exp: set bp 10 on foo::overload1arg 10 line 116 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 11 -PASS: gdb.cp/ovldbreak.exp: set bp 11 on foo::overload1arg 11 line 128 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 12 -PASS: gdb.cp/ovldbreak.exp: set bp 12 on foo::overload1arg 12 line 134 -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 13 -PASS: gdb.cp/ovldbreak.exp: set bp 13 on foo::overload1arg 13 line 122 -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting one-by-one) -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice cancel -PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg canceled -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after cancel) -PASS: gdb.cp/ovldbreak.exp: delete all breakpoints -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after delete) -PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice all -PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg all -PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting on all) -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : void -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : signed_char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_char -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : short_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_short_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : long_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned_long_int -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : float -PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : double -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols cancel -PASS: gdb.cp/ovldbreak.exp: break foo::foofunc -PASS: gdb.cp/ovldbreak.exp: set multiple-symbols all -PASS: gdb.cp/ovldbreak.exp: break foo::foofunc -PASS: gdb.cp/ovldbreak.exp: continue until exit at finish program -Running ./gdb.cp/ovsrch.exp ... -PASS: gdb.cp/ovsrch.exp: break A::stop_here -PASS: gdb.cp/ovsrch.exp: break 'A::stop_here' -PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (char*) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (char*) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (void) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (void) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::outer::foo (int) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::outer::foo (int) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::outer::hibob if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::stop_here_too -PASS: gdb.cp/ovsrch.exp: break 'A::B::stop_here_too' -PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here_too -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (char*) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (char*) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (void) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (void) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' if (a_param == 3) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::foo (int) const if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break 'A::B::inner::foo (int) const' if (A::outer::func ()) -PASS: gdb.cp/ovsrch.exp: break A::B::inner::hibob if (a_param == 3) -Running ./gdb.cp/paren-type.exp ... -PASS: gdb.cp/paren-type.exp: set breakpoint pending off -PASS: gdb.cp/paren-type.exp: break C::f(long) -PASS: gdb.cp/paren-type.exp: break C::f(short) -Running ./gdb.cp/parse-lang.exp ... -PASS: gdb.cp/parse-lang.exp: breakpoint hit -Running ./gdb.cp/pass-by-ref.exp ... -PASS: gdb.cp/pass-by-ref.exp: call function in obj -PASS: gdb.cp/pass-by-ref.exp: call function in derived -PASS: gdb.cp/pass-by-ref.exp: call function in container -Running ./gdb.cp/pr-1023.exp ... -PASS: gdb.cp/pr-1023.exp: break myClass::performBlocking -PASS: gdb.cp/pr-1023.exp: break myClass::performUnblocking -Running ./gdb.cp/pr10687.exp ... -PASS: gdb.cp/pr10687.exp: continue to breakpoint: marker -PASS: gdb.cp/pr10687.exp: p a -Running ./gdb.cp/pr10728.exp ... -PASS: gdb.cp/pr10728.exp: continue to breakpoint: marker 1 -PASS: gdb.cp/pr10728.exp: print x->y2 - x->y1 -Running ./gdb.cp/pr12028.exp ... -PASS: gdb.cp/pr12028.exp: p D::foo(b) -Running ./gdb.cp/pr-1210.exp ... -PASS: gdb.cp/pr-1210.exp: step past initialization -PASS: gdb.cp/pr-1210.exp: print *obj -PASS: gdb.cp/pr-1210.exp: print obj->myB -Running ./gdb.cp/pr-574.exp ... -PASS: gdb.cp/pr-574.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/pr-574.exp: PR gdb/574 -Running ./gdb.cp/pr9067.exp ... -PASS: gdb.cp/pr9067.exp: print b -Running ./gdb.cp/pr9167.exp ... -PASS: gdb.cp/pr9167.exp: continue to breakpoint: marker -PASS: gdb.cp/pr9167.exp: p b -Running ./gdb.cp/pr9631.exp ... -PASS: gdb.cp/pr9631.exp: continue to breakpoint: after bar tender is initialized -PASS: gdb.cp/pr9631.exp: print tender -Running ./gdb.cp/printmethod.exp ... -PASS: gdb.cp/printmethod.exp: continue to breakpoint: end of constructors -PASS: gdb.cp/printmethod.exp: print virtual method. -PASS: gdb.cp/printmethod.exp: print nonvirtual method. -Running ./gdb.cp/psmang.exp ... -PASS: gdb.cp/psmang.exp: break s::method1 -PASS: gdb.cp/psmang.exp: break s::method2 -Running ./gdb.cp/psymtab-parameter.exp ... -PASS: gdb.cp/psymtab-parameter.exp: set language c++ -PASS: gdb.cp/psymtab-parameter.exp: maintenance info symtabs -PASS: gdb.cp/psymtab-parameter.exp: complete p 'func( -Running ./gdb.cp/ptype-cv-cp.exp ... -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_volatile_my_int -PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_const_my_int -PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_const_my_int -Running ./gdb.cp/ptype-flags.exp ... -PASS: gdb.cp/ptype-flags.exp: basic test -PASS: gdb.cp/ptype-flags.exp: no methods -PASS: gdb.cp/ptype-flags.exp: no typedefs -PASS: gdb.cp/ptype-flags.exp: no methods or typedefs -PASS: gdb.cp/ptype-flags.exp: raw -PASS: gdb.cp/ptype-flags.exp: raw no methods -PASS: gdb.cp/ptype-flags.exp: raw no typedefs -PASS: gdb.cp/ptype-flags.exp: raw no methods or typedefs -PASS: gdb.cp/ptype-flags.exp: set print type methods off -PASS: gdb.cp/ptype-flags.exp: basic test, default methods off -PASS: gdb.cp/ptype-flags.exp: methods, default methods off -PASS: gdb.cp/ptype-flags.exp: no typedefs, default methods off -PASS: gdb.cp/ptype-flags.exp: methods, no typedefs, default methods off -PASS: gdb.cp/ptype-flags.exp: set print type typedefs off -PASS: gdb.cp/ptype-flags.exp: basic test, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: methods, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: typedefs, default methods+typedefs off -PASS: gdb.cp/ptype-flags.exp: methods typedefs, default methods+typedefs off -Running ./gdb.cp/punctuator.exp ... -PASS: gdb.cp/punctuator.exp: set lang c++ -PASS: gdb.cp/punctuator.exp: print (0x5a5a bitand 0xaaaa) == (0x5a5a & 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a bitor 0xaaaa) == (0x5a5a | 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a xor 0xaaaa) == (0x5a5a ^ 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a and 0xaaaa) == (0x5a5a && 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (0x5a5a or 0xaaaa) == (0x5a5a || 0xaaaa) -PASS: gdb.cp/punctuator.exp: print (not not 0xaaaa) == (!!0xaaaa) -PASS: gdb.cp/punctuator.exp: print (compl 0xaaaa) == (~0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 1 -PASS: gdb.cp/punctuator.exp: set $v 1 -PASS: gdb.cp/punctuator.exp: print ($u not_eq 0xaaaa) == ($v != 0xaaaa) -PASS: gdb.cp/punctuator.exp: print ($u and_eq 0xaaaa) == ($v &= 0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 2 -PASS: gdb.cp/punctuator.exp: set $v 2 -PASS: gdb.cp/punctuator.exp: print ($u or_eq 0xaaaa) == ($v |= 0xaaaa) -PASS: gdb.cp/punctuator.exp: set $u 3 -PASS: gdb.cp/punctuator.exp: set $v 3 -PASS: gdb.cp/punctuator.exp: print ($u xor_eq 0xaaaa) == ($v ^= 0xaaaa) -Running ./gdb.cp/readnow-language.exp ... -PASS: gdb.cp/readnow-language.exp: show language -Running ./gdb.cp/ref-params.exp ... -PASS: gdb.cp/ref-params.exp: print value of a Child in main -PASS: gdb.cp/ref-params.exp: print value of f1 on Child in main -PASS: gdb.cp/ref-params.exp: print value of f2 on Child in main -PASS: gdb.cp/ref-params.exp: print value of f1 on (Child&) in main -PASS: gdb.cp/ref-params.exp: print value of f2 on (Child&) in main -PASS: gdb.cp/ref-params.exp: print value of Child& in f2 -PASS: gdb.cp/ref-params.exp: print value of f1 on Child& in f2 -PASS: gdb.cp/ref-params.exp: print value of Parent& in f1 -PASS: gdb.cp/ref-params.exp: print f1(MQ) -PASS: gdb.cp/ref-params.exp: print mf1(MQ) -PASS: gdb.cp/ref-params.exp: print mf2(MQ) -PASS: gdb.cp/ref-params.exp: print f1(MQR) -PASS: gdb.cp/ref-params.exp: print mf1(MQR) -PASS: gdb.cp/ref-params.exp: print mf2(MQR) -Running ./gdb.cp/ref-types.exp ... -PASS: gdb.cp/ref-types.exp: up from marker1 1 -PASS: gdb.cp/ref-types.exp: print value of s -PASS: gdb.cp/ref-types.exp: ptype s -PASS: gdb.cp/ref-types.exp: print value of ps -PASS: gdb.cp/ref-types.exp: ptype ps -PASS: gdb.cp/ref-types.exp: print value of as[0] -PASS: gdb.cp/ref-types.exp: ptype as -PASS: gdb.cp/ref-types.exp: print value of as[1] -PASS: gdb.cp/ref-types.exp: print value of as[2] -PASS: gdb.cp/ref-types.exp: print value of as[3] -PASS: gdb.cp/ref-types.exp: print value of rs -PASS: gdb.cp/ref-types.exp: ptype rs -PASS: gdb.cp/ref-types.exp: print value of *rps -PASS: gdb.cp/ref-types.exp: examine value at rps -PASS: gdb.cp/ref-types.exp: ptype rps -PASS: gdb.cp/ref-types.exp: print value of ras[0] -PASS: gdb.cp/ref-types.exp: ptype ras -PASS: gdb.cp/ref-types.exp: print value of ras[1] -PASS: gdb.cp/ref-types.exp: print value of ras[2] -PASS: gdb.cp/ref-types.exp: print value of ras[3] -PASS: gdb.cp/ref-types.exp: up from f -PASS: gdb.cp/ref-types.exp: print value of C -PASS: gdb.cp/ref-types.exp: ptype C -PASS: gdb.cp/ref-types.exp: print value of UC -PASS: gdb.cp/ref-types.exp: ptype UC -PASS: gdb.cp/ref-types.exp: print value of S -PASS: gdb.cp/ref-types.exp: ptype S -PASS: gdb.cp/ref-types.exp: print value of US -PASS: gdb.cp/ref-types.exp: ptype US -PASS: gdb.cp/ref-types.exp: print value of I -PASS: gdb.cp/ref-types.exp: ptype I -PASS: gdb.cp/ref-types.exp: print value of UI -PASS: gdb.cp/ref-types.exp: ptype UI -PASS: gdb.cp/ref-types.exp: print value of L -PASS: gdb.cp/ref-types.exp: ptype L -PASS: gdb.cp/ref-types.exp: print value of UL -PASS: gdb.cp/ref-types.exp: ptype UL -PASS: gdb.cp/ref-types.exp: print value of F -PASS: gdb.cp/ref-types.exp: ptype F -PASS: gdb.cp/ref-types.exp: print value of D -PASS: gdb.cp/ref-types.exp: ptype D -PASS: gdb.cp/ref-types.exp: ptype rC -PASS: gdb.cp/ref-types.exp: ptype rUC -PASS: gdb.cp/ref-types.exp: ptype rS -PASS: gdb.cp/ref-types.exp: ptype rUS -PASS: gdb.cp/ref-types.exp: ptype rI -PASS: gdb.cp/ref-types.exp: ptype rUI -PASS: gdb.cp/ref-types.exp: ptype rL -PASS: gdb.cp/ref-types.exp: ptype rUL -PASS: gdb.cp/ref-types.exp: ptype rF -PASS: gdb.cp/ref-types.exp: ptype rD -PASS: gdb.cp/ref-types.exp: print value of rC -PASS: gdb.cp/ref-types.exp: print value of rUC -PASS: gdb.cp/ref-types.exp: print value of rS -PASS: gdb.cp/ref-types.exp: print value of rUS -PASS: gdb.cp/ref-types.exp: print value of rI -PASS: gdb.cp/ref-types.exp: print value of UI -PASS: gdb.cp/ref-types.exp: print value of rL -PASS: gdb.cp/ref-types.exp: print value of rUL -PASS: gdb.cp/ref-types.exp: print value of rF -PASS: gdb.cp/ref-types.exp: print value of rD -Running ./gdb.cp/re-set-overloaded.exp ... -PASS: gdb.cp/re-set-overloaded.exp: set breakpoint pending yes -PASS: gdb.cp/re-set-overloaded.exp: break C::C -PASS: gdb.cp/re-set-overloaded.exp: set variable $brk = $bpnum -PASS: gdb.cp/re-set-overloaded.exp: start -PASS: gdb.cp/re-set-overloaded.exp: breakpoint resolved -Running ./gdb.cp/rtti.exp ... -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in main -PASS: gdb.cp/rtti.exp: print *e1 -PASS: gdb.cp/rtti.exp: print *e2 -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func -PASS: gdb.cp/rtti.exp: print *obj -PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func3 -PASS: gdb.cp/rtti.exp: print *obj3 -Running ./gdb.cp/shadow.exp ... -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker1 -PASS: gdb.cp/shadow.exp: Print class x shadowing global x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker2 -PASS: gdb.cp/shadow.exp: Print local x shadowing class x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker3 -PASS: gdb.cp/shadow.exp: Print inner scope x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker4 -PASS: gdb.cp/shadow.exp: Print local x not namespace x -PASS: gdb.cp/shadow.exp: continue to breakpoint: marker5 -PASS: gdb.cp/shadow.exp: Print imported namespace x -Running ./gdb.cp/smartp.exp ... -PASS: gdb.cp/smartp.exp: continue to breakpoint: end of main -PASS: gdb.cp/smartp.exp: p mp->foo() -PASS: gdb.cp/smartp.exp: p mtp->foo() -PASS: gdb.cp/smartp.exp: p mt1.foo() -PASS: gdb.cp/smartp.exp: p mt4p.a -PASS: gdb.cp/smartp.exp: p mt4->a -PASS: gdb.cp/smartp.exp: p sp1->foo() -PASS: gdb.cp/smartp.exp: p sp2->foo() -PASS: gdb.cp/smartp.exp: p sp3->foo(1) -PASS: gdb.cp/smartp.exp: p sp3->foo('a') -PASS: gdb.cp/smartp.exp: p sp4->a -PASS: gdb.cp/smartp.exp: p sp4->b -PASS: gdb.cp/smartp.exp: p mt4p->a -PASS: gdb.cp/smartp.exp: p mt4p->b -PASS: gdb.cp/smartp.exp: p mt4->fake -PASS: gdb.cp/smartp.exp: p mt4->fake() -PASS: gdb.cp/smartp.exp: p b->foo() -PASS: gdb.cp/smartp.exp: p c->foo() -PASS: gdb.cp/smartp.exp: p c->inta -KFAIL: gdb.cp/smartp.exp: p c2->inta (PRMS: gdb/11606) -Running ./gdb.cp/static-method.exp ... -PASS: gdb.cp/static-method.exp: info addr A::func() -PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::func -PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list 'static-method.cc':'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::func -PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::A::func -PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: list 'static-method.cc':'xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::A::func' -PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::A::func -PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::A::func' -Running ./gdb.cp/static-print-quit.exp ... -PASS: gdb.cp/static-print-quit.exp: set width 80 -PASS: gdb.cp/static-print-quit.exp: set height 2 -PASS: gdb.cp/static-print-quit.exp: print c - -PASS: gdb.cp/static-print-quit.exp: print c - q -PASS: gdb.cp/static-print-quit.exp: print c - to quit -PASS: gdb.cp/static-print-quit.exp: q -PASS: gdb.cp/static-print-quit.exp: set pagination off -PASS: gdb.cp/static-print-quit.exp: first print -PASS: gdb.cp/static-print-quit.exp: second print -Running ./gdb.cp/temargs.exp ... -PASS: gdb.cp/temargs.exp: set first breakpoint for temargs -PASS: gdb.cp/temargs.exp: set second breakpoint for temargs -PASS: gdb.cp/temargs.exp: set third breakpoint for temargs -PASS: gdb.cp/temargs.exp: set fourth breakpoint for temargs -PASS: gdb.cp/temargs.exp: set fifth breakpoint for temargs -PASS: gdb.cp/temargs.exp: set sixth breakpoint for temargs -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to first breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in base_m -PASS: gdb.cp/temargs.exp: test value of I in base_m -PASS: gdb.cp/temargs.exp: test value of P in base_m -PASS: gdb.cp/temargs.exp: test value of MP in base_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to second breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in inner_m -PASS: gdb.cp/temargs.exp: test value of I in inner_m -PASS: gdb.cp/temargs.exp: test value of P in inner_m -PASS: gdb.cp/temargs.exp: test value of MP in inner_m -PASS: gdb.cp/temargs.exp: test type of Z in inner_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to third breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in func -PASS: gdb.cp/temargs.exp: test value of I in func -PASS: gdb.cp/temargs.exp: test value of P in func -PASS: gdb.cp/temargs.exp: test value of MP in func -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fourth breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of T in templ_m -PASS: gdb.cp/temargs.exp: test value of I in templ_m -PASS: gdb.cp/temargs.exp: test value of P in templ_m -PASS: gdb.cp/temargs.exp: test value of MP in templ_m -PASS: gdb.cp/temargs.exp: test type of Q in templ_m -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fifth breakpoint for temargs -PASS: gdb.cp/temargs.exp: test type of F in k2_m -XFAIL: gdb.cp/temargs.exp: test value of F in k2_m (PRMS gcc/49366) -PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to sixth breakpoint for temargs -XFAIL: gdb.cp/temargs.exp: test type of F in k3_m (PRMS gcc/49546) -XFAIL: gdb.cp/temargs.exp: test value of F in k3_m (PRMS gcc/49546) -Running ./gdb.cp/templates.exp ... -PASS: gdb.cp/templates.exp: set multiple-symbols ask -KFAIL: gdb.cp/templates.exp: ptype T5 (PRMS: gdb/8218) -KFAIL: gdb.cp/templates.exp: ptype T5 (PRMS: gdb/8218) -PASS: gdb.cp/templates.exp: constructor breakpoint -PASS: gdb.cp/templates.exp: destructor breakpoint -PASS: gdb.cp/templates.exp: value method breakpoint -PASS: gdb.cp/templates.exp: breakpoint on a line with no real code -PASS: gdb.cp/templates.exp: print method of template typedef -XFAIL: gdb.cp/templates.exp: print destructor of template typedef (PRMS gcc/51668) -PASS: gdb.cp/templates.exp: verify GCC PR debug/51668 -PASS: gdb.cp/templates.exp: ptype empty -PASS: gdb.cp/templates.exp: ptype arg -PASS: gdb.cp/templates.exp: print t5i.value() -PASS: gdb.cp/templates.exp: b 770 -PASS: gdb.cp/templates.exp: continue to line 770 -PASS: gdb.cp/templates.exp: print fint -PASS: gdb.cp/templates.exp: print fvpchar -PASS: gdb.cp/templates.exp: ptype Foo -PASS: gdb.cp/templates.exp: ptype fint -PASS: gdb.cp/templates.exp: ptype fchar -KFAIL: gdb.cp/templates.exp: ptype fvpchar (PRMS: gdb/1512) -PASS: gdb.cp/templates.exp: print Foo::foo -PASS: gdb.cp/templates.exp: print Foo::foo -PASS: gdb.cp/templates.exp: ptype Bar -PASS: gdb.cp/templates.exp: ptype bint -PASS: gdb.cp/templates.exp: ptype bint2 -PASS: gdb.cp/templates.exp: ptype Baz -PASS: gdb.cp/templates.exp: ptype bazint -PASS: gdb.cp/templates.exp: ptype bazint2 -PASS: gdb.cp/templates.exp: ptype Qux -PASS: gdb.cp/templates.exp: ptype quxint -PASS: gdb.cp/templates.exp: ptype Spec -PASS: gdb.cp/templates.exp: ptype siip -PASS: gdb.cp/templates.exp: ptype Garply -PASS: gdb.cp/templates.exp: ptype Garply > -PASS: gdb.cp/templates.exp: print Garply >::garply -PASS: gdb.cp/templates.exp: break Garply >::garply -Running ./gdb.cp/try_catch.exp ... -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-catch -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-start -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-next -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-catch -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-throw -PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-catch -Running ./gdb.cp/typedef-operator.exp ... -PASS: gdb.cp/typedef-operator.exp: set language c++ -PASS: gdb.cp/typedef-operator.exp: test crash -PASS: gdb.cp/typedef-operator.exp: test typedef -Running ./gdb.cp/userdef.exp ... -PASS: gdb.cp/userdef.exp: break marker1 -PASS: gdb.cp/userdef.exp: continue to marker1 -PASS: gdb.cp/userdef.exp: up from marker1 -PASS: gdb.cp/userdef.exp: print one + two -PASS: gdb.cp/userdef.exp: re-selected 'main' frame after inferior call -PASS: gdb.cp/userdef.exp: print one - two -PASS: gdb.cp/userdef.exp: print one * two -PASS: gdb.cp/userdef.exp: print one / two -PASS: gdb.cp/userdef.exp: print one % two -PASS: gdb.cp/userdef.exp: print one && two -PASS: gdb.cp/userdef.exp: print one || two -PASS: gdb.cp/userdef.exp: print one & two -PASS: gdb.cp/userdef.exp: print one | two -PASS: gdb.cp/userdef.exp: print one ^ two -PASS: gdb.cp/userdef.exp: print one < two -PASS: gdb.cp/userdef.exp: print one <= two -PASS: gdb.cp/userdef.exp: print one > two -PASS: gdb.cp/userdef.exp: print one >= two -PASS: gdb.cp/userdef.exp: print one == two -PASS: gdb.cp/userdef.exp: print one.operator== (two) -PASS: gdb.cp/userdef.exp: print one != two -PASS: gdb.cp/userdef.exp: print one << 31 -PASS: gdb.cp/userdef.exp: print one >> 31 -PASS: gdb.cp/userdef.exp: print !one -PASS: gdb.cp/userdef.exp: print +one -PASS: gdb.cp/userdef.exp: print ~one -PASS: gdb.cp/userdef.exp: print -one -PASS: gdb.cp/userdef.exp: print one++ -PASS: gdb.cp/userdef.exp: print ++one -PASS: gdb.cp/userdef.exp: print one-- -PASS: gdb.cp/userdef.exp: print --one -PASS: gdb.cp/userdef.exp: print one += 7 -PASS: gdb.cp/userdef.exp: print two = one -PASS: gdb.cp/userdef.exp: break A2::operator+ -PASS: gdb.cp/userdef.exp: break A2::operator + -PASS: gdb.cp/userdef.exp: print c -PASS: gdb.cp/userdef.exp: print *c -PASS: gdb.cp/userdef.exp: print &*c -PASS: gdb.cp/userdef.exp: ptype &*c -PASS: gdb.cp/userdef.exp: print operator== (mem1, mem2) -PASS: gdb.cp/userdef.exp: print operator== (mem1, mem1) -Running ./gdb.cp/using-crash.exp ... -PASS: gdb.cp/using-crash.exp: reload file -Running ./gdb.cp/virtbase.exp ... -PASS: gdb.cp/virtbase.exp: continue to breakpoint: first breakpoint -PASS: gdb.cp/virtbase.exp: print *this -PASS: gdb.cp/virtbase.exp: print x in get_y -PASS: gdb.cp/virtbase.exp: continue to breakpoint: second breakpoint -PASS: gdb.cp/virtbase.exp: print x in get_z -PASS: gdb.cp/virtbase.exp: continue to breakpoint: third breakpoint -PASS: gdb.cp/virtbase.exp: print *(D *) e -PASS: gdb.cp/virtbase.exp: set print object on -PASS: gdb.cp/virtbase.exp: print/x b->mA -PASS: gdb.cp/virtbase.exp: print rtti_data -PASS: gdb.cp/virtbase.exp: print pointer to virtual base at non-zero offset of larger object -PASS: gdb.cp/virtbase.exp: print same pointer from history value -PASS: gdb.cp/virtbase.exp: print whole pointed-to object, starting from the virtual base pointer -Running ./gdb.cp/virtfunc2.exp ... -PASS: gdb.cp/virtfunc2.exp: continue to breakpoint: marker 1 -PASS: gdb.cp/virtfunc2.exp: print o.do_print() -PASS: gdb.cp/virtfunc2.exp: print o.do_print3() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print2() -PASS: gdb.cp/virtfunc2.exp: print o2.do_print3() -PASS: gdb.cp/virtfunc2.exp: print o -Running ./gdb.cp/virtfunc.exp ... -PASS: gdb.cp/virtfunc.exp: ptype VA -PASS: gdb.cp/virtfunc.exp: ptype VB -PASS: gdb.cp/virtfunc.exp: ptype V -PASS: gdb.cp/virtfunc.exp: ptype A -PASS: gdb.cp/virtfunc.exp: ptype B -PASS: gdb.cp/virtfunc.exp: ptype C -PASS: gdb.cp/virtfunc.exp: ptype AD -PASS: gdb.cp/virtfunc.exp: ptype D -PASS: gdb.cp/virtfunc.exp: ptype E -PASS: gdb.cp/virtfunc.exp: ptype dd -PASS: gdb.cp/virtfunc.exp: ptype ppd -PASS: gdb.cp/virtfunc.exp: ptype pAd -PASS: gdb.cp/virtfunc.exp: ptype a -PASS: gdb.cp/virtfunc.exp: ptype b -PASS: gdb.cp/virtfunc.exp: ptype c -PASS: gdb.cp/virtfunc.exp: ptype d -PASS: gdb.cp/virtfunc.exp: ptype e -PASS: gdb.cp/virtfunc.exp: ptype v -PASS: gdb.cp/virtfunc.exp: ptype vb -PASS: gdb.cp/virtfunc.exp: ptype pAa -PASS: gdb.cp/virtfunc.exp: ptype pAe -PASS: gdb.cp/virtfunc.exp: ptype pBe -PASS: gdb.cp/virtfunc.exp: ptype pDd -PASS: gdb.cp/virtfunc.exp: ptype pDe -PASS: gdb.cp/virtfunc.exp: ptype pVa -PASS: gdb.cp/virtfunc.exp: ptype pVv -PASS: gdb.cp/virtfunc.exp: ptype pVe -PASS: gdb.cp/virtfunc.exp: ptype pVd -PASS: gdb.cp/virtfunc.exp: ptype pADe -PASS: gdb.cp/virtfunc.exp: ptype pEe -PASS: gdb.cp/virtfunc.exp: ptype pVB -PASS: gdb.cp/virtfunc.exp: info vtbl a -PASS: gdb.cp/virtfunc.exp: info vtbl b -PASS: gdb.cp/virtfunc.exp: info vtbl c -PASS: gdb.cp/virtfunc.exp: info vtbl d -PASS: gdb.cp/virtfunc.exp: info vtbl e -PASS: gdb.cp/virtfunc.exp: info vtbl pEe -PASS: gdb.cp/virtfunc.exp: info vtbl -PASS: gdb.cp/virtfunc.exp: info vtbl va -PASS: gdb.cp/virtfunc.exp: info vtbl all_count -PASS: gdb.cp/virtfunc.exp: print pAe->f() -PASS: gdb.cp/virtfunc.exp: print pAa->f() -PASS: gdb.cp/virtfunc.exp: print pDe->vg() -PASS: gdb.cp/virtfunc.exp: print pADe->vg() -PASS: gdb.cp/virtfunc.exp: print pDd->vg() -PASS: gdb.cp/virtfunc.exp: print pEe->vvb() -PASS: gdb.cp/virtfunc.exp: print pVB->vvb() -PASS: gdb.cp/virtfunc.exp: print pBe->vvb() -PASS: gdb.cp/virtfunc.exp: print pDe->vvb() -PASS: gdb.cp/virtfunc.exp: print pEe->vd() -PASS: gdb.cp/virtfunc.exp: print pEe->fvb() -KFAIL: gdb.cp/virtfunc.exp: print pEe->D::vg() (PRMS: gdb/1064) -PASS: gdb.cp/virtfunc.exp: next to pAa->f call -PASS: gdb.cp/virtfunc.exp: next to pDe->vg call -PASS: gdb.cp/virtfunc.exp: step through thunk into E::vg -Running ./gdb.disasm/am33.exp ... -Running ./gdb.disasm/h8300s.exp ... -Running ./gdb.disasm/hppa.exp ... -Running ./gdb.disasm/mn10300.exp ... -Running ./gdb.disasm/sh3.exp ... -Running ./gdb.disasm/t01_mov.exp ... -Running ./gdb.disasm/t02_mova.exp ... -Running ./gdb.disasm/t03_add.exp ... -Running ./gdb.disasm/t04_sub.exp ... -Running ./gdb.disasm/t05_cmp.exp ... -Running ./gdb.disasm/t06_ari2.exp ... -Running ./gdb.disasm/t07_ari3.exp ... -Running ./gdb.disasm/t08_or.exp ... -Running ./gdb.disasm/t09_xor.exp ... -Running ./gdb.disasm/t10_and.exp ... -Running ./gdb.disasm/t11_logs.exp ... -Running ./gdb.disasm/t12_bit.exp ... -Running ./gdb.disasm/t13_otr.exp ... -Running ./gdb.dwarf2/callframecfa.exp ... -Running ./gdb.dwarf2/clztest.exp ... -PASS: gdb.dwarf2/clztest.exp: set breakpoint at clztest.c:12 -PASS: gdb.dwarf2/clztest.exp: continue to breakpoint: continue to clztest.c:12 -PASS: gdb.dwarf2/clztest.exp: check value of g at clztest.c:12 -PASS: gdb.dwarf2/clztest.exp: check value of f at clztest.c:12 -PASS: gdb.dwarf2/clztest.exp: set breakpoint at clztest.c:22 -PASS: gdb.dwarf2/clztest.exp: continue to breakpoint: continue to clztest.c:22 -PASS: gdb.dwarf2/clztest.exp: check value of g at clztest.c:22 -PASS: gdb.dwarf2/clztest.exp: check value of f at clztest.c:22 -Running ./gdb.dwarf2/dup-psym.exp ... -PASS: gdb.dwarf2/dup-psym.exp: info sources should contain only one reference to file1.txt -Running ./gdb.dwarf2/dw2-ada-ffffffff.exp ... -PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: p sizeof (t) -PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: ptype t -Running ./gdb.dwarf2/dw2-anon-mptr.exp ... -PASS: gdb.dwarf2/dw2-anon-mptr.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/dw2-anon-mptr.exp: show cp-abi -PASS: gdb.dwarf2/dw2-anon-mptr.exp: ptype crash -Running ./gdb.dwarf2/dw2-anonymous-func.exp ... -PASS: gdb.dwarf2/dw2-anonymous-func.exp: list file1.txt -Running ./gdb.dwarf2/dw2-bad-parameter-type.exp ... -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f -PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: is alive -Running ./gdb.dwarf2/dw2-basic.exp ... -PASS: gdb.dwarf2/dw2-basic.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-basic.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-basic.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-canonicalize-type.exp ... -PASS: gdb.dwarf2/dw2-canonicalize-type.exp: ptype f -Running ./gdb.dwarf2/dw2-case-insensitive.exp ... -PASS: gdb.dwarf2/dw2-case-insensitive.exp: show case-sensitive -PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive on -PASS: gdb.dwarf2/dw2-case-insensitive.exp: set case-sensitive off -PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off -PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_lang -PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_symtab -PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_lang -PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_symtab -Running ./gdb.dwarf2/dw2-common-block.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.dwarf2/dw2-common-block.exp: dw2-common-block.exp -Running ./gdb.dwarf2/dw2-compdir-oldgcc.exp ... -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: list gcc42 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc42 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: list gcc43 -PASS: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc43 -Running ./gdb.dwarf2/dw2-compressed.exp ... -PASS: gdb.dwarf2/dw2-compressed.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-compressed.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-compressed.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-const.exp ... -PASS: gdb.dwarf2/dw2-const.exp: print twelve -PASS: gdb.dwarf2/dw2-const.exp: print/x val8 -Running ./gdb.dwarf2/dw2-cp-infcall-ref-static.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: dw2-cp-infcall-ref-static.exp -Running ./gdb.dwarf2/dw2-cu-size.exp ... -PASS: gdb.dwarf2/dw2-cu-size.exp: ptype noloc -Running ./gdb.dwarf2/dw2-dir-file-name.exp ... -PASS: gdb.dwarf2/dw2-dir-file-name.exp: cd .../rdir -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: continue to breakpoint: compdir_missing__ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: continue to breakpoint: compdir_missing__ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: continue to breakpoint: compdir_missing__ldir_missing__file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_missing__file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: continue to breakpoint: compdir_missing__ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: continue to breakpoint: compdir_missing__ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: continue to breakpoint: compdir_missing__ldir_relative_file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_relative_file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: continue to breakpoint: compdir_missing__ldir_absolute_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: continue to breakpoint: compdir_missing__ldir_absolute_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: continue to breakpoint: compdir_missing__ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: continue to breakpoint: compdir_missing__ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_missing__ldir_absolute_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: continue to breakpoint: compdir_relative_ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: continue to breakpoint: compdir_relative_ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: continue to breakpoint: compdir_relative_ldir_missing__file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_missing__file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: continue to breakpoint: compdir_relative_ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: continue to breakpoint: compdir_relative_ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: continue to breakpoint: compdir_relative_ldir_relative_file_absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_relative_file_absolute: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: continue to breakpoint: compdir_relative_ldir_absolute_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: continue to breakpoint: compdir_relative_ldir_absolute_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: continue to breakpoint: compdir_relative_ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: continue to breakpoint: compdir_relative_ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_relative_ldir_absolute_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: continue to breakpoint: compdir_absolute_ldir_missing__file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: continue to breakpoint: compdir_absolute_ldir_missing__file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: continue to breakpoint: compdir_absolute_ldir_missing__file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: continue to breakpoint: compdir_absolute_ldir_missing__file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_missing__file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: continue to breakpoint: compdir_absolute_ldir_relative_file_basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_basename: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: continue to breakpoint: compdir_absolute_ldir_relative_file_relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_relative: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: continue to breakpoint: compdir_absolute_ldir_relative_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: continue to breakpoint: compdir_absolute_ldir_relative_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_relative_file_absolute_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: continue to breakpoint: compdir_absolute_ldir_absolute_file_basename_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_basename_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: continue to breakpoint: compdir_absolute_ldir_absolute_file_relative_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_relative_different: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: continue to breakpoint: compdir_absolute_ldir_absolute_file_absolute_same -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_same: relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: continue to breakpoint: compdir_absolute_ldir_absolute_file_absolute_different -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: absolute -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: basename -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: set filename-display relative -PASS: gdb.dwarf2/dw2-dir-file-name.exp: compdir_absolute_ldir_absolute_file_absolute_different: relative -Running ./gdb.dwarf2/dw2-dos-drive.exp ... -PASS: gdb.dwarf2/dw2-dos-drive.exp: set breakpoint pending off -PASS: gdb.dwarf2/dw2-dos-drive.exp: break 'z:file.c':func -UNSUPPORTED: gdb.dwarf2/dw2-dos-drive.exp: break file.c:func -Running ./gdb.dwarf2/dw2-double-set-die-type.exp ... -PASS: gdb.dwarf2/dw2-double-set-die-type.exp: ptype a -Running ./gdb.dwarf2/dw2-empty-namespace.exp ... -PASS: gdb.dwarf2/dw2-empty-namespace.exp: ptype var -PASS: gdb.dwarf2/dw2-empty-namespace.exp: p var -Running ./gdb.dwarf2/dw2-empty-pc-range.exp ... -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range before CU load -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: valid range after CU load -PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range after CU load -Running ./gdb.dwarf2/dw2-entry-value.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-entry-value.exp: dw2-entry-value.exp -Running ./gdb.dwarf2/dw2-error.exp ... -PASS: gdb.dwarf2/dw2-error.exp: set breakpoint pending off -PASS: gdb.dwarf2/dw2-error.exp: file dw2-error -PASS: gdb.dwarf2/dw2-error.exp: break main -Running ./gdb.dwarf2/dw2-filename.exp ... -PASS: gdb.dwarf2/dw2-filename.exp: interpreter-exec mi -file-list-exec-source-files -PASS: gdb.dwarf2/dw2-filename.exp: info sources -Running ./gdb.dwarf2/dw2-icc-opaque.exp ... -PASS: gdb.dwarf2/dw2-icc-opaque.exp: ptype p_struct -Running ./gdb.dwarf2/dw2-ifort-parameter.exp ... -FAIL: gdb.dwarf2/dw2-ifort-parameter.exp: p/x param -Running ./gdb.dwarf2/dw2-inheritance.exp ... -PASS: gdb.dwarf2/dw2-inheritance.exp: ptype inherited -Running ./gdb.dwarf2/dw2-inline-break.exp ... -PASS: gdb.dwarf2/dw2-inline-break.exp: break func1 -PASS: gdb.dwarf2/dw2-inline-break.exp: break func2 -PASS: gdb.dwarf2/dw2-inline-break.exp: break func3b -PASS: gdb.dwarf2/dw2-inline-break.exp: break func4b -PASS: gdb.dwarf2/dw2-inline-break.exp: break func5b -PASS: gdb.dwarf2/dw2-inline-break.exp: break func6b -PASS: gdb.dwarf2/dw2-inline-break.exp: break func7b -PASS: gdb.dwarf2/dw2-inline-break.exp: break func8b -PASS: gdb.dwarf2/dw2-inline-break.exp: print func1 -PASS: gdb.dwarf2/dw2-inline-break.exp: print func2 -Running ./gdb.dwarf2/dw2-inline-param.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-inline-param.exp: dw2-inline-param.exp -Running ./gdb.dwarf2/dw2-intercu.exp ... -PASS: gdb.dwarf2/dw2-intercu.exp: ptype int2 -PASS: gdb.dwarf2/dw2-intercu.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-intercu.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-intercu.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-intermix.exp ... -PASS: gdb.dwarf2/dw2-intermix.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-intermix.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-intermix.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-linkage-name-trust.exp ... -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set language c++ -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername -PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername () -Running ./gdb.dwarf2/dw2-minsym-in-cu.exp ... -PASS: gdb.dwarf2/dw2-minsym-in-cu.exp: info fun func2 -Running ./gdb.dwarf2/dw2-modula2-self-type.exp ... -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: set language modula-2 -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: ptype v -PASS: gdb.dwarf2/dw2-modula2-self-type.exp: alive -Running ./gdb.dwarf2/dw2-namespaceless-anonymous.exp ... -PASS: gdb.dwarf2/dw2-namespaceless-anonymous.exp: ptype '(anonymous namespace)::v' -PASS: gdb.dwarf2/dw2-namespaceless-anonymous.exp: p '(anonymous namespace)::v' -Running ./gdb.dwarf2/dw2-noloc.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-noloc.exp: dw2-noloc.exp -Running ./gdb.dwarf2/dw2-objfile-overlap.exp ... -PASS: gdb.dwarf2/dw2-objfile-overlap.exp: add-symbol-file -PASS: gdb.dwarf2/dw2-objfile-overlap.exp: info line inner -Running ./gdb.dwarf2/dw2-op-call.exp ... -PASS: gdb.dwarf2/dw2-op-call.exp: maintenance set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/dw2-op-call.exp: p array1 -PASS: gdb.dwarf2/dw2-op-call.exp: array2 using DW_OP_call2 -PASS: gdb.dwarf2/dw2-op-call.exp: array3 using DW_OP_call4 -PASS: gdb.dwarf2/dw2-op-call.exp: p arraynoloc -PASS: gdb.dwarf2/dw2-op-call.exp: p arraycallnoloc -Running ./gdb.dwarf2/dw2-op-out-param.exp ... -PASS: gdb.dwarf2/dw2-op-out-param.exp: set output-radix 16 -PASS: gdb.dwarf2/dw2-op-out-param.exp: set print frame-arguments all -PASS: gdb.dwarf2/dw2-op-out-param.exp: continue to breakpoint: Stop in breakpt for test int_param_single_reg_loc -PASS: gdb.dwarf2/dw2-op-out-param.exp: Backtrace for test int_param_single_reg_loc -PASS: gdb.dwarf2/dw2-op-out-param.exp: continue to breakpoint: Stop in breakpt for struct_param_single_reg_loc -KFAIL: gdb.dwarf2/dw2-op-out-param.exp: Backtrace for test struct_param_single_reg_loc (PRMS: symtab/14604) -PASS: gdb.dwarf2/dw2-op-out-param.exp: continue to breakpoint: Stop in breakpt for struct_param_two_reg_pieces -KFAIL: gdb.dwarf2/dw2-op-out-param.exp: Backtrace for test struct_param_two_reg_pieces (PRMS: symtab/14605) -PASS: gdb.dwarf2/dw2-op-out-param.exp: continue to breakpoint: Stop in breakpt for int_param_two_reg_pieces -KFAIL: gdb.dwarf2/dw2-op-out-param.exp: Backtrace for test int_param_two_reg_pieces (PRMS: symtab/14605) -Running ./gdb.dwarf2/dw2-op-stack-value.exp ... -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x stack2 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x stack8 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: x/wx &aa551234 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x implicit4to2 -PASS: gdb.dwarf2/dw2-op-stack-value.exp: p/x implicit4to4 -Running ./gdb.dwarf2/dw2-param-error.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-param-error.exp: dw2-param-error.exp -Running ./gdb.dwarf2/dw2-producer.exp ... -PASS: gdb.dwarf2/dw2-producer.exp: set listsize 1 -PASS: gdb.dwarf2/dw2-producer.exp: list func_cu1 -PASS: gdb.dwarf2/dw2-producer.exp: ptype func_cu1 -Running ./gdb.dwarf2/dw2-ranges.exp ... -PASS: gdb.dwarf2/dw2-ranges.exp: info line main -PASS: gdb.dwarf2/dw2-ranges.exp: info line func -PASS: gdb.dwarf2/dw2-ranges.exp: info line main2 -PASS: gdb.dwarf2/dw2-ranges.exp: info line func2 -KFAIL: gdb.dwarf2/dw2-ranges.exp: info line main3 (PRMS: symtab/12497) -Running ./gdb.dwarf2/dw2-ref-missing-frame.exp ... -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb print -PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb backtrace -Running ./gdb.dwarf2/dw2-restore.exp ... -PASS: gdb.dwarf2/dw2-restore.exp: continue -PASS: gdb.dwarf2/dw2-restore.exp: where -Running ./gdb.dwarf2/dw2-restrict.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.dwarf2/dw2-restrict0.o: requires unsupported dynamic reloc 11; recompile with -fPIC -/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: error: /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.dwarf2/dw2-restrict0.o: requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-restrict.exp: dw2-restrict.exp -Running ./gdb.dwarf2/dw2-simple-locdesc.exp ... -KFAIL: gdb.dwarf2/dw2-simple-locdesc.exp: p &s.shl (PRMS: symtab/13307) -PASS: gdb.dwarf2/dw2-simple-locdesc.exp: p &s.data4 -Running ./gdb.dwarf2/dw2-skip-prologue.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-skip-prologue.exp: dw2-skip-prologue.exp -Running ./gdb.dwarf2/dw2-stack-boundary.exp ... -PASS: gdb.dwarf2/dw2-stack-boundary.exp: set complaints 100 -PASS: gdb.dwarf2/dw2-stack-boundary.exp: check partial symtab errors -PASS: gdb.dwarf2/dw2-stack-boundary.exp: p underflow -PASS: gdb.dwarf2/dw2-stack-boundary.exp: p overflow -Running ./gdb.dwarf2/dw2-strp.exp ... -PASS: gdb.dwarf2/dw2-strp.exp: p a_string -PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string -PASS: gdb.dwarf2/dw2-strp.exp: p a_string2 -PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string2 -Running ./gdb.dwarf2/dw2-unresolved.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -UNTESTED: gdb.dwarf2/dw2-unresolved.exp: dw2-unresolved.exp -Running ./gdb.dwarf2/dw2-var-zero-addr.exp ... -PASS: gdb.dwarf2/dw2-var-zero-addr.exp: print &var -Running ./gdb.dwarf2/dw4-sig-types.exp ... -PASS: gdb.dwarf2/dw4-sig-types.exp: maint set dwarf2 max-cache-age 0 -PASS: gdb.dwarf2/dw4-sig-types.exp: p myset -PASS: gdb.dwarf2/dw4-sig-types.exp: continue to foo -Running ./gdb.dwarf2/dw4-sig-type-unused.exp ... -PASS: gdb.dwarf2/dw4-sig-type-unused.exp: alive -Running ./gdb.dwarf2/fission-base.exp ... -PASS: gdb.dwarf2/fission-base.exp: ptype main -PASS: gdb.dwarf2/fission-base.exp: ptype func -PASS: gdb.dwarf2/fission-base.exp: frame in main -PASS: gdb.dwarf2/fission-base.exp: break func -PASS: gdb.dwarf2/fission-base.exp: continue to func -PASS: gdb.dwarf2/fission-base.exp: frame in func -Running ./gdb.dwarf2/fission-loclists.exp ... -FAIL: gdb.dwarf2/fission-loclists.exp: p argc -Running ./gdb.dwarf2/fission-reread.exp ... -PASS: gdb.dwarf2/fission-reread.exp: break main -PASS: gdb.dwarf2/fission-reread.exp: fission-reread -PASS: gdb.dwarf2/fission-reread.exp: fission-reread - unload -Running ./gdb.dwarf2/implptr-64bit.exp ... -PASS: gdb.dwarf2/implptr-64bit.exp: d2o8a4r4t0 -PASS: gdb.dwarf2/implptr-64bit.exp: d2o4a8r8t0 -PASS: gdb.dwarf2/implptr-64bit.exp: d3o8a4r8t0 -PASS: gdb.dwarf2/implptr-64bit.exp: d3o4a8r4t0 -PASS: gdb.dwarf2/implptr-64bit.exp: d2o8a4r4t1 -PASS: gdb.dwarf2/implptr-64bit.exp: d2o4a8r8t1 -PASS: gdb.dwarf2/implptr-64bit.exp: d3o8a4r8t1 -PASS: gdb.dwarf2/implptr-64bit.exp: d3o4a8r4t1 -Running ./gdb.dwarf2/implptr.exp ... -Running ./gdb.dwarf2/implptr-optimized-out.exp ... -PASS: gdb.dwarf2/implptr-optimized-out.exp: p p->f -Running ./gdb.dwarf2/mac-fileno.exp ... -PASS: gdb.dwarf2/mac-fileno.exp: set listsize 1 -PASS: gdb.dwarf2/mac-fileno.exp: list func_cu1 -PASS: gdb.dwarf2/mac-fileno.exp: ptype func_cu1 -Running ./gdb.dwarf2/member-ptr-forwardref.exp ... -PASS: gdb.dwarf2/member-ptr-forwardref.exp: set cp-abi gnu-v3 -PASS: gdb.dwarf2/member-ptr-forwardref.exp: show cp-abi -PASS: gdb.dwarf2/member-ptr-forwardref.exp: ptype c -Running ./gdb.dwarf2/method-ptr.exp ... -PASS: gdb.dwarf2/method-ptr.exp: ptype the_typedef -Running ./gdb.dwarf2/pieces.exp ... -Running ./gdb.dwarf2/pr10770.exp ... -PASS: gdb.dwarf2/pr10770.exp: set breakpoint for pr10770 -PASS: gdb.dwarf2/pr10770.exp: cont -PASS: gdb.dwarf2/pr10770.exp: frame 2 -Running ./gdb.dwarf2/pr11465.exp ... -PASS: gdb.dwarf2/pr11465.exp: p N::c.C -Running ./gdb.dwarf2/pr13961.exp ... -PASS: gdb.dwarf2/pr13961.exp: break main -PASS: gdb.dwarf2/pr13961.exp: pr13961 -Running ./gdb.dwarf2/subrange.exp ... -PASS: gdb.dwarf2/subrange.exp: set language pascal -PASS: gdb.dwarf2/subrange.exp: ptype TByteArray -Running ./gdb.dwarf2/trace-crash.exp ... -PASS: gdb.dwarf2/trace-crash.exp: set tracepoint -PASS: gdb.dwarf2/trace-crash.exp: set tracepoint actions -Running ./gdb.dwarf2/typeddwarf.exp ... -PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of j at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of l at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of m at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of n at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of o at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of p at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of q at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of r at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of s at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of t at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of u at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of v at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:29 -PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of j at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of l at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of m at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of p at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of q at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of r at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of s at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of t at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of u at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of v at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:53 -PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:73 -PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:73 -Running ./gdb.dwarf2/valop.exp ... -Running ./gdb.dwarf2/watch-notconst.exp ... -Running ./gdb.fortran/array-element.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/array-element.exp: array-element.exp -Running ./gdb.fortran/charset.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/charset.exp: charset.exp -Running ./gdb.fortran/common-block.exp ... -UNTESTED: gdb.fortran/common-block.exp: common-block.exp -Running ./gdb.fortran/complex.exp ... -UNTESTED: gdb.fortran/complex.exp: complex.exp -UNTESTED: gdb.fortran/complex.exp: Couldn't compile complex.f -Running ./gdb.fortran/derived-type.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/derived-type.exp: derived-type.exp -Running ./gdb.fortran/exprs.exp ... -PASS: gdb.fortran/exprs.exp: set print sevenbit-strings -PASS: gdb.fortran/exprs.exp: set language fortran -PASS: gdb.fortran/exprs.exp: set language to "fortran" -PASS: gdb.fortran/exprs.exp: Set value-history[1] using $1 -PASS: gdb.fortran/exprs.exp: Set value-history[2] using $2 -PASS: gdb.fortran/exprs.exp: Set value-history[3] using $3 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] using inplicit index $$ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] again using implicit index $$ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using implicit index $ -PASS: gdb.fortran/exprs.exp: Print value-history[MAX-2] using explicit index $$2 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $0 -PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $$0 -PASS: gdb.fortran/exprs.exp: Print value-history[1] using explicit index $1 -PASS: gdb.fortran/exprs.exp: Print value-history[2] using explicit index $2 -PASS: gdb.fortran/exprs.exp: Print value-history[3] using explicit index $3 -PASS: gdb.fortran/exprs.exp: Print (value-history[MAX] - 3) using implicit index $ -PASS: gdb.fortran/exprs.exp: Use value-history element in arithmetic expression -PASS: gdb.fortran/exprs.exp: Set a new convenience variable -PASS: gdb.fortran/exprs.exp: Print contents of new convenience variable -PASS: gdb.fortran/exprs.exp: Set convenience variable to a new value -PASS: gdb.fortran/exprs.exp: Print new contents of convenience variable -PASS: gdb.fortran/exprs.exp: Set convenience variable $_ -PASS: gdb.fortran/exprs.exp: Print contents of convenience variable $_ -PASS: gdb.fortran/exprs.exp: Use convenience variable in arithmetic expression -PASS: gdb.fortran/exprs.exp: Use convenience variable assignment in arithmetic expression -PASS: gdb.fortran/exprs.exp: Print contents of uninitialized convenience variable -PASS: gdb.fortran/exprs.exp: p 123 -PASS: gdb.fortran/exprs.exp: p -123 -PASS: gdb.fortran/exprs.exp: reject p _ -PASS: gdb.fortran/exprs.exp: p .TRUE. -PASS: gdb.fortran/exprs.exp: p .FALSE. -PASS: gdb.fortran/exprs.exp: p 'a' -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(2:4) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:3) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(5:) -PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:) -PASS: gdb.fortran/exprs.exp: p .44 .LT. .45 -PASS: gdb.fortran/exprs.exp: p .44 .GT. .45 -PASS: gdb.fortran/exprs.exp: p 0.44 .LT. 0.45 -PASS: gdb.fortran/exprs.exp: p 0.44 .GT. 0.45 -PASS: gdb.fortran/exprs.exp: p 44. .LT. 45. -PASS: gdb.fortran/exprs.exp: p 44. .GT. 45. -PASS: gdb.fortran/exprs.exp: p 44.0 .LT. 45.0 -PASS: gdb.fortran/exprs.exp: p 44.0 .GT. 45.0 -PASS: gdb.fortran/exprs.exp: p 10D20 .LT. 10D21 -PASS: gdb.fortran/exprs.exp: p 10D20 .GT. 10D21 -PASS: gdb.fortran/exprs.exp: p 10d20 .LT. 10d21 -PASS: gdb.fortran/exprs.exp: p 10d20 .GT. 10d21 -PASS: gdb.fortran/exprs.exp: p 10E20 .LT. 10E21 -PASS: gdb.fortran/exprs.exp: p 10E20 .GT. 10E21 -PASS: gdb.fortran/exprs.exp: p 10e20 .LT. 10e21 -PASS: gdb.fortran/exprs.exp: p 10e20 .GT. 10e21 -PASS: gdb.fortran/exprs.exp: p 10.D20 .LT. 10.D21 -PASS: gdb.fortran/exprs.exp: p 10.D20 .GT. 10.D21 -PASS: gdb.fortran/exprs.exp: p 10.d20 .LT. 10.d21 -PASS: gdb.fortran/exprs.exp: p 10.d20 .GT. 10.d21 -PASS: gdb.fortran/exprs.exp: p 10.E20 .LT. 10.E21 -PASS: gdb.fortran/exprs.exp: p 10.E20 .GT. 10.E21 -PASS: gdb.fortran/exprs.exp: p 10.e20 .LT. 10.e21 -PASS: gdb.fortran/exprs.exp: p 10.e20 .GT. 10.e21 -PASS: gdb.fortran/exprs.exp: p 10.0D20 .LT. 10.0D21 -PASS: gdb.fortran/exprs.exp: p 10.0D20 .GT. 10.0D21 -PASS: gdb.fortran/exprs.exp: p 10.0d20 .LT. 10.0d21 -PASS: gdb.fortran/exprs.exp: p 10.0d20 .GT. 10.0d21 -PASS: gdb.fortran/exprs.exp: p 10.0E20 .LT. 10.0E21 -PASS: gdb.fortran/exprs.exp: p 10.0E20 .GT. 10.0E21 -PASS: gdb.fortran/exprs.exp: p 10.0e20 .LT. 10.0e21 -PASS: gdb.fortran/exprs.exp: p 10.0e20 .GT. 10.0e21 -PASS: gdb.fortran/exprs.exp: p 10.0D+20 .LT. 10.0D+21 -PASS: gdb.fortran/exprs.exp: p 10.0D+20 .GT. 10.0D+21 -PASS: gdb.fortran/exprs.exp: p 10.0d+20 .LT. 10.0d+21 -PASS: gdb.fortran/exprs.exp: p 10.0d+20 .GT. 10.0d+21 -PASS: gdb.fortran/exprs.exp: p 10.0E+20 .LT. 10.0E+21 -PASS: gdb.fortran/exprs.exp: p 10.0E+20 .GT. 10.0E+21 -PASS: gdb.fortran/exprs.exp: p 10.0e+20 .LT. 10.0e+21 -PASS: gdb.fortran/exprs.exp: p 10.0e+20 .GT. 10.0e+21 -PASS: gdb.fortran/exprs.exp: p 10.0D-11 .LT. 10.0D-10 -PASS: gdb.fortran/exprs.exp: p 10.0D-11 .GT. 10.0D-10 -PASS: gdb.fortran/exprs.exp: p 10.0d-11 .LT. 10.0d-10 -PASS: gdb.fortran/exprs.exp: p 10.0d-11 .GT. 10.0d-10 -PASS: gdb.fortran/exprs.exp: p 10.0E-11 .LT. 10.0E-10 -PASS: gdb.fortran/exprs.exp: p 10.0E-11 .GT. 10.0E-10 -PASS: gdb.fortran/exprs.exp: p 10.0e-11 .LT. 10.0e-10 -PASS: gdb.fortran/exprs.exp: p 10.0e-11 .GT. 10.0e-10 -PASS: gdb.fortran/exprs.exp: unary minus applied to int -PASS: gdb.fortran/exprs.exp: unary minus applied to real -PASS: gdb.fortran/exprs.exp: bool plus int -PASS: gdb.fortran/exprs.exp: int plus int -PASS: gdb.fortran/exprs.exp: real plus int -PASS: gdb.fortran/exprs.exp: real plus real -PASS: gdb.fortran/exprs.exp: bool minus int -PASS: gdb.fortran/exprs.exp: int minus int -PASS: gdb.fortran/exprs.exp: real minus int -PASS: gdb.fortran/exprs.exp: real minus real -PASS: gdb.fortran/exprs.exp: bool times int -PASS: gdb.fortran/exprs.exp: int times int -PASS: gdb.fortran/exprs.exp: real times int -PASS: gdb.fortran/exprs.exp: real times real -PASS: gdb.fortran/exprs.exp: bool divided by int -PASS: gdb.fortran/exprs.exp: int divided by int -PASS: gdb.fortran/exprs.exp: real divided by int -PASS: gdb.fortran/exprs.exp: real divided by real -PASS: gdb.fortran/exprs.exp: int powered by int -PASS: gdb.fortran/exprs.exp: combined exponentiation expression -PASS: gdb.fortran/exprs.exp: combined exponentiation expression in specified order -PASS: gdb.fortran/exprs.exp: int powered by real -PASS: gdb.fortran/exprs.exp: real powered by real -Running ./gdb.fortran/library-module.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/library-module.exp: Couldn't compile library-module-lib.f90 -Running ./gdb.fortran/logical.exp ... -UNTESTED: gdb.fortran/logical.exp: logical.exp -Running ./gdb.fortran/module.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/module.exp: module.exp -Running ./gdb.fortran/multi-dim.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/multi-dim.exp: multi-dim.exp -Running ./gdb.fortran/subarray.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gfortran. -UNTESTED: gdb.fortran/subarray.exp: subarray.exp -Running ./gdb.fortran/types.exp ... -PASS: gdb.fortran/types.exp: set print sevenbit-strings -PASS: gdb.fortran/types.exp: set language fortran -PASS: gdb.fortran/types.exp: set language to "fortran" -PASS: gdb.fortran/types.exp: pt 123 -PASS: gdb.fortran/types.exp: reject pt _ -PASS: gdb.fortran/types.exp: pt .TRUE. -PASS: gdb.fortran/types.exp: pt .FALSE. -PASS: gdb.fortran/types.exp: pt 'a' -PASS: gdb.fortran/types.exp: pt .44 -PASS: gdb.fortran/types.exp: pt 44.0 -PASS: gdb.fortran/types.exp: pt 10D20 -PASS: gdb.fortran/types.exp: pt 10D20 -PASS: gdb.fortran/types.exp: pt 10d20 -PASS: gdb.fortran/types.exp: pt 10d20 -PASS: gdb.fortran/types.exp: pt 10E20 -PASS: gdb.fortran/types.exp: pt 10E20 -PASS: gdb.fortran/types.exp: pt 10e20 -PASS: gdb.fortran/types.exp: pt 10e20 -Running ./gdb.gdb/complaints.exp ... -Running ./gdb.gdb/observer.exp ... -Running ./gdb.gdb/selftest.exp ... -Running ./gdb.gdb/xfullpath.exp ... -Running ./gdb.go/basic-types.exp ... -PASS: gdb.go/basic-types.exp: set language go -PASS: gdb.go/basic-types.exp: set language to "go" -PASS: gdb.go/basic-types.exp: pt 123 -PASS: gdb.go/basic-types.exp: pt void(42) -PASS: gdb.go/basic-types.exp: pt byte(42) -PASS: gdb.go/basic-types.exp: pt int(42) -PASS: gdb.go/basic-types.exp: pt uint(42) -PASS: gdb.go/basic-types.exp: pt uintptr(42) -PASS: gdb.go/basic-types.exp: pt int8(42) -PASS: gdb.go/basic-types.exp: pt int16(42) -PASS: gdb.go/basic-types.exp: pt int32(42) -PASS: gdb.go/basic-types.exp: pt int64(42) -PASS: gdb.go/basic-types.exp: pt uint8(42) -PASS: gdb.go/basic-types.exp: pt uint16(42) -PASS: gdb.go/basic-types.exp: pt uint32(42) -PASS: gdb.go/basic-types.exp: pt uint64(42) -PASS: gdb.go/basic-types.exp: pt true -PASS: gdb.go/basic-types.exp: pt false -PASS: gdb.go/basic-types.exp: pt bool(0) -PASS: gdb.go/basic-types.exp: pt bool(1) -PASS: gdb.go/basic-types.exp: pt 'a' -PASS: gdb.go/basic-types.exp: pt "a simple string" -PASS: gdb.go/basic-types.exp: pt `a simple raw string` -PASS: gdb.go/basic-types.exp: pt .44 -PASS: gdb.go/basic-types.exp: pt 44.0 -PASS: gdb.go/basic-types.exp: pt 10e20 -PASS: gdb.go/basic-types.exp: pt 10E20 -PASS: gdb.go/basic-types.exp: pt float32(.42) -PASS: gdb.go/basic-types.exp: pt float64(.42) -PASS: gdb.go/basic-types.exp: pt complex64(.42) -XFAIL: gdb.go/basic-types.exp: pt complex64(.42i1.0) -XFAIL: gdb.go/basic-types.exp: pt complex64(i1.0) -PASS: gdb.go/basic-types.exp: pt complex128(.42) -XFAIL: gdb.go/basic-types.exp: pt complex128(.42i1.0) -XFAIL: gdb.go/basic-types.exp: pt complex128(i1.0) -Running ./gdb.go/chan.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/chan.exp: chan.exp -Running ./gdb.go/handcall.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/handcall.exp: handcall.exp -Running ./gdb.go/hello.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/hello.exp: hello.exp -Running ./gdb.go/integers.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/integers.exp: integers.exp -Running ./gdb.go/methods.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/methods.exp: methods.exp -Running ./gdb.go/package.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/package.exp: package -Running ./gdb.go/print.exp ... -PASS: gdb.go/print.exp: set language go -PASS: gdb.go/print.exp: set language to "go" -PASS: gdb.go/print.exp: check fp + text -PASS: gdb.go/print.exp: p 1. -PASS: gdb.go/print.exp: p 1.5 -PASS: gdb.go/print.exp: p 1.f -PASS: gdb.go/print.exp: p 1.5f -PASS: gdb.go/print.exp: p 1.l -PASS: gdb.go/print.exp: p 1.5l -PASS: gdb.go/print.exp: p 0x1.1 -PASS: gdb.go/print.exp: reject p 1.1x -PASS: gdb.go/print.exp: reject p 1.1ff -PASS: gdb.go/print.exp: reject p 1.1ll -Running ./gdb.go/strings.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/strings.exp: strings.exp -Running ./gdb.go/types.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/types.exp: types.exp -Running ./gdb.go/unsafe.exp ... -gdb compile failed, default_target_compile: Can't find x86_64-cros-linux-gnu-gccgo. -UNTESTED: gdb.go/unsafe.exp: unsafe.exp -Running ./gdb.java/jmain.exp ... -UNSUPPORTED: gdb.java/jmain.exp: compilation jmain.java -Running ./gdb.java/jmisc.exp ... -UNSUPPORTED: gdb.java/jmisc.exp: compilation jmisc.java -Running ./gdb.java/jnpe.exp ... -UNSUPPORTED: gdb.java/jnpe.exp: compilation jnpe.java -UNTESTED: gdb.java/jnpe.exp: Couldn't compile ./gdb.java/jnpe.java -Running ./gdb.java/jprint.exp ... -UNSUPPORTED: gdb.java/jprint.exp: compilation jprint.java -Running ./gdb.java/jv-exp.exp ... -PASS: gdb.java/jv-exp.exp: set print sevenbit-strings -PASS: gdb.java/jv-exp.exp: set width 0 -PASS: gdb.java/jv-exp.exp: set language java -PASS: gdb.java/jv-exp.exp: set language to "java" -PASS: gdb.java/jv-exp.exp: p 1 > 2 -PASS: gdb.java/jv-exp.exp: p 1 < 2 -Running ./gdb.java/jv-print.exp ... -PASS: gdb.java/jv-print.exp: print $pc -PASS: gdb.java/jv-print.exp: set print sevenbit-strings -PASS: gdb.java/jv-print.exp: set width 0 -PASS: gdb.java/jv-print.exp: set language java -PASS: gdb.java/jv-print.exp: set language to "java" -PASS: gdb.java/jv-print.exp: p 123 -PASS: gdb.java/jv-print.exp: p -123 -PASS: gdb.java/jv-print.exp: p/d 123 -PASS: gdb.java/jv-print.exp: p 0123 -PASS: gdb.java/jv-print.exp: p 00123 -PASS: gdb.java/jv-print.exp: p -0123 -PASS: gdb.java/jv-print.exp: p/o 0123 -PASS: gdb.java/jv-print.exp: p 0x123 -PASS: gdb.java/jv-print.exp: p -0x123 -PASS: gdb.java/jv-print.exp: p 0x0123 -PASS: gdb.java/jv-print.exp: p -0x0123 -PASS: gdb.java/jv-print.exp: p 0xABCDEF -PASS: gdb.java/jv-print.exp: p 0xabcdef -PASS: gdb.java/jv-print.exp: p 0xAbCdEf -PASS: gdb.java/jv-print.exp: p/x 0x123 -PASS: gdb.java/jv-print.exp: p 'a' -PASS: gdb.java/jv-print.exp: p/c 'a' -PASS: gdb.java/jv-print.exp: p/c 70 -PASS: gdb.java/jv-print.exp: p/x 'a' -PASS: gdb.java/jv-print.exp: p/d 'a' -PASS: gdb.java/jv-print.exp: p/t 'a' -PASS: gdb.java/jv-print.exp: p/x '\377' -PASS: gdb.java/jv-print.exp: p '\'' -PASS: gdb.java/jv-print.exp: p '\\' -PASS: gdb.java/jv-print.exp: reject p 0x -PASS: gdb.java/jv-print.exp: p '' -PASS: gdb.java/jv-print.exp: p ''' -PASS: gdb.java/jv-print.exp: reject p '\' -PASS: gdb.java/jv-print.exp: reject p '\\\' -PASS: gdb.java/jv-print.exp: reject p DEADBEEF -PASS: gdb.java/jv-print.exp: reject p 123DEADBEEF -PASS: gdb.java/jv-print.exp: reject p 123foobar.bazfoo3 -PASS: gdb.java/jv-print.exp: reject p 123EEEEEEEEEEEEEEEEE33333k333 -PASS: gdb.java/jv-print.exp: check for floating addition -PASS: gdb.java/jv-print.exp: reject p 09 -PASS: gdb.java/jv-print.exp: reject p 079 -PASS: gdb.java/jv-print.exp: reject p 0xG -PASS: gdb.java/jv-print.exp: reject p 0xAG -PASS: gdb.java/jv-print.exp: check fp + text -PASS: gdb.java/jv-print.exp: p 1. -PASS: gdb.java/jv-print.exp: p 1.5 -PASS: gdb.java/jv-print.exp: p 1.f -PASS: gdb.java/jv-print.exp: p 1.5f -PASS: gdb.java/jv-print.exp: p 1.d -PASS: gdb.java/jv-print.exp: p 1.5d -PASS: gdb.java/jv-print.exp: p 0x1.1 -PASS: gdb.java/jv-print.exp: reject p 1.1x -PASS: gdb.java/jv-print.exp: reject p 1.1ff -PASS: gdb.java/jv-print.exp: reject p 1.1dd -Running ./gdb.linespec/break-ask.exp ... -PASS: gdb.linespec/break-ask.exp: set multiple-symbols ask -PASS: gdb.linespec/break-ask.exp: set filename-display absolute -PASS: gdb.linespec/break-ask.exp: break twodup absolute -PASS: gdb.linespec/break-ask.exp: 0 -PASS: gdb.linespec/break-ask.exp: set filename-display relative -PASS: gdb.linespec/break-ask.exp: break twodup relative -PASS: gdb.linespec/break-ask.exp: 2 -PASS: gdb.linespec/break-ask.exp: expect breakpoint -PASS: gdb.linespec/break-ask.exp: info source -PASS: gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere -PASS: gdb.linespec/break-ask.exp: break twodup relative other -PASS: gdb.linespec/break-ask.exp: 3 -PASS: gdb.linespec/break-ask.exp: expect breakpoint other -PASS: gdb.linespec/break-ask.exp: info source other -PASS: gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere other -Running ./gdb.linespec/linespec.exp ... -PASS: gdb.linespec/linespec.exp: set multiple-symbols to all for linespec tests -PASS: gdb.linespec/linespec.exp: single-location break using dir/file:line -PASS: gdb.linespec/linespec.exp: clear breakpoint using dir/file:line -PASS: gdb.linespec/linespec.exp: multi-location break using file:line -PASS: gdb.linespec/linespec.exp: multi-location break using duplicate function name -PASS: gdb.linespec/linespec.exp: multi-location break using duplicate function name and label -PASS: gdb.linespec/linespec.exp: complete condition -PASS: gdb.linespec/linespec.exp: disable pending breakpoints for linespec tests -PASS: gdb.linespec/linespec.exp: set breakpoint on non-existent function -PASS: gdb.linespec/linespec.exp: set breakpoint at all instances of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at lspec.cc instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at non-existent lspec.cc instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint at specific instance of NameSpace::overload -PASS: gdb.linespec/linespec.exp: set breakpoint in body.h -PASS: gdb.linespec/linespec.exp: set breakpoint in f1 -PASS: gdb.linespec/linespec.exp: add inferior for linespec tests -PASS: gdb.linespec/linespec.exp: switch to inferior 2 for linespec tests -PASS: gdb.linespec/linespec.exp: set the new inferior file for linespec tests -PASS: gdb.linespec/linespec.exp: set breakpoint at main in both inferiors -Running ./gdb.linespec/ls-dollar.exp ... -PASS: gdb.linespec/ls-dollar.exp: set listsize 1 -PASS: gdb.linespec/ls-dollar.exp: list $dollar_var -PASS: gdb.linespec/ls-dollar.exp: break $dollar_func -Running ./gdb.linespec/ls-errs.exp ... -PASS: gdb.linespec/ls-errs.exp: set breakpoint pending off -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break : -PASS: gdb.linespec/ls-errs.exp: break -100 -PASS: gdb.linespec/ls-errs.exp: break +500 -PASS: gdb.linespec/ls-errs.exp: break 1000 -PASS: gdb.linespec/ls-errs.exp: break 3: -PASS: gdb.linespec/ls-errs.exp: break +10: -PASS: gdb.linespec/ls-errs.exp: break -10: -PASS: gdb.linespec/ls-errs.exp: break 3: -PASS: gdb.linespec/ls-errs.exp: break +10: -PASS: gdb.linespec/ls-errs.exp: break -10: -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 : -PASS: gdb.linespec/ls-errs.exp: break +10 : -PASS: gdb.linespec/ls-errs.exp: break -10 : -PASS: gdb.linespec/ls-errs.exp: break 3 1 -PASS: gdb.linespec/ls-errs.exp: break +10 1 -PASS: gdb.linespec/ls-errs.exp: break -10 1 -PASS: gdb.linespec/ls-errs.exp: break 3 +1 -PASS: gdb.linespec/ls-errs.exp: break +10 +1 -PASS: gdb.linespec/ls-errs.exp: break -10 +1 -PASS: gdb.linespec/ls-errs.exp: break 3 +100 -PASS: gdb.linespec/ls-errs.exp: break +10 +100 -PASS: gdb.linespec/ls-errs.exp: break -10 +100 -PASS: gdb.linespec/ls-errs.exp: break 3 -10 -PASS: gdb.linespec/ls-errs.exp: break +10 -10 -PASS: gdb.linespec/ls-errs.exp: break -10 -10 -PASS: gdb.linespec/ls-errs.exp: break 3 foo -PASS: gdb.linespec/ls-errs.exp: break +10 foo -PASS: gdb.linespec/ls-errs.exp: break -10 foo -PASS: gdb.linespec/ls-errs.exp: break this_file_doesn't_exist.c:3 -PASS: gdb.linespec/ls-errs.exp: break this file has spaces.c:3 -PASS: gdb.linespec/ls-errs.exp: break "file::colons.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'file::colons.c':3 -PASS: gdb.linespec/ls-errs.exp: break "this "file" has quotes.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'this "file" has quotes.c':3 -PASS: gdb.linespec/ls-errs.exp: break 'this 'file' has quotes.c':3 -PASS: gdb.linespec/ls-errs.exp: break "this 'file' has quotes.c":3 -PASS: gdb.linespec/ls-errs.exp: break "spaces: and :colons.c":3 -PASS: gdb.linespec/ls-errs.exp: break 'more: :spaces: :and colons::.c':3 -PASS: gdb.linespec/ls-errs.exp: break "src-file.c':3 -PASS: gdb.linespec/ls-errs.exp: break 'src-file.c:3 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main:foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:main : -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:: -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 1 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 +100 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 -100 -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:3 foo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:-100 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:-100" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:-100' -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:+500 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:+500" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:+500' -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:1000 -PASS: gdb.linespec/ls-errs.exp: break "ls-errs.c:1000" -PASS: gdb.linespec/ls-errs.exp: break 'ls-errs.c:1000' -PASS: gdb.linespec/ls-errs.exp: break foobar -PASS: gdb.linespec/ls-errs.exp: break foo::bar -PASS: gdb.linespec/ls-errs.exp: break foo.bar -PASS: gdb.linespec/ls-errs.exp: break foo . -PASS: gdb.linespec/ls-errs.exp: break foo bar -PASS: gdb.linespec/ls-errs.exp: break foo 1 -PASS: gdb.linespec/ls-errs.exp: break foo 0 -PASS: gdb.linespec/ls-errs.exp: break foo +10 -PASS: gdb.linespec/ls-errs.exp: break foo -10 -PASS: gdb.linespec/ls-errs.exp: break foo +100 -PASS: gdb.linespec/ls-errs.exp: break foo -100 -PASS: gdb.linespec/ls-errs.exp: break main:there -PASS: gdb.linespec/ls-errs.exp: break main:here: -PASS: gdb.linespec/ls-errs.exp: break main: there -PASS: gdb.linespec/ls-errs.exp: break main:here: -PASS: gdb.linespec/ls-errs.exp: break main :there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main : there -PASS: gdb.linespec/ls-errs.exp: break main:here : -PASS: gdb.linespec/ls-errs.exp: break main 3 -PASS: gdb.linespec/ls-errs.exp: break main +100 -PASS: gdb.linespec/ls-errs.exp: break main -100 -PASS: gdb.linespec/ls-errs.exp: break main foo -PASS: gdb.linespec/ls-errs.exp: break main:here 3 -PASS: gdb.linespec/ls-errs.exp: break main:here +100 -PASS: gdb.linespec/ls-errs.exp: break main:here -100 -PASS: gdb.linespec/ls-errs.exp: break main:here foo -PASS: gdb.linespec/ls-errs.exp: break if -PASS: gdb.linespec/ls-errs.exp: break task -PASS: gdb.linespec/ls-errs.exp: break thread -PASS: gdb.linespec/ls-errs.exp: break 'main.c'flubber -PASS: gdb.linespec/ls-errs.exp: break 'main.c',21 -PASS: gdb.linespec/ls-errs.exp: break 'main.c' -PASS: gdb.linespec/ls-errs.exp: break 'main.c'3 -PASS: gdb.linespec/ls-errs.exp: break 'main.c'+3 -PASS: gdb.linespec/ls-errs.exp: break $zippo -PASS: gdb.linespec/ls-errs.exp: break ls-errs.c:$zippo -Running ./gdb.linespec/macro-relative.exp ... -FAIL: gdb.linespec/macro-relative.exp: info macro HEADER -Running ./gdb.linespec/skip-two.exp ... -PASS: gdb.linespec/skip-two.exp: skip function dupname -PASS: gdb.linespec/skip-two.exp: dupname ignored from main -PASS: gdb.linespec/skip-two.exp: continue to breakpoint: n -PASS: gdb.linespec/skip-two.exp: dupname ignored from n -PASS: gdb.linespec/skip-two.exp: skip delete 1 -PASS: gdb.linespec/skip-two.exp: skip file thefile.cc -PASS: gdb.linespec/skip-two.exp: step into dupname -PASS: gdb.linespec/skip-two.exp: finish from dupname -PASS: gdb.linespec/skip-two.exp: dupname ignored for thefile.cc -Running ./gdb.linespec/thread.exp ... -PASS: gdb.linespec/thread.exp: breakpoint line number in file -PASS: gdb.linespec/thread.exp: continue to breakpoint: 29 -PASS: gdb.linespec/thread.exp: setting breakpoint at thread -PASS: gdb.linespec/thread.exp: continue to breakpoint: thread function -Running ./gdb.mi/dw2-ref-missing-frame.exp ... -gdb compile failed, /usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.22/ld.gold.real: internal error in output_address, at /var/tmp/portage/cross-x86_64-cros-linux-gnu/binutils-2.22-r20/work/binutils-2.22/gold/output.cc:3019 -collect2: error: ld returned 1 exit status -Running ./gdb.mi/gdb2549.exp ... -PASS: gdb.mi/gdb2549.exp: wrong arguments -PASS: gdb.mi/gdb2549.exp: no executable -PASS: gdb.mi/gdb2549.exp: breakpoint at main -PASS: gdb.mi/gdb2549.exp: mi runto main -PASS: gdb.mi/gdb2549.exp: register values x -PASS: gdb.mi/gdb2549.exp: register values f -PASS: gdb.mi/gdb2549.exp: register values d -PASS: gdb.mi/gdb2549.exp: register values o -PASS: gdb.mi/gdb2549.exp: register values t -Running ./gdb.mi/gdb669.exp ... -PASS: gdb.mi/gdb669.exp: successfully compiled posix threads test case -PASS: gdb.mi/gdb669.exp: breakpoint at main -PASS: gdb.mi/gdb669.exp: mi runto main -PASS: gdb.mi/gdb669.exp: -thread-list-ids (at main) -PASS: gdb.mi/gdb669.exp: info threads (at main) -PASS: gdb.mi/gdb669.exp: finding MI result string (at main) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (at main) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (at main) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (at main) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (at main) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (at main) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (at main) -PASS: gdb.mi/gdb669.exp: next, try 0 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 0) -PASS: gdb.mi/gdb669.exp: info threads (try 0) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 0) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 0) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 0) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 0) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 0) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 0) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 0) -PASS: gdb.mi/gdb669.exp: next, try 1 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 1) -PASS: gdb.mi/gdb669.exp: info threads (try 1) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 1) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 1) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 1) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 1) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 1) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 1) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 1) -PASS: gdb.mi/gdb669.exp: next, try 2 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 2) -PASS: gdb.mi/gdb669.exp: info threads (try 2) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 2) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 2) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 2) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 2) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 2) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 2) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 2) -PASS: gdb.mi/gdb669.exp: next, try 3 -PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 3) -PASS: gdb.mi/gdb669.exp: info threads (try 3) -PASS: gdb.mi/gdb669.exp: finding MI result string (try 3) -PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 3) -PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 3) -PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 3) -PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 3) -PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 3) -PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 3) -Running ./gdb.mi/gdb680.exp ... -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 0 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 1 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 2 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 3 -PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 4 -Running ./gdb.mi/gdb701.exp ... -PASS: gdb.mi/gdb701.exp: breakpoint at main -PASS: gdb.mi/gdb701.exp: mi runto main -PASS: gdb.mi/gdb701.exp: step over "foo = 0" -PASS: gdb.mi/gdb701.exp: create fooPtr -PASS: gdb.mi/gdb701.exp: list children of fooPtr -PASS: gdb.mi/gdb701.exp: list children of fooPtr.x -PASS: gdb.mi/gdb701.exp: list children of fooPtr.y -PASS: gdb.mi/gdb701.exp: list children of fooPtr.z -Running ./gdb.mi/gdb792.exp ... -PASS: gdb.mi/gdb792.exp: breakpoint at main -PASS: gdb.mi/gdb792.exp: mi runto main -PASS: gdb.mi/gdb792.exp: create var for class A -PASS: gdb.mi/gdb792.exp: list children of class A -PASS: gdb.mi/gdb792.exp: list children of A.public -PASS: gdb.mi/gdb792.exp: list children of A.private -PASS: gdb.mi/gdb792.exp: list children of A.protected -PASS: gdb.mi/gdb792.exp: list children of A.protected.b -PASS: gdb.mi/gdb792.exp: list children of A.protected.b.public -PASS: gdb.mi/gdb792.exp: list children of A.protected.b.private -PASS: gdb.mi/gdb792.exp: create var for class C which has baseclass A -PASS: gdb.mi/gdb792.exp: list children of class C -Running ./gdb.mi/mi2-amd64-entry-value.exp ... -PASS: gdb.mi/mi2-amd64-entry-value.exp: break different -PASS: gdb.mi/mi2-amd64-entry-value.exp: break breakhere_different -PASS: gdb.mi/mi2-amd64-entry-value.exp: break breakhere_validity -PASS: gdb.mi/mi2-amd64-entry-value.exp: break breakhere_invalid -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: set print entry-values -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: entry_equal: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: entry_equal: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: entry_different: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: entry_different: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: validity: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: no: invalid: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: only: set print entry-values -FAIL: gdb.mi/mi2-amd64-entry-value.exp: only: entry_equal: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: only: entry_equal: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: only: entry_different: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: only: entry_different: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: only: validity: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: only: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: only: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: only: invalid: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: preferred: set print entry-values -FAIL: gdb.mi/mi2-amd64-entry-value.exp: preferred: entry_equal: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: preferred: entry_equal: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: preferred: entry_different: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: preferred: entry_different: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: preferred: validity: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: preferred: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: preferred: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: preferred: invalid: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: set print entry-values -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: entry_equal: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: entry_equal: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: entry_different: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: entry_different: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: if-needed: validity: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: if-needed: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: if-needed: invalid: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: both: set print entry-values -FAIL: gdb.mi/mi2-amd64-entry-value.exp: both: entry_equal: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: both: entry_equal: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: both: entry_different: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: both: entry_different: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: both: validity: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: both: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: both: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: both: invalid: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: compact: set print entry-values -FAIL: gdb.mi/mi2-amd64-entry-value.exp: compact: entry_equal: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: compact: entry_equal: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: compact: entry_different: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: compact: entry_different: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: compact: validity: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: compact: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: compact: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: compact: invalid: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: breakpoint at main -PASS: gdb.mi/mi2-amd64-entry-value.exp: mi runto main -PASS: gdb.mi/mi2-amd64-entry-value.exp: default: set print entry-values -FAIL: gdb.mi/mi2-amd64-entry-value.exp: default: entry_equal: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: default: entry_equal: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: default: entry_different: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: default: entry_different: -stack-list-variables -FAIL: gdb.mi/mi2-amd64-entry-value.exp: default: validity: stop (stopped at wrong place) -FAIL: gdb.mi/mi2-amd64-entry-value.exp: default: validity: -stack-list-variables -PASS: gdb.mi/mi2-amd64-entry-value.exp: default: invalid: stop -PASS: gdb.mi/mi2-amd64-entry-value.exp: default: invalid: -stack-list-variables -Running ./gdb.mi/mi2-prompt.exp ... -PASS: gdb.mi/mi2-prompt.exp: console set prompt -PASS: gdb.mi/mi2-prompt.exp: -break-list -PASS: gdb.mi/mi2-prompt.exp: set prompt (banana) -PASS: gdb.mi/mi2-prompt.exp: interpreter-exec mi -break-list -Running ./gdb.mi/mi2-var-child.exp ... -PASS: gdb.mi/mi2-var-child.exp: breakpoint at do_children_tests -PASS: gdb.mi/mi2-var-child.exp: mi runto do_children_tests -PASS: gdb.mi/mi2-var-child.exp: run to 237 (set breakpoint) -PASS: gdb.mi/mi2-var-child.exp: create local variable struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.character -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.character -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_int -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_int -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.3 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.3 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.4 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.4 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.5 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.5 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.6 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.6 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.7 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.7 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.8 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.8 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.9 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.9 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.a -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.a -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.b -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.b -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.c -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.c -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.d -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.d -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.g -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.g -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.h -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.h -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.i -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.i -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: step to line $line_dct_123 -PASS: gdb.mi/mi2-var-child.exp: create local variable weird -PASS: gdb.mi/mi2-var-child.exp: get children of weird -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird -PASS: gdb.mi/mi2-var-child.exp: get children of weird.long_array -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.long_array -PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: is weird editable -PASS: gdb.mi/mi2-var-child.exp: is weird->int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable -PASS: gdb.mi/mi2-var-child.exp: is weird.u1 editable -PASS: gdb.mi/mi2-var-child.exp: is weird.s2 editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.a editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.b editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.c editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array.0 editable -PASS: gdb.mi/mi2-var-child.exp: is struct_declarations editable -PASS: gdb.mi/mi2-var-child.exp: delete var weird -PASS: gdb.mi/mi2-var-child.exp: update all vars. None changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 1 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.integer -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 4 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.char_ptr -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 5 -PASS: gdb.mi/mi2-var-child.exp: update all vars int_ptr_ptr and children changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 6 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.0 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 7 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.1 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 8 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.2 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_nothing -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.3-9 changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_a0_0 -PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.func_ptr changed -PASS: gdb.mi/mi2-var-child.exp: delete var struct_declarations -PASS: gdb.mi/mi2-var-child.exp: delete var weird->int_ptr_ptr -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 1 -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0 -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0 -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next -PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 2 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 3 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 4 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 5 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 6 -XFAIL: gdb.mi/mi2-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 7 -PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed -PASS: gdb.mi/mi2-var-child.exp: break in do_anonymous_type_tests -PASS: gdb.mi/mi2-var-child.exp: continue to do_anonymous_type_tests breakpoint -PASS: gdb.mi/mi2-var-child.exp: VT: create root varobj for ptr -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2 -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.a -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.a -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.c -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.c.*c -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.c.*c -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.d -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.d -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.e -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.e -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.f -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.f -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.g -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.g -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h.**h -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.h.*h.**h -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.integer -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.integer -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.unsigned_integer -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.unsigned_integer -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.character -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.character -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.signed_character -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.signed_character -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr -PASS: gdb.mi/mi2-var-child.exp: VT: list children of ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.char_ptr.*char_ptr -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.0 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.0 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.1 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.1 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.2 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.2 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.3 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.3 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.4 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.4 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.5 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.5 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.6 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.6 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.7 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.7 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.8 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.8 -PASS: gdb.mi/mi2-var-child.exp: path expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.9 -PASS: gdb.mi/mi2-var-child.exp: expression for ptr2.*ptr.1_anonymous.2_anonymous.3_anonymous.simple.*simple.**simple.array_of_10.9 -PASS: gdb.mi/mi2-var-child.exp: VT: create root varobj for v -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3 -PASS: gdb.mi/mi2-var-child.exp: path expression for v3 -PASS: gdb.mi/mi2-var-child.exp: expression for v3 -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.x -PASS: gdb.mi/mi2-var-child.exp: expression for v3.x -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for v3.1_anonymous -PASS: gdb.mi/mi2-var-child.exp: VT: list children of v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: expression for v3.2_anonymous -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.1_anonymous.a -PASS: gdb.mi/mi2-var-child.exp: expression for v3.1_anonymous.a -PASS: gdb.mi/mi2-var-child.exp: path expression for v3.2_anonymous.b -PASS: gdb.mi/mi2-var-child.exp: expression for v3.2_anonymous.b -Running ./gdb.mi/mi-async.exp ... -Running ./gdb.mi/mi-basics.exp ... -PASS: gdb.mi/mi-basics.exp: acceptance of MI operations -PASS: gdb.mi/mi-basics.exp: file-exec-and-symbols operation -PASS: gdb.mi/mi-basics.exp: file-exec-file operation -PASS: gdb.mi/mi-basics.exp: file-symbol-file operation -PASS: gdb.mi/mi-basics.exp: break-delete (all) operation -PASS: gdb.mi/mi-basics.exp: all breakpoints removed -PASS: gdb.mi/mi-basics.exp: environment-directory arg operation -PASS: gdb.mi/mi-basics.exp: environment-directory empty-string operation -PASS: gdb.mi/mi-basics.exp: environment-directory operation -PASS: gdb.mi/mi-basics.exp: environment-cd arg operation -PASS: gdb.mi/mi-basics.exp: environment-pwd operation -PASS: gdb.mi/mi-basics.exp: environment-path -PASS: gdb.mi/mi-basics.exp: environment-path no-args operation -PASS: gdb.mi/mi-basics.exp: environment-path dir1 dir2 operation -PASS: gdb.mi/mi-basics.exp: environment-path -r dir operation -PASS: gdb.mi/mi-basics.exp: environment-path -r operation -PASS: gdb.mi/mi-basics.exp: initial tty is mi_inferior_tty_name -PASS: gdb.mi/mi-basics.exp: set tty to /dev/pts/1 -PASS: gdb.mi/mi-basics.exp: tty was set correctly -PASS: gdb.mi/mi-basics.exp: set tty to the empty string -PASS: gdb.mi/mi-basics.exp: make sure tty is empty -PASS: gdb.mi/mi-basics.exp: set tty to mi_inferior_tty_name (the way it was) -PASS: gdb.mi/mi-basics.exp: verify tty is correct -Running ./gdb.mi/mi-break.exp ... -PASS: gdb.mi/mi-break.exp: break-insert -t operation -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:$line_callee3_head -PASS: gdb.mi/mi-break.exp: insert temp breakpoint at "":$line_callee4_head -PASS: gdb.mi/mi-break.exp: list of breakpoints -PASS: gdb.mi/mi-break.exp: delete temp breakpoints -KFAIL: gdb.mi/mi-break.exp: break-insert -r operation (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee2 (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp .*llee (PRMS: mi/14270) -KFAIL: gdb.mi/mi-break.exp: list of breakpoints (PRMS: mi/14270) -PASS: gdb.mi/mi-break.exp: delete temp breakpoints -PASS: gdb.mi/mi-break.exp: insert breakpoint with ignore count at callme -PASS: gdb.mi/mi-break.exp: run to breakpoint with ignore count -PASS: gdb.mi/mi-break.exp: breakpoint at nonexistent function -PASS: gdb.mi/mi-break.exp: create varobj for function call -PASS: gdb.mi/mi-break.exp: update varobj for function call -PASS: gdb.mi/mi-break.exp: test disabled creation -PASS: gdb.mi/mi-break.exp: test disabled creation: cleanup -PASS: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-break.exp: breakpoint commands: set commands -PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are set -PASS: gdb.mi/mi-break.exp: breakpoint commands: clear commands -PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are cleared -ERROR: couldn't load /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/gdb.mi/mi-break into /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb (timed out). -UNRESOLVED: gdb.mi/mi-break.exp: breakpoint at main -FAIL: gdb.mi/mi-break.exp: mi runto main (unknown output after running) -FAIL: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2, again -FAIL: gdb.mi/mi-break.exp: breakpoint commands: set commands -FAIL: gdb.mi/mi-break.exp: breakpoint commands: continue (MI error) -FAIL: gdb.mi/mi-break.exp: intermediate stop and continue -FAIL: gdb.mi/mi-break.exp: test hitting breakpoint with commands (unknown output after running) -PASS: gdb.mi/mi-break.exp: create local variable tpnum -PASS: gdb.mi/mi-break.exp: eval tpnum before tracepoint -FAIL: gdb.mi/mi-break.exp: break-insert -a operation -PASS: gdb.mi/mi-break.exp: update tpnum -FAIL: gdb.mi/mi-break.exp: eval tpnum after tracepoint -Running ./gdb.mi/mi-breakpoint-changed.exp ... -PASS: gdb.mi/mi-breakpoint-changed.exp: breakpoint at main -FAIL: gdb.mi/mi-breakpoint-changed.exp: mi runto main (unknown output after running) -PASS: gdb.mi/mi-breakpoint-changed.exp: change command -PASS: gdb.mi/mi-breakpoint-changed.exp: watch watch -PASS: gdb.mi/mi-breakpoint-changed.exp: trace marker -PASS: gdb.mi/mi-breakpoint-changed.exp: catch syscall -PASS: gdb.mi/mi-breakpoint-changed.exp: dprintf marker, "arg" " -PASS: gdb.mi/mi-breakpoint-changed.exp: condition 2 main > 0x0 -PASS: gdb.mi/mi-breakpoint-changed.exp: disable 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: enable 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: ignore 5 1 -PASS: gdb.mi/mi-breakpoint-changed.exp: passcount 1 4 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 3 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 4 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 5 -PASS: gdb.mi/mi-breakpoint-changed.exp: delete 6 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on pendfunc1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc1 resolved -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc1 resolved: hit_count is updated -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to pendfunc1 breakpoint -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: delete breakpoint on pendfunc1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on marker -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: insert breakpoint on pendfunc3 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 1 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc3 resolved -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: continue to marker 2 -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: breakpoint on pendfunc3 pending again -PASS: gdb.mi/mi-breakpoint-changed.exp: pending resolved: -Running ./gdb.mi/mi-catch-load.exp ... -PASS: gdb.mi/mi-catch-load.exp: breakpoint at main -PASS: gdb.mi/mi-catch-load.exp: mi runto main -PASS: gdb.mi/mi-catch-load.exp: catch-load: auto-solib-add on -PASS: gdb.mi/mi-catch-load.exp: catch-load: catch load -FAIL: gdb.mi/mi-catch-load.exp: catch-load: solib-event stop -PASS: gdb.mi/mi-catch-load.exp: breakpoint at main -PASS: gdb.mi/mi-catch-load.exp: mi runto main -PASS: gdb.mi/mi-catch-load.exp: catch-unload: auto-solib-add on -PASS: gdb.mi/mi-catch-load.exp: catch-unload: catch unload -FAIL: gdb.mi/mi-catch-load.exp: catch-unload: solib-event stop -Running ./gdb.mi/mi-cli.exp ... -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with no arguments -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with one argument -PASS: gdb.mi/mi-cli.exp: -interpreter-exec with bogus interpreter -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console bogus -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "file $binfile" -PASS: gdb.mi/mi-cli.exp: breakpoint at main -PASS: gdb.mi/mi-cli.exp: mi runto main -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set args foobar" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "show args" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "break callee4" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "info break" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set listsize 1" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" -PASS: gdb.mi/mi-cli.exp: continue to callee4 -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "delete 2" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "up" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "down" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "frame 2" -PASS: gdb.mi/mi-cli.exp: -stack-select-frame 0 -PASS: gdb.mi/mi-cli.exp: check *stopped from CLI command -PASS: gdb.mi/mi-cli.exp: -break-insert -t basics.c:$line_main_hello -PASS: gdb.mi/mi-cli.exp: -exec-continue to line $line_main_hello -PASS: gdb.mi/mi-cli.exp: 34 next: run -PASS: gdb.mi/mi-cli.exp: 34 next: stop -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" at basics.c:$line_main_return -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "help set args" -PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set $pc=0x0" -Running ./gdb.mi/mi-cmd-param-changed.exp ... -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: breakpoint at main -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: mi runto main -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking step" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: interpreter-exec "set scheduler-locking step" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking on" no event (requested by MI) -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking step" no event (requested by MI interp) -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set scheduler-locking stepr" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache" warmup -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remotecache" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type" warmup -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set check type" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes foo" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes bar" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set trace-notes bar" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file foo" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file bar" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set remote exec-file bar" no event -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "maint set profile on" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "maint set profile off" -PASS: gdb.mi/mi-cmd-param-changed.exp: cmd param: "set ch type on" -Running ./gdb.mi/mi-console.exp ... -PASS: gdb.mi/mi-console.exp: breakpoint at main -PASS: gdb.mi/mi-console.exp: mi runto main -PASS: gdb.mi/mi-console.exp: Testing console output -UNSUPPORTED: gdb.mi/mi-console.exp: Testing console output inferior output -PASS: gdb.mi/mi-console.exp: finished step over hello -Running ./gdb.mi/mi-disassemble.exp ... -PASS: gdb.mi/mi-disassemble.exp: breakpoint at main -PASS: gdb.mi/mi-disassemble.exp: mi runto main -PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed with opcodes -PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus filename -PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus address -PASS: gdb.mi/mi-disassemble.exp: data-disassemble mix different args -PASS: gdb.mi/mi-disassemble.exp: data-disassemble wrong mode arg -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly only -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly mixed -PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly mixed -Running ./gdb.mi/mi-eval.exp ... -PASS: gdb.mi/mi-eval.exp: breakpoint at callee4 -PASS: gdb.mi/mi-eval.exp: mi runto callee4 -PASS: gdb.mi/mi-eval.exp: next at callee4 -PASS: gdb.mi/mi-eval.exp: eval A -PASS: gdb.mi/mi-eval.exp: eval &A -PASS: gdb.mi/mi-eval.exp: eval A+3 -PASS: gdb.mi/mi-eval.exp: eval A + 3 -Running ./gdb.mi/mi-file.exp ... -PASS: gdb.mi/mi-file.exp: request path info of current source file (basics.c) -PASS: gdb.mi/mi-file.exp: Getting a list of source files. -Running ./gdb.mi/mi-file-transfer.exp ... -FAIL: gdb.mi/mi-file-transfer.exp: put binary file -FAIL: gdb.mi/mi-file-transfer.exp: get binary file -FAIL: gdb.mi/mi-file-transfer.exp: compare binary file -FAIL: gdb.mi/mi-file-transfer.exp: deleted binary file -Running ./gdb.mi/mi-fill-memory.exp ... -PASS: gdb.mi/mi-fill-memory.exp: breakpoint at main -PASS: gdb.mi/mi-fill-memory.exp: mi runto main -PASS: gdb.mi/mi-fill-memory.exp: next at main -PASS: gdb.mi/mi-fill-memory.exp: no arguments -PASS: gdb.mi/mi-fill-memory.exp: one argument missing -PASS: gdb.mi/mi-fill-memory.exp: memory successfully written -PASS: gdb.mi/mi-fill-memory.exp: memory successfully filled (8 bytes) -PASS: gdb.mi/mi-fill-memory.exp: pattern correctly read from memory -Running ./gdb.mi/mi-fullname-deleted.exp ... -PASS: gdb.mi/mi-fullname-deleted.exp: set substitute-path -PASS: gdb.mi/mi-fullname-deleted.exp: fullname present -PASS: gdb.mi/mi-fullname-deleted.exp: substituted fullname -PASS: gdb.mi/mi-fullname-deleted.exp: compare_filenames_for_search does not match -PASS: gdb.mi/mi-fullname-deleted.exp: compare_filenames_for_search does match -Running ./gdb.mi/mi-hack-cli.exp ... -PASS: gdb.mi/mi-hack-cli.exp: show architecture -PASS: gdb.mi/mi-hack-cli.exp: 47show architecture -Running ./gdb.mi/mi-info-os.exp ... -FAIL: gdb.mi/mi-info-os.exp: -info-os -Running ./gdb.mi/mi-inheritance-syntax-error.exp ... -PASS: gdb.mi/mi-inheritance-syntax-error.exp: breakpoint at C::testLocation -PASS: gdb.mi/mi-inheritance-syntax-error.exp: mi runto C::testLocation -PASS: gdb.mi/mi-inheritance-syntax-error.exp: create var for THIS -PASS: gdb.mi/mi-inheritance-syntax-error.exp: list children of THIS -PASS: gdb.mi/mi-inheritance-syntax-error.exp: -var-info-path-expression var1.A -PASS: gdb.mi/mi-inheritance-syntax-error.exp: -data-evaluate-expression (*(class A*) this) -Running ./gdb.mi/mi-logging.exp ... -PASS: gdb.mi/mi-logging.exp: breakpoint at main -PASS: gdb.mi/mi-logging.exp: mi runto main -PASS: gdb.mi/mi-logging.exp: logging on -PASS: gdb.mi/mi-logging.exp: logged step -PASS: gdb.mi/mi-logging.exp: logged next -PASS: gdb.mi/mi-logging.exp: logging off -PASS: gdb.mi/mi-logging.exp: Log file contents -PASS: gdb.mi/mi-logging.exp: redirect logging on -PASS: gdb.mi/mi-logging.exp: redirect logging off -PASS: gdb.mi/mi-logging.exp: Redirect log file contents -Running ./gdb.mi/mi-memory-changed.exp ... -PASS: gdb.mi/mi-memory-changed.exp: insert breakpoint -PASS: gdb.mi/mi-memory-changed.exp: continue to callee4 -PASS: gdb.mi/mi-memory-changed.exp: set var C = 4 -PASS: gdb.mi/mi-memory-changed.exp: create objvar for C -PASS: gdb.mi/mi-memory-changed.exp: change C thru. varobj -PASS: gdb.mi/mi-memory-changed.exp: change C thru. -data-write-memory-bytes -PASS: gdb.mi/mi-memory-changed.exp: get address of main -Running ./gdb.mi/mi-nonstop-exit.exp ... -PASS: gdb.mi/mi-nonstop-exit.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main -PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue -PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main -PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue (2) -Running ./gdb.mi/mi-nonstop.exp ... -PASS: gdb.mi/mi-nonstop.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nonstop.exp: breakpoint at main -PASS: gdb.mi/mi-nonstop.exp: mi runto main -PASS: gdb.mi/mi-nonstop.exp: breakpoint at marker -PASS: gdb.mi/mi-nonstop.exp: w0,i0 stop -PASS: gdb.mi/mi-nonstop.exp: w1,i0 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 1 -PASS: gdb.mi/mi-nonstop.exp: select thread 2 -PASS: gdb.mi/mi-nonstop.exp: create varobj in first thread -PASS: gdb.mi/mi-nonstop.exp: select thread 3 -PASS: gdb.mi/mi-nonstop.exp: create varobj in second thread -PASS: gdb.mi/mi-nonstop.exp: thread state, resume 1 -PASS: gdb.mi/mi-nonstop.exp: w0,i1 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 2 -PASS: gdb.mi/mi-nonstop.exp: thread state, resume 2 -PASS: gdb.mi/mi-nonstop.exp: w1,i1 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 3 -PASS: gdb.mi/mi-nonstop.exp: update varobj, 1 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w0, 1 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1 -PASS: gdb.mi/mi-nonstop.exp: interrupted -PASS: gdb.mi/mi-nonstop.exp: got interrupt -PASS: gdb.mi/mi-nonstop.exp: thread state, stop 4 -PASS: gdb.mi/mi-nonstop.exp: resume all -PASS: gdb.mi/mi-nonstop.exp: w0,i2 stop -PASS: gdb.mi/mi-nonstop.exp: w1,i2 stop -PASS: gdb.mi/mi-nonstop.exp: set condition, 1 -PASS: gdb.mi/mi-nonstop.exp: w0,i3 stop -PASS: gdb.mi/mi-nonstop.exp: thread state, stop on cond breakpoint -PASS: gdb.mi/mi-nonstop.exp: update varobj, 2 -PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1 -PASS: gdb.mi/mi-nonstop.exp: stacktrace of running thread -PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread -PASS: gdb.mi/mi-nonstop.exp: select first worker thread -PASS: gdb.mi/mi-nonstop.exp: ask the second thread to exit -UNSUPPORTED: gdb.mi/mi-nonstop.exp: wait for thread exit -PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread -Running ./gdb.mi/mi-nsintrall.exp ... -PASS: gdb.mi/mi-nsintrall.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nsintrall.exp: breakpoint at main -PASS: gdb.mi/mi-nsintrall.exp: mi runto main -PASS: gdb.mi/mi-nsintrall.exp: breakpoint at thread_function -PASS: gdb.mi/mi-nsintrall.exp: stop 0 -PASS: gdb.mi/mi-nsintrall.exp: stop 1 -PASS: gdb.mi/mi-nsintrall.exp: stop 2 -PASS: gdb.mi/mi-nsintrall.exp: stop 3 -PASS: gdb.mi/mi-nsintrall.exp: stop 4 -PASS: gdb.mi/mi-nsintrall.exp: stop 5 -PASS: gdb.mi/mi-nsintrall.exp: thread state, all stopped -PASS: gdb.mi/mi-nsintrall.exp: resume all, no breakpoint -PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all -PASS: gdb.mi/mi-nsintrall.exp: interrupt all threads -PASS: gdb.mi/mi-nsintrall.exp: interrupt 0 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 1 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 2 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 3 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 4 -PASS: gdb.mi/mi-nsintrall.exp: interrupt 5 -PASS: gdb.mi/mi-nsintrall.exp: thread state, all interrupted -PASS: gdb.mi/mi-nsintrall.exp: resume all after interrupting -PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all after interrupting -Running ./gdb.mi/mi-nsmoribund.exp ... -PASS: gdb.mi/mi-nsmoribund.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at main -PASS: gdb.mi/mi-nsmoribund.exp: mi runto main -PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at thread_function -PASS: gdb.mi/mi-nsmoribund.exp: stop 0 -PASS: gdb.mi/mi-nsmoribund.exp: stop 1 -PASS: gdb.mi/mi-nsmoribund.exp: stop 2 -PASS: gdb.mi/mi-nsmoribund.exp: stop 3 -PASS: gdb.mi/mi-nsmoribund.exp: stop 4 -PASS: gdb.mi/mi-nsmoribund.exp: stop 5 -PASS: gdb.mi/mi-nsmoribund.exp: stop 6 -PASS: gdb.mi/mi-nsmoribund.exp: stop 7 -PASS: gdb.mi/mi-nsmoribund.exp: stop 8 -PASS: gdb.mi/mi-nsmoribund.exp: stop 9 -PASS: gdb.mi/mi-nsmoribund.exp: thread state: all stopped except the main thread -PASS: gdb.mi/mi-nsmoribund.exp: select thread 5 -PASS: gdb.mi/mi-nsmoribund.exp: thread specific breakpoint at thread_function -PASS: gdb.mi/mi-nsmoribund.exp: resume all, thread specific breakpoint -PASS: gdb.mi/mi-nsmoribund.exp: hit thread specific breakpoint -PASS: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread -PASS: gdb.mi/mi-nsmoribund.exp: resume all, program exited normally -Running ./gdb.mi/mi-ns-stale-regcache.exp ... -PASS: gdb.mi/mi-ns-stale-regcache.exp: breakpoint at main -PASS: gdb.mi/mi-ns-stale-regcache.exp: mi runto main -PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale register cache of resumed thread -PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale frame info of resumed thread -PASS: gdb.mi/mi-ns-stale-regcache.exp: main thread still running -Running ./gdb.mi/mi-nsthrexec.exp ... -Running ./gdb.mi/mi-pending.exp ... -PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on pendfunc1 -PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on mi-pendshr.c:pendfunc2 if x==4 -PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1 -PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1 a second time -PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc2 with x==4 -Running ./gdb.mi/mi-pthreads.exp ... -PASS: gdb.mi/mi-pthreads.exp: successfully compiled posix threads test case -PASS: gdb.mi/mi-pthreads.exp: breakpoint at done_making_threads -PASS: gdb.mi/mi-pthreads.exp: mi runto done_making_threads -PASS: gdb.mi/mi-pthreads.exp: -thread_list_ids (in check_mi_thread_command_set) -PASS: gdb.mi/mi-pthreads.exp: finding threads in MI output (in check_mi_thread_command_set) -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 123456789 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 6 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 5 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 4 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 3 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 2 -PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 1 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 6 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 5 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 4 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 3 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 2 -PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 1 -Running ./gdb.mi/mi-read-memory.exp ... -PASS: gdb.mi/mi-read-memory.exp: breakpoint at main -PASS: gdb.mi/mi-read-memory.exp: mi runto main -PASS: gdb.mi/mi-read-memory.exp: next at main -PASS: gdb.mi/mi-read-memory.exp: no arguments -PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte -PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte offset by -6 -PASS: gdb.mi/mi-read-memory.exp: expression in quotes -PASS: gdb.mi/mi-read-memory.exp: ascii and data -PASS: gdb.mi/mi-read-memory.exp: decimal -PASS: gdb.mi/mi-read-memory.exp: octal -Running ./gdb.mi/mi-record-changed.exp ... -Running ./gdb.mi/mi-regs.exp ... -Running ./gdb.mi/mi-return.exp ... -PASS: gdb.mi/mi-return.exp: breakpoint at callee4 -PASS: gdb.mi/mi-return.exp: mi runto callee4 -PASS: gdb.mi/mi-return.exp: delete all breakpoints -PASS: gdb.mi/mi-return.exp: return from callee4 now -Running ./gdb.mi/mi-reverse.exp ... -Running ./gdb.mi/mi-simplerun.exp ... -PASS: gdb.mi/mi-simplerun.exp: break-insert operation -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:callee2 -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:$line_callee3_head -PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at "":$line_callee4_head -PASS: gdb.mi/mi-simplerun.exp: list of breakpoints -PASS: gdb.mi/mi-simplerun.exp: disabling of breakpoints -PASS: gdb.mi/mi-simplerun.exp: list of breakpoints, 16 disabled -PASS: gdb.mi/mi-simplerun.exp: run to main -PASS: gdb.mi/mi-simplerun.exp: next at main -PASS: gdb.mi/mi-simplerun.exp: step at main -PASS: gdb.mi/mi-simplerun.exp: step to callee4 -PASS: gdb.mi/mi-simplerun.exp: exec-finish -PASS: gdb.mi/mi-simplerun.exp: continue to end -Running ./gdb.mi/mi-solib.exp ... -PASS: gdb.mi/mi-solib.exp: set stop-on-solib-events -PASS: gdb.mi/mi-solib.exp: check for solib event -Running ./gdb.mi/mi-stack.exp ... -PASS: gdb.mi/mi-stack.exp: breakpoint at callee4 -PASS: gdb.mi/mi-stack.exp: mi runto callee4 -PASS: gdb.mi/mi-stack.exp: stack frame listing -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 1 -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 3 -PASS: gdb.mi/mi-stack.exp: stack frame listing wrong -PASS: gdb.mi/mi-stack.exp: selected frame listing -PASS: gdb.mi/mi-stack.exp: stack frame listing 1 300 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 3 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 1 -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 3 -PASS: gdb.mi/mi-stack.exp: stack args listing wrong -PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 300 -PASS: gdb.mi/mi-stack.exp: stack locals listing of names -PASS: gdb.mi/mi-stack.exp: next's in callee4 -PASS: gdb.mi/mi-stack.exp: stack locals listing of names and values -PASS: gdb.mi/mi-stack.exp: stack locals listing, simple types: names and values, complex type: names and types -PASS: gdb.mi/mi-stack.exp: stack locals listing wrong -PASS: gdb.mi/mi-stack.exp: stack select frame 1 -PASS: gdb.mi/mi-stack.exp: stack locals listing for new frame -PASS: gdb.mi/mi-stack.exp: stack locals for same frame (level 1) -PASS: gdb.mi/mi-stack.exp: stack info-depth -PASS: gdb.mi/mi-stack.exp: stack info-depth 3 -PASS: gdb.mi/mi-stack.exp: stack info-depth 99 -PASS: gdb.mi/mi-stack.exp: stack info-depth wrong usage -Running ./gdb.mi/mi-stepi.exp ... -PASS: gdb.mi/mi-stepi.exp: breakpoint at main -PASS: gdb.mi/mi-stepi.exp: mi runto main -PASS: gdb.mi/mi-stepi.exp: step-instruction at main -PASS: gdb.mi/mi-stepi.exp: step-instruction at main (line check) -PASS: gdb.mi/mi-stepi.exp: next-instruction at main -PASS: gdb.mi/mi-stepi.exp: next-instruction at main (line check) -PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 -PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 (line check) -Running ./gdb.mi/mi-stepn.exp ... -PASS: gdb.mi/mi-stepn.exp: breakpoint at main -PASS: gdb.mi/mi-stepn.exp: mi runto main -PASS: gdb.mi/mi-stepn.exp: breakpoint at do_nothing -PASS: gdb.mi/mi-stepn.exp: breakpoint-hit reported -Running ./gdb.mi/mi-syn-frame.exp ... -PASS: gdb.mi/mi-syn-frame.exp: breakpoint at main -PASS: gdb.mi/mi-syn-frame.exp: mi runto main -PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint foo -PASS: gdb.mi/mi-syn-frame.exp: call inferior's function with a breakpoint set in it -PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function stopped at bp, showing gdb dummy frame -PASS: gdb.mi/mi-syn-frame.exp: finished exec continue -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint subroutine -PASS: gdb.mi/mi-syn-frame.exp: data evaluate expression -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: finished exec continue -PASS: gdb.mi/mi-syn-frame.exp: list stack frames -PASS: gdb.mi/mi-syn-frame.exp: call inferior function which raises exception -PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function at exception -Running ./gdb.mi/mi-until.exp ... -PASS: gdb.mi/mi-until.exp: break-insert operation -PASS: gdb.mi/mi-until.exp: run to main -PASS: gdb.mi/mi-until.exp: break-delete 1 -KFAIL: gdb.mi/mi-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104) -PASS: gdb.mi/mi-until.exp: until line number -PASS: gdb.mi/mi-until.exp: until line number:file -PASS: gdb.mi/mi-until.exp: until after current function -Running ./gdb.mi/mi-var-block.exp ... -PASS: gdb.mi/mi-var-block.exp: breakpoint at do_block_tests -PASS: gdb.mi/mi-var-block.exp: mi runto do_block_tests -PASS: gdb.mi/mi-var-block.exp: create local variable cb -PASS: gdb.mi/mi-var-block.exp: try to create local variable foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 1 -PASS: gdb.mi/mi-var-block.exp: delete var foo 1 -PASS: gdb.mi/mi-var-block.exp: create local variable foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 2 -PASS: gdb.mi/mi-var-block.exp: update all vars: cb foo changed -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 3 -PASS: gdb.mi/mi-var-block.exp: create local variable inner_foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 4 -PASS: gdb.mi/mi-var-block.exp: create local variable foo2 -XFAIL: gdb.mi/mi-var-block.exp: update inner_foo: should be out of scope: KNOWN PROBLEM -XFAIL: gdb.mi/mi-var-block.exp: evaluate inner_foo: should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: update foo: did not change -PASS: gdb.mi/mi-var-block.exp: delete var inner_foo -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 5 -XFAIL: gdb.mi/mi-var-block.exp: update foo2: should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: step at do_block_test 6 -XFAIL: gdb.mi/mi-var-block.exp: update foo2 should be out of scope: KNOWN PROBLEM -XFAIL: gdb.mi/mi-var-block.exp: update foo should be out of scope: KNOWN PROBLEM -PASS: gdb.mi/mi-var-block.exp: update cb -PASS: gdb.mi/mi-var-block.exp: delete var foo 2 -PASS: gdb.mi/mi-var-block.exp: delete var foo2 -PASS: gdb.mi/mi-var-block.exp: delete var cb -Running ./gdb.mi/mi-var-child.exp ... -PASS: gdb.mi/mi-var-child.exp: breakpoint at do_children_tests -PASS: gdb.mi/mi-var-child.exp: mi runto do_children_tests -PASS: gdb.mi/mi-var-child.exp: run to 215 (set breakpoint) -PASS: gdb.mi/mi-var-child.exp: create local variable struct_declarations -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.character -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.character -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_int -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_int -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_struct -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.3 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.3 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.4 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.4 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.5 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.5 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.6 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.6 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.7 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.7 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.8 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.8 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.9 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.9 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.a -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.a -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.b -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.b -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.c -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.c -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.d -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.d -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.g -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.g -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.h -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.h -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.i -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.i -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.f -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2 -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func -PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: step to line $line_dct_123 -PASS: gdb.mi/mi-var-child.exp: create local variable weird -PASS: gdb.mi/mi-var-child.exp: get children of weird -PASS: gdb.mi/mi-var-child.exp: get number of children of weird -PASS: gdb.mi/mi-var-child.exp: get children of weird.long_array -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.long_array -PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: is weird editable -PASS: gdb.mi/mi-var-child.exp: is weird->int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable -PASS: gdb.mi/mi-var-child.exp: is weird.u1 editable -PASS: gdb.mi/mi-var-child.exp: is weird.s2 editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.a editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.b editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.c editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array.0 editable -PASS: gdb.mi/mi-var-child.exp: is struct_declarations editable -PASS: gdb.mi/mi-var-child.exp: delete var weird -PASS: gdb.mi/mi-var-child.exp: update all vars. None changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 1 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.integer -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 4 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.char_ptr -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 5 -PASS: gdb.mi/mi-var-child.exp: update all vars int_ptr_ptr and children changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 6 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.0 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 7 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.1 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 8 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.2 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.3-9 changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 1 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.func_ptr changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 2 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.10 changed, don't print values. -PASS: gdb.mi/mi-var-child.exp: step $line_dct_a0_0 -PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.11 changed, print values. -PASS: gdb.mi/mi-var-child.exp: listing of names and values of children -PASS: gdb.mi/mi-var-child.exp: listing of children, simple types: names, type and values, complex types: names and types -PASS: gdb.mi/mi-var-child.exp: delete var struct_declarations -PASS: gdb.mi/mi-var-child.exp: delete var weird->int_ptr_ptr -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 1 -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr -PASS: gdb.mi/mi-var-child.exp: create local variable psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0 -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0 -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next -PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 2 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 3 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 4 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 5 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 6 -XFAIL: gdb.mi/mi-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 7 -PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed -PASS: gdb.mi/mi-var-child.exp: run to mi-var-child.c:323 (set breakpoint) -PASS: gdb.mi/mi-var-child.exp: create varobj for s -PASS: gdb.mi/mi-var-child.exp: list children of S -PASS: gdb.mi/mi-var-child.exp: delete S.a -PASS: gdb.mi/mi-var-child.exp: delete S.b -PASS: gdb.mi/mi-var-child.exp: delete S -Running ./gdb.mi/mi-var-child-f.exp ... -UNSUPPORTED: gdb.mi/mi-var-child-f.exp: compilation array.f -Running ./gdb.mi/mi-var-cmd.exp ... -PASS: gdb.mi/mi-var-cmd.exp: create global variable -PASS: gdb.mi/mi-var-cmd.exp: create non-existent variable -PASS: gdb.mi/mi-var-cmd.exp: create out of scope variable -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: run to 148 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create local variable linteger -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpinteger -PASS: gdb.mi/mi-var-cmd.exp: create local variable lcharacter -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpcharacter -PASS: gdb.mi/mi-var-cmd.exp: create local variable llong -PASS: gdb.mi/mi-var-cmd.exp: create local variable lplong -PASS: gdb.mi/mi-var-cmd.exp: create local variable lfloat -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpfloat -PASS: gdb.mi/mi-var-cmd.exp: create local variable ldouble -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpdouble -PASS: gdb.mi/mi-var-cmd.exp: create local variable lsimple -PASS: gdb.mi/mi-var-cmd.exp: create local variable lpsimple -PASS: gdb.mi/mi-var-cmd.exp: create local variable func -PASS: gdb.mi/mi-var-cmd.exp: create lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: create lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: create lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: create int -PASS: gdb.mi/mi-var-cmd.exp: update all vars -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_test -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (2) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (3) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lcharacter changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (4) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpcharacter changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (5) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: many changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (6) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: func and lpsimple changed -PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (7) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lsimple and others changed -PASS: gdb.mi/mi-var-cmd.exp: assign to global_simple -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed after assign -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger again, same value -PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger not changed after same assign -PASS: gdb.mi/mi-var-cmd.exp: eval linteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger -PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed after assign -PASS: gdb.mi/mi-var-cmd.exp: update all vars: no changes on second update -PASS: gdb.mi/mi-var-cmd.exp: eval lpinteger -PASS: gdb.mi/mi-var-cmd.exp: assign to linteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger -PASS: gdb.mi/mi-var-cmd.exp: assign to lcharacter -PASS: gdb.mi/mi-var-cmd.exp: eval lcharacter -PASS: gdb.mi/mi-var-cmd.exp: assign to llong -PASS: gdb.mi/mi-var-cmd.exp: eval llong -PASS: gdb.mi/mi-var-cmd.exp: assign to llong -PASS: gdb.mi/mi-var-cmd.exp: assign to lplong -PASS: gdb.mi/mi-var-cmd.exp: eval lplong -PASS: gdb.mi/mi-var-cmd.exp: assign to lplong -PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat -PASS: gdb.mi/mi-var-cmd.exp: eval lfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to lpfloat -PASS: gdb.mi/mi-var-cmd.exp: assign to ldouble -PASS: gdb.mi/mi-var-cmd.exp: assign to func -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: var update -PASS: gdb.mi/mi-var-cmd.exp: assign same value to func -PASS: gdb.mi/mi-var-cmd.exp: assign same value to func (update) -PASS: gdb.mi/mi-var-cmd.exp: create global variable array_ptr -PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer -PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer (update) -PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer -PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer (update) -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: mi runto subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: create i -PASS: gdb.mi/mi-var-cmd.exp: create l -PASS: gdb.mi/mi-var-cmd.exp: create linteger -PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 -XFAIL: gdb.mi/mi-var-cmd.exp: update all vars: changed FIXME -PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 (2) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: i changed -PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 (3) -PASS: gdb.mi/mi-var-cmd.exp: update all vars: llong changed -PASS: gdb.mi/mi-var-cmd.exp: next out of subroutine1 -PASS: gdb.mi/mi-var-cmd.exp: update all vars: all now out of scope -PASS: gdb.mi/mi-var-cmd.exp: delete var -PASS: gdb.mi/mi-var-cmd.exp: delete var linteger -PASS: gdb.mi/mi-var-cmd.exp: delete var lpinteger -PASS: gdb.mi/mi-var-cmd.exp: delete var lcharacter -PASS: gdb.mi/mi-var-cmd.exp: delete var lpcharacter -PASS: gdb.mi/mi-var-cmd.exp: delete var llong -PASS: gdb.mi/mi-var-cmd.exp: delete var lplong -PASS: gdb.mi/mi-var-cmd.exp: delete var lfloat -PASS: gdb.mi/mi-var-cmd.exp: delete var lpfloat -PASS: gdb.mi/mi-var-cmd.exp: delete var ldouble -PASS: gdb.mi/mi-var-cmd.exp: delete var lpdouble -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple -PASS: gdb.mi/mi-var-cmd.exp: delete var lpsimple -PASS: gdb.mi/mi-var-cmd.exp: delete var func -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.character -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple->integer -PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.integer -PASS: gdb.mi/mi-var-cmd.exp: delete var i -PASS: gdb.mi/mi-var-cmd.exp: delete var l -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: create selected_a -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at incr_a -PASS: gdb.mi/mi-var-cmd.exp: mi runto incr_a -PASS: gdb.mi/mi-var-cmd.exp: update selected_a in incr_a -PASS: gdb.mi/mi-var-cmd.exp: step a line in incr_a -PASS: gdb.mi/mi-var-cmd.exp: return from incr_a to do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: update selected_a in do_special_tests -PASS: gdb.mi/mi-var-cmd.exp: floating varobj invalidation -PASS: gdb.mi/mi-var-cmd.exp: delete selected_a -PASS: gdb.mi/mi-var-cmd.exp: delete array_ptr -FAIL: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:351 (set breakpoint) -FAIL: gdb.mi/mi-var-cmd.exp: wait for stop (frozen: step to 351) -FAIL: gdb.mi/mi-var-cmd.exp: frozen: go to line 351 -FAIL: gdb.mi/mi-var-cmd.exp: frozen: step over 351 (MI error) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:510 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create varobj for Data -PASS: gdb.mi/mi-var-cmd.exp: list children of Data -PASS: gdb.mi/mi-var-cmd.exp: access bitfield -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:453 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: create floating varobj -PASS: gdb.mi/mi-var-cmd.exp: update F (1) -PASS: gdb.mi/mi-var-cmd.exp: check F (1) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:464 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (2) -PASS: gdb.mi/mi-var-cmd.exp: check F (2) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:472 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (--all-values) -PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:478 (set breakpoint) -PASS: gdb.mi/mi-var-cmd.exp: update F (3) -PASS: gdb.mi/mi-var-cmd.exp: check F (3) -PASS: gdb.mi/mi-var-cmd.exp: inside breakpoint inside callee -PASS: gdb.mi/mi-var-cmd.exp: continue to where i is initialized -PASS: gdb.mi/mi-var-cmd.exp: update F inside callee -PASS: gdb.mi/mi-var-cmd.exp: check F inside callee -PASS: gdb.mi/mi-var-cmd.exp: create null_ptr -PASS: gdb.mi/mi-var-cmd.exp: update null_ptr -PASS: gdb.mi/mi-var-cmd.exp: delete null_ptr -PASS: gdb.mi/mi-var-cmd.exp: kill program before endvar -PASS: gdb.mi/mi-var-cmd.exp: create endvar -PASS: gdb.mi/mi-var-cmd.exp: update endvar -PASS: gdb.mi/mi-var-cmd.exp: delete endvar -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: create varobj -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: check initial value -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at main -PASS: gdb.mi/mi-var-cmd.exp: mi runto main -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now, not changed -PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now -PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now, not changed -Running ./gdb.mi/mi-var-cp.exp ... -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:20 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for rx -PASS: gdb.mi/mi-var-cp.exp: update RX (1) -PASS: gdb.mi/mi-var-cp.exp: check RX: expect 167 -PASS: gdb.mi/mi-var-cp.exp: update RX (2) -PASS: gdb.mi/mi-var-cp.exp: check RX: expect 567 -PASS: gdb.mi/mi-var-cp.exp: update RX (3) -PASS: gdb.mi/mi-var-cp.exp: delete RX -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:46 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for s2 -PASS: gdb.mi/mi-var-cp.exp: list children of s2 -PASS: gdb.mi/mi-var-cp.exp: list children of s2.s -PASS: gdb.mi/mi-var-cp.exp: list children of s2.s.public -PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.i -PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.j -PASS: gdb.mi/mi-var-cp.exp: delete S2 -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:82 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for rptr_s -PASS: gdb.mi/mi-var-cp.exp: list public child of RPTR -PASS: gdb.mi/mi-var-cp.exp: list children of reference to pointer -PASS: gdb.mi/mi-var-cp.exp: check i member -PASS: gdb.mi/mi-var-cp.exp: check j member -PASS: gdb.mi/mi-var-cp.exp: delete RPTR -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:105 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for s -PASS: gdb.mi/mi-var-cp.exp: create varobj for s -PASS: gdb.mi/mi-var-cp.exp: check attributes of S -PASS: gdb.mi/mi-var-cp.exp: check attributes of R -PASS: gdb.mi/mi-var-cp.exp: -var-update should not list structure varobjs -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:145 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for ip -PASS: gdb.mi/mi-var-cp.exp: list children of IP -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression IP.*ip -PASS: gdb.mi/mi-var-cp.exp: create varobj for dp -PASS: gdb.mi/mi-var-cp.exp: list children of DP -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1 -PASS: gdb.mi/mi-var-cp.exp: list children of DP.public -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public.i -PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1 -PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1.public -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1.public.i -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public -PASS: gdb.mi/mi-var-cp.exp: create varobj for d -PASS: gdb.mi/mi-var-cp.exp: list children of D -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression D.Base1 -PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:192 (set breakpoint) -PASS: gdb.mi/mi-var-cp.exp: create varobj for array -PASS: gdb.mi/mi-var-cp.exp: list children of A -PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression A.2 -PASS: gdb.mi/mi-var-cp.exp: break in anonymous_structs_and_unions -PASS: gdb.mi/mi-var-cp.exp: continue to anonymous_structs breakpoint -PASS: gdb.mi/mi-var-cp.exp: VT: create root varobj for a -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1 -PASS: gdb.mi/mi-var-cp.exp: path expression for a1 -PASS: gdb.mi/mi-var-cp.exp: expression for a1 -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.0_anonymous.public.b -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.0_anonymous.public.b -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.1_anonymous.public.c -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.1_anonymous.public.c -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.d -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.d -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.e -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.e -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.f -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.f -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.i -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.i -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.j -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.2_anonymous.public.j -PASS: gdb.mi/mi-var-cp.exp: VT: list children of a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.g -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.g -PASS: gdb.mi/mi-var-cp.exp: path expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.h -PASS: gdb.mi/mi-var-cp.exp: expression for a1.public.2_anonymous.public.1_anonymous.public.1_anonymous.public.1_anonymous.public.h -Running ./gdb.mi/mi-var-create-rtti.exp ... -PASS: gdb.mi/mi-var-create-rtti.exp: breakpoint at main -PASS: gdb.mi/mi-var-create-rtti.exp: mi runto main -PASS: gdb.mi/mi-var-create-rtti.exp: -var-create sp1 * $sp -Running ./gdb.mi/mi-var-display.exp ... -PASS: gdb.mi/mi-var-display.exp: break-insert operation -PASS: gdb.mi/mi-var-display.exp: run to main -PASS: gdb.mi/mi-var-display.exp: create local variable bar -PASS: gdb.mi/mi-var-display.exp: info type variable bar -PASS: gdb.mi/mi-var-display.exp: show format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar -PASS: gdb.mi/mi-var-display.exp: set format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar with new format -PASS: gdb.mi/mi-var-display.exp: assing to variable bar -PASS: gdb.mi/mi-var-display.exp: set format variable bar -PASS: gdb.mi/mi-var-display.exp: eval variable bar with new value -PASS: gdb.mi/mi-var-display.exp: delete var bar -PASS: gdb.mi/mi-var-display.exp: create local variable foo -PASS: gdb.mi/mi-var-display.exp: info type variable foo -PASS: gdb.mi/mi-var-display.exp: show format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: set format variable foo -PASS: gdb.mi/mi-var-display.exp: show format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: assing to variable foo -PASS: gdb.mi/mi-var-display.exp: set format variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo -PASS: gdb.mi/mi-var-display.exp: eval variable foo in hex -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in hex -PASS: gdb.mi/mi-var-display.exp: eval variable foo in octal -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in octal -PASS: gdb.mi/mi-var-display.exp: eval variable foo in decimal -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in decimal -PASS: gdb.mi/mi-var-display.exp: eval variable foo in natural -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in natural -PASS: gdb.mi/mi-var-display.exp: eval variable foo in binary -PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in binary -PASS: gdb.mi/mi-var-display.exp: delete var foo -PASS: gdb.mi/mi-var-display.exp: create local variable weird -PASS: gdb.mi/mi-var-display.exp: get children local variable weird -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird -PASS: gdb.mi/mi-var-display.exp: set format variable weird.integer -PASS: gdb.mi/mi-var-display.exp: set format variable weird.character -PASS: gdb.mi/mi-var-display.exp: set format variable weird.char_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_int -PASS: gdb.mi/mi-var-display.exp: set format variable weird.int_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_array -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_struct -PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr -PASS: gdb.mi/mi-var-display.exp: set format variable weird.u1 -PASS: gdb.mi/mi-var-display.exp: set format variable weird.s2 -PASS: gdb.mi/mi-var-display.exp: delete var weird -PASS: gdb.mi/mi-var-display.exp: break-insert operation 2 -PASS: gdb.mi/mi-var-display.exp: continue to do_special_tests -PASS: gdb.mi/mi-var-display.exp: create local variable u -PASS: gdb.mi/mi-var-display.exp: eval variable u -PASS: gdb.mi/mi-var-display.exp: info type variable u -PASS: gdb.mi/mi-var-display.exp: is u editable -PASS: gdb.mi/mi-var-display.exp: get number of children of u -PASS: gdb.mi/mi-var-display.exp: get children of u -PASS: gdb.mi/mi-var-display.exp: create local variable anonu -PASS: gdb.mi/mi-var-display.exp: eval variable anonu -PASS: gdb.mi/mi-var-display.exp: info type variable anonu -PASS: gdb.mi/mi-var-display.exp: is anonu editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anonu -PASS: gdb.mi/mi-var-display.exp: get children of anonu -PASS: gdb.mi/mi-var-display.exp: create local variable s -PASS: gdb.mi/mi-var-display.exp: eval variable s -PASS: gdb.mi/mi-var-display.exp: info type variable s -PASS: gdb.mi/mi-var-display.exp: is s editable -PASS: gdb.mi/mi-var-display.exp: get number of children of s -PASS: gdb.mi/mi-var-display.exp: get children of s -PASS: gdb.mi/mi-var-display.exp: create local variable anons -PASS: gdb.mi/mi-var-display.exp: eval variable anons -PASS: gdb.mi/mi-var-display.exp: info type variable anons -PASS: gdb.mi/mi-var-display.exp: is anons editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anons -PASS: gdb.mi/mi-var-display.exp: get children of anons -PASS: gdb.mi/mi-var-display.exp: create local variable e -PASS: gdb.mi/mi-var-display.exp: eval variable e -PASS: gdb.mi/mi-var-display.exp: info type variable e -PASS: gdb.mi/mi-var-display.exp: is e editable -PASS: gdb.mi/mi-var-display.exp: get number of children of e -PASS: gdb.mi/mi-var-display.exp: get children of e -PASS: gdb.mi/mi-var-display.exp: create local variable anone -PASS: gdb.mi/mi-var-display.exp: eval variable anone -PASS: gdb.mi/mi-var-display.exp: create duplicate local variable anone -PASS: gdb.mi/mi-var-display.exp: info type variable anone -PASS: gdb.mi/mi-var-display.exp: is anone editable -PASS: gdb.mi/mi-var-display.exp: get number of children of anone -PASS: gdb.mi/mi-var-display.exp: get children of anone -PASS: gdb.mi/mi-var-display.exp: print FP register -PASS: gdb.mi/mi-var-display.exp: breakpoint at incr_a -PASS: gdb.mi/mi-var-display.exp: mi runto incr_a -PASS: gdb.mi/mi-var-display.exp: create local variable a1 -PASS: gdb.mi/mi-var-display.exp: create variable a2 in different scope -Running ./gdb.mi/mi-var-invalidate.exp ... -PASS: gdb.mi/mi-var-invalidate.exp: create global variable -PASS: gdb.mi/mi-var-invalidate.exp: breakpoint at do_locals_tests -PASS: gdb.mi/mi-var-invalidate.exp: mi runto do_locals_tests -PASS: gdb.mi/mi-var-invalidate.exp: create local variable linteger -PASS: gdb.mi/mi-var-invalidate.exp: create floating variable -FAIL: gdb.mi/mi-var-invalidate.exp: breakpoint at main -FAIL: gdb.mi/mi-var-invalidate.exp: mi runto main (unknown output after running) -PASS: gdb.mi/mi-var-invalidate.exp: set format variable float_simple -PASS: gdb.mi/mi-var-invalidate.exp: linteger not anymore in scope due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (1) -PASS: gdb.mi/mi-var-invalidate.exp: global_simple still alive -PASS: gdb.mi/mi-var-invalidate.exp: type simpleton for valid variable global_simple -PASS: gdb.mi/mi-var-invalidate.exp: linteger not valid anymore due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (2) -PASS: gdb.mi/mi-var-invalidate.exp: global_simple not anymore in scope due to binary changes -PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable global_simple -Running ./gdb.mi/mi-var-rtti.exp ... -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:37 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtr (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.public (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->A (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtrConst (without RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptr->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtr.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtr->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtr (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of ptrConst.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check ptrConst->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.Base (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.Base.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: list children of constPtrConst.public (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->A (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->B (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: check constPtrConst->C (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constPtrConst (with RTTI) in use_rtti_for_ptr -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:64 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.public (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->A (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constRef (without RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.Base (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.Base.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->B (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check ref->C (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: create varobj for constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.Base (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.Base.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: list children of constRef.public (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->A (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->B (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: check constRef->C (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for constRef (with RTTI) in use_rtti_for_ref -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:94 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.public (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->A (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (without RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtr.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtr->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptrConst.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ptrConst->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.Base (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.Base.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constPtrConst.public (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->A (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->B (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constPtrConst->C (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (with RTTI) in use_rtti_for_ptr_child -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:149 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->A (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.public (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->A (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (without RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: create varobj for s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.Base (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.Base.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ref.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->A (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->B (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.ref->C (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.Base (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.Base.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: list children of s.constRef.public (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->A (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->B (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: check s.constRef->C (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s (with RTTI) in use_rtti_for_ref_child -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:202 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ref.public (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: check ref->A (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ref (without RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.First (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr (with RTTI) in use_rtti_with_multiple_inheritence -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:245 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object on" in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for S in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s in type_update_when_use_rtti -FAIL: gdb.mi/mi-var-rtti.exp: list children of s.public in type_update_when_use_rtti -FAIL: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in type_update_when_use_rtti -FAIL: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:269 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr to derived in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.Base.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->B (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->C (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s.ptr to derived in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.Base.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->B (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->C (with RTTI) in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:281 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr back to base type in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s.ptr back to base type in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s in type_update_when_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:299 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: -interpreter-exec console "set print object off" in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for ptr in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: create varobj for S in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.public in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:323 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr to derived type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check ptr->A (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s to derived type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: list children of s.ptr.public (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: check s.ptr->A (without RTTI) in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: run to mi-var-rtti.cc:335 (set breakpoint) -PASS: gdb.mi/mi-var-rtti.exp: update ptr back to base type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for ptr in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: update s back to base type in skip_type_update_when_not_use_rtti -PASS: gdb.mi/mi-var-rtti.exp: delete varobj for s in skip_type_update_when_not_use_rtti -Running ./gdb.mi/mi-watch.exp ... -PASS: gdb.mi/mi-watch.exp: hw watchpoints toggle (1) -PASS: gdb.mi/mi-watch.exp: sw: breakpoint at callee4 -PASS: gdb.mi/mi-watch.exp: sw: mi runto callee4 -PASS: gdb.mi/mi-watch.exp: sw: break-watch operation -PASS: gdb.mi/mi-watch.exp: sw: list of watchpoints -PASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger -XPASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger -Running ./gdb.mi/mi-watch-nonstop.exp ... -Running ./gdb.mi/pr11022.exp ... -Running ./gdb.modula2/unbounded-array.exp ... -PASS: gdb.modula2/unbounded-array.exp: switch to modula-2 -PASS: gdb.modula2/unbounded-array.exp: print the last legal element of array a -PASS: gdb.modula2/unbounded-array.exp: print unbounded array contents -PASS: gdb.modula2/unbounded-array.exp: print the 1st element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 2nd element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 3rd element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 4th element of array a -PASS: gdb.modula2/unbounded-array.exp: print the 5th element of array a -Running ./gdb.multi/base.exp ... -PASS: gdb.multi/base.exp: add empty inferior 2 -PASS: gdb.multi/base.exp: switch to inferior 2 -PASS: gdb.multi/base.exp: load hangout file in inferior 2 -PASS: gdb.multi/base.exp: add inferior 3 with -exec goodbye -PASS: gdb.multi/base.exp: info inferiors -PASS: gdb.multi/base.exp: info inferior 2 3 -PASS: gdb.multi/base.exp: info inferior 1-2 -PASS: gdb.multi/base.exp: switch to inferior 1 -PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 1 -PASS: gdb.multi/base.exp: switch to inferior 3 -PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 3 -PASS: gdb.multi/base.exp: switch back to inferior 1 -PASS: gdb.multi/base.exp: set listsize 1 -PASS: gdb.multi/base.exp: list commonfun in hello -PASS: gdb.multi/base.exp: print hglob -PASS: gdb.multi/base.exp: print glob (hello) -PASS: gdb.multi/base.exp: switch to inferior 3 to print globals -PASS: gdb.multi/base.exp: print gglob -PASS: gdb.multi/base.exp: print glob (goodbye) -PASS: gdb.multi/base.exp: list commonfun in goodbye -PASS: gdb.multi/base.exp: switch to inferior 1 to run it -PASS: gdb.multi/base.exp: break hello -PASS: gdb.multi/base.exp: continue -PASS: gdb.multi/base.exp: remove-inferiors 2-3 -PASS: gdb.multi/base.exp: check remove-inferiors -Running ./gdb.multi/bkpt-multi-exec.exp ... -Running ./gdb.multi/multi-arch-exec.exp ... -Running ./gdb.multi/multi-arch.exp ... -Running ./gdb.multi/watchpoint-multi.exp ... -UNTESTED: gdb.multi/watchpoint-multi.exp: watchpoint-multi.exp -Running ./gdb.objc/basicclass.exp ... -UNSUPPORTED: gdb.objc/basicclass.exp: Couldn't compile ./gdb.objc/basicclass.m: unrecognized error -Running ./gdb.objc/nondebug.exp ... -UNSUPPORTED: gdb.objc/nondebug.exp: Couldn't compile ./gdb.objc/nondebug.m: unrecognized error -Running ./gdb.objc/objcdecode.exp ... -UNSUPPORTED: gdb.objc/objcdecode.exp: Couldn't compile ./gdb.objc/objcdecode.m: unrecognized error -Running ./gdb.objc/print.exp ... -PASS: gdb.objc/print.exp: set language objective-c -PASS: gdb.objc/print.exp: set language to "objective-c" -PASS: gdb.objc/print.exp: check fp + text -PASS: gdb.objc/print.exp: p 1. -PASS: gdb.objc/print.exp: p 1.5 -PASS: gdb.objc/print.exp: p 1.f -PASS: gdb.objc/print.exp: p 1.5f -PASS: gdb.objc/print.exp: p 1.l -PASS: gdb.objc/print.exp: p 1.5l -PASS: gdb.objc/print.exp: p 0x1.1 -PASS: gdb.objc/print.exp: reject p 1.1x -PASS: gdb.objc/print.exp: reject p 1.1ff -PASS: gdb.objc/print.exp: reject p 1.1ll -Running ./gdb.opencl/callfuncs.exp ... -Running ./gdb.opencl/convs_casts.exp ... -Running ./gdb.opencl/datatypes.exp ... -Running ./gdb.opencl/operators.exp ... -Running ./gdb.opencl/vec_comps.exp ... -Running ./gdb.opt/clobbered-registers-O2.exp ... -PASS: gdb.opt/clobbered-registers-O2.exp: Backtracing -PASS: gdb.opt/clobbered-registers-O2.exp: print operand0 -PASS: gdb.opt/clobbered-registers-O2.exp: print operand1 -Running ./gdb.opt/inline-break.exp ... -PASS: gdb.opt/inline-break.exp: break func1 -PASS: gdb.opt/inline-break.exp: break func2 -PASS: gdb.opt/inline-break.exp: break func3b -PASS: gdb.opt/inline-break.exp: break func4b -PASS: gdb.opt/inline-break.exp: break func5b -PASS: gdb.opt/inline-break.exp: break func6b -PASS: gdb.opt/inline-break.exp: break func7b -PASS: gdb.opt/inline-break.exp: break func8b -PASS: gdb.opt/inline-break.exp: print func1 -PASS: gdb.opt/inline-break.exp: print func2 -Running ./gdb.opt/inline-bt.exp ... -PASS: gdb.opt/inline-bt.exp: continue to bar (1) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (1) -PASS: gdb.opt/inline-bt.exp: bar not inlined -PASS: gdb.opt/inline-bt.exp: continue to bar (2) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (2) -PASS: gdb.opt/inline-bt.exp: up from bar (2) -PASS: gdb.opt/inline-bt.exp: func1 inlined (2) -PASS: gdb.opt/inline-bt.exp: continue to bar (3) -PASS: gdb.opt/inline-bt.exp: backtrace from bar (3) -PASS: gdb.opt/inline-bt.exp: up from bar (3) -PASS: gdb.opt/inline-bt.exp: func1 inlined (3) -PASS: gdb.opt/inline-bt.exp: up from func1 (3) -PASS: gdb.opt/inline-bt.exp: func2 inlined (3) -Running ./gdb.opt/inline-cmds.exp ... -PASS: gdb.opt/inline-cmds.exp: set listsize 1 -PASS: gdb.opt/inline-cmds.exp: continue to bar (1) -PASS: gdb.opt/inline-cmds.exp: backtrace from bar (1) -PASS: gdb.opt/inline-cmds.exp: up from bar (1) -PASS: gdb.opt/inline-cmds.exp: func1 inlined (1) -PASS: gdb.opt/inline-cmds.exp: continue to bar (2) -PASS: gdb.opt/inline-cmds.exp: backtrace from bar (2) -PASS: gdb.opt/inline-cmds.exp: up from bar (2) -PASS: gdb.opt/inline-cmds.exp: func1 inlined (2) -PASS: gdb.opt/inline-cmds.exp: up from func1 (2) -PASS: gdb.opt/inline-cmds.exp: func2 inlined (2) -PASS: gdb.opt/inline-cmds.exp: continue to marker -PASS: gdb.opt/inline-cmds.exp: backtrace from marker -PASS: gdb.opt/inline-cmds.exp: marker not inlined -PASS: gdb.opt/inline-cmds.exp: next over inlined functions -PASS: gdb.opt/inline-cmds.exp: next past inlined func1 -PASS: gdb.opt/inline-cmds.exp: print x before func1 -PASS: gdb.opt/inline-cmds.exp: backtrace does not include func1 -PASS: gdb.opt/inline-cmds.exp: stepped over call to func1 -PASS: gdb.opt/inline-cmds.exp: step into func1 -PASS: gdb.opt/inline-cmds.exp: finish from func1 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: consecutive func1 -PASS: gdb.opt/inline-cmds.exp: next to first func1 -KFAIL: gdb.opt/inline-cmds.exp: next to second func1 (PRMS: gdb/NNNN) -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: func1 then func3 -PASS: gdb.opt/inline-cmds.exp: next to func1 before func3 -PASS: gdb.opt/inline-cmds.exp: next to func3 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: finish into func1 -PASS: gdb.opt/inline-cmds.exp: next to finish marker -PASS: gdb.opt/inline-cmds.exp: step into finish marker -PASS: gdb.opt/inline-cmds.exp: finish from marker to func1 -PASS: gdb.opt/inline-cmds.exp: step into func1 for finish -PASS: gdb.opt/inline-cmds.exp: finish from func1 to func3 -PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: before the outer_inline call -PASS: gdb.opt/inline-cmds.exp: reach 1 the outer_inline call -PASS: gdb.opt/inline-cmds.exp: reach outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at main of outer_inline -PASS: gdb.opt/inline-cmds.exp: enter outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline2 -PASS: gdb.opt/inline-cmds.exp: enter outer_inline1 from outer_inline2 -PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline1 -PASS: gdb.opt/inline-cmds.exp: enter noinline from outer_inline1 -PASS: gdb.opt/inline-cmds.exp: backtrace at noinline from outer_inline1 -PASS: gdb.opt/inline-cmds.exp: enter inlined_fn from noinline -PASS: gdb.opt/inline-cmds.exp: backtrace at inlined_fn from noinline -PASS: gdb.opt/inline-cmds.exp: inlined_fn from noinline inlined -PASS: gdb.opt/inline-cmds.exp: up to noinline -PASS: gdb.opt/inline-cmds.exp: noinline from outer_inline1 not inlined -PASS: gdb.opt/inline-cmds.exp: up to outer_inline1 -PASS: gdb.opt/inline-cmds.exp: outer_inline1 inlined -PASS: gdb.opt/inline-cmds.exp: up to outer_inline2 -PASS: gdb.opt/inline-cmds.exp: outer_inline2 inlined -PASS: gdb.opt/inline-cmds.exp: up from outer_inline2 -PASS: gdb.opt/inline-cmds.exp: main not inlined -Running ./gdb.opt/inline-locals.exp ... -PASS: gdb.opt/inline-locals.exp: continue to bar (1) -PASS: gdb.opt/inline-locals.exp: continue to bar (2) -PASS: gdb.opt/inline-locals.exp: backtrace from bar (2) -PASS: gdb.opt/inline-locals.exp: up from bar (2) -PASS: gdb.opt/inline-locals.exp: func1 inlined (2) -PASS: gdb.opt/inline-locals.exp: info locals above bar (2) -PASS: gdb.opt/inline-locals.exp: info args above bar (2) -PASS: gdb.opt/inline-locals.exp: print local (2) -PASS: gdb.opt/inline-locals.exp: print out of scope local -PASS: gdb.opt/inline-locals.exp: continue to bar (3) -PASS: gdb.opt/inline-locals.exp: backtrace from bar (3) -PASS: gdb.opt/inline-locals.exp: up from bar (3) -PASS: gdb.opt/inline-locals.exp: func1 inlined (3) -PASS: gdb.opt/inline-locals.exp: info locals above bar (3) -PASS: gdb.opt/inline-locals.exp: info args above bar (3) -PASS: gdb.opt/inline-locals.exp: print local (3) -Running ./gdb.pascal/floats.exp ... -UNSUPPORTED: gdb.pascal/floats.exp: No pascal compiler found -UNTESTED: gdb.pascal/floats.exp: floats.exp -Running ./gdb.pascal/gdb11492.exp ... -UNSUPPORTED: gdb.pascal/gdb11492.exp: No pascal compiler found -UNTESTED: gdb.pascal/gdb11492.exp: gdb11492.exp -Running ./gdb.pascal/hello.exp ... -UNSUPPORTED: gdb.pascal/hello.exp: No pascal compiler found -Running ./gdb.pascal/integers.exp ... -UNSUPPORTED: gdb.pascal/integers.exp: No pascal compiler found -Running ./gdb.pascal/print.exp ... -PASS: gdb.pascal/print.exp: set language pascal -PASS: gdb.pascal/print.exp: set language to "pascal" -PASS: gdb.pascal/print.exp: check fp + text -PASS: gdb.pascal/print.exp: p 1. -PASS: gdb.pascal/print.exp: p 1.5 -PASS: gdb.pascal/print.exp: p 1.f -PASS: gdb.pascal/print.exp: p 1.5f -PASS: gdb.pascal/print.exp: p 1.l -PASS: gdb.pascal/print.exp: p 1.5l -PASS: gdb.pascal/print.exp: p 0x1.1 -PASS: gdb.pascal/print.exp: reject p 1.1x -PASS: gdb.pascal/print.exp: reject p 1.1ff -PASS: gdb.pascal/print.exp: reject p 1.1ll -Running ./gdb.pascal/types.exp ... -PASS: gdb.pascal/types.exp: set language pascal -PASS: gdb.pascal/types.exp: set language to "pascal" -PASS: gdb.pascal/types.exp: pt 123 -PASS: gdb.pascal/types.exp: pt TRUE -PASS: gdb.pascal/types.exp: pt FALSE -PASS: gdb.pascal/types.exp: pt 'a' -KFAIL: gdb.pascal/types.exp: pt 'a simple string' (PRMS: gdb/2326) -PASS: gdb.pascal/types.exp: pt .44 -PASS: gdb.pascal/types.exp: pt 44.0 -PASS: gdb.pascal/types.exp: pt 10e20 -PASS: gdb.pascal/types.exp: pt 10E20 -Running ./gdb.python/lib-types.exp ... -PASS: gdb.python/lib-types.exp: python import gdb.types -PASS: gdb.python/lib-types.exp: python const_class1_obj = gdb.parse_and_eval ('const_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_const_class1_obj = gdb.types.get_basic_type (const_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (const_class1_obj.type)) -PASS: gdb.python/lib-types.exp: const stripping -PASS: gdb.python/lib-types.exp: python volatile_class1_obj = gdb.parse_and_eval ('volatile_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_volatile_class1_obj = gdb.types.get_basic_type (volatile_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (volatile_class1_obj.type)) -PASS: gdb.python/lib-types.exp: volatile stripping -PASS: gdb.python/lib-types.exp: python const_volatile_class1_obj = gdb.parse_and_eval ('const_volatile_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_const_volatile_class1_obj = gdb.types.get_basic_type (const_volatile_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (const_volatile_class1_obj.type)) -PASS: gdb.python/lib-types.exp: volatile+const stripping -PASS: gdb.python/lib-types.exp: python typedef_class1_obj = gdb.parse_and_eval ('typedef_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_class1_obj = gdb.types.get_basic_type (typedef_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_class1_obj.type)) -PASS: gdb.python/lib-types.exp: typedef stripping -PASS: gdb.python/lib-types.exp: python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj') -PASS: gdb.python/lib-types.exp: python basic_type_class1_ref_obj = gdb.types.get_basic_type (class1_ref_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (class1_ref_obj.type)) -PASS: gdb.python/lib-types.exp: reference stripping -PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_class1_obj.type)) -PASS: gdb.python/lib-types.exp: nested typedef stripping -PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_ref_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_ref_obj') -PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_ref_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type) -PASS: gdb.python/lib-types.exp: python print (str (typedef_const_typedef_class1_ref_obj.type)) -PASS: gdb.python/lib-types.exp: nested typedef/ref stripping -PASS: gdb.python/lib-types.exp: python class1_obj = gdb.parse_and_eval ('class1_obj') -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (class1_obj.type, 'x')) -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (class1_obj.type, 'nope')) -PASS: gdb.python/lib-types.exp: python subclass1_obj = gdb.parse_and_eval ('subclass1_obj') -PASS: gdb.python/lib-types.exp: python print (gdb.types.has_field (subclass1_obj.type, 'x')) -PASS: gdb.python/lib-types.exp: python enum1_obj = gdb.parse_and_eval ('enum1_obj') -PASS: gdb.python/lib-types.exp: python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type) -PASS: gdb.python/lib-types.exp: python enum1_list = sorted (enum1_dict.items ()) -PASS: gdb.python/lib-types.exp: python print (enum1_list) -PASS: gdb.python/lib-types.exp: python struct_a = gdb.lookup_type ('struct A') -PASS: gdb.python/lib-types.exp: python print (struct_a.keys ()) -PASS: gdb.python/lib-types.exp: python print ([k for k,v in gdb.types.deep_items(struct_a)]) -Running ./gdb.python/py-arch.exp ... -PASS: gdb.python/py-arch.exp: test number of instructions 1 -PASS: gdb.python/py-arch.exp: test number of instructions 2 -PASS: gdb.python/py-arch.exp: test number of instructions 3 -PASS: gdb.python/py-arch.exp: test number of instructions 4 -PASS: gdb.python/py-arch.exp: test key addr -PASS: gdb.python/py-arch.exp: test key asm -PASS: gdb.python/py-arch.exp: test key length -PASS: gdb.python/py-arch.exp: test exception -Running ./gdb.python/py-block.exp ... -PASS: gdb.python/py-block.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-block.exp: Check block not None -PASS: gdb.python/py-block.exp: First anonymous block -PASS: gdb.python/py-block.exp: Check start not None -PASS: gdb.python/py-block.exp: Check end not None -PASS: gdb.python/py-block.exp: Not a global block -PASS: gdb.python/py-block.exp: Not a static block -PASS: gdb.python/py-block.exp: Get block -PASS: gdb.python/py-block.exp: Get block -PASS: gdb.python/py-block.exp: Is the global block -PASS: gdb.python/py-block.exp: Is the static block -PASS: gdb.python/py-block.exp: Get superblock -PASS: gdb.python/py-block.exp: Second anonymous block -PASS: gdb.python/py-block.exp: Get superblock 2 -PASS: gdb.python/py-block.exp: Print superblock 2 function -PASS: gdb.python/py-block.exp: up -PASS: gdb.python/py-block.exp: Check Frame 2's block not None -PASS: gdb.python/py-block.exp: main block -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -PASS: gdb.python/py-block.exp: Check block validity -Running ./gdb.python/py-breakpoint.exp ... -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check for two breakpoints -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count -PASS: gdb.python/py-breakpoint.exp: Check expected variable result after 6 iterations -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint enabled. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint thread -PASS: gdb.python/py-breakpoint.exp: Check breakpoint type -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Check breakpoint number -PASS: gdb.python/py-breakpoint.exp: Number of breakpoints before delete -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check breakpoint invalidated -PASS: gdb.python/py-breakpoint.exp: Number of breakpoints after delete -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at end. -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test conditional has been set -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test conditional breakpoint stopped after five iterations -PASS: gdb.python/py-breakpoint.exp: Test conditional read -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test breakpoint stopped after six iterations -PASS: gdb.python/py-breakpoint.exp: commands $bpnum -PASS: gdb.python/py-breakpoint.exp: print "Command for breakpoint has been executed." -PASS: gdb.python/py-breakpoint.exp: print result -PASS: gdb.python/py-breakpoint.exp: end -PASS: gdb.python/py-breakpoint.exp: python print (blist[len(blist)-1].commands) -PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints shows visible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists -PASS: gdb.python/py-breakpoint.exp: Check breakpoint location -PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - class bp_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - inf_i = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.count = self.count + 1 -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.inf_i = gdb.parse_and_eval("i") -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - if self.inf_i == 3: -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - end -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - class bp_also_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - self.count = self.count + 1 -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - if self.count == 9: -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - end -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - class basic (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - count = 0 -PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - end -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Check inferior value matches python accounting -PASS: gdb.python/py-breakpoint.exp: Check python accounting matches inferior -PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop. -PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop. -PASS: gdb.python/py-breakpoint.exp: Check you cannot add a CLI condition to a Python breakpoint that -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - python -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - def stop_func (): -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - return True -PASS: gdb.python/py-breakpoint.exp: Construct an eval function - end -PASS: gdb.python/py-breakpoint.exp: Assign stop function to a breakpoint that has a condition -PASS: gdb.python/py-breakpoint.exp: Test that evaluate function has not been yet executed (ie count = 0) -PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply. -PASS: gdb.python/py-breakpoint.exp: Test that evaluate function is run when location also has normal bp -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - python -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - class wp_eval (gdb.Breakpoint): -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - def stop (self): -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - self.result = gdb.parse_and_eval("result") -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - if self.result == 788: -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return True -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return False -PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - end -PASS: gdb.python/py-breakpoint.exp: Test watchpoint write -PASS: gdb.python/py-breakpoint.exp: Check that this unrelated breakpoints eval function was never called. -Running ./gdb.python/py-cmd.exp ... -PASS: gdb.python/py-cmd.exp: input simple command - python -PASS: gdb.python/py-cmd.exp: input simple command - class test_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input simple command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input simple command - super (test_cmd, self).__init__ ("test_cmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input simple command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input simple command - print ("test_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input simple command - test_cmd () -PASS: gdb.python/py-cmd.exp: input simple command - end -PASS: gdb.python/py-cmd.exp: call simple command -PASS: gdb.python/py-cmd.exp: input prefix command - python -PASS: gdb.python/py-cmd.exp: input prefix command - class prefix_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input prefix command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input prefix command - super (prefix_cmd, self).__init__ ("prefix_cmd", gdb.COMMAND_OBSCURE, gdb.COMPLETE_NONE, True) -PASS: gdb.python/py-cmd.exp: input prefix command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input prefix command - print ("prefix_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input prefix command - prefix_cmd () -PASS: gdb.python/py-cmd.exp: input prefix command - end -PASS: gdb.python/py-cmd.exp: call prefix command -PASS: gdb.python/py-cmd.exp: input subcommand - python -PASS: gdb.python/py-cmd.exp: input subcommand - class subcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input subcommand - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input subcommand - super (subcmd, self).__init__ ("prefix_cmd subcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input subcommand - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input subcommand - print ("subcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input subcommand - subcmd () -PASS: gdb.python/py-cmd.exp: input subcommand - end -PASS: gdb.python/py-cmd.exp: call subcmd -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - python -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - class prefix_cmd2 (gdb.Command): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - super (prefix_cmd2, self).__init__ ("prefix_cmd2", gdb.COMMAND_OBSCURE, prefix = True, completer_class = gdb.COMPLETE_FILENAME) -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - print ("prefix_cmd2 output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - prefix_cmd2 () -PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - end -PASS: gdb.python/py-cmd.exp: call prefix command, keyword arguments -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - python -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - class subcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - super (subcmd, self).__init__ ("prefix_cmd2 subcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - print ("subcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - subcmd () -PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - end -PASS: gdb.python/py-cmd.exp: call subcmd under prefix_cmd2 -PASS: gdb.python/py-cmd.exp: input new subcommand - python -PASS: gdb.python/py-cmd.exp: input new subcommand - class newsubcmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input new subcommand - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input new subcommand - super (newsubcmd, self).__init__ ("info newsubcmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input new subcommand - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input new subcommand - print ("newsubcmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input new subcommand - newsubcmd () -PASS: gdb.python/py-cmd.exp: input new subcommand - end -PASS: gdb.python/py-cmd.exp: call newsubcmd -PASS: gdb.python/py-cmd.exp: input command to throw error - python -PASS: gdb.python/py-cmd.exp: input command to throw error - class test_error_cmd (gdb.Command): -PASS: gdb.python/py-cmd.exp: input command to throw error - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input command to throw error - super (test_error_cmd, self).__init__ ("test_error_cmd", gdb.COMMAND_OBSCURE) -PASS: gdb.python/py-cmd.exp: input command to throw error - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input command to throw error - raise gdb.GdbError ('you lose!') -PASS: gdb.python/py-cmd.exp: input command to throw error - test_error_cmd () -PASS: gdb.python/py-cmd.exp: input command to throw error - end -PASS: gdb.python/py-cmd.exp: call error command -PASS: gdb.python/py-cmd.exp: string_to_argv ("1 2 3") -PASS: gdb.python/py-cmd.exp: string_to_argv ("'1 2' 3") -PASS: gdb.python/py-cmd.exp: string_to_argv ('"1 2" 3') -PASS: gdb.python/py-cmd.exp: string_to_argv ('1\ 2 3') -PASS: gdb.python/py-cmd.exp: input simple user-defined command - python -PASS: gdb.python/py-cmd.exp: input simple user-defined command - class test_help (gdb.Command): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - """Docstring""" -PASS: gdb.python/py-cmd.exp: input simple user-defined command - def __init__ (self): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - super (test_help, self).__init__ ("test_help", gdb.COMMAND_USER) -PASS: gdb.python/py-cmd.exp: input simple user-defined command - def invoke (self, arg, from_tty): -PASS: gdb.python/py-cmd.exp: input simple user-defined command - print ("test_cmd output, arg = %s" % arg) -PASS: gdb.python/py-cmd.exp: input simple user-defined command - test_help () -PASS: gdb.python/py-cmd.exp: input simple user-defined command - end -PASS: gdb.python/py-cmd.exp: call simple user-defined command -PASS: gdb.python/py-cmd.exp: see user-defined command in `help user-defined` -Running ./gdb.python/py-error.exp ... -PASS: gdb.python/py-error.exp: set host-charset IBM1047 -PASS: gdb.python/py-error.exp: main reached -PASS: gdb.python/py-error.exp: no delayed error -Running ./gdb.python/py-events.exp ... -Running ./gdb.python/py-evsignal.exp ... -KFAIL: gdb.python/py-evsignal.exp: Signal Thread 3 (PRMS: python/12966) -Running ./gdb.python/py-evthreads.exp ... -KFAIL: gdb.python/py-evthreads.exp: Run to breakpoint 1 (PRMS: python/12966) -Running ./gdb.python/py-explore-cc.exp ... -PASS: gdb.python/py-explore-cc.exp: continue to breakpoint: Break here -PASS: gdb.python/py-explore-cc.exp: explore A -PASS: gdb.python/py-explore-cc.exp: explore a -PASS: gdb.python/py-explore-cc.exp: explore int_ref -PASS: gdb.python/py-explore-cc.exp: explore int_ptr_ref -PASS: gdb.python/py-explore-cc.exp: explore_int_ptr_ref_as_single_value_pointer -PASS: gdb.python/py-explore-cc.exp: explore b -PASS: gdb.python/py-explore-cc.exp: explore_base_class_A -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_A -PASS: gdb.python/py-explore-cc.exp: explore_field_i_of_b -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_i -PASS: gdb.python/py-explore-cc.exp: explore_field_c_of_b -PASS: gdb.python/py-explore-cc.exp: return_to_b_from_i -PASS: gdb.python/py-explore-cc.exp: return_to_gdb_prompt_from_b -PASS: gdb.python/py-explore-cc.exp: explore B -PASS: gdb.python/py-explore-cc.exp: explore_base_class_A -PASS: gdb.python/py-explore-cc.exp: return_to_B -PASS: gdb.python/py-explore-cc.exp: explore_field_i_of_B -PASS: gdb.python/py-explore-cc.exp: return_to_B_from_i -PASS: gdb.python/py-explore-cc.exp: explore_field_c_of_B -PASS: gdb.python/py-explore-cc.exp: return_to_B_from_c -PASS: gdb.python/py-explore-cc.exp: return_to_gdb_prompt_from_B -Running ./gdb.python/py-explore.exp ... -PASS: gdb.python/py-explore.exp: continue to breakpoint: Break here -PASS: gdb.python/py-explore.exp: explore i -PASS: gdb.python/py-explore.exp: explore ss -PASS: gdb.python/py-explore.exp: explore *ss_ptr -PASS: gdb.python/py-explore.exp: explore ss_t -PASS: gdb.python/py-explore.exp: explore ss_ptr -PASS: gdb.python/py-explore.exp: explore ss_ptr as single value pointer -PASS: gdb.python/py-explore.exp: explore darray_ref -PASS: gdb.python/py-explore.exp: no_to_explore_as_pointer -PASS: gdb.python/py-explore.exp: explore_as_array -PASS: gdb.python/py-explore.exp: explore_as_array_index_2 -PASS: gdb.python/py-explore.exp: end explore_as_array_index_2 -PASS: gdb.python/py-explore.exp: end explore_as_array -PASS: gdb.python/py-explore.exp: explore su -PASS: gdb.python/py-explore.exp: explore su.d -PASS: gdb.python/py-explore.exp: end su.d exploration -PASS: gdb.python/py-explore.exp: end su exploration -PASS: gdb.python/py-explore.exp: explore cs -PASS: gdb.python/py-explore.exp: explore cs.s -PASS: gdb.python/py-explore.exp: end cs.s exploration -PASS: gdb.python/py-explore.exp: explore cs.u -PASS: gdb.python/py-explore.exp: end cs.u exploration -PASS: gdb.python/py-explore.exp: end cs exploration -PASS: gdb.python/py-explore.exp: explore cu -PASS: gdb.python/py-explore.exp: explore cu.sa -PASS: gdb.python/py-explore.exp: explore cu.sa[0] -PASS: gdb.python/py-explore.exp: end cu.sa[0] exploration -PASS: gdb.python/py-explore.exp: end cu.sa exploration -PASS: gdb.python/py-explore.exp: end cu exploration -PASS: gdb.python/py-explore.exp: explore int -PASS: gdb.python/py-explore.exp: explore struct SimpleStruct -PASS: gdb.python/py-explore.exp: explore type struct SimpleStruct feild 0 -PASS: gdb.python/py-explore.exp: return to struct SimpleStruct from field 0 -PASS: gdb.python/py-explore.exp: explore type struct SimpleStruct feild 1 -PASS: gdb.python/py-explore.exp: return to struct SimpleStruct from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from struct SimpleStruct -PASS: gdb.python/py-explore.exp: explore union SimpleUnion -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 0 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 1 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 1 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 2 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 2 -PASS: gdb.python/py-explore.exp: explore type union SimpleUnion feild 3 -PASS: gdb.python/py-explore.exp: return to union SimpleUnion from field 3 -PASS: gdb.python/py-explore.exp: return to GDB prompt from union SimpleUnion -PASS: gdb.python/py-explore.exp: explore SS -PASS: gdb.python/py-explore.exp: explore type SS feild 0 -PASS: gdb.python/py-explore.exp: return to SS from field 0 -PASS: gdb.python/py-explore.exp: explore type SS feild 1 -PASS: gdb.python/py-explore.exp: return to SS field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from SS -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 0 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 0 -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 1 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 1 -PASS: gdb.python/py-explore.exp: explore type struct ComplexStruct field 2 -PASS: gdb.python/py-explore.exp: return to ComplexStruct from field 2 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexStruct type exploration -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 0 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 1 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexUnion type exploration -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 0 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 0 -PASS: gdb.python/py-explore.exp: explore type union ComplexUnion field 1 -PASS: gdb.python/py-explore.exp: return to ComplexUnion from field 1 -PASS: gdb.python/py-explore.exp: return to GDB prompt from ComplexUnion type exploration -Running ./gdb.python/py-finish-breakpoint2.exp ... -PASS: gdb.python/py-finish-breakpoint2.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint2.exp: run to exception 1 -PASS: gdb.python/py-finish-breakpoint2.exp: check BP count -PASS: gdb.python/py-finish-breakpoint2.exp: set FinishBP after the exception -PASS: gdb.python/py-finish-breakpoint2.exp: check FinishBreakpoint in catch() -PASS: gdb.python/py-finish-breakpoint2.exp: check finish BP removal -PASS: gdb.python/py-finish-breakpoint2.exp: continue to second exception -PASS: gdb.python/py-finish-breakpoint2.exp: set FinishBP after the exception -PASS: gdb.python/py-finish-breakpoint2.exp: FinishBreakpoint with exception thrown not caught -Running ./gdb.python/py-finish-breakpoint.exp ... -PASS: gdb.python/py-finish-breakpoint.exp: disable confirmation -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: continue to the function to finish -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBreakpoint with default frame value -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check return_value at init -PASS: gdb.python/py-finish-breakpoint.exp: check MyFinishBreakpoint hit -PASS: gdb.python/py-finish-breakpoint.exp: check return_value -PASS: gdb.python/py-finish-breakpoint.exp: check finishBP on default frame has been hit -PASS: gdb.python/py-finish-breakpoint.exp: ensure that finish bp is invalid afer normal hit -PASS: gdb.python/py-finish-breakpoint.exp: return to main() -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBP not allowed in main -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: ensure that shared lib has no debug info -PASS: gdb.python/py-finish-breakpoint.exp: continue to do_nothing -PASS: gdb.python/py-finish-breakpoint.exp: set finish breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBreakpoint hit -PASS: gdb.python/py-finish-breakpoint.exp: check return value without debug symbol -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set finish breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: set BP after the jump -PASS: gdb.python/py-finish-breakpoint.exp: check FinishBP out of scope notification -PASS: gdb.python/py-finish-breakpoint.exp: ensure that finish bp is invalid afer out of scope notification -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set a conditional BP -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP in a breakpoint condition -PASS: gdb.python/py-finish-breakpoint.exp: don't allow FinishBreakpoint on dummy frames -PASS: gdb.python/py-finish-breakpoint.exp: check stopped location -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: set conditional BP -PASS: gdb.python/py-finish-breakpoint.exp: set BP in condition -PASS: gdb.python/py-finish-breakpoint.exp: stop in condition function -PASS: gdb.python/py-finish-breakpoint.exp: finish condition evaluation -PASS: gdb.python/py-finish-breakpoint.exp: stop at conditional breakpoint -PASS: gdb.python/py-finish-breakpoint.exp: check stopped location -PASS: gdb.python/py-finish-breakpoint.exp: import python scripts -PASS: gdb.python/py-finish-breakpoint.exp: prepare TestExplicitBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: don't allow FinishBreakpoint on dummy frames -PASS: gdb.python/py-finish-breakpoint.exp: prepare TestExplicitBreakpoint -PASS: gdb.python/py-finish-breakpoint.exp: FinishBP stop at during explicit function call -PASS: gdb.python/py-finish-breakpoint.exp: switch to exit() test -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP after the exit() -PASS: gdb.python/py-finish-breakpoint.exp: catch out of scope after exit -PASS: gdb.python/py-finish-breakpoint.exp: set FinishBP after the exec -PASS: gdb.python/py-finish-breakpoint.exp: catch exec -PASS: gdb.python/py-finish-breakpoint.exp: catch out of scope after exec -Running ./gdb.python/py-frame.exp ... -PASS: gdb.python/py-frame.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-frame.exp: test Frame.architecture() -PASS: gdb.python/py-frame.exp: test i -PASS: gdb.python/py-frame.exp: test f -PASS: gdb.python/py-frame.exp: test b -PASS: gdb.python/py-frame.exp: test i = 1.1 -PASS: gdb.python/py-frame.exp: test double i -PASS: gdb.python/py-frame.exp: test f = 2.2 -PASS: gdb.python/py-frame.exp: test double f -PASS: gdb.python/py-frame.exp: test i = 99 -PASS: gdb.python/py-frame.exp: test int i -PASS: gdb.python/py-frame.exp: continue to breakpoint: breakpoint at f2 -PASS: gdb.python/py-frame.exp: selected frame -vs- newest frame -PASS: gdb.python/py-frame.exp: newest frame -vs- newest frame -PASS: gdb.python/py-frame.exp: test equality comparison (false) -PASS: gdb.python/py-frame.exp: test equality comparison (true) -PASS: gdb.python/py-frame.exp: test inequality comparison (true) -PASS: gdb.python/py-frame.exp: test inequality comparison (false) -PASS: gdb.python/py-frame.exp: test Frame.is_valid -PASS: gdb.python/py-frame.exp: test Frame.name -PASS: gdb.python/py-frame.exp: test Frame.type -PASS: gdb.python/py-frame.exp: test Frame.type -PASS: gdb.python/py-frame.exp: test gdb.frame_stop_reason_string -PASS: gdb.python/py-frame.exp: test Frame.pc -PASS: gdb.python/py-frame.exp: test Frame.older -PASS: gdb.python/py-frame.exp: test Frame.newer -PASS: gdb.python/py-frame.exp: test Frame.read_var - error -PASS: gdb.python/py-frame.exp: test Frame.read_var - success -PASS: gdb.python/py-frame.exp: test gdb.selected_frame -Running ./gdb.python/py-frame-inline.exp ... -PASS: gdb.python/py-frame-inline.exp: continue to breakpoint: Block break here. -PASS: gdb.python/py-frame-inline.exp: info frame -PASS: gdb.python/py-frame-inline.exp: up -PASS: gdb.python/py-frame-inline.exp: python print (gdb.selected_frame().read_var('l')) -Running ./gdb.python/py-function.exp ... -PASS: gdb.python/py-function.exp: input convenience function - python -PASS: gdb.python/py-function.exp: input convenience function - class test_func (gdb.Function): -PASS: gdb.python/py-function.exp: input convenience function - def __init__ (self): -PASS: gdb.python/py-function.exp: input convenience function - super (test_func, self).__init__ ("test_func") -PASS: gdb.python/py-function.exp: input convenience function - def invoke (self, arg): -PASS: gdb.python/py-function.exp: input convenience function - return "test_func output, arg = %s" % arg.string () -PASS: gdb.python/py-function.exp: input convenience function - test_func () -PASS: gdb.python/py-function.exp: input convenience function - end -PASS: gdb.python/py-function.exp: call function -PASS: gdb.python/py-function.exp: input value-returning convenience function - python -PASS: gdb.python/py-function.exp: input value-returning convenience function - class Double (gdb.Function): -PASS: gdb.python/py-function.exp: input value-returning convenience function - def __init__ (self): -PASS: gdb.python/py-function.exp: input value-returning convenience function - super (Double, self).__init__ ("double") -PASS: gdb.python/py-function.exp: input value-returning convenience function - def invoke (self, n): -PASS: gdb.python/py-function.exp: input value-returning convenience function - return n*2 -PASS: gdb.python/py-function.exp: input value-returning convenience function - Double () -PASS: gdb.python/py-function.exp: input value-returning convenience function - end -PASS: gdb.python/py-function.exp: call value-returning function -PASS: gdb.python/py-function.exp: input int-returning function - python -PASS: gdb.python/py-function.exp: input int-returning function - class Yes(gdb.Function): -PASS: gdb.python/py-function.exp: input int-returning function - def __init__(self): -PASS: gdb.python/py-function.exp: input int-returning function - gdb.Function.__init__(self, 'yes') -PASS: gdb.python/py-function.exp: input int-returning function - def invoke(self): -PASS: gdb.python/py-function.exp: input int-returning function - return 1 -PASS: gdb.python/py-function.exp: input int-returning function - Yes () -PASS: gdb.python/py-function.exp: input int-returning function - end -PASS: gdb.python/py-function.exp: call yes with && -PASS: gdb.python/py-function.exp: call yes with || -PASS: gdb.python/py-function.exp: Test GDBError - python -PASS: gdb.python/py-function.exp: Test GDBError - class GDBError(gdb.Function): -PASS: gdb.python/py-function.exp: Test GDBError - def __init__(self): -PASS: gdb.python/py-function.exp: Test GDBError - gdb.Function.__init__(self, 'gdberror') -PASS: gdb.python/py-function.exp: Test GDBError - def invoke(self): -PASS: gdb.python/py-function.exp: Test GDBError - raise gdb.GdbError("This is a GdbError") -PASS: gdb.python/py-function.exp: Test GDBError - GDBError () -PASS: gdb.python/py-function.exp: Test GDBError - end -PASS: gdb.python/py-function.exp: Test GdbError. There should not be a stack trace -PASS: gdb.python/py-function.exp: Test Normal Error - python -PASS: gdb.python/py-function.exp: Test Normal Error - class NormalError(gdb.Function): -PASS: gdb.python/py-function.exp: Test Normal Error - def __init__(self): -PASS: gdb.python/py-function.exp: Test Normal Error - gdb.Function.__init__(self, 'normalerror') -PASS: gdb.python/py-function.exp: Test Normal Error - def invoke(self): -PASS: gdb.python/py-function.exp: Test Normal Error - raise RuntimeError("This is a Normal Error") -PASS: gdb.python/py-function.exp: Test Normal Error - NormalError () -PASS: gdb.python/py-function.exp: Test Normal Error - end -PASS: gdb.python/py-function.exp: set python print-stack full -PASS: gdb.python/py-function.exp: Test a Runtime error. There should be a stack trace. -PASS: gdb.python/py-function.exp: input command-calling function - python -PASS: gdb.python/py-function.exp: input command-calling function - class CallCommand(gdb.Function): -PASS: gdb.python/py-function.exp: input command-calling function - def __init__(self): -PASS: gdb.python/py-function.exp: input command-calling function - gdb.Function.__init__(self, 'call_command') -PASS: gdb.python/py-function.exp: input command-calling function - def invoke(self): -PASS: gdb.python/py-function.exp: input command-calling function - return gdb.execute('print 1', to_string=True) -PASS: gdb.python/py-function.exp: input command-calling function - CallCommand () -PASS: gdb.python/py-function.exp: input command-calling function - end -PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command. -PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command, again. -Running ./gdb.python/py-inferior.exp ... -PASS: gdb.python/py-inferior.exp: successfully compiled posix threads test case -PASS: gdb.python/py-inferior.exp: get inferiors list -PASS: gdb.python/py-inferior.exp: verify inferiors list -PASS: gdb.python/py-inferior.exp: test equality comparison (true) -PASS: gdb.python/py-inferior.exp: test Inferior.num -PASS: gdb.python/py-inferior.exp: test Inferior.pid -PASS: gdb.python/py-inferior.exp: test Inferior.was_attached -PASS: gdb.python/py-inferior.exp: test Inferior.threads -PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to check_threads -PASS: gdb.python/py-inferior.exp: test Inferior.threads 2 -PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to Break here. -PASS: gdb.python/py-inferior.exp: read str contents -PASS: gdb.python/py-inferior.exp: write str -PASS: gdb.python/py-inferior.exp: ensure str was changed in the inferior -PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address -PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof -PASS: gdb.python/py-inferior.exp: find string pattern -PASS: gdb.python/py-inferior.exp: pattern not found at end of range -PASS: gdb.python/py-inferior.exp: pattern found at end of range -PASS: gdb.python/py-inferior.exp: py from struct import * -PASS: gdb.python/py-inferior.exp: set int16_search_buf[10] = 0x1234 -PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('int16_search_buf') -PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address -PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof -PASS: gdb.python/py-inferior.exp: py pattern = pack('"): -PASS: gdb.python/python.exp: prompt substitution readline - pCounter = pCounter + 1 -PASS: gdb.python/python.exp: prompt substitution readline - return "python line " + str (pCounter) + ": " -PASS: gdb.python/python.exp: prompt substitution readline - return None -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set prompt testfake -PASS: gdb.python/python.exp: show prompt shows guarded prompt -PASS: gdb.python/python.exp: set prompt blah overriden -PASS: gdb.python/python.exp: Delete old hook -PASS: gdb.python/python.exp: set default prompt -PASS: gdb.python/python.exp: set programming hook -PASS: gdb.python/python.exp: readline secondary are not substituted -PASS: gdb.python/python.exp: end programming -PASS: gdb.python/python.exp: prompt substitution readline - python -PASS: gdb.python/python.exp: prompt substitution readline - import gdb.command.prompt -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set basic extended prompt -PASS: gdb.python/python.exp: set extended prompt working directory -PASS: gdb.python/python.exp: set extended prompt parameter -PASS: gdb.python/python.exp: Test print-backtrace show setting. Default is message. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: Test print-backtrace show setting to full. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: Test print-backtrace show setting to none. -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: prompt substitution readline - python -PASS: gdb.python/python.exp: prompt substitution readline - pCounter = 0 -PASS: gdb.python/python.exp: prompt substitution readline - def error_prompt(current): -PASS: gdb.python/python.exp: prompt substitution readline - raise RuntimeError("Python exception called") -PASS: gdb.python/python.exp: prompt substitution readline - end -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set the hook to default -PASS: gdb.python/python.exp: Test print-backtrace set setting -PASS: gdb.python/python.exp: set hook -PASS: gdb.python/python.exp: set the hook to default -PASS: gdb.python/python.exp: Get line number of func2 call site -PASS: gdb.python/python.exp: Test find_pc_line at func2 call site -PASS: gdb.python/python.exp: Step into func2 -PASS: gdb.python/python.exp: Step out of func2 -PASS: gdb.python/python.exp: Test find_pc_line with resume address -Running ./gdb.python/py-type.exp ... -PASS: gdb.python/py-type.exp: lang_c: continue to breakpoint: break to inspect struct and array. -PASS: gdb.python/py-type.exp: lang_c: test_fields: c typedef field list -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (st) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (st) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: get fields from st.type -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check number of fields (st) -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check structure field a name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check structure field b name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check that dir includes name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check number of fields (st.type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields lookup by name -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields iteration over values -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check fields items list -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check field name exists test -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check field name nonexists test -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check conversion to bool -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (len (st.type['a'].type)) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type.has_key ('x')) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type.keys ()) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (st.type['a'].type['x']) -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (not not st.type['a'].type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (ar) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: python fields = ar.type.fields() -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check the number of fields -PASS: gdb.python/py-type.exp: lang_c: test_fields: Check array field type -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to array with one argument -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to array with two arguments -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print (ar[0].type == ar[0].type) -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (vec_data_1) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (vec_data_1) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: print value (vec_data_2) -PASS: gdb.python/py-type.exp: lang_c: test_fields: get value (vec_data_2) from history -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec1 -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to vector with one argument -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec2 -PASS: gdb.python/py-type.exp: lang_c: test_fields: cast to vector with two arguments -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print vec1 == vec2 -PASS: gdb.python/py-type.exp: lang_c: test_fields: set vec3 -PASS: gdb.python/py-type.exp: lang_c: test_fields: python print vec1 == vec3 -PASS: gdb.python/py-type.exp: lang_c: test_enum: print value (e) -PASS: gdb.python/py-type.exp: lang_c: test_enum: get value (e) from history -PASS: gdb.python/py-type.exp: lang_c: test_enum: extract type fields from e -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check the number of enum fields -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field[0] name -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field[1]name -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check the number of type fields -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field lookup by name (v1) -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum field lookup by name (v2) -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check num fields iteration over values -PASS: gdb.python/py-type.exp: lang_c: test_enum: Check enum fields items list -PASS: gdb.python/py-type.exp: lang_cpp: continue to breakpoint: break to inspect struct and array. -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: c++ typedef field list -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (c) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (c) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get fields from c.type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (c) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check class field c name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check class field d name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (c.type == gdb.parse_and_eval('d').type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (c.type == gdb.parse_and_eval('d').type.fields()[0].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (st) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get fields from st.type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check structure field a name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check structure field b name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check that dir includes name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check number of fields (st.type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields lookup by name -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields iteration over values -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check fields items list -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check field name exists test -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check field name nonexists test -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check conversion to bool -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (len (st.type['a'].type)) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type.has_key ('x')) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type.keys ()) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (st.type['a'].type['x']) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (not not st.type['a'].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python fields = ar.type.fields() -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check the number of fields -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: Check array field type -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to array with one argument -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to array with two arguments -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print (ar[0].type == ar[0].type) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (vec_data_1) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (vec_data_1) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: print value (vec_data_2) -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: get value (vec_data_2) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec1 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to vector with one argument -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec2 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: cast to vector with two arguments -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print vec1 == vec2 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: set vec3 -PASS: gdb.python/py-type.exp: lang_cpp: test_fields: python print vec1 == vec3 -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: print value (d) -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: get value (d) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: extract type fields from d -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check the number of fields -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check base class (fields[0]) -PASS: gdb.python/py-type.exp: lang_cpp: test_base_class: Check base class (fields[1]) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check correct tuple length -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check range low bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged value: Check range high bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: print value (ar) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: get value (ar) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: get fields -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: Check range low bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on ranged type: Check range high bound -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: print value (st) -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: get value (st) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_range: on unranged value: Check range for non ranged type. -PASS: gdb.python/py-type.exp: lang_cpp: get type of temvar -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(0)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (isinstance(ttype.template_argument(0), gdb.Type)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(1)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (isinstance(ttype.template_argument(1), gdb.Value)) -PASS: gdb.python/py-type.exp: lang_cpp: python print (ttype.template_argument(2)) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: print value (e) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: get value (e) from history -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: extract type fields from e -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check the number of enum fields -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field[0] name -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field[1]name -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check the number of type fields -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field lookup by name (v1) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum field lookup by name (v2) -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check num fields iteration over values -PASS: gdb.python/py-type.exp: lang_cpp: test_enum: Check enum fields items list -Running ./gdb.python/py-typeprint.exp ... -PASS: gdb.python/py-typeprint.exp: python exec (open ('py-typeprint.py').read ()) -PASS: gdb.python/py-typeprint.exp: basic test -PASS: gdb.python/py-typeprint.exp: raw test -PASS: gdb.python/py-typeprint.exp: disable type-printer string -PASS: gdb.python/py-typeprint.exp: whatis with disabled printer -PASS: gdb.python/py-typeprint.exp: info type-printers -PASS: gdb.python/py-typeprint.exp: enable type-printer string -PASS: gdb.python/py-typeprint.exp: whatis with enabled printer -PASS: gdb.python/py-typeprint.exp: whatis s -Running ./gdb.python/py-value-cc.exp ... -PASS: gdb.python/py-value-cc.exp: continue to breakpoint: Break here -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("a").type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("a").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ref").referenced_value())) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").dereference().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().type)) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().dereference())) -PASS: gdb.python/py-value-cc.exp: python print (str(gdb.parse_and_eval("int_ptr_ref").referenced_value().referenced_value())) -Running ./gdb.python/py-value.exp ... -PASS: gdb.python/py-value.exp: create boolean value -PASS: gdb.python/py-value.exp: create integer value -PASS: gdb.python/py-value.exp: create long value -PASS: gdb.python/py-value.exp: create double value -PASS: gdb.python/py-value.exp: create 8-bit string value -PASS: gdb.python/py-value.exp: print 8-bit string -PASS: gdb.python/py-value.exp: verify type of 8-bit string -PASS: gdb.python/py-value.exp: create unicode value -PASS: gdb.python/py-value.exp: print Unicode string -PASS: gdb.python/py-value.exp: verify type of unicode string -PASS: gdb.python/py-value.exp: Test address attribute in non-addressable value -PASS: gdb.python/py-value.exp: add two integer values -PASS: gdb.python/py-value.exp: verify type of integer add result -PASS: gdb.python/py-value.exp: add two double values -PASS: gdb.python/py-value.exp: subtract two integer values -PASS: gdb.python/py-value.exp: subtract two double values -PASS: gdb.python/py-value.exp: multiply two integer values -PASS: gdb.python/py-value.exp: multiply two double values -PASS: gdb.python/py-value.exp: divide two integer values -PASS: gdb.python/py-value.exp: divide two double values -PASS: gdb.python/py-value.exp: take remainder of two integer values -PASS: gdb.python/py-value.exp: integer value raised to the power of another integer value -PASS: gdb.python/py-value.exp: double value raised to the power of integer value -PASS: gdb.python/py-value.exp: negated integer value -PASS: gdb.python/py-value.exp: positive integer value -PASS: gdb.python/py-value.exp: negated double value -PASS: gdb.python/py-value.exp: positive double value -PASS: gdb.python/py-value.exp: absolute of integer value -PASS: gdb.python/py-value.exp: absolute of double value -PASS: gdb.python/py-value.exp: subtract integer value from python integer -PASS: gdb.python/py-value.exp: verify type of mixed integer subtraction result -PASS: gdb.python/py-value.exp: add double value with python float -PASS: gdb.python/py-value.exp: subtract python integer from integer value -PASS: gdb.python/py-value.exp: add python float with double value -PASS: gdb.python/py-value.exp: print evalue -PASS: gdb.python/py-value.exp: python evalue = gdb.history (0) -PASS: gdb.python/py-value.exp: python print (int (evalue)) -PASS: gdb.python/py-value.exp: add pointer value with python integer -PASS: gdb.python/py-value.exp: subtract python integer from pointer value -PASS: gdb.python/py-value.exp: subtract two pointer values -PASS: gdb.python/py-value.exp: catch error in python type conversion -PASS: gdb.python/py-value.exp: catch throw of GDB error -PASS: gdb.python/py-value.exp: define function to test booleans - python -PASS: gdb.python/py-value.exp: define function to test booleans - def test_bool (val): -PASS: gdb.python/py-value.exp: define function to test booleans - if val: -PASS: gdb.python/py-value.exp: define function to test booleans - print ('yay') -PASS: gdb.python/py-value.exp: define function to test booleans - else: -PASS: gdb.python/py-value.exp: define function to test booleans - print ('nay') -PASS: gdb.python/py-value.exp: define function to test booleans - end -PASS: gdb.python/py-value.exp: check evaluation of true boolean value in expression -PASS: gdb.python/py-value.exp: check evaluation of false boolean value in expression -PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression -PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression -PASS: gdb.python/py-value.exp: less than, equal -PASS: gdb.python/py-value.exp: less than, less -PASS: gdb.python/py-value.exp: less than, greater -PASS: gdb.python/py-value.exp: less than, None -PASS: gdb.python/py-value.exp: less or equal, equal -PASS: gdb.python/py-value.exp: less or equal, less -PASS: gdb.python/py-value.exp: less or equal, greater -PASS: gdb.python/py-value.exp: less or equal, None -PASS: gdb.python/py-value.exp: equality of gdb.Values -PASS: gdb.python/py-value.exp: inequality of gdb.Values -PASS: gdb.python/py-value.exp: equality of gdb.Value with Python value -PASS: gdb.python/py-value.exp: inequality of gdb.Value with Python value -PASS: gdb.python/py-value.exp: inequality of gdb.Value with None -PASS: gdb.python/py-value.exp: inequality, false -PASS: gdb.python/py-value.exp: inequality, true -PASS: gdb.python/py-value.exp: inequality, None -PASS: gdb.python/py-value.exp: greater than, equal -PASS: gdb.python/py-value.exp: greater than, less -PASS: gdb.python/py-value.exp: greater than, greater -PASS: gdb.python/py-value.exp: greater than, None -PASS: gdb.python/py-value.exp: greater or equal, equal -PASS: gdb.python/py-value.exp: greater or equal, less -PASS: gdb.python/py-value.exp: greater or equal, greater -PASS: gdb.python/py-value.exp: greater or equal, None -PASS: gdb.python/py-value.exp: py-value in file.filename -PASS: gdb.python/py-value.exp: python print (gdb.objfiles()[0].pretty_printers) -PASS: gdb.python/py-value.exp: python gdb.objfiles()[0].pretty_printers = 0 -PASS: gdb.python/py-value.exp: parse_and_eval constant test -PASS: gdb.python/py-value.exp: parse_and_eval simple expression test -PASS: gdb.python/py-value.exp: parse_and_eval type test -PASS: gdb.python/py-value.exp: Simple Python value dictionary - python -PASS: gdb.python/py-value.exp: Simple Python value dictionary - one = gdb.Value(1) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - two = gdb.Value(2) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - three = gdb.Value(3) -PASS: gdb.python/py-value.exp: Simple Python value dictionary - vdict = {one:"one str",two:"two str",three:"three str"} -PASS: gdb.python/py-value.exp: Simple Python value dictionary - end -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test dictionary hash -PASS: gdb.python/py-value.exp: Test inbuilt hash -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: access element inside struct using 8-bit string name -PASS: gdb.python/py-value.exp: access element inside struct using unicode name -PASS: gdb.python/py-value.exp: dereference value -PASS: gdb.python/py-value.exp: Test is_optimized_out attribute -PASS: gdb.python/py-value.exp: Test address attribute -PASS: gdb.python/py-value.exp: parse_and_eval with memory error -PASS: gdb.python/py-value.exp: python inval = gdb.parse_and_eval('*(int*)0') -PASS: gdb.python/py-value.exp: python print (inval.is_lazy) -PASS: gdb.python/py-value.exp: memory error and lazy values -PASS: gdb.python/py-value.exp: memory error and lazy values -PASS: gdb.python/py-value.exp: python argc_lazy = gdb.parse_and_eval('argc') -PASS: gdb.python/py-value.exp: python argc_notlazy = gdb.parse_and_eval('argc') -PASS: gdb.python/py-value.exp: python argc_notlazy.fetch_lazy() -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: python print (argc_notlazy.is_lazy) -PASS: gdb.python/py-value.exp: sanity check argc -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: set argc=2 -PASS: gdb.python/py-value.exp: python print (argc_notlazy) -PASS: gdb.python/py-value.exp: python print (argc_lazy) -PASS: gdb.python/py-value.exp: python print (argc_lazy.is_lazy) -PASS: gdb.python/py-value.exp: print st -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: Test string with no length -PASS: gdb.python/py-value.exp: Test string (length = -1) is all of the string -PASS: gdb.python/py-value.exp: python print (st.string (length = 6)) -PASS: gdb.python/py-value.exp: Test string (length = 0) is empty -PASS: gdb.python/py-value.exp: Test length is 0 -PASS: gdb.python/py-value.exp: print nullst -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: Test string to first null -PASS: gdb.python/py-value.exp: get string beyond null -PASS: gdb.python/py-value.exp: python print (repr(nullst)) -PASS: gdb.python/py-value.exp: p/x fp1 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp1 = fp1.dereference() -PASS: gdb.python/py-value.exp: python result = fp1() -PASS: gdb.python/py-value.exp: python print (result) -PASS: gdb.python/py-value.exp: p/x fp2 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp2 = fp2.dereference() -PASS: gdb.python/py-value.exp: python result2 = fp2(10,20) -PASS: gdb.python/py-value.exp: python print (result2) -PASS: gdb.python/py-value.exp: p i -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python result3 = i() -PASS: gdb.python/py-value.exp: p/x fp2 -PASS: gdb.python/py-value.exp: get value from history -PASS: gdb.python/py-value.exp: python fp3 = fp3.dereference() -PASS: gdb.python/py-value.exp: python result2 = fp3(10) -PASS: gdb.python/py-value.exp: print sptr -PASS: gdb.python/py-value.exp: Get value from history -PASS: gdb.python/py-value.exp: Aquire lazy string -PASS: gdb.python/py-value.exp: Test type name equality -PASS: gdb.python/py-value.exp: Test type name equality -PASS: gdb.python/py-value.exp: print sn -PASS: gdb.python/py-value.exp: Get value from history -PASS: gdb.python/py-value.exp: Test lazy string -PASS: gdb.python/py-value.exp: Succesfully create a lazy string -PASS: gdb.python/py-value.exp: Test lazy string length -PASS: gdb.python/py-value.exp: Test lazy string address -PASS: gdb.python/py-value.exp: create PTR type -PASS: gdb.python/py-value.exp: kill the inferior -PASS: gdb.python/py-value.exp: Discard the symbols -PASS: gdb.python/py-value.exp: cast arg0 to PTR -PASS: gdb.python/py-value.exp: delete PTR type -PASS: gdb.python/py-value.exp: print value's type -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript -PASS: gdb.python/py-value.exp: Build pointer to array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Access array via pointer with int subscript -PASS: gdb.python/py-value.exp: Access array via pointer with value subscript -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Build array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Test multiple subscript -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect pointer by reference -PASS: gdb.python/py-value.exp: Obtain address -PASS: gdb.python/py-value.exp: Obtains value from GDB -PASS: gdb.python/py-value.exp: Check pointer passed as reference -PASS: gdb.python/py-value.exp: python print (bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer()))) -PASS: gdb.python/py-value.exp: python print (gdb.parse_and_eval('base').dynamic_type) -PASS: gdb.python/py-value.exp: python print (gdb.parse_and_eval('5').dynamic_type) -PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Create a value for subscript test -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Baseline print of a Python value -PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript -PASS: gdb.python/py-value.exp: Build pointer to array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Access array via pointer with int subscript -PASS: gdb.python/py-value.exp: Access array via pointer with value subscript -PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript -PASS: gdb.python/py-value.exp: Build array -PASS: gdb.python/py-value.exp: -PASS: gdb.python/py-value.exp: Test multiple subscript -Running ./gdb.reverse/amd64-tailcall-reverse.exp ... -Running ./gdb.reverse/break-precsave.exp ... -Running ./gdb.reverse/break-reverse.exp ... -Running ./gdb.reverse/consecutive-precsave.exp ... -Running ./gdb.reverse/consecutive-reverse.exp ... -Running ./gdb.reverse/finish-precsave.exp ... -Running ./gdb.reverse/finish-reverse-bkpt.exp ... -Running ./gdb.reverse/finish-reverse.exp ... -Running ./gdb.reverse/i386-precsave.exp ... -Running ./gdb.reverse/i386-reverse.exp ... -Running ./gdb.reverse/i386-sse-reverse.exp ... -Running ./gdb.reverse/i387-env-reverse.exp ... -Running ./gdb.reverse/i387-stack-reverse.exp ... -Running ./gdb.reverse/machinestate.exp ... -Running ./gdb.reverse/machinestate-precsave.exp ... -Running ./gdb.reverse/next-reverse-bkpt-over-sr.exp ... -Running ./gdb.reverse/sigall-precsave.exp ... -Running ./gdb.reverse/sigall-reverse.exp ... -Running ./gdb.reverse/singlejmp-reverse.exp ... -Running ./gdb.reverse/solib-precsave.exp ... -Running ./gdb.reverse/solib-reverse.exp ... -Running ./gdb.reverse/step-precsave.exp ... -Running ./gdb.reverse/step-reverse.exp ... -Running ./gdb.reverse/until-precsave.exp ... -Running ./gdb.reverse/until-reverse.exp ... -Running ./gdb.reverse/watch-precsave.exp ... -Running ./gdb.reverse/watch-reverse.exp ... -Running ./gdb.server/ext-attach.exp ... -Running ./gdb.server/ext-run.exp ... -PASS: gdb.server/ext-run.exp: disconnect -PASS: gdb.server/ext-run.exp: set remote exec-file -PASS: gdb.server/ext-run.exp: continue to main -PASS: gdb.server/ext-run.exp: get process list -PASS: gdb.server/ext-run.exp: kill -PASS: gdb.server/ext-run.exp: load new file without any gdbserver inferior -PASS: gdb.server/ext-run.exp: monitor exit -Running ./gdb.server/file-transfer.exp ... -PASS: gdb.server/file-transfer.exp: disconnect -FAIL: gdb.server/file-transfer.exp: put binary file -FAIL: gdb.server/file-transfer.exp: get binary file -FAIL: gdb.server/file-transfer.exp: compare binary file -FAIL: gdb.server/file-transfer.exp: deleted binary file -FAIL: gdb.server/file-transfer.exp: put text file -FAIL: gdb.server/file-transfer.exp: get text file -FAIL: gdb.server/file-transfer.exp: compare text file -FAIL: gdb.server/file-transfer.exp: deleted text file -Running ./gdb.server/no-thread-db.exp ... -PASS: gdb.server/no-thread-db.exp: successfully compiled posix threads test case -PASS: gdb.server/no-thread-db.exp: disconnect -PASS: gdb.server/no-thread-db.exp: libthread-db is now unresolvable -PASS: gdb.server/no-thread-db.exp: continue to breakpoint: after tls assignment -PASS: gdb.server/no-thread-db.exp: print foo -Running ./gdb.server/server-exec-info.exp ... -PASS: gdb.server/server-exec-info.exp: file -PASS: gdb.server/server-exec-info.exp: set sysroot remote: -PASS: gdb.server/server-exec-info.exp: info files -Running ./gdb.server/server-kill.exp ... -PASS: gdb.server/server-kill.exp: disconnect -FAIL: gdb.server/server-kill.exp: tstatus -Running ./gdb.server/server-mon.exp ... -PASS: gdb.server/server-mon.exp: disconnect -PASS: gdb.server/server-mon.exp: monitor help -PASS: gdb.server/server-mon.exp: monitor -PASS: gdb.server/server-mon.exp: monitor set debug 1 -PASS: gdb.server/server-mon.exp: monitor set debug 0 -PASS: gdb.server/server-mon.exp: monitor set remote-debug 1 -PASS: gdb.server/server-mon.exp: monitor set remote-debug 0 -Running ./gdb.server/server-run.exp ... -PASS: gdb.server/server-run.exp: disconnect -PASS: gdb.server/server-run.exp: loaded dynamic linker -PASS: gdb.server/server-run.exp: continue to main -Running ./gdb.server/solib-list.exp ... -Running ./gdb.stabs/exclfwd.exp ... -PASS: gdb.stabs/exclfwd.exp: ptype v1 -PASS: gdb.stabs/exclfwd.exp: ptype v2 -PASS: gdb.stabs/exclfwd.exp: ptype v3 -Running ./gdb.stabs/gdb11479.exp ... -PASS: gdb.stabs/gdb11479.exp: Set breakpoints forced_stabs -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs -PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 forced_stabs -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 forced_stabs -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs -PASS: gdb.stabs/gdb11479.exp: Inspect t in test forced_stabs -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test forced_stabs -PASS: gdb.stabs/gdb11479.exp: Set breakpoints natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 natural_debug_format -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format -PASS: gdb.stabs/gdb11479.exp: Inspect t in test natural_debug_format -PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test natural_debug_format -Running ./gdb.stabs/weird.exp ... -PASS: gdb.stabs/weird.exp: weirdx.o read without error -PASS: gdb.stabs/weird.exp: stabs found -PASS: gdb.stabs/weird.exp: variable var0 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var0) -PASS: gdb.stabs/weird.exp: variable var1 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var1) -PASS: gdb.stabs/weird.exp: variable var2 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var2) -PASS: gdb.stabs/weird.exp: variable var3 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (var3) -PASS: gdb.stabs/weird.exp: variable attr32 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr32) -PASS: gdb.stabs/weird.exp: variable attr33 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr33) -PASS: gdb.stabs/weird.exp: variable attr35 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr35) -PASS: gdb.stabs/weird.exp: variable attr36 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr36) -PASS: gdb.stabs/weird.exp: variable attr37 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr37) -PASS: gdb.stabs/weird.exp: variable attr38 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr38) -PASS: gdb.stabs/weird.exp: variable attr39 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr39) -PASS: gdb.stabs/weird.exp: variable attr41 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr41) -PASS: gdb.stabs/weird.exp: variable attr42 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr42) -PASS: gdb.stabs/weird.exp: variable attr43 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr43) -PASS: gdb.stabs/weird.exp: variable attr44 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr44) -PASS: gdb.stabs/weird.exp: variable attr46 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr46) -PASS: gdb.stabs/weird.exp: variable attr47 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr47) -PASS: gdb.stabs/weird.exp: variable attr58 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr58) -PASS: gdb.stabs/weird.exp: variable attr59 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr59) -PASS: gdb.stabs/weird.exp: variable attr60 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr60) -PASS: gdb.stabs/weird.exp: variable attr61 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr61) -PASS: gdb.stabs/weird.exp: variable attr62 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr62) -PASS: gdb.stabs/weird.exp: variable attr63 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr63) -PASS: gdb.stabs/weird.exp: variable attr64 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr64) -PASS: gdb.stabs/weird.exp: variable attr65 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr65) -PASS: gdb.stabs/weird.exp: variable attr66 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr66) -PASS: gdb.stabs/weird.exp: variable attr67 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr67) -PASS: gdb.stabs/weird.exp: variable attr68 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr68) -PASS: gdb.stabs/weird.exp: variable attr69 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr69) -PASS: gdb.stabs/weird.exp: variable attr70 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr70) -PASS: gdb.stabs/weird.exp: variable attr71 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr71) -PASS: gdb.stabs/weird.exp: variable attr72 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr72) -PASS: gdb.stabs/weird.exp: variable attr73 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr73) -PASS: gdb.stabs/weird.exp: variable attr74 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr74) -PASS: gdb.stabs/weird.exp: variable attr75 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr75) -PASS: gdb.stabs/weird.exp: variable attr76 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr76) -PASS: gdb.stabs/weird.exp: variable attr77 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr77) -PASS: gdb.stabs/weird.exp: variable attr78 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr78) -PASS: gdb.stabs/weird.exp: variable attr79 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr79) -PASS: gdb.stabs/weird.exp: variable attr80 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr80) -PASS: gdb.stabs/weird.exp: variable attr81 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr81) -PASS: gdb.stabs/weird.exp: variable attr82 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr82) -PASS: gdb.stabs/weird.exp: variable attr83 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr83) -PASS: gdb.stabs/weird.exp: variable attr84 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr84) -PASS: gdb.stabs/weird.exp: variable attr85 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr85) -PASS: gdb.stabs/weird.exp: variable attr86 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr86) -PASS: gdb.stabs/weird.exp: variable attr87 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr87) -PASS: gdb.stabs/weird.exp: variable attr88 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr88) -PASS: gdb.stabs/weird.exp: variable attr89 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr89) -PASS: gdb.stabs/weird.exp: variable attr90 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr90) -PASS: gdb.stabs/weird.exp: variable attr91 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr91) -PASS: gdb.stabs/weird.exp: variable attr92 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr92) -PASS: gdb.stabs/weird.exp: variable attr93 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr93) -PASS: gdb.stabs/weird.exp: variable attr94 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr94) -PASS: gdb.stabs/weird.exp: variable attr95 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr95) -PASS: gdb.stabs/weird.exp: variable attr96 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr96) -PASS: gdb.stabs/weird.exp: variable attr97 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr97) -PASS: gdb.stabs/weird.exp: variable attr98 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr98) -PASS: gdb.stabs/weird.exp: variable attr99 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr99) -PASS: gdb.stabs/weird.exp: variable attr100 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr100) -PASS: gdb.stabs/weird.exp: variable attr101 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr101) -PASS: gdb.stabs/weird.exp: variable attr102 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr102) -PASS: gdb.stabs/weird.exp: variable attr103 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr103) -PASS: gdb.stabs/weird.exp: variable attr104 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr104) -PASS: gdb.stabs/weird.exp: variable attr105 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr105) -PASS: gdb.stabs/weird.exp: variable attr106 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr106) -PASS: gdb.stabs/weird.exp: variable attr107 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr107) -PASS: gdb.stabs/weird.exp: variable attr108 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr108) -PASS: gdb.stabs/weird.exp: variable attr109 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr109) -PASS: gdb.stabs/weird.exp: variable attr110 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr110) -PASS: gdb.stabs/weird.exp: variable attr111 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr111) -PASS: gdb.stabs/weird.exp: variable attr112 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr112) -PASS: gdb.stabs/weird.exp: variable attr113 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr113) -PASS: gdb.stabs/weird.exp: variable attr114 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr114) -PASS: gdb.stabs/weird.exp: variable attr115 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr115) -PASS: gdb.stabs/weird.exp: variable attr116 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr116) -PASS: gdb.stabs/weird.exp: variable attr117 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr117) -PASS: gdb.stabs/weird.exp: variable attr118 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr118) -PASS: gdb.stabs/weird.exp: variable attr119 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr119) -PASS: gdb.stabs/weird.exp: variable attr120 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr120) -PASS: gdb.stabs/weird.exp: variable attr121 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr121) -PASS: gdb.stabs/weird.exp: variable attr122 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr122) -PASS: gdb.stabs/weird.exp: variable attr123 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr123) -PASS: gdb.stabs/weird.exp: variable attr124 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr124) -PASS: gdb.stabs/weird.exp: variable attr125 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr125) -PASS: gdb.stabs/weird.exp: variable attr126 printed properly -PASS: gdb.stabs/weird.exp: print sizeof (attr126) -PASS: gdb.stabs/weird.exp: 'e' constant on non-enum type -PASS: gdb.stabs/weird.exp: whatis const69 -PASS: gdb.stabs/weird.exp: 'e' constant with embedded type -PASS: gdb.stabs/weird.exp: char constant -PASS: gdb.stabs/weird.exp: String constant 1 -PASS: gdb.stabs/weird.exp: String constant 2 -PASS: gdb.stabs/weird.exp: String constant 3 -PASS: gdb.stabs/weird.exp: String constant 4 -PASS: gdb.stabs/weird.exp: p bad_neg0 -PASS: gdb.stabs/weird.exp: ptype on inttype -PASS: gdb.stabs/weird.exp: unrecognized floating point type -PASS: gdb.stabs/weird.exp: print very big integer -PASS: gdb.stabs/weird.exp: whatis consth -PASS: gdb.stabs/weird.exp: whatis consth2 -XFAIL: gdb.stabs/weird.exp: print struct constant -PASS: gdb.stabs/weird.exp: print bad_type0 -PASS: gdb.stabs/weird.exp: print bad_type1 -XFAIL: gdb.stabs/weird.exp: array0 with strange index -XFAIL: gdb.stabs/weird.exp: array1 with strange index -PASS: gdb.stabs/weird.exp: whatis one_var (known failure in gdb 4.10) -PASS: gdb.stabs/weird.exp: whatis one_var test 2 -PASS: gdb.stabs/weird.exp: whatis two_var (known failure in gdb 4.10) -PASS: gdb.stabs/weird.exp: whatis two_var test 2 -XFAIL: gdb.stabs/weird.exp: whatis pointer_to_int_var -XFAIL: gdb.stabs/weird.exp: whatis intp_var -PASS: gdb.stabs/weird.exp: p common0var0 -XFAIL: gdb.stabs/weird.exp: p common0var1 -XFAIL: gdb.stabs/weird.exp: p common0var2 -Running ./gdb.threads/attach-into-signal.exp ... -Running ./gdb.threads/attach-stopped.exp ... -Running ./gdb.threads/bp_in_thread.exp ... -PASS: gdb.threads/bp_in_thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/bp_in_thread.exp: breakpoint on noreturn -PASS: gdb.threads/bp_in_thread.exp: run to noreturn -Running ./gdb.threads/clone-new-thread-event.exp ... -PASS: gdb.threads/clone-new-thread-event.exp: catch SIGUSR1 -Running ./gdb.threads/corethreads.exp ... -Running ./gdb.threads/create-fail.exp ... -PASS: gdb.threads/create-fail.exp: successfully compiled posix threads test case -PASS: gdb.threads/create-fail.exp: iteration 1: run till end -PASS: gdb.threads/create-fail.exp: iteration 2: run till end -PASS: gdb.threads/create-fail.exp: iteration 3: run till end -PASS: gdb.threads/create-fail.exp: iteration 4: run till end -PASS: gdb.threads/create-fail.exp: iteration 5: run till end -PASS: gdb.threads/create-fail.exp: iteration 6: run till end -PASS: gdb.threads/create-fail.exp: iteration 7: run till end -PASS: gdb.threads/create-fail.exp: iteration 8: run till end -PASS: gdb.threads/create-fail.exp: iteration 9: run till end -PASS: gdb.threads/create-fail.exp: iteration 10: run till end -Running ./gdb.threads/current-lwp-dead.exp ... -PASS: gdb.threads/current-lwp-dead.exp: continue to breakpoint: fn_return -Running ./gdb.threads/execl.exp ... -Running ./gdb.threads/fork-child-threads.exp ... -Running ./gdb.threads/fork-thread-pending.exp ... -Running ./gdb.threads/gcore-thread.exp ... -PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case -PASS: gdb.threads/gcore-thread.exp: help gcore -PASS: gdb.threads/gcore-thread.exp: thread 1 is running -PASS: gdb.threads/gcore-thread.exp: thread 2 is running -PASS: gdb.threads/gcore-thread.exp: save a corefile -PASS: gdb.threads/gcore-thread.exp: clear __stack_user.next -PASS: gdb.threads/gcore-thread.exp: clear stack_used.next -PASS: gdb.threads/gcore-thread.exp: save a zeroed-threads corefile -FAIL: gdb.threads/gcore-thread.exp: corefile: re-load generated corefile (bad file format) -FAIL: gdb.threads/gcore-thread.exp: core0file: re-load generated corefile (bad file format) -Running ./gdb.threads/hand-call-in-threads.exp ... -PASS: gdb.threads/hand-call-in-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on all_threads_running -PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on hand_call -PASS: gdb.threads/hand-call-in-threads.exp: run to all_threads_running -PASS: gdb.threads/hand-call-in-threads.exp: enable scheduler locking -PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking on -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: set confirm off -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 1 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 2 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 3 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 4 -PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 5 -PASS: gdb.threads/hand-call-in-threads.exp: all dummies popped -PASS: gdb.threads/hand-call-in-threads.exp: disable scheduler locking -PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking off -Running ./gdb.threads/ia64-sigill.exp ... -PASS: gdb.threads/ia64-sigill.exp: successfully compiled posix threads test case -PASS: gdb.threads/ia64-sigill.exp: info addr label -PASS: gdb.threads/ia64-sigill.exp: set $sigill_bpnum=$bpnum -PASS: gdb.threads/ia64-sigill.exp: set debug infrun 1 -PASS: gdb.threads/ia64-sigill.exp: continue -PASS: gdb.threads/ia64-sigill.exp: delete $sigill_bpnum -PASS: gdb.threads/ia64-sigill.exp: continue for the pending signal -Running ./gdb.threads/interrupted-hand-call.exp ... -PASS: gdb.threads/interrupted-hand-call.exp: successfully compiled posix threads test case -PASS: gdb.threads/interrupted-hand-call.exp: breakpoint on all_threads_running -PASS: gdb.threads/interrupted-hand-call.exp: run to all_threads_running -PASS: gdb.threads/interrupted-hand-call.exp: hand-call interrupted by signal in another thread -PASS: gdb.threads/interrupted-hand-call.exp: dummy stack frame present -PASS: gdb.threads/interrupted-hand-call.exp: finish hand-call -PASS: gdb.threads/interrupted-hand-call.exp: dummy frame popped -PASS: gdb.threads/interrupted-hand-call.exp: continue until exit -Running ./gdb.threads/killed.exp ... -PASS: gdb.threads/killed.exp: successfully compiled posix threads test case -PASS: gdb.threads/killed.exp: run program to completion -PASS: gdb.threads/killed.exp: GDB exits after multi-threaded program exits messily -Running ./gdb.threads/leader-exit.exp ... -PASS: gdb.threads/leader-exit.exp: successfully compiled posix threads test case -FAIL: gdb.threads/leader-exit.exp: continue to breakpoint: break-here (timeout) -FAIL: gdb.threads/leader-exit.exp: Single thread has been left (timeout) -Running ./gdb.threads/linux-dp.exp ... -PASS: gdb.threads/linux-dp.exp: successfully compiled posix threads test case -PASS: gdb.threads/linux-dp.exp: set print sevenbit-strings -PASS: gdb.threads/linux-dp.exp: info threads 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 0 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 0 -PASS: gdb.threads/linux-dp.exp: info threads after: 0 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 1 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 1 -PASS: gdb.threads/linux-dp.exp: info threads after: 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 2 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 2 -PASS: gdb.threads/linux-dp.exp: info threads after: 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 3 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 3 -PASS: gdb.threads/linux-dp.exp: info threads after: 3 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 4 -UNSUPPORTED: gdb.threads/linux-dp.exp: create philosopher: 4 -PASS: gdb.threads/linux-dp.exp: info threads after: 4 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: main thread's sleep -PASS: gdb.threads/linux-dp.exp: info threads 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print -PASS: gdb.threads/linux-dp.exp: first thread-specific breakpoint hit -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 0 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 1 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 2 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 3 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 4 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 5 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 6 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 7 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 8 -PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 9 -PASS: gdb.threads/linux-dp.exp: thread-specific breakpoint is thread-specific -PASS: gdb.threads/linux-dp.exp: selected thread: 1 -PASS: gdb.threads/linux-dp.exp: main is distinct: 1 -PASS: gdb.threads/linux-dp.exp: selected thread: 2 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 2 -PASS: gdb.threads/linux-dp.exp: selected thread: 3 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 3 -PASS: gdb.threads/linux-dp.exp: selected thread: 4 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 4 -PASS: gdb.threads/linux-dp.exp: selected thread: 5 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 5 -PASS: gdb.threads/linux-dp.exp: selected thread: 6 -PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 6 -PASS: gdb.threads/linux-dp.exp: found an interesting thread -PASS: gdb.threads/linux-dp.exp: manager thread found (not found) when expected -Running ./gdb.threads/local-watch-wrong-thread.exp ... -Running ./gdb.threads/manythreads.exp ... -PASS: gdb.threads/manythreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/manythreads.exp: set print sevenbit-strings -PASS: gdb.threads/manythreads.exp: shell stty intr '^C' -PASS: gdb.threads/manythreads.exp: first continue -PASS: gdb.threads/manythreads.exp: stop threads 1 -PASS: gdb.threads/manythreads.exp: info threads -PASS: gdb.threads/manythreads.exp: give a name to the thread -PASS: gdb.threads/manythreads.exp: check thread name -PASS: gdb.threads/manythreads.exp: second continue -PASS: gdb.threads/manythreads.exp: check for duplicate SIGINT -PASS: gdb.threads/manythreads.exp: stop threads 2 -PASS: gdb.threads/manythreads.exp: GDB exits after stopping multithreaded program -Running ./gdb.threads/multi-create.exp ... -PASS: gdb.threads/multi-create.exp: successfully compiled posix threads test case -PASS: gdb.threads/multi-create.exp: continue to breakpoint 0 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 1 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 2 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 3 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 4 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 5 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 6 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 7 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 8 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 9 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 10 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 11 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 12 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 13 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 14 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 15 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 16 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 17 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 18 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 19 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 20 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 21 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 22 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 23 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 24 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 25 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 26 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 27 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 28 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 29 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 30 -PASS: gdb.threads/multi-create.exp: continue to breakpoint 31 -Running ./gdb.threads/non-ldr-exc-1.exp ... -Running ./gdb.threads/non-ldr-exc-2.exp ... -Running ./gdb.threads/non-ldr-exc-3.exp ... -Running ./gdb.threads/non-ldr-exc-4.exp ... -Running ./gdb.threads/no-unwaited-for-left.exp ... -PASS: gdb.threads/no-unwaited-for-left.exp: successfully compiled posix threads test case -PASS: gdb.threads/no-unwaited-for-left.exp: continue to breakpoint: break-here -PASS: gdb.threads/no-unwaited-for-left.exp: enable scheduler-locking, for thread 2 -FAIL: gdb.threads/no-unwaited-for-left.exp: continue stops when thread 2 exits (the program exited) -FAIL: gdb.threads/no-unwaited-for-left.exp: only main thread left, thread 2 terminated -PASS: gdb.threads/no-unwaited-for-left.exp: select main thread -FAIL: gdb.threads/no-unwaited-for-left.exp: disable scheduler-locking, letting new thread start -FAIL: gdb.threads/no-unwaited-for-left.exp: continue to breakpoint: break-here-2 -FAIL: gdb.threads/no-unwaited-for-left.exp: enable scheduler-locking, for main thread -FAIL: gdb.threads/no-unwaited-for-left.exp: continue stops when the main thread exits (the program is no longer running) -FAIL: gdb.threads/no-unwaited-for-left.exp: only thread 3 left, main thread terminated -Running ./gdb.threads/pending-step.exp ... -PASS: gdb.threads/pending-step.exp: successfully compiled posix threads test case -PASS: gdb.threads/pending-step.exp: continue to breakpoint: continue to first breakpoint hit -PASS: gdb.threads/pending-step.exp: next in multiple threads with breakpoints -Running ./gdb.threads/print-threads.exp ... -PASS: gdb.threads/print-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/print-threads.exp: set print sevenbit-strings -PASS: gdb.threads/print-threads.exp: set width 0 -PASS: gdb.threads/print-threads.exp: shell stty intr '^C' -PASS: gdb.threads/print-threads.exp: break thread_function -PASS: gdb.threads/print-threads.exp: set var slow = 0 -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (fast) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (fast) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (fast) -PASS: gdb.threads/print-threads.exp: break thread_function (2) -PASS: gdb.threads/print-threads.exp: set var slow = 1 -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (slow) -PASS: gdb.threads/print-threads.exp: break thread_function (3) -PASS: gdb.threads/print-threads.exp: set var slow = 1 (2) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow with kill breakpoint) -PASS: gdb.threads/print-threads.exp: program exited normally -PASS: gdb.threads/print-threads.exp: all threads ran once (slow with kill breakpoint) -Running ./gdb.threads/pthread_cond_wait.exp ... -PASS: gdb.threads/pthread_cond_wait.exp: successfully compiled posix threads test case -PASS: gdb.threads/pthread_cond_wait.exp: breakpoint on break_me -PASS: gdb.threads/pthread_cond_wait.exp: run to break_me -PASS: gdb.threads/pthread_cond_wait.exp: backtrace in blocked thread -Running ./gdb.threads/pthreads.exp ... -PASS: gdb.threads/pthreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/pthreads.exp: set print sevenbit-strings -PASS: gdb.threads/pthreads.exp: set width 0 -PASS: gdb.threads/pthreads.exp: shell stty intr '^C' -PASS: gdb.threads/pthreads.exp: info threads -PASS: gdb.threads/pthreads.exp: break thread1 -PASS: gdb.threads/pthreads.exp: Continue to creation of first thread -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: break thread2 -PASS: gdb.threads/pthreads.exp: Continue to creation of second thread -PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0 -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15 -PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times -PASS: gdb.threads/pthreads.exp: All threads running after startup -PASS: gdb.threads/pthreads.exp: Continue with all threads running -PASS: gdb.threads/pthreads.exp: Stopped with a ^C -PASS: gdb.threads/pthreads.exp: bt -PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0 -PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0 -PASS: gdb.threads/pthreads.exp: disable -PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15 -PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times -PASS: gdb.threads/pthreads.exp: All threads running after continuing from ^C stop -PASS: gdb.threads/pthreads.exp: check backtrace from main thread -PASS: gdb.threads/pthreads.exp: check backtrace from thread 1 -PASS: gdb.threads/pthreads.exp: check backtrace from thread 2 -PASS: gdb.threads/pthreads.exp: apply backtrace command to all three threads -PASS: gdb.threads/pthreads.exp: set break at common_routine in thread 2 -PASS: gdb.threads/pthreads.exp: continue to bkpt at common_routine in thread 2 -PASS: gdb.threads/pthreads.exp: backtrace from thread 2 bkpt in common_routine -Running ./gdb.threads/schedlock.exp ... -PASS: gdb.threads/schedlock.exp: successfully compiled posix threads test case -PASS: gdb.threads/schedlock.exp: shell stty intr '^C' -PASS: gdb.threads/schedlock.exp: set print sevenbit-strings -PASS: gdb.threads/schedlock.exp: set width 0 -PASS: gdb.threads/schedlock.exp: scheduler locking set to none -PASS: gdb.threads/schedlock.exp: continue to breakpoint: all threads started -PASS: gdb.threads/schedlock.exp: listed args (1) -PASS: gdb.threads/schedlock.exp: continue (initial) -PASS: gdb.threads/schedlock.exp: stop all threads (initial) -PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (initial) -PASS: gdb.threads/schedlock.exp: listed args (2) -PASS: gdb.threads/schedlock.exp: all threads alive -PASS: gdb.threads/schedlock.exp: find current thread (1) -PASS: gdb.threads/schedlock.exp: set scheduler-locking off -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 0) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 1) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 2) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 3) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 4) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 5) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 6) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 7) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 8) -PASS: gdb.threads/schedlock.exp: step to increment (unlocked 9) -PASS: gdb.threads/schedlock.exp: find current thread (2) -PASS: gdb.threads/schedlock.exp: step without lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (3) -PASS: gdb.threads/schedlock.exp: current thread stepped -PASS: gdb.threads/schedlock.exp: other threads ran - unlocked -PASS: gdb.threads/schedlock.exp: set scheduler-locking on -PASS: gdb.threads/schedlock.exp: continue (with lock) -PASS: gdb.threads/schedlock.exp: stop all threads (with lock) -PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (with lock) -PASS: gdb.threads/schedlock.exp: find current thread (3) -PASS: gdb.threads/schedlock.exp: continue with lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (4) -PASS: gdb.threads/schedlock.exp: current thread ran -PASS: gdb.threads/schedlock.exp: other threads didn't run - locked -PASS: gdb.threads/schedlock.exp: step to increment (locked 0) -PASS: gdb.threads/schedlock.exp: step to increment (locked 1) -PASS: gdb.threads/schedlock.exp: step to increment (locked 2) -PASS: gdb.threads/schedlock.exp: step to increment (locked 3) -PASS: gdb.threads/schedlock.exp: step to increment (locked 4) -PASS: gdb.threads/schedlock.exp: step to increment (locked 5) -PASS: gdb.threads/schedlock.exp: step to increment (locked 6) -PASS: gdb.threads/schedlock.exp: step to increment (locked 7) -PASS: gdb.threads/schedlock.exp: step to increment (locked 8) -PASS: gdb.threads/schedlock.exp: step to increment (locked 9) -PASS: gdb.threads/schedlock.exp: find current thread (2) -PASS: gdb.threads/schedlock.exp: step with lock does not change thread -PASS: gdb.threads/schedlock.exp: listed args (5) -PASS: gdb.threads/schedlock.exp: current thread stepped locked -PASS: gdb.threads/schedlock.exp: other threads didn't run - step locked -Running ./gdb.threads/siginfo-threads.exp ... -PASS: gdb.threads/siginfo-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/siginfo-threads.exp: handle SIGUSR1 stop print pass -PASS: gdb.threads/siginfo-threads.exp: handle SIGUSR2 stop print pass -PASS: gdb.threads/siginfo-threads.exp: get pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 0 -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 0 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 1 -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 1 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 2 -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 2 si_pid -PASS: gdb.threads/siginfo-threads.exp: catch signal 3 -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_signo -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_code is SI_TKILL -PASS: gdb.threads/siginfo-threads.exp: signal 3 si_pid -PASS: gdb.threads/siginfo-threads.exp: continue to breakpoint: break-at-exit -Running ./gdb.threads/sigstep-threads.exp ... -PASS: gdb.threads/sigstep-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/sigstep-threads.exp: handle SIGUSR1 nostop print pass -PASS: gdb.threads/sigstep-threads.exp: set scheduler-locking off -PASS: gdb.threads/sigstep-threads.exp: set $step1=$bpnum -PASS: gdb.threads/sigstep-threads.exp: continue to breakpoint: step-1 -PASS: gdb.threads/sigstep-threads.exp: disable $step1 -PASS: gdb.threads/sigstep-threads.exp: step -Running ./gdb.threads/sigthread.exp ... -PASS: gdb.threads/sigthread.exp: successfully compiled posix threads test case -PASS: gdb.threads/sigthread.exp: handle SIGUSR1 nostop noprint pass -PASS: gdb.threads/sigthread.exp: handle SIGUSR2 nostop noprint pass -PASS: gdb.threads/sigthread.exp: continue -PASS: gdb.threads/sigthread.exp: stop with control-c -Running ./gdb.threads/staticthreads.exp ... -PASS: gdb.threads/staticthreads.exp: successfully compiled posix threads test case -PASS: gdb.threads/staticthreads.exp: set print sevenbit-strings -PASS: gdb.threads/staticthreads.exp: break sem_post -PASS: gdb.threads/staticthreads.exp: Continue to main's call of sem_post -PASS: gdb.threads/staticthreads.exp: rerun to main -PASS: gdb.threads/staticthreads.exp: handle SIG32 nostop noprint pass -PASS: gdb.threads/staticthreads.exp: handle SIG32 helps -PASS: gdb.threads/staticthreads.exp: info threads -PASS: gdb.threads/staticthreads.exp: GDB exits with static thread program -Running ./gdb.threads/switch-threads.exp ... -PASS: gdb.threads/switch-threads.exp: successfully compiled posix threads test case -PASS: gdb.threads/switch-threads.exp: continue to breakpoint: continue to thread_func -PASS: gdb.threads/switch-threads.exp: next -Running ./gdb.threads/threadapply.exp ... -PASS: gdb.threads/threadapply.exp: successfully compiled posix threads test case -PASS: gdb.threads/threadapply.exp: b 62 -PASS: gdb.threads/threadapply.exp: continue -PASS: gdb.threads/threadapply.exp: macro details -PASS: gdb.threads/threadapply.exp: defining macro -PASS: gdb.threads/threadapply.exp: set backtrace limit 3 -PASS: gdb.threads/threadapply.exp: thread apply all backthread -PASS: gdb.threads/threadapply.exp: step to the thread_function -PASS: gdb.threads/threadapply.exp: go up in the stack frame -PASS: gdb.threads/threadapply.exp: run a simple print command on all threads -PASS: gdb.threads/threadapply.exp: go down and check selected frame -Running ./gdb.threads/thread_check.exp ... -PASS: gdb.threads/thread_check.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread_check.exp: breakpoint at tf -PASS: gdb.threads/thread_check.exp: continue to tf -PASS: gdb.threads/thread_check.exp: backtrace from thread function -Running ./gdb.threads/thread_events.exp ... -Running ./gdb.threads/thread-execl.exp ... -Running ./gdb.threads/thread-find.exp ... -PASS: gdb.threads/thread-find.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-find.exp: set print sevenbit-strings -PASS: gdb.threads/thread-find.exp: continue to breakpoint: main thread's sleep -PASS: gdb.threads/thread-find.exp: info threads -PASS: gdb.threads/thread-find.exp: name thread 1 -PASS: gdb.threads/thread-find.exp: name thread 2 -PASS: gdb.threads/thread-find.exp: name thread 3 -PASS: gdb.threads/thread-find.exp: name thread 4 -PASS: gdb.threads/thread-find.exp: name thread 5 -PASS: gdb.threads/thread-find.exp: name thread 6 -PASS: gdb.threads/thread-find.exp: collect thread id -PASS: gdb.threads/thread-find.exp: got thread ids -PASS: gdb.threads/thread-find.exp: collect process id -PASS: gdb.threads/thread-find.exp: collect lwp id -PASS: gdb.threads/thread-find.exp: find thread name 6 -PASS: gdb.threads/thread-find.exp: find thread name 5 -PASS: gdb.threads/thread-find.exp: find thread name 4 -PASS: gdb.threads/thread-find.exp: find thread name 3 -PASS: gdb.threads/thread-find.exp: find thread name 2 -PASS: gdb.threads/thread-find.exp: find thread name 1 -PASS: gdb.threads/thread-find.exp: find thread id 6 -PASS: gdb.threads/thread-find.exp: find thread id 5 -PASS: gdb.threads/thread-find.exp: find thread id 4 -PASS: gdb.threads/thread-find.exp: find thread id 3 -PASS: gdb.threads/thread-find.exp: find thread id 2 -PASS: gdb.threads/thread-find.exp: find thread id 1 -PASS: gdb.threads/thread-find.exp: no thread -PASS: gdb.threads/thread-find.exp: test regular exp -PASS: gdb.threads/thread-find.exp: info threads 2 4 6 -PASS: gdb.threads/thread-find.exp: info threads 3-5 -PASS: gdb.threads/thread-find.exp: test inverted range -PASS: gdb.threads/thread-find.exp: info threads 3-3 -PASS: gdb.threads/thread-find.exp: info thread foo -PASS: gdb.threads/thread-find.exp: info thread foo -1 -Running ./gdb.threads/thread-specific.exp ... -PASS: gdb.threads/thread-specific.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-specific.exp: set print sevenbit-strings -PASS: gdb.threads/thread-specific.exp: set width 0 -PASS: gdb.threads/thread-specific.exp: thread var when not running -PASS: gdb.threads/thread-specific.exp: continue to breakpoint: all threads started -PASS: gdb.threads/thread-specific.exp: get threads list -PASS: gdb.threads/thread-specific.exp: thread var in main -PASS: gdb.threads/thread-specific.exp: breakpoint 59 main thread -PASS: gdb.threads/thread-specific.exp: continue to thread-specific breakpoint -PASS: gdb.threads/thread-specific.exp: found breakpoint for thread number -PASS: gdb.threads/thread-specific.exp: thread var at break -Running ./gdb.threads/thread-unwindonsignal.exp ... -PASS: gdb.threads/thread-unwindonsignal.exp: successfully compiled posix threads test case -PASS: gdb.threads/thread-unwindonsignal.exp: breakpoint on all_threads_running -PASS: gdb.threads/thread-unwindonsignal.exp: run to all_threads_running -PASS: gdb.threads/thread-unwindonsignal.exp: setting unwindonsignal -PASS: gdb.threads/thread-unwindonsignal.exp: showing unwindonsignal -PASS: gdb.threads/thread-unwindonsignal.exp: hand-call interrupted by signal in another thread -PASS: gdb.threads/thread-unwindonsignal.exp: dummy stack frame present -PASS: gdb.threads/thread-unwindonsignal.exp: wrong thread not unwound -PASS: gdb.threads/thread-unwindonsignal.exp: finish hand-call -PASS: gdb.threads/thread-unwindonsignal.exp: dummy frame popped -PASS: gdb.threads/thread-unwindonsignal.exp: continue until exit -Running ./gdb.threads/threxit-hop-specific.exp ... -PASS: gdb.threads/threxit-hop-specific.exp: successfully compiled posix threads test case -PASS: gdb.threads/threxit-hop-specific.exp: continue to thread start -PASS: gdb.threads/threxit-hop-specific.exp: set thread specific breakpoint -PASS: gdb.threads/threxit-hop-specific.exp: get past the thread specific breakpoint -Running ./gdb.threads/tls.exp ... -PASS: gdb.threads/tls.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls.exp: set breakpoint at all threads -PASS: gdb.threads/tls.exp: set breakpoint at synch point -PASS: gdb.threads/tls.exp: set breakpoint at exit -PASS: gdb.threads/tls.exp: continue to first thread: get to thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at first th -PASS: gdb.threads/tls.exp: first thread print me -PASS: gdb.threads/tls.exp: first thread local storage -PASS: gdb.threads/tls.exp: first another thread local storage -PASS: gdb.threads/tls.exp: first info address a_thread_local -PASS: gdb.threads/tls.exp: first info address another_thread_local -PASS: gdb.threads/tls.exp: continue to second thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at second th -PASS: gdb.threads/tls.exp: second thread print me -PASS: gdb.threads/tls.exp: second thread local storage -PASS: gdb.threads/tls.exp: second another thread local storage -PASS: gdb.threads/tls.exp: second info address a_thread_local -PASS: gdb.threads/tls.exp: second info address another_thread_local -PASS: gdb.threads/tls.exp: continue to third thread -PASS: gdb.threads/tls.exp: at least one th in spin while stopped at third th -PASS: gdb.threads/tls.exp: third thread print me -PASS: gdb.threads/tls.exp: third thread local storage -PASS: gdb.threads/tls.exp: third another thread local storage -PASS: gdb.threads/tls.exp: third info address a_thread_local -PASS: gdb.threads/tls.exp: third info address another_thread_local -PASS: gdb.threads/tls.exp: continue to synch point -PASS: gdb.threads/tls.exp: get number of threads -PASS: gdb.threads/tls.exp: selected thread: 1 -PASS: gdb.threads/tls.exp: backtrace of thread number 1 not relevant -PASS: gdb.threads/tls.exp: selected thread: 2 -PASS: gdb.threads/tls.exp: backtrace of thread number 2 in spin -PASS: gdb.threads/tls.exp: selected thread: 3 -PASS: gdb.threads/tls.exp: backtrace of thread number 3 in spin -PASS: gdb.threads/tls.exp: selected thread: 4 -PASS: gdb.threads/tls.exp: backtrace of thread number 4 in spin -PASS: gdb.threads/tls.exp: selected thread: 4 -PASS: gdb.threads/tls.exp: thread 4 up -PASS: gdb.threads/tls.exp: 4 thread print me -PASS: gdb.threads/tls.exp: 4 thread local storage -PASS: gdb.threads/tls.exp: 4 another thread local storage -PASS: gdb.threads/tls.exp: 4 info address a_thread_local -PASS: gdb.threads/tls.exp: 4 info address another_thread_local -PASS: gdb.threads/tls.exp: selected thread: 2 -PASS: gdb.threads/tls.exp: thread 2 up -PASS: gdb.threads/tls.exp: 2 thread print me -PASS: gdb.threads/tls.exp: 2 thread local storage -PASS: gdb.threads/tls.exp: 2 another thread local storage -PASS: gdb.threads/tls.exp: 2 info address a_thread_local -PASS: gdb.threads/tls.exp: 2 info address another_thread_local -PASS: gdb.threads/tls.exp: selected thread: 3 -PASS: gdb.threads/tls.exp: thread 3 up -PASS: gdb.threads/tls.exp: 3 thread print me -PASS: gdb.threads/tls.exp: 3 thread local storage -PASS: gdb.threads/tls.exp: 3 another thread local storage -PASS: gdb.threads/tls.exp: 3 info address a_thread_local -PASS: gdb.threads/tls.exp: 3 info address another_thread_local -PASS: gdb.threads/tls.exp: threads exited -PASS: gdb.threads/tls.exp: Expect only base thread at end -PASS: gdb.threads/tls.exp: info address a_global -PASS: gdb.threads/tls.exp: info address me -PASS: gdb.threads/tls.exp: p a_thread_local -FAIL: gdb.threads/tls.exp: p file2_thread_local -PASS: gdb.threads/tls.exp: info address file2_thread_local -PASS: gdb.threads/tls.exp: p a_thread_local second time -PASS: gdb.threads/tls.exp: info address a_thread_local -Running ./gdb.threads/tls-nodebug.exp ... -PASS: gdb.threads/tls-nodebug.exp: successfully compiled posix threads test case -FAIL: gdb.threads/tls-nodebug.exp: thread local storage -Running ./gdb.threads/tls-shared.exp ... -PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-shared.exp: print thread local storage variable -PASS: gdb.threads/tls-shared.exp: ptype of thread local storage variable -PASS: gdb.threads/tls-shared.exp: print storage info for thread local storage variable -PASS: gdb.threads/tls-shared.exp: break at and of main -PASS: gdb.threads/tls-shared.exp: continue to break -PASS: gdb.threads/tls-shared.exp: print result -Running ./gdb.threads/tls-var.exp ... -PASS: gdb.threads/tls-var.exp: successfully compiled posix threads test case -PASS: gdb.threads/tls-var.exp: whatis tls_var -PASS: gdb.threads/tls-var.exp: print tls_var -Running ./gdb.threads/watchpoint-fork.exp ... -KFAIL: gdb.threads/watchpoint-fork.exp: gdbserver does not support debugging across fork (PRMS: remote/13584) -Running ./gdb.threads/watchthreads2.exp ... -Running ./gdb.threads/watchthreads.exp ... -Running ./gdb.threads/watchthreads-reorder.exp ... -Running ./gdb.trace/actions.exp ... -PASS: gdb.trace/actions.exp: 5.1a: set three tracepoints, no actions -PASS: gdb.trace/actions.exp: 5.1b: set actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.1c: verify actions set for first tracepoint -PASS: gdb.trace/actions.exp: 5.1d: set actions for second tracepoint -PASS: gdb.trace/actions.exp: 5.1e: verify actions set for second tracepoint -PASS: gdb.trace/actions.exp: 5.2a: set actions for last (default) tracepoint -PASS: gdb.trace/actions.exp: 5.2b: verify actions set for second tracepoint -PASS: gdb.trace/actions.exp: 5.3a: reset actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.3b: verify actions set for first tracepoint -PASS: gdb.trace/actions.exp: 5.4: 'end' command out of context -PASS: gdb.trace/actions.exp: 5.5a: set empty actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.5c: verify NO actions for first tracepoint -PASS: gdb.trace/actions.exp: 5.6: actions for invalid tracepoint number -PASS: gdb.trace/actions.exp: 5.7: invalid action -PASS: gdb.trace/actions.exp: 5.8a: help actions -PASS: gdb.trace/actions.exp: 5.8b: help collect -PASS: gdb.trace/actions.exp: 5.8c: help while-stepping -PASS: gdb.trace/actions.exp: 5.8d: help end -PASS: gdb.trace/actions.exp: 5.9a: set default-collect -PASS: gdb.trace/actions.exp: 5.9b: show default-collect -PASS: gdb.trace/actions.exp: 5.9c: set default-collect -PASS: gdb.trace/actions.exp: Create a trace state variable -PASS: gdb.trace/actions.exp: 5.10a: set teval action for first tracepoint -PASS: gdb.trace/actions.exp: 5.10a: set teval action for second tracepoint -PASS: gdb.trace/actions.exp: 5.10a: verify teval actions set for two tracepoints -Running ./gdb.trace/ax.exp ... -PASS: gdb.trace/ax.exp: maint agent 12 -PASS: gdb.trace/ax.exp: maint agent gdb_char_test -PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[12] -PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[gdb_short_test] -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.s -PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.arr[gdb_struct1_test.c] -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->l -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->bfield -PASS: gdb.trace/ax.exp: maint agent gdb_long_test + gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test - gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test * gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test / gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_structp_test + 1 -PASS: gdb.trace/ax.exp: maint agent gdb_long_test == gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test != gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test < gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test <= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test > gdb_short_test -PASS: gdb.trace/ax.exp: maint agent gdb_long_test >= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent &gdb_long_test == &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent &gdb_long_test < &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval 12 -PASS: gdb.trace/ax.exp: maint agent-eval gdb_char_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[12] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[gdb_short_test] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.s -PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.arr[gdb_struct1_test.c] -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->l -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->bfield -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test + gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test - gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test * gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test / gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test + 1 -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test == gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test != gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test < gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test <= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test > gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test >= gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test == &gdb_short_test -PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test < &gdb_short_test -Running ./gdb.trace/backtrace.exp ... -PASS: gdb.trace/backtrace.exp: 8.6: setup TP to collect regs -PASS: gdb.trace/backtrace.exp: 8.6: setup TP to collect regs, args, and locals -PASS: gdb.trace/backtrace.exp: 8.6: setup TP to collect stack mem cast expr -PASS: gdb.trace/backtrace.exp: run trace experiment -PASS: gdb.trace/backtrace.exp: init: make sure not debugging any trace frame -PASS: gdb.trace/backtrace.exp: 8.6: find start frame -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 1 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 2 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 4 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 8.6: find frame 5 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 2, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 6 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 2, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 7 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 2, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 9 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 8.6: find frame 10 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 3, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 11 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 3, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 12 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 3, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 14 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 8.6: find frame 15 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 4, collect nothing -PASS: gdb.trace/backtrace.exp: 8.6: find frame 16 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 4, collect regs -PASS: gdb.trace/backtrace.exp: 8.6: find frame 17 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 4, collect args and locals -PASS: gdb.trace/backtrace.exp: 8.6: find frame 19 -PASS: gdb.trace/backtrace.exp: 8.6: Backtrace, depth == 1, collect stack mem expr -PASS: gdb.trace/backtrace.exp: 1.13: trace in recursion: depth not equal to 3 -Running ./gdb.trace/change-loc.exp ... -PASS: gdb.trace/change-loc.exp: 1 trace: delete break 1 -PASS: gdb.trace/change-loc.exp: 1 trace: next -PASS: gdb.trace/change-loc.exp: 1 trace: set tracepoint on main -PASS: gdb.trace/change-loc.exp: 1 trace: breakpoint on marker -PASS: gdb.trace/change-loc.exp: 1 trace: tstart -PASS: gdb.trace/change-loc.exp: 1 trace: continue to marker 1 -PASS: gdb.trace/change-loc.exp: 1 trace: set tracepoint on set_tracepoint -PASS: gdb.trace/change-loc.exp: 1 trace: set action for tracepoint -FAIL: gdb.trace/change-loc.exp: 1 trace: tracepoint with two locations -PASS: gdb.trace/change-loc.exp: 1 trace: continue to marker 2 -FAIL: gdb.trace/change-loc.exp: 1 trace: tracepoint with three locations -PASS: gdb.trace/change-loc.exp: 1 trace: continue to marker 3 -FAIL: gdb.trace/change-loc.exp: 1 trace: tracepoint with two locations (unload) -PASS: gdb.trace/change-loc.exp: 1 trace: tstop -FAIL: gdb.trace/change-loc.exp: 1 trace: tfind frame 0 -PASS: gdb.trace/change-loc.exp: 1 trace: tfind -PASS: gdb.trace/change-loc.exp: 2 trace: set pending tracepoint -PASS: gdb.trace/change-loc.exp: 2 trace: set action for tracepoint -PASS: gdb.trace/change-loc.exp: 2 trace: single pending tracepoint info (without symbols) -PASS: gdb.trace/change-loc.exp: 2 trace: tracepoint with one location -PASS: gdb.trace/change-loc.exp: 2 trace: run to main -PASS: gdb.trace/change-loc.exp: 2 trace: delete break 2 -FAIL: gdb.trace/change-loc.exp: 2 trace: tracepoint with two locations -PASS: gdb.trace/change-loc.exp: 2 trace: breakpoint on marker -PASS: gdb.trace/change-loc.exp: 2 trace: tstart -PASS: gdb.trace/change-loc.exp: 2 trace: continue to marker 1 -PASS: gdb.trace/change-loc.exp: 2 trace: continue to marker 2 -FAIL: gdb.trace/change-loc.exp: 2 trace: tracepoint with three locations -PASS: gdb.trace/change-loc.exp: 2 trace: continue to marker 3 -FAIL: gdb.trace/change-loc.exp: 2 trace: tracepoint with two locations (unload) -PASS: gdb.trace/change-loc.exp: 2 trace: tstop -PASS: gdb.trace/change-loc.exp: 2 trace: tfind frame 0 -FAIL: gdb.trace/change-loc.exp: 2 trace: tfind frame 1 -FAIL: gdb.trace/change-loc.exp: 2 trace: tfind frame 2 -PASS: gdb.trace/change-loc.exp: 2 trace: tfind -ERROR: (DejaGnu) proc "else\{" does not exist. -Running ./gdb.xml/tdesc-arch.exp ... -PASS: gdb.xml/tdesc-arch.exp: read valid architectures -PASS: gdb.xml/tdesc-arch.exp: read default architecture -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (first architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (first architecture) -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (second architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (second architecture) -PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (invalid architecture) -PASS: gdb.xml/tdesc-arch.exp: show architecture (invalid architecture) -Running ./gdb.xml/tdesc-errors.exp ... -PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-bogus.xml -PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-unknown.xml -Running ./gdb.xml/tdesc-regs.exp ... -PASS: gdb.xml/tdesc-regs.exp: set tdesc file single-reg.xml -PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from extra-regs.xml -PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg -PASS: gdb.xml/tdesc-regs.exp: ptype $uintreg -PASS: gdb.xml/tdesc-regs.exp: ptype $vecreg -PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg -PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg.v4 -PASS: gdb.xml/tdesc-regs.exp: ptype $structreg -PASS: gdb.xml/tdesc-regs.exp: ptype $structreg.v4 -PASS: gdb.xml/tdesc-regs.exp: ptype $bitfields -PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from core-only.xml -PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg -Running ./gdb.xml/tdesc-xinclude.exp ... -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/includes.xml -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/bad-include.xml -PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/loop.xml - - === gdb Summary === - -# of expected passes 17760 -# of unexpected failures 276 -# of unexpected successes 1 -# of expected failures 32 -# of known failures 44 -# of untested testcases 50 -# of unresolved testcases 13 -# of unsupported tests 106 -/var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../../gdb/gdb version 7.6.1 -nw -nx -data-directory /var/tmp/portage/cross-x86_64-cros-linux-gnu/gdb-7.6.1/work/gdb-7.6.1/gdb/testsuite/../data-directory - diff --git a/deprecated/dejagnu/gdb_dejagnu.py b/deprecated/dejagnu/gdb_dejagnu.py deleted file mode 100755 index 91fa51fd..00000000 --- a/deprecated/dejagnu/gdb_dejagnu.py +++ /dev/null @@ -1,357 +0,0 @@ -#!/usr/bin/python2 - -# 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. -"""The gdb dejagnu test wrapper.""" -import optparse -import os -from os import path -import re -import shutil -import stat -import sys -import tempfile -import time - -from cros_utils import command_executer -from cros_utils import logger -from cros_utils import misc - -from run_dejagnu import TryAcquireMachine - -_VALID_TEST_RESULTS = ['FAIL', 'UNRESOLVED', 'XPASS', 'ERROR', 'UNSUPPORTED', - 'PASS'] - - -def ProcessArguments(argv): - """Processing/validating script arguments.""" - parser = optparse.OptionParser(description=( - 'Launches gdb dejagnu test in chroot for chromeos toolchain, compares ' - 'the test result with a repository baseline and prints out the result.'), - usage='run_dejagnu options') - parser.add_option('-c', - '--chromeos_root', - dest='chromeos_root', - help='Required. Specify chromeos root') - parser.add_option('-m', - '--mount', - dest='mount', - help=('Specify gdb source to mount instead of "auto". ' - 'Under "auto" mode, which is the default - gdb is ' - 'checked out and built automatically at default ' - 'directories. Under "mount" mode ' - '- the gdb_source is set to "$chromeos_' - 'root/chroot/usr/local/toolchain_root/gdb", which is ' - 'the mount point for this option value.')) - parser.add_option('-b', - '--board', - dest='board', - help=('Required. Specify board.')) - parser.add_option('-r', - '--remote', - dest='remote', - help=('Required. Specify addresses/names of the board, ' - 'seperate each address/name using comma(\',\').')) - parser.add_option('--cleanup', - dest='cleanup', - default=None, - help=('Optional. Values to this option could be ' - '\'chroot\' (delete chroot) and ' - '\'chromeos\' (delete the whole chromeos tree).')) - - options, args = parser.parse_args(argv) - - if not options.chromeos_root: - raise SyntaxError('Missing argument for --chromeos_root.') - if not options.remote: - raise SyntaxError('Missing argument for --remote.') - if not options.board: - raise SyntaxError('Missing argument for --board.') - if options.cleanup == 'mount' and not options.mount: - raise SyntaxError('--cleanup=\'mount\' not valid unless --mount is given.') - if options.cleanup and not (options.cleanup == 'mount' or - options.cleanup == 'chroot' or - options.cleanup == 'chromeos'): - raise SyntaxError('Invalid option value for --cleanup') - - return options - - -class DejagnuExecuter(object): - """The class wrapper for dejagnu test executer.""" - - def __init__(self, base_dir, source_dir, chromeos_root, remote, board, - cleanup): - self._l = logger.GetLogger() - self._chromeos_root = chromeos_root - self._chromeos_chroot = path.join(chromeos_root, 'chroot') - - self._remote = remote - self._board = board - ## Compute target from board - self._target = misc.GetCtargetFromBoard(board, chromeos_root) - if not self._target: - raise RuntimeError('Unsupported board "%s"' % board) - self._executer = command_executer.GetCommandExecuter() - self._base_dir = base_dir - self._tmp_abs = None - self._cleanup = cleanup - self._sshflag = ('-o StrictHostKeyChecking=no ' + '-o CheckHostIP=no ' + - '-o UserKnownHostsFile=$(mktemp) ') - - if source_dir: - self._source_dir = source_dir - self._mount_flag = 'USE="mounted_sources"' - self.MountSource() - else: - self._source_dir = None - self._mount_flag = '' - - def SetupTestingDir(self): - self._tmp_abs = tempfile.mkdtemp( - prefix='dejagnu_', - dir=path.join(self._chromeos_chroot, 'tmp')) - self._tmp = self._tmp_abs[len(self._chromeos_chroot):] - self._tmp_testing_rsa = path.join(self._tmp, 'testing_rsa') - self._tmp_testing_rsa_abs = path.join(self._tmp_abs, 'testing_rsa') - - def PrepareTestingRsaKeys(self): - if not path.isfile(self._tmp_testing_rsa_abs): - shutil.copy( - path.join(self._chromeos_root, - 'src/scripts/mod_for_test_scripts/ssh_keys/testing_rsa'), - self._tmp_testing_rsa_abs) - os.chmod(self._tmp_testing_rsa_abs, stat.S_IRUSR) - - def PrepareTestFiles(self): - """Prepare site.exp and board exp files.""" - # Create the boards directory. - os.mkdir('%s/boards' % self._tmp_abs) - - # Generate the chromeos.exp file. - with open('%s/boards/gdb.exp.in' % self._base_dir, 'r') as template_file: - content = template_file.read() - - substitutions = dict({ - '__boardname__': self._board, - '__board_hostname__': self._remote, - '__tmp_testing_rsa__': self._tmp_testing_rsa, - '__tmp_dir__': self._tmp - }) - for pat, sub in substitutions.items(): - content = content.replace(pat, sub) - - board_file_name = '%s/boards/%s.exp' % (self._tmp_abs, self._board) - with open(board_file_name, 'w') as board_file: - board_file.write(content) - - # Generate the site file - with open('%s/site.exp' % self._tmp_abs, 'w') as site_file: - site_file.write('set target_list "%s"\n' % self._board) - - with open('%s/boards/gdbserver.sh.in' % self._base_dir, 'r') \ - as template_file: - content = template_file.read() - substitutions = dict({ - '__board_hostname__': self._remote, - '__tmp_testing_rsa__': self._tmp_testing_rsa, - '__tmp_dir__': self._tmp - }) - for pat, sub in substitutions.items(): - content = content.replace(pat, sub) - - gdbserver_file_name = '%s/boards/gdbserver.sh' % (self._tmp_abs) - with open(gdbserver_file_name, 'w') as board_file: - board_file.write(content) - - st = os.stat(gdbserver_file_name) - os.chmod(gdbserver_file_name, st.st_mode | stat.S_IXGRP | stat.S_IXUSR) - - def PrepareGdb(self): - self.PrepareGdbDefault() - - def PrepareGdbDefault(self): - ret = self._executer.ChrootRunCommandWOutput( - self._chromeos_root, 'equery w cross-%s/gdb' % self._target)[1] - ret = path.basename(ret.strip()) - - matcher = re.match(r'(.*).ebuild', ret) - if matcher: - gdb_reversion = matcher.group(1) - else: - raise RuntimeError('Failed to get gdb reversion.') - gdb_version = gdb_reversion.split('-r')[0] - gdb_portage_dir = '/var/tmp/portage/cross-%s/%s/work' % (self._target, - gdb_reversion) - self._gdb_source_dir = path.join(gdb_portage_dir, gdb_version) - - ret = self._executer.ChrootRunCommand(self._chromeos_root, ( - 'sudo %s ebuild $(equery w cross-%s/gdb) clean compile' % ( - self._mount_flag, self._target))) - if ret: - raise RuntimeError('ebuild gdb failed.') - - def PrepareGdbserver(self): - self.PrepareGdbserverDefault() - - def PrepareGdbserverDefault(self): - cmd = ('setup_board --board {0}; ' - '{1} emerge-{0} gdb'.format(self._board, self._mount_flag)) - ret = self._executer.ChrootRunCommand(self._chromeos_root, - cmd, - print_to_console=True) - if ret: - raise RuntimeError('ebuild gdbserver failed.') - - cmd = ('scp -i {0} {1} ' - '/build/{2}/usr/bin/gdbserver root@{3}:/usr/local/bin/'.format( - self._tmp_testing_rsa, self._sshflag, self._board, self._remote)) - ret = self._executer.ChrootRunCommand(self._chromeos_root, - cmd, - print_to_console=True) - if ret: - raise RuntimeError('copy gdbserver failed.') - - if self._mount_flag: - self.MountSource(unmount=False) - - def Cleanup(self): - if not self._cleanup: - return - - if self._cleanup == 'chroot' or self._cleanup == 'chromeos': - self._l.LogOutput('[Cleanup]: Deleting chroot inside \'{0}\''.format( - self._chromeos_root)) - command = 'cd %s; cros_sdk --delete' % self._chromeos_root - rv = self._executer.RunCommand(command) - if rv: - self._l.LogWarning('Warning - failed to delete chroot.') - # Delete .cache - crosbug.com/34956 - command = 'sudo rm -fr %s' % os.path.join(self._chromeos_root, '.cache') - rv = self._executer.RunCommand(command) - if rv: - self._l.LogWarning('Warning - failed to delete \'.cache\'.') - - if self._cleanup == 'chromeos': - self._l.LogOutput('[Cleanup]: Deleting chromeos tree \'{0}\' ...'.format( - self._chromeos_root)) - command = 'rm -fr {0}'.format(self._chromeos_root) - rv = self._executer.RunCommand(command) - if rv: - self._l.LogWarning('Warning - failed to remove chromeos tree.') - - def MakeCheck(self): - cmd = ('ssh -i {0} {1} root@{2} "reboot && exit"' - .format(self._tmp_testing_rsa, self._sshflag, self._remote)) - self._executer.ChrootRunCommand(self._chromeos_root, cmd) - time.sleep(40) - - cmd = ('ssh -i {0} {1} root@{2} ' - '"iptables -A INPUT -p tcp --dport 1234 -j ACCEPT"'.format( - self._tmp_testing_rsa, self._sshflag, self._remote)) - self._executer.ChrootRunCommand(self._chromeos_root, cmd) - - cmd = ('cd %s ; ' - 'DEJAGNU=%s make check' % (path.join(self._gdb_source_dir, 'gdb'), - path.join(self._tmp, 'site.exp'))) - ret = self._executer.ChrootRunCommand(self._chromeos_root, cmd) - if ret: - raise RuntimeError('Make check failed.') - - # This method ensures necessary mount points before executing chroot comamnd. - def MountSource(self, unmount=False): - script = os.path.join(self._base_dir, 'build_tc.py') - if unmount: - mount = '-u' - else: - mount = '-m' - cmd = ('python {0} --chromeos_root={1} ' - '--gdb_dir={2} --board={3} {4}'.format(script, self._chromeos_root, - self._source_dir, self._board, - mount)) - rv = self._executer.RunCommand(cmd) - if rv: - raise RuntimeError('Mount source failed.') - - def ResultValidate(self): - self.PrepareResult() - result = [] - for key, value in self.base_result.items(): - if 'PASS' not in value: - continue - if key not in self.test_result: - continue - test_result = self.test_result[key] - if 'PASS' not in test_result: - result.append(key) - return result - - def PrepareResult(self): - test_output = os.path.join(self._gdb_source_dir, 'gdb', 'testsuite', - 'gdb.sum') - test_output = misc.GetOutsideChrootPath(self._chromeos_root, test_output) - base_output = os.path.join(self._base_dir, 'gdb_baseline', self._target) - - self.test_result = self.ParseResult(test_output) - self.base_result = self.ParseResult(base_output) - - def ParseResult(self, gdb_sum): - result = {} - multi_keys = {} - with open(gdb_sum) as input_sum: - for line in input_sum: - line = line.strip() - r = line.split(':', 1) - if r[0] in _VALID_TEST_RESULTS: - key = r[1] - if r[1] in result: - if r[1] in multi_keys: - multi_keys[r[1]] += 1 - else: - multi_keys[r[1]] = 2 - key = r[1] + '_____{0}_____'.format(multi_keys[r[1]]) - result[key] = r[0] - return result - - -def Main(argv): - opts = ProcessArguments(argv) - available_machine = TryAcquireMachine(opts.remote) - executer = DejagnuExecuter( - misc.GetRoot(argv[0])[0], opts.mount, opts.chromeos_root, - available_machine._name, opts.board, opts.cleanup) - # Return value is a 3- or 4-element tuple - # element#1 - exit code - # element#2 - stdout - # element#3 - stderr - # element#4 - exception infor - # Some other scripts need these detailed information. - ret = (1, '', '') - try: - executer.SetupTestingDir() - executer.PrepareTestingRsaKeys() - executer.PrepareTestFiles() - executer.PrepareGdb() - executer.PrepareGdbserver() - executer.MakeCheck() - result = executer.ResultValidate() - print result - if result: - ret = (1, result, '') - else: - ret = (0, '', '') - - except Exception as e: - # At least log the exception on console. - print e - # The #4 element encodes the runtime exception. - ret = (1, '', '', 'Exception happened during execution: \n' + str(e)) - finally: - executer.Cleanup() - return ret - - -if __name__ == '__main__': - retval = Main(sys.argv)[0] - sys.exit(retval) diff --git a/deprecated/dejagnu/run_dejagnu.py b/deprecated/dejagnu/run_dejagnu.py deleted file mode 100755 index 7b6e6fa3..00000000 --- a/deprecated/dejagnu/run_dejagnu.py +++ /dev/null @@ -1,418 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Tool script for auto dejagnu.""" - -__author__ = 'shenhan@google.com (Han Shen)' - -import getpass -import optparse -import os -from os import path -import re -import shutil -import stat -import sys -import tempfile -import time - -import lock_machine -import tc_enter_chroot -from cros_utils import command_executer -from cros_utils import constants -from cros_utils import logger -from cros_utils import misc - - -def ProcessArguments(argv): - """Processing/validating script arguments.""" - parser = optparse.OptionParser(description=( - 'Launches gcc dejagnu test in chroot for chromeos toolchain, compares ' - 'the test result with a repository baseline and prints out the result.'), - usage='run_dejagnu options') - parser.add_option('-c', - '--chromeos_root', - dest='chromeos_root', - help='Required. Specify chromeos root') - parser.add_option('-m', - '--mount', - dest='mount', - help=('Specify gcc source to mount instead of "auto". ' - 'Under "auto" mode, which is the default - gcc is ' - 'checked out and built automatically at default ' - 'directories. Under "mount" mode ' - '- the gcc_source is set to "$chromeos_' - 'root/chroot/usr/local/toolchain_root/gcc", which is ' - 'the mount point for this option value, the ' - 'gcc-build-dir then is computed as ' - '"${gcc_source_dir}-build-${ctarget}". In this mode, ' - 'a complete gcc build must be performed in the ' - 'computed gcc-build-dir beforehand.')) - parser.add_option('-b', - '--board', - dest='board', - help=('Required. Specify board.')) - parser.add_option('-r', - '--remote', - dest='remote', - help=('Required. Specify addresses/names of the board, ' - 'seperate each address/name using comma(\',\').')) - parser.add_option('-f', - '--flags', - dest='flags', - help='Optional. Extra run test flags to pass to dejagnu.') - parser.add_option('-k', - '--keep', - dest='keep_intermediate_files', - action='store_true', - default=False, - help=('Optional. Default to false. Do not remove dejagnu ' - 'intermediate files after test run.')) - parser.add_option('--cleanup', - dest='cleanup', - default=None, - help=('Optional. Values to this option could be ' - '\'mount\' (unmount gcc source and ' - 'directory directory, ' - 'only valid when --mount is given), ' - '\'chroot\' (delete chroot) and ' - '\'chromeos\' (delete the whole chromeos tree).')) - parser.add_option('-t', - '--tools', - dest='tools', - default='gcc,g++', - help=('Optional. Specify which tools to check, using ' - '","(comma) as separator. A typical value would be ' - '"g++" so that only g++ tests are performed. ' - 'Defaults to "gcc,g++".')) - - options, args = parser.parse_args(argv) - - if not options.chromeos_root: - raise SyntaxError('Missing argument for --chromeos_root.') - if not options.remote: - raise SyntaxError('Missing argument for --remote.') - if not options.board: - raise SyntaxError('Missing argument for --board.') - if options.cleanup == 'mount' and not options.mount: - raise SyntaxError('--cleanup=\'mount\' not valid unless --mount is given.') - if options.cleanup and not ( - options.cleanup == 'mount' or \ - options.cleanup == 'chroot' or options.cleanup == 'chromeos'): - raise ValueError('Invalid option value for --cleanup') - if options.cleanup and options.keep_intermediate_files: - raise SyntaxError('Only one of --keep and --cleanup could be given.') - - return options - - -class DejagnuExecuter(object): - """The class wrapper for dejagnu test executer.""" - - def __init__(self, base_dir, mount, chromeos_root, remote, board, flags, - keep_intermediate_files, tools, cleanup): - self._l = logger.GetLogger() - self._chromeos_root = chromeos_root - self._chromeos_chroot = path.join(chromeos_root, 'chroot') - if mount: - self._gcc_source_dir_to_mount = mount - self._gcc_source_dir = path.join(constants.MOUNTED_TOOLCHAIN_ROOT, 'gcc') - else: - self._gcc_source_dir = None - - self._remote = remote - self._board = board - ## Compute target from board - self._target = misc.GetCtargetFromBoard(board, chromeos_root) - if not self._target: - raise ValueError('Unsupported board "%s"' % board) - self._executer = command_executer.GetCommandExecuter() - self._flags = flags or '' - self._base_dir = base_dir - self._tmp_abs = None - self._keep_intermediate_files = keep_intermediate_files - self._tools = tools.split(',') - self._cleanup = cleanup - - def SetupTestingDir(self): - self._tmp_abs = tempfile.mkdtemp( - prefix='dejagnu_', - dir=path.join(self._chromeos_chroot, 'tmp')) - self._tmp = self._tmp_abs[len(self._chromeos_chroot):] - self._tmp_testing_rsa = path.join(self._tmp, 'testing_rsa') - self._tmp_testing_rsa_abs = path.join(self._tmp_abs, 'testing_rsa') - - def MakeCheckString(self): - return ' '.join(['check-{0}'.format(t) for t in self._tools if t]) - - def CleanupIntermediateFiles(self): - if self._tmp_abs and path.isdir(self._tmp_abs): - if self._keep_intermediate_files: - self._l.LogOutput( - 'Your intermediate dejagnu files are kept, you can re-run ' - 'inside chroot the command:') - self._l.LogOutput( - ' DEJAGNU={0} make -C {1} {2} RUNTESTFLAGS="--target_board={3} {4}"' \ - .format(path.join(self._tmp, 'site.exp'), self._gcc_build_dir, - self.MakeCheckString(), self._board, self._flags)) - else: - self._l.LogOutput('[Cleanup] - Removing temp dir - {0}'.format( - self._tmp_abs)) - shutil.rmtree(self._tmp_abs) - - def Cleanup(self): - if not self._cleanup: - return - - # Optionally cleanup mounted diretory, chroot and chromeos tree. - if self._cleanup == 'mount' or self._cleanup == 'chroot' or \ - self._cleanup == 'chromeos': - # No exceptions are allowed from this method. - try: - self._l.LogOutput('[Cleanup] - Unmounting directories ...') - self.MountGccSourceAndBuildDir(unmount=True) - except: - print 'Warning: failed to unmount gcc source/build directory.' - - if self._cleanup == 'chroot' or self._cleanup == 'chromeos': - self._l.LogOutput('[Cleanup]: Deleting chroot inside \'{0}\''.format( - self._chromeos_root)) - command = 'cd %s; cros_sdk --delete' % self._chromeos_root - rv = self._executer.RunCommand(command) - if rv: - self._l.LogWarning('Warning - failed to delete chroot.') - # Delete .cache - crosbug.com/34956 - command = 'sudo rm -fr %s' % os.path.join(self._chromeos_root, '.cache') - rv = self._executer.RunCommand(command) - if rv: - self._l.LogWarning('Warning - failed to delete \'.cache\'.') - - if self._cleanup == 'chromeos': - self._l.LogOutput('[Cleanup]: Deleting chromeos tree \'{0}\' ...'.format( - self._chromeos_root)) - command = 'rm -fr {0}'.format(self._chromeos_root) - rv = self._executer.RunCommand(command) - if rv: - self._l.LogWarning('Warning - failed to remove chromeos tree.') - - def PrepareTestingRsaKeys(self): - if not path.isfile(self._tmp_testing_rsa_abs): - shutil.copy( - path.join(self._chromeos_root, - 'src/scripts/mod_for_test_scripts/ssh_keys/testing_rsa'), - self._tmp_testing_rsa_abs) - os.chmod(self._tmp_testing_rsa_abs, stat.S_IRUSR) - - def PrepareTestFiles(self): - """Prepare site.exp and board exp files.""" - # Create the boards directory. - os.mkdir('%s/boards' % self._tmp_abs) - - # Generate the chromeos.exp file. - with open('%s/chromeos.exp.in' % self._base_dir, 'r') as template_file: - content = template_file.read() - substitutions = dict({ - '__boardname__': self._board, - '__board_hostname__': self._remote, - '__tmp_testing_rsa__': self._tmp_testing_rsa, - '__tmp_dir__': self._tmp - }) - for pat, sub in substitutions.items(): - content = content.replace(pat, sub) - - board_file_name = '%s/boards/%s.exp' % (self._tmp_abs, self._board) - with open(board_file_name, 'w') as board_file: - board_file.write(content) - - # Generate the site file - with open('%s/site.exp' % self._tmp_abs, 'w') as site_file: - site_file.write('set target_list "%s"\n' % self._board) - - def PrepareGcc(self): - if self._gcc_source_dir: - self.PrepareGccFromCustomizedPath() - else: - self.PrepareGccDefault() - self._l.LogOutput('Gcc source dir - {0}'.format(self._gcc_source_dir)) - self._l.LogOutput('Gcc build dir - {0}'.format(self._gcc_top_build_dir)) - - def PrepareGccFromCustomizedPath(self): - """Prepare gcc source, build directory from mounted source.""" - # We have these source directories - - # _gcc_source_dir - # e.g. '/usr/local/toolchain_root/gcc' - # _gcc_source_dir_abs - # e.g. '/somewhere/chromeos.live/chroot/usr/local/toolchain_root/gcc' - # _gcc_source_dir_to_mount - # e.g. '/somewhere/gcc' - self._gcc_source_dir_abs = path.join(self._chromeos_chroot, - self._gcc_source_dir.lstrip('/')) - if not path.isdir(self._gcc_source_dir_abs) and \ - self._executer.RunCommand( - 'sudo mkdir -p {0}'.format(self._gcc_source_dir_abs)): - raise RuntimeError("Failed to create \'{0}\' inside chroot.".format( - self._gcc_source_dir)) - if not (path.isdir(self._gcc_source_dir_to_mount) and - path.isdir(path.join(self._gcc_source_dir_to_mount, 'gcc'))): - raise RuntimeError('{0} is not a valid gcc source tree.'.format( - self._gcc_source_dir_to_mount)) - - # We have these build directories - - # _gcc_top_build_dir - # e.g. '/usr/local/toolchain_root/gcc-build-x86_64-cros-linux-gnu' - # _gcc_top_build_dir_abs - # e.g. '/somewhere/chromeos.live/chroo/tusr/local/toolchain_root/ - # gcc-build-x86_64-cros-linux-gnu' - # _gcc_build_dir - # e.g. '/usr/local/toolchain_root/gcc-build-x86_64-cros-linux-gnu/gcc' - # _gcc_build_dir_to_mount - # e.g. '/somewhere/gcc-build-x86_64-cros-linux-gnu' - self._gcc_top_build_dir = '{0}-build-{1}'.format( - self._gcc_source_dir.rstrip('/'), self._target) - self._gcc_build_dir = path.join(self._gcc_top_build_dir, 'gcc') - self._gcc_build_dir_to_mount = '{0}-build-{1}'.format( - self._gcc_source_dir_to_mount, self._target) - self._gcc_top_build_dir_abs = path.join(self._chromeos_chroot, - self._gcc_top_build_dir.lstrip('/')) - if not path.isdir(self._gcc_top_build_dir_abs) and \ - self._executer.RunCommand( - 'sudo mkdir -p {0}'.format(self._gcc_top_build_dir_abs)): - raise RuntimeError('Failed to create \'{0}\' inside chroot.'.format( - self._gcc_top_build_dir)) - if not (path.isdir(self._gcc_build_dir_to_mount) and path.join( - self._gcc_build_dir_to_mount, 'gcc')): - raise RuntimeError('{0} is not a valid gcc build tree.'.format( - self._gcc_build_dir_to_mount)) - - # All check passed. Now mount gcc source and build directories. - self.MountGccSourceAndBuildDir() - - def PrepareGccDefault(self): - """Auto emerging gcc for building purpose only.""" - ret = self._executer.ChrootRunCommandWOutput( - self._chromeos_root, 'equery w cross-%s/gcc' % self._target)[1] - ret = path.basename(ret.strip()) - # ret is expected to be something like 'gcc-4.6.2-r11.ebuild' or - # 'gcc-9999.ebuild' parse it. - matcher = re.match('((.*)-r\d+).ebuild', ret) - if matcher: - gccrevision, gccversion = matcher.group(1, 2) - elif ret == 'gcc-9999.ebuild': - gccrevision = 'gcc-9999' - gccversion = 'gcc-9999' - else: - raise RuntimeError('Failed to get gcc version.') - - gcc_portage_dir = '/var/tmp/portage/cross-%s/%s/work' % (self._target, - gccrevision) - self._gcc_source_dir = path.join(gcc_portage_dir, gccversion) - self._gcc_top_build_dir = (gcc_portage_dir + '/%s-build-%s') % ( - gccversion, self._target) - self._gcc_build_dir = path.join(self._gcc_top_build_dir, 'gcc') - gcc_build_dir_abs = path.join(self._chromeos_root, 'chroot', - self._gcc_build_dir.lstrip('/')) - if not path.isdir(gcc_build_dir_abs): - ret = self._executer.ChrootRunCommand(self._chromeos_root, ( - 'ebuild $(equery w cross-%s/gcc) clean prepare compile' % ( - self._target))) - if ret: - raise RuntimeError('ebuild gcc failed.') - - def MakeCheck(self): - self.MountGccSourceAndBuildDir() - cmd = ('cd %s ; ' - 'DEJAGNU=%s make %s RUNTESTFLAGS="--target_board=%s %s"' % - (self._gcc_build_dir, path.join(self._tmp, 'site.exp'), - self.MakeCheckString(), self._board, self._flags)) - self._executer.ChrootRunCommand(self._chromeos_root, cmd) - - def ValidateFailures(self): - validate_failures_py = path.join( - self._gcc_source_dir, - 'contrib/testsuite-management/validate_failures.py') - cmd = 'cd {0} ; {1} --build_dir={0}'.format(self._gcc_top_build_dir, - validate_failures_py) - self.MountGccSourceAndBuildDir() - ret = self._executer.ChrootRunCommandWOutput(self._chromeos_root, cmd) - if ret[0] != 0: - self._l.LogWarning('*** validate_failures.py exited with non-zero code,' - 'please run it manually inside chroot - \n' - ' ' + cmd) - return ret - - # This method ensures necessary mount points before executing chroot comamnd. - def MountGccSourceAndBuildDir(self, unmount=False): - mount_points = [tc_enter_chroot.MountPoint(self._gcc_source_dir_to_mount, - self._gcc_source_dir_abs, - getpass.getuser(), 'ro'), - tc_enter_chroot.MountPoint(self._gcc_build_dir_to_mount, - self._gcc_top_build_dir_abs, - getpass.getuser(), 'rw')] - for mp in mount_points: - if unmount: - if mp.UnMount(): - raise RuntimeError('Failed to unmount {0}'.format(mp.mount_dir)) - else: - self._l.LogOutput('{0} unmounted successfully.'.format(mp.mount_dir)) - elif mp.DoMount(): - raise RuntimeError( - 'Failed to mount {0} onto {1}'.format(mp.external_dir, - mp.mount_dir)) - else: - self._l.LogOutput('{0} mounted successfully.'.format(mp.mount_dir)) - -# The end of class DejagnuExecuter - - -def TryAcquireMachine(remotes): - available_machine = None - for r in remotes.split(','): - machine = lock_machine.Machine(r) - if machine.TryLock(timeout=300, exclusive=True): - available_machine = machine - break - else: - logger.GetLogger().LogWarning( - '*** Failed to lock machine \'{0}\'.'.format(r)) - if not available_machine: - raise RuntimeError("Failed to acquire one machine from \'{0}\'.".format( - remotes)) - return available_machine - - -def Main(argv): - opts = ProcessArguments(argv) - available_machine = TryAcquireMachine(opts.remote) - executer = DejagnuExecuter( - misc.GetRoot(argv[0])[0], opts.mount, opts.chromeos_root, - available_machine._name, opts.board, opts.flags, - opts.keep_intermediate_files, opts.tools, opts.cleanup) - # Return value is a 3- or 4-element tuple - # element#1 - exit code - # element#2 - stdout - # element#3 - stderr - # element#4 - exception infor - # Some other scripts need these detailed information. - ret = (1, '', '') - try: - executer.SetupTestingDir() - executer.PrepareTestingRsaKeys() - executer.PrepareTestFiles() - executer.PrepareGcc() - executer.MakeCheck() - ret = executer.ValidateFailures() - except Exception as e: - # At least log the exception on console. - print e - # The #4 element encodes the runtime exception. - ret = (1, '', '', 'Exception happened during execution: \n' + str(e)) - finally: - available_machine.Unlock(exclusive=True) - executer.CleanupIntermediateFiles() - executer.Cleanup() - return ret - - -if __name__ == '__main__': - retval = Main(sys.argv)[0] - sys.exit(retval) diff --git a/deprecated/dejagnu/site.exp b/deprecated/dejagnu/site.exp deleted file mode 100644 index beaa958d..00000000 --- a/deprecated/dejagnu/site.exp +++ /dev/null @@ -1 +0,0 @@ -set target_list "chromeos-machine" diff --git a/deprecated/fdo_scripts/divide_and_merge_profiles.py b/deprecated/fdo_scripts/divide_and_merge_profiles.py deleted file mode 100755 index 5108aa6f..00000000 --- a/deprecated/fdo_scripts/divide_and_merge_profiles.py +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. -"""Script to divide and merge profiles.""" - -import copy -import optparse -import os -import pickle -import re -import sys -import tempfile - -import build_chrome_browser -import lock_machine -import run_tests -from cros_utils import command_executer -from cros_utils import logger - - -class ProfileMerger: - - def __init__(self, inputs, output, chunk_size, merge_program, multipliers): - self._inputs = inputs - self._output = output - self._chunk_size = chunk_size - self._merge_program = merge_program - self._multipliers = multipliers - self._ce = command_executer.GetCommandExecuter() - self._l = logger.GetLogger() - - def _GetFilesSetForInputDir(self, input_dir): - output_file = tempfile.mktemp() - command = "find %s -name '*.gcda' -o -name '*.imports' > %s" % (input_dir, - output_file) - self._ce.RunCommand(command) - files = open(output_file, 'r').read() - files_set = set([]) - for f in files.splitlines(): - stripped_file = f.replace(input_dir, '', 1) - stripped_file = stripped_file.lstrip('/') - files_set.add(stripped_file) - return files_set - - def _PopulateFilesSet(self): - self._files_set = set([]) - for i in self._inputs: - current_files_set = self._GetFilesSetForInputDir(i) - self._files_set.update(current_files_set) - - def _GetSubset(self): - ret = [] - for i in range(self._chunk_size): - if not self._files_set: - break - ret.append(self._files_set.pop()) - return ret - - def _CopyFilesTree(self, input_dir, files, output_dir): - for f in files: - src_file = os.path.join(input_dir, f) - dst_file = os.path.join(output_dir, f) - if not os.path.isdir(os.path.dirname(dst_file)): - command = 'mkdir -p %s' % os.path.dirname(dst_file) - self._ce.RunCommand(command) - command = 'cp %s %s' % (src_file, dst_file) - self._ce.RunCommand(command) - - def _DoChunkMerge(self, current_files): - temp_dirs = [] - for i in self._inputs: - temp_dir = tempfile.mkdtemp() - temp_dirs.append(temp_dir) - self._CopyFilesTree(i, current_files, temp_dir) - # Now do the merge. - command = ('%s --inputs=%s --output=%s' % - (self._merge_program, ','.join(temp_dirs), self._output)) - if self._multipliers: - command = ('%s --multipliers=%s' % (command, self._multipliers)) - ret = self._ce.RunCommand(command) - assert ret == 0, '%s command failed!' % command - for temp_dir in temp_dirs: - command = 'rm -rf %s' % temp_dir - self._ce.RunCommand(command) - - def DoMerge(self): - self._PopulateFilesSet() - while True: - current_files = self._GetSubset() - if not current_files: - break - self._DoChunkMerge(current_files) - - -def Main(argv): - """The main function.""" - # Common initializations - ### command_executer.InitCommandExecuter(True) - command_executer.InitCommandExecuter() - l = logger.GetLogger() - ce = command_executer.GetCommandExecuter() - parser = optparse.OptionParser() - parser.add_option('--inputs', - dest='inputs', - help='Comma-separated input profile directories to merge.') - parser.add_option('--output', dest='output', help='Output profile directory.') - parser.add_option('--chunk_size', - dest='chunk_size', - default='50', - help='Chunk size to divide up the profiles into.') - parser.add_option('--merge_program', - dest='merge_program', - default='/home/xur/bin/profile_merge_v15.par', - help='Merge program to use to do the actual merge.') - parser.add_option('--multipliers', - dest='multipliers', - help='multipliers to use when merging. (optional)') - - options, _ = parser.parse_args(argv) - - if not all([options.inputs, options.output]): - l.LogError('Must supply --inputs and --output') - return 1 - - try: - pm = ProfileMerger( - options.inputs.split(','), options.output, int(options.chunk_size), - options.merge_program, options.multipliers) - pm.DoMerge() - retval = 0 - except: - retval = 1 - finally: - print 'My work is done...' - return retval - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/fdo_scripts/divide_and_merge_profiles_test.py b/deprecated/fdo_scripts/divide_and_merge_profiles_test.py deleted file mode 100755 index 2bfb5cf1..00000000 --- a/deprecated/fdo_scripts/divide_and_merge_profiles_test.py +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import os -import random -import shutil -import tempfile -import unittest - -from cros_utils import command_executer -from cros_utils import misc - - -class DivideAndMergeProfilesTest(unittest.TestCase): - - def tearDown(self): - shutil.rmtree(self._program_dir) - for profile_dir in self._profile_dirs: - shutil.rmtree(profile_dir) - - def setUp(self): - self._ce = command_executer.GetCommandExecuter() - self._program_dir = tempfile.mkdtemp() - self._writeProgram() - self._writeMakefile() - with misc.WorkingDirectory(self._program_dir): - self._ce.RunCommand('make') - num_profile_dirs = 2 - self._profile_dirs = [] - for i in range(num_profile_dirs): - profile_dir = tempfile.mkdtemp() - command = ('GCOV_PREFIX_STRIP=%s GCOV_PREFIX=$(/bin/pwd) ' - ' %s/program' % (profile_dir.count('/'), self._program_dir)) - with misc.WorkingDirectory(profile_dir): - self._ce.RunCommand(command) - self._profile_dirs.append(profile_dir) - self._merge_program = '/home/build/static/projects/crosstool/profile-merge/v14.5/profile_merge.par' - - def _writeMakefile(self): - makefile_contents = """ -CC = gcc - -CFLAGS = -fprofile-generate - -SRCS=$(wildcard *.c) - -OBJS=$(SRCS:.c=.o) - -all: program - -program: $(OBJS) - $(CC) -o $@ $^ $(CFLAGS) - -%.o: %.c - $(CC) -c -o $@ $^ $(CFLAGS)""" - - makefile = os.path.join(self._program_dir, 'Makefile') - with open(makefile, 'w') as f: - print >> f, makefile_contents - - def _writeProgram(self, num_files=100): - for i in range(num_files): - current_file = os.path.join(self._program_dir, '%s.c' % i) - with open(current_file, 'w') as f: - if i != num_files - 1: - print >> f, 'extern void foo%s();' % (i + 1) - print >> f, 'void foo%s(){foo%s();}' % (i, i + 1) - else: - print >> f, "void foo%s(){printf(\"\");}" % i - if i == 0: - print >> f, 'int main(){foo%s(); return 0;}' % i - - def testMerge(self): - reference_output = self._getReferenceOutput() - my_output = self._getMyOutput() - - ret = self._diffOutputs(reference_output, my_output) - shutil.rmtree(my_output) - shutil.rmtree(reference_output) - self.assertTrue(ret == 0) - - def _diffOutputs(self, reference, mine): - command = 'diff -uNr %s %s' % (reference, mine) - return self._ce.RunCommand(command) - - def _getMyOutput(self, args=''): - my_output = tempfile.mkdtemp() - my_merge_program = os.path.join( - os.path.dirname(__file__), 'divide_and_merge_profiles.py') - command = ('python %s --inputs=%s --output=%s ' - '--chunk_size=10 ' - '--merge_program=%s ' - '%s' % (my_merge_program, ','.join(self._profile_dirs), - my_output, self._merge_program, args)) - self._ce.RunCommand(command) - return my_output - - def _getReferenceOutput(self, args=''): - # First do a regular merge. - reference_output = tempfile.mkdtemp() - command = ('%s --inputs=%s --output=%s %s' % - (self._merge_program, ','.join(self._profile_dirs), - reference_output, args)) - self._ce.RunCommand(command) - return reference_output - - def testMergeWithMultipliers(self): - num_profiles = len(self._profile_dirs) - multipliers = [str(random.randint(0, num_profiles)) \ - for _ in range(num_profiles)] - args = '--multipliers=%s' % ','.join(multipliers) - - reference_output = self._getReferenceOutput(args) - my_output = self._getMyOutput(args) - - ret = self._diffOutputs(reference_output, my_output) - - shutil.rmtree(my_output) - shutil.rmtree(reference_output) - self.assertTrue(ret == 0) - - -if __name__ == '__main__': - unittest.main() diff --git a/deprecated/fdo_scripts/profile_cycler.py b/deprecated/fdo_scripts/profile_cycler.py deleted file mode 100755 index 176f2d4a..00000000 --- a/deprecated/fdo_scripts/profile_cycler.py +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2011 Google Inc. All Rights Reserved. -"""Script to profile a page cycler, and get it back to the host.""" - -import copy -import optparse -import os -import pickle -import re -import sys -import tempfile -import time - -import build_chrome_browser -import cros_login -import lock_machine -import run_tests -from cros_utils import command_executer -from cros_utils import logger -from cros_utils import misc - - -class CyclerProfiler: - REMOTE_TMP_DIR = '/tmp' - - def __init__(self, chromeos_root, board, cycler, profile_dir, remote): - self._chromeos_root = chromeos_root - self._cycler = cycler - self._profile_dir = profile_dir - self._remote = remote - self._board = board - self._ce = command_executer.GetCommandExecuter() - self._l = logger.GetLogger() - - self._gcov_prefix = os.path.join(self.REMOTE_TMP_DIR, self._GetProfileDir()) - - def _GetProfileDir(self): - return misc.GetCtargetFromBoard(self._board, self._chromeos_root) - - def _CopyTestData(self): - page_cycler_dir = os.path.join(self._chromeos_root, 'distfiles', 'target', - 'chrome-src-internal', 'src', 'data', - 'page_cycler') - if not os.path.isdir(page_cycler_dir): - raise RuntimeError('Page cycler dir %s not found!' % page_cycler_dir) - self._ce.CopyFiles(page_cycler_dir, - os.path.join(self.REMOTE_TMP_DIR, 'page_cycler'), - dest_machine=self._remote, - chromeos_root=self._chromeos_root, - recursive=True, - dest_cros=True) - - def _PrepareTestData(self): - # chmod files so everyone can read them. - command = ('cd %s && find page_cycler -type f | xargs chmod a+r' % - self.REMOTE_TMP_DIR) - self._ce.CrosRunCommand(command, - chromeos_root=self._chromeos_root, - machine=self._remote) - command = ('cd %s && find page_cycler -type d | xargs chmod a+rx' % - self.REMOTE_TMP_DIR) - self._ce.CrosRunCommand(command, - chromeos_root=self._chromeos_root, - machine=self._remote) - - def _CopyProfileToHost(self): - dest_dir = os.path.join(self._profile_dir, - os.path.basename(self._gcov_prefix)) - # First remove the dir if it exists already - if os.path.exists(dest_dir): - command = 'rm -rf %s' % dest_dir - self._ce.RunCommand(command) - - # Strip out the initial prefix for the Chrome directory before doing the - # copy. - chrome_dir_prefix = misc.GetChromeSrcDir() - - command = 'mkdir -p %s' % dest_dir - self._ce.RunCommand(command) - self._ce.CopyFiles(self._gcov_prefix, - dest_dir, - src_machine=self._remote, - chromeos_root=self._chromeos_root, - recursive=True, - src_cros=True) - - def _RemoveRemoteProfileDir(self): - command = 'rm -rf %s' % self._gcov_prefix - self._ce.CrosRunCommand(command, - chromeos_root=self._chromeos_root, - machine=self._remote) - - def _LaunchCycler(self, cycler): - command = ( - 'DISPLAY=:0 ' - 'XAUTHORITY=/home/chronos/.Xauthority ' - 'GCOV_PREFIX=%s ' - 'GCOV_PREFIX_STRIP=3 ' - '/opt/google/chrome/chrome ' - '--no-sandbox ' - '--renderer-clean-exit ' - '--user-data-dir=$(mktemp -d) ' - "--url \"file:///%s/page_cycler/%s/start.html?iterations=10&auto=1\" " - '--enable-file-cookies ' - '--no-first-run ' - '--js-flags=expose_gc &' % (self._gcov_prefix, self.REMOTE_TMP_DIR, - cycler)) - - self._ce.CrosRunCommand(command, - chromeos_root=self._chromeos_root, - machine=self._remote, - command_timeout=60) - - def _PkillChrome(self, signal='9'): - command = 'pkill -%s chrome' % signal - self._ce.CrosRunCommand(command, - chromeos_root=self._chromeos_root, - machine=self._remote) - - def DoProfile(self): - # Copy the page cycler data to the remote - self._CopyTestData() - self._PrepareTestData() - self._RemoveRemoteProfileDir() - - for cycler in self._cycler.split(','): - self._ProfileOneCycler(cycler) - - # Copy the profile back - self._CopyProfileToHost() - - def _ProfileOneCycler(self, cycler): - # With aura, all that's needed is a stop/start ui. - self._PkillChrome() - cros_login.RestartUI(self._remote, self._chromeos_root, login=False) - # Run the cycler - self._LaunchCycler(cycler) - self._PkillChrome(signal='INT') - # Let libgcov dump the profile. - # TODO(asharif): There is a race condition here. Fix it later. - time.sleep(30) - - -def Main(argv): - """The main function.""" - # Common initializations - ### command_executer.InitCommandExecuter(True) - command_executer.InitCommandExecuter() - l = logger.GetLogger() - ce = command_executer.GetCommandExecuter() - parser = optparse.OptionParser() - parser.add_option('--cycler', - dest='cycler', - default='alexa_us', - help=('Comma-separated cyclers to profile. ' - 'Example: alexa_us,moz,moz2' - 'Use all to profile all cyclers.')) - parser.add_option('--chromeos_root', - dest='chromeos_root', - default='../../', - help='Output profile directory.') - parser.add_option('--board', - dest='board', - default='x86-zgb', - help='The target board.') - parser.add_option('--remote', - dest='remote', - help=('The remote chromeos machine that' - ' has the profile image.')) - parser.add_option('--profile_dir', - dest='profile_dir', - default='profile_dir', - help='Store profiles in this directory.') - - options, _ = parser.parse_args(argv) - - all_cyclers = ['alexa_us', 'bloat', 'dhtml', 'dom', 'intl1', 'intl2', - 'morejs', 'morejsnp', 'moz', 'moz2'] - - if options.cycler == 'all': - options.cycler = ','.join(all_cyclers) - - try: - cp = CyclerProfiler(options.chromeos_root, options.board, options.cycler, - options.profile_dir, options.remote) - cp.DoProfile() - retval = 0 - except Exception as e: - retval = 1 - print e - finally: - print 'Exiting...' - return retval - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/fdo_scripts/summarize_hot_blocks.py b/deprecated/fdo_scripts/summarize_hot_blocks.py deleted file mode 100644 index 20c07fa4..00000000 --- a/deprecated/fdo_scripts/summarize_hot_blocks.py +++ /dev/null @@ -1,187 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -"""Summarize hottest basic blocks found while doing a ChromeOS FDO build. - -Here is an example execution: - - summarize_hot_blocks.py - --data_dir=~/chromeos/chroot/var/cache/chromeos-chrome/ --cutoff=10000 - --output_dir=/home/x/y - -With the cutoff, it will ignore any basic blocks that have a count less -than what is specified (in this example 10000) -The script looks inside the directory (this is typically a directory where -the object files are generated) for files with *.profile and *.optimized -suffixes. To get these, the following flags were added to the compiler -invokation within vanilla_vs_fdo.py in the profile-use phase. - - "-fdump-tree-optimized-blocks-lineno " - "-fdump-ipa-profile-blocks-lineno " - -Here is an example of the *.profile and *.optimized files contents: - -# BLOCK 7 freq:3901 count:60342, starting at line 92 -# PRED: 6 [39.0%] count:60342 (true,exec) - [url_canon_internal.cc : 92:28] MEM[(const char * *)source_6(D) + 16B] = - D.28080_17; - [url_canon_internal.cc : 93:41] MEM[(struct Component *)parsed_4(D) + 16B] = - MEM[(const struct Component &)repl_1(D) + 80]; -# SUCC: 8 [100.0%] count:60342 (fallthru,exec) -# BLOCK 8 freq:10000 count:154667, starting at line 321 -# PRED: 7 [100.0%] count:60342 (fallthru,exec) 6 [61.0%] count:94325 -(false,exec) - [url_canon_internal.cc : 321:51] # DEBUG D#10 => - [googleurl/src/url_canon_internal.cc : 321] &parsed_4(D)->host - -this script finds the blocks with highest count and shows the first line -of each block so that it is easy to identify the origin of the basic block. - -""" - -__author__ = 'llozano@google.com (Luis Lozano)' - -import optparse -import os -import re -import shutil -import sys -import tempfile - -from cros_utils import command_executer - - -# Given a line, check if it has a block count and return it. -# Return -1 if there is no match -def GetBlockCount(line): - match_obj = re.match('.*# BLOCK \d+ .*count:(\d+)', line) - if match_obj: - return int(match_obj.group(1)) - else: - return -1 - - -class Collector(object): - - def __init__(self, data_dir, cutoff, output_dir, tempdir): - self._data_dir = data_dir - self._cutoff = cutoff - self._output_dir = output_dir - self._tempdir = tempdir - self._ce = command_executer.GetCommandExecuter() - - def CollectFileList(self, file_exp, list_file): - command = ("find %s -type f -name '%s' > %s" % - (self._data_dir, file_exp, - os.path.join(self._tempdir, list_file))) - ret = self._ce.RunCommand(command) - if ret: - raise RuntimeError('Failed: %s' % command) - - def SummarizeLines(self, data_file): - sum_lines = [] - search_lno = False - for line in data_file: - count = GetBlockCount(line) - if count != -1: - if count >= self._cutoff: - search_lno = True - sum_line = line.strip() - sum_count = count - # look for a line that starts with line number information - elif search_lno and re.match('^\s*\[.*: \d*:\d*]', line): - search_lno = False - sum_lines.append('%d:%s: %s %s' % - (sum_count, data_file.name, sum_line, line)) - return sum_lines - - # Look for blocks in the data file that have a count larger than the cutoff - # and generate a sorted summary file of the hottest blocks. - def SummarizeFile(self, data_file, sum_file): - with open(data_file, 'r') as f: - sum_lines = self.SummarizeLines(f) - - # sort reverse the list in place by the block count number - sum_lines.sort(key=GetBlockCount, reverse=True) - - with open(sum_file, 'w') as sf: - sf.write(''.join(sum_lines)) - - print 'Generated file Summary: ', sum_file - - # Find hottest blocks in the list of files, generate a sorted summary for - # each file and then do a sorted merge of all the summaries. - def SummarizeList(self, list_file, summary_file): - with open(os.path.join(self._tempdir, list_file)) as f: - sort_list = [] - for file_name in f: - file_name = file_name.strip() - sum_file = '%s.sum' % file_name - sort_list.append('%s%s' % (sum_file, chr(0))) - self.SummarizeFile(file_name, sum_file) - - tmp_list_file = os.path.join(self._tempdir, 'file_list.dat') - with open(tmp_list_file, 'w') as file_list_file: - for x in sort_list: - file_list_file.write(x) - - merge_command = ('sort -nr -t: -k1 --merge --files0-from=%s > %s ' % - (tmp_list_file, summary_file)) - - ret = self._ce.RunCommand(merge_command) - if ret: - raise RuntimeError('Failed: %s' % merge_command) - print 'Generated general summary: ', summary_file - - def SummarizePreOptimized(self, summary_file): - self.CollectFileList('*.profile', 'chrome.profile.list') - self.SummarizeList('chrome.profile.list', - os.path.join(self._output_dir, summary_file)) - - def SummarizeOptimized(self, summary_file): - self.CollectFileList('*.optimized', 'chrome.optimized.list') - self.SummarizeList('chrome.optimized.list', - os.path.join(self._output_dir, summary_file)) - - -def Main(argv): - command_executer.InitCommandExecuter() - usage = ('usage: %prog --data_dir= --cutoff= ' - '--output_dir= [--keep_tmp]') - parser = optparse.OptionParser(usage=usage) - parser.add_option('--data_dir', - dest='data_dir', - help=('directory where the FDO (*.profile and ' - '*.optimized) files are located')) - parser.add_option('--cutoff', - dest='cutoff', - help='Minimum count to consider for each basic block') - parser.add_option('--output_dir', - dest='output_dir', - help=('directory where summary data will be generated' - '(pre_optimized.txt, optimized.txt)')) - parser.add_option('--keep_tmp', - action='store_true', - dest='keep_tmp', - default=False, - help=('Keep directory with temporary files' - '(for debugging purposes)')) - options = parser.parse_args(argv)[0] - if not all((options.data_dir, options.cutoff, options.output_dir)): - parser.print_help() - sys.exit(1) - - tempdir = tempfile.mkdtemp() - - co = Collector(options.data_dir, int(options.cutoff), options.output_dir, - tempdir) - co.SummarizePreOptimized('pre_optimized.txt') - co.SummarizeOptimized('optimized.txt') - - if not options.keep_tmp: - shutil.rmtree(tempdir, ignore_errors=True) - - return 0 - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/fdo_scripts/vanilla_vs_fdo.py b/deprecated/fdo_scripts/vanilla_vs_fdo.py deleted file mode 100644 index 6f42839d..00000000 --- a/deprecated/fdo_scripts/vanilla_vs_fdo.py +++ /dev/null @@ -1,312 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -"""Script to build chrome with FDO and compare performance against no FDO.""" - -import getpass -import optparse -import os -import sys - -import image_chromeos -import setup_chromeos -from cros_utils import command_executer -from cros_utils import misc -from cros_utils import logger - - -class Patcher(object): - - def __init__(self, dir_to_patch, patch_file): - self._dir_to_patch = dir_to_patch - self._patch_file = patch_file - self._base_patch_command = 'patch -p0 %%s < %s' % patch_file - self._ce = command_executer.GetCommandExecuter() - - def _RunPatchCommand(self, args): - patch_command = self._base_patch_command % args - command = ('cd %s && %s' % (self._dir_to_patch, patch_command)) - return self._ce.RunCommand(command) - - def _ApplyPatch(self, args): - full_args = '%s --dry-run' % args - ret = self._RunPatchCommand(full_args) - if ret: - raise RuntimeError('Patch dry run failed!') - ret = self._RunPatchCommand(args) - if ret: - raise RuntimeError('Patch application failed!') - - def __enter__(self): - self._ApplyPatch('') - - def __exit__(self, type, value, traceback): - self._ApplyPatch('-R') - - -class FDOComparator(object): - - def __init__(self, board, remotes, ebuild_version, plus_pgo, minus_pgo, - update_pgo, chromeos_root): - self._board = board - self._remotes = remotes - self._ebuild_version = ebuild_version - self._remote = remotes.split(',')[0] - self._chromeos_root = chromeos_root - self._profile_dir = 'profile_dir' - self._profile_path = os.path.join(self._chromeos_root, 'src', 'scripts', - os.path.basename(self._profile_dir)) - self._plus_pgo = plus_pgo - self._minus_pgo = minus_pgo - self._update_pgo = update_pgo - - self._ce = command_executer.GetCommandExecuter() - self._l = logger.GetLogger() - - def _CheckoutChromeOS(self): - if not os.path.exists(self._chromeos_root): - setup_chromeos_args = [setup_chromeos.__file__, - '--dir=%s' % self._chromeos_root, '--minilayout'] - setup_chromeos.Main(setup_chromeos_args) - - def _BuildChromeOSUsingBinaries(self): - image_dir = misc.GetImageDir(self._chromeos_root, self._board) - command = 'equery-%s l chromeos' % self._board - ret = self._ce.ChrootRunCommand(self._chromeos_root, command) - if ret: - command = misc.GetSetupBoardCommand(self._board, usepkg=True) - ret = self._ce.ChrootRunCommand(self._chromeos_root, command) - if ret: - raise RuntimeError("Couldn't run setup_board!") - command = misc.GetBuildPackagesCommand(self._board, True) - ret = self._ce.ChrootRunCommand(self._chromeos_root, command) - if ret: - raise RuntimeError("Couldn't run build_packages!") - - def _ReportMismatches(self, build_log): - mismatch_signature = '-Wcoverage-mismatch' - mismatches = build_log.count(mismatch_signature) - self._l.LogOutput('Total mismatches: %s' % mismatches) - stale_files = set([]) - for line in build_log.splitlines(): - if mismatch_signature in line: - filename = line.split(':')[0] - stale_files.add(filename) - self._l.LogOutput('Total stale files: %s' % len(stale_files)) - - def _BuildChromeAndImage(self, - ebuild_version='', - env_dict={}, - cflags='', - cxxflags='', - ldflags='', - label='', - build_image_args=''): - env_string = misc.GetEnvStringFromDict(env_dict) - if not label: - label = ' '.join([env_string, cflags, cxxflags, ldflags, ebuild_version]) - label = label.strip() - label = misc.GetFilenameFromString(label) - if not misc.DoesLabelExist(self._chromeos_root, self._board, label): - build_chrome_browser_args = ['--clean', '--chromeos_root=%s' % - self._chromeos_root, '--board=%s' % - self._board, '--env=%r' % env_string, - '--cflags=%r' % cflags, '--cxxflags=%r' % - cxxflags, '--ldflags=%r' % ldflags, - '--ebuild_version=%s' % ebuild_version, - '--build_image_args=%s' % build_image_args] - - build_chrome_browser = os.path.join( - os.path.dirname(__file__), '..', 'build_chrome_browser.py') - command = 'python %s %s' % (build_chrome_browser, - ' '.join(build_chrome_browser_args)) - ret, out, err = self._ce.RunCommandWOutput(command) - if '-fprofile-use' in cxxflags: - self._ReportMismatches(out) - - if ret: - raise RuntimeError("Couldn't build chrome browser!") - misc.LabelLatestImage(self._chromeos_root, self._board, label) - return label - - def _TestLabels(self, labels): - experiment_file = 'pgo_experiment.txt' - experiment_header = """ - board: %s - remote: %s - """ % (self._board, self._remotes) - experiment_tests = """ - benchmark: desktopui_PyAutoPerfTests { - iterations: 1 - } - """ - - with open(experiment_file, 'w') as f: - print >> f, experiment_header - print >> f, experiment_tests - for label in labels: - # TODO(asharif): Fix crosperf so it accepts labels with symbols - crosperf_label = label - crosperf_label = crosperf_label.replace('-', 'minus') - crosperf_label = crosperf_label.replace('+', 'plus') - experiment_image = """ - %s { - chromeos_image: %s - } - """ % (crosperf_label, os.path.join( - misc.GetImageDir(self._chromeos_root, self._board), label, - 'chromiumos_test_image.bin')) - print >> f, experiment_image - crosperf = os.path.join( - os.path.dirname(__file__), '..', 'crosperf', 'crosperf') - command = '%s %s' % (crosperf, experiment_file) - ret = self._ce.RunCommand(command) - if ret: - raise RuntimeError("Couldn't run crosperf!") - - def _ImageRemote(self, label): - image_path = os.path.join( - misc.GetImageDir(self._chromeos_root, - self._board), label, 'chromiumos_test_image.bin') - image_chromeos_args = [image_chromeos.__file__, '--chromeos_root=%s' % - self._chromeos_root, '--image=%s' % image_path, - '--remote=%s' % self._remote, - '--board=%s' % self._board] - image_chromeos.Main(image_chromeos_args) - - def _ProfileRemote(self): - profile_cycler = os.path.join( - os.path.dirname(__file__), 'profile_cycler.py') - profile_cycler_args = ['--chromeos_root=%s' % self._chromeos_root, - '--cycler=all', '--board=%s' % self._board, - '--profile_dir=%s' % self._profile_path, - '--remote=%s' % self._remote] - command = 'python %s %s' % (profile_cycler, ' '.join(profile_cycler_args)) - ret = self._ce.RunCommand(command) - if ret: - raise RuntimeError("Couldn't profile cycler!") - - def _BuildGenerateImage(self): - # TODO(asharif): add cflags as well. - labels_list = ['fprofile-generate', self._ebuild_version] - label = '_'.join(labels_list) - generate_label = self._BuildChromeAndImage( - env_dict={'USE': 'chrome_internal -pgo pgo_generate'}, - label=label, - ebuild_version=self._ebuild_version, - build_image_args='--rootfs_boost_size=400') - return generate_label - - def _BuildUseImage(self): - ctarget = misc.GetCtargetFromBoard(self._board, self._chromeos_root) - chroot_profile_dir = os.path.join('/home/%s/trunk' % getpass.getuser(), - 'src', 'scripts', self._profile_dir, - ctarget) - cflags = ('-fprofile-use ' - '-fprofile-correction ' - '-Wno-error ' - '-fdump-tree-optimized-blocks-lineno ' - '-fdump-ipa-profile-blocks-lineno ' - '-fno-vpt ' - '-fprofile-dir=%s' % chroot_profile_dir) - labels_list = ['updated_pgo', self._ebuild_version] - label = '_'.join(labels_list) - pgo_use_label = self._BuildChromeAndImage( - env_dict={'USE': 'chrome_internal -pgo'}, - cflags=cflags, - cxxflags=cflags, - ldflags=cflags, - label=label, - ebuild_version=self._ebuild_version) - return pgo_use_label - - def DoAll(self): - self._CheckoutChromeOS() - self._BuildChromeOSUsingBinaries() - labels = [] - - if self._minus_pgo: - minus_pgo = self._BuildChromeAndImage( - env_dict={'USE': 'chrome_internal -pgo'}, - ebuild_version=self._ebuild_version) - labels.append(minus_pgo) - if self._plus_pgo: - plus_pgo = self._BuildChromeAndImage( - env_dict={'USE': 'chrome_internal pgo'}, - ebuild_version=self._ebuild_version) - labels.append(plus_pgo) - - if self._update_pgo: - if not os.path.exists(self._profile_path): - # Build Chrome with -fprofile-generate - generate_label = self._BuildGenerateImage() - # Image to the remote box. - self._ImageRemote(generate_label) - # Profile it using all page cyclers. - self._ProfileRemote() - - # Use the profile directory to rebuild it. - updated_pgo_label = self._BuildUseImage() - labels.append(updated_pgo_label) - - # Run crosperf on all images now. - self._TestLabels(labels) - return 0 - - -def Main(argv): - """The main function.""" - # Common initializations - ### command_executer.InitCommandExecuter(True) - command_executer.InitCommandExecuter() - parser = optparse.OptionParser() - parser.add_option('--remote', - dest='remote', - help='Remote machines to run tests on.') - parser.add_option('--board', - dest='board', - default='x86-zgb', - help='The target board.') - parser.add_option('--ebuild_version', - dest='ebuild_version', - default='', - help='The Chrome ebuild version to use.') - parser.add_option('--plus_pgo', - dest='plus_pgo', - action='store_true', - default=False, - help='Build USE=+pgo.') - parser.add_option('--minus_pgo', - dest='minus_pgo', - action='store_true', - default=False, - help='Build USE=-pgo.') - parser.add_option('--update_pgo', - dest='update_pgo', - action='store_true', - default=False, - help='Update pgo and build Chrome with the update.') - parser.add_option('--chromeos_root', - dest='chromeos_root', - default=False, - help='The chromeos root directory') - options, _ = parser.parse_args(argv) - if not options.board: - print 'Please give a board.' - return 1 - if not options.remote: - print 'Please give at least one remote machine.' - return 1 - if not options.chromeos_root: - print 'Please provide the chromeos root directory.' - return 1 - if not any((options.minus_pgo, options.plus_pgo, options.update_pgo)): - print 'Please provide at least one build option.' - return 1 - fc = FDOComparator(options.board, options.remote, options.ebuild_version, - options.plus_pgo, options.minus_pgo, options.update_pgo, - os.path.expanduser(options.chromeos_root)) - return fc.DoAll() - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/generate-waterfall-reports.py b/deprecated/generate-waterfall-reports.py deleted file mode 100755 index a67cd6ca..00000000 --- a/deprecated/generate-waterfall-reports.py +++ /dev/null @@ -1,853 +0,0 @@ -#!/usr/bin/env python2 -"""Generate summary report for ChromeOS toolchain waterfalls.""" - -# Desired future features (to be added): -# - arguments to allow generating only the main waterfall report, -# or only the rotating builder reports, or only the failures -# report; or the waterfall reports without the failures report. -# - Better way of figuring out which dates/builds to generate -# reports for: probably an argument specifying a date or a date -# range, then use something like the new buildbot utils to -# query the build logs to find the right build numbers for the -# builders for the specified dates. -# - Store/get the json/data files in mobiletc-prebuild's x20 area. -# - Update data in json file to reflect, for each testsuite, which -# tests are not expected to run on which boards; update this -# script to use that data appropriately. -# - Make sure user's prodaccess is up-to-date before trying to use -# this script. -# - Add some nice formatting/highlighting to reports. - -from __future__ import print_function - -import argparse -import getpass -import json -import os -import re -import shutil -import sys -import time - -from cros_utils import command_executer - -# All the test suites whose data we might want for the reports. -TESTS = (('bvt-inline', 'HWTest'), ('bvt-cq', 'HWTest'), ('security', 'HWTest'), - ('kernel_daily_regression', 'HWTest'), ('kernel_daily_benchmarks', - 'HWTest'),) - -# The main waterfall builders, IN THE ORDER IN WHICH WE WANT THEM -# LISTED IN THE REPORT. -WATERFALL_BUILDERS = [ - 'amd64-llvm-next-toolchain', - 'arm-llvm-next-toolchain', - 'arm64-llvm-next-toolchain', -] - -DATA_DIR = '/google/data/rw/users/mo/mobiletc-prebuild/waterfall-report-data/' -ARCHIVE_DIR = '/google/data/rw/users/mo/mobiletc-prebuild/waterfall-reports/' -DOWNLOAD_DIR = '/tmp/waterfall-logs' -MAX_SAVE_RECORDS = 7 -BUILD_DATA_FILE = '%s/build-data.txt' % DATA_DIR -GCC_ROTATING_BUILDER = 'gcc_toolchain' -LLVM_ROTATING_BUILDER = 'llvm_next_toolchain' -ROTATING_BUILDERS = [GCC_ROTATING_BUILDER, LLVM_ROTATING_BUILDER] - -# For int-to-string date conversion. Note, the index of the month in this -# list needs to correspond to the month's integer value. i.e. 'Sep' must -# be as MONTHS[9]. -MONTHS = [ - '', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', - 'Nov', 'Dec' -] - - -def format_date(int_date): - """Convert an integer date to a string date. YYYYMMDD -> YYYY-MMM-DD""" - - if int_date == 0: - return 'today' - - tmp_date = int_date - day = tmp_date % 100 - tmp_date = tmp_date / 100 - month = tmp_date % 100 - year = tmp_date / 100 - - month_str = MONTHS[month] - date_str = '%d-%s-%d' % (year, month_str, day) - return date_str - - -def EmailReport(report_file, report_type, date, email_to): - subject = '%s Waterfall Summary report, %s' % (report_type, date) - sendgmr_path = '/google/data/ro/projects/gws-sre/sendgmr' - command = ('%s --to=%s --subject="%s" --body_file=%s' % - (sendgmr_path, email_to, subject, report_file)) - command_executer.GetCommandExecuter().RunCommand(command) - - -def PruneOldFailures(failure_dict, int_date): - earliest_date = int_date - MAX_SAVE_RECORDS - for suite in failure_dict: - suite_dict = failure_dict[suite] - test_keys_to_remove = [] - for test in suite_dict: - test_dict = suite_dict[test] - msg_keys_to_remove = [] - for msg in test_dict: - fails = test_dict[msg] - i = 0 - while i < len(fails) and fails[i][0] <= earliest_date: - i += 1 - new_fails = fails[i:] - test_dict[msg] = new_fails - if len(new_fails) == 0: - msg_keys_to_remove.append(msg) - - for k in msg_keys_to_remove: - del test_dict[k] - - suite_dict[test] = test_dict - if len(test_dict) == 0: - test_keys_to_remove.append(test) - - for k in test_keys_to_remove: - del suite_dict[k] - - failure_dict[suite] = suite_dict - - -def GetBuildID(build_bot, date): - """Get the build id for a build_bot at a given date.""" - day = '{day:02d}'.format(day=date % 100) - mon = MONTHS[date / 100 % 100] - date_string = mon + ' ' + day - if build_bot in WATERFALL_BUILDERS: - url = 'https://uberchromegw.corp.google.com/i/chromeos/' + \ - 'builders/%s?numbuilds=200' % build_bot - if build_bot in ROTATING_BUILDERS: - url = 'https://uberchromegw.corp.google.com/i/chromiumos.tryserver/' + \ - 'builders/%s?numbuilds=200' % build_bot - command = 'sso_client %s' % url - retval = 1 - retry_time = 3 - while retval and retry_time: - retval, output, _ = \ - command_executer.GetCommandExecuter().RunCommandWOutput(command, \ - print_to_console=False) - retry_time -= 1 - - if retval: - return [] - - out = output.split('\n') - line_num = 0 - build_id = [] - # Parse the output like this - # Dec 14 10:55 - # ?? - # #109 - while line_num < len(out): - if date_string in out[line_num]: - if line_num + 2 < len(out): - build_num_line = out[line_num + 2] - raw_num = re.findall(r'builds/\d+', build_num_line) - # raw_num is ['builds/109'] in the example. - if raw_num: - build_id.append(int(raw_num[0].split('/')[1])) - line_num += 1 - return build_id - - -def GenerateFailuresReport(fail_dict, date): - filename = 'waterfall_report.failures.%s.txt' % date - date_string = format_date(date) - with open(filename, 'w') as out_file: - # Write failure report section. - out_file.write('\n\nSummary of Test Failures as of %s\n\n' % date_string) - - # We want to sort the errors and output them in order of the ones that occur - # most often. So we have to collect the data about all of them, then sort - # it. - error_groups = [] - for suite in fail_dict: - suite_dict = fail_dict[suite] - if suite_dict: - for test in suite_dict: - test_dict = suite_dict[test] - for err_msg in test_dict: - err_list = test_dict[err_msg] - sorted_list = sorted(err_list, key=lambda x: x[0], reverse=True) - err_group = [len(sorted_list), suite, test, err_msg, sorted_list] - error_groups.append(err_group) - - # Sort the errors by the number of errors of each type. Then output them in - # order. - sorted_errors = sorted(error_groups, key=lambda x: x[0], reverse=True) - for i in range(0, len(sorted_errors)): - err_group = sorted_errors[i] - suite = err_group[1] - test = err_group[2] - err_msg = err_group[3] - err_list = err_group[4] - out_file.write('Suite: %s\n' % suite) - out_file.write(' %s (%d failures)\n' % (test, len(err_list))) - out_file.write(' (%s)\n' % err_msg) - for i in range(0, len(err_list)): - err = err_list[i] - out_file.write(' %s, %s, %s\n' % (format_date(err[0]), err[1], - err[2])) - out_file.write('\n') - - print('Report generated in %s.' % filename) - return filename - - -def GenerateWaterfallReport(report_dict, fail_dict, waterfall_type, date, - omit_failures): - """Write out the actual formatted report.""" - - filename = 'waterfall_report.%s_waterfall.%s.txt' % (waterfall_type, date) - - date_string = '' - date_list = report_dict['date'] - num_dates = len(date_list) - i = 0 - for d in date_list: - date_string += d - if i < num_dates - 1: - date_string += ', ' - i += 1 - - if waterfall_type == 'main': - report_list = WATERFALL_BUILDERS - else: - report_list = report_dict.keys() - - with open(filename, 'w') as out_file: - # Write Report Header - out_file.write('\nStatus of %s Waterfall Builds from %s\n\n' % - (waterfall_type, date_string)) - out_file.write(' ' - ' kernel kernel\n') - out_file.write(' Build bvt- bvt-cq ' - ' security daily daily\n') - out_file.write(' status inline ' - ' regression benchmarks\n') - out_file.write(' [P/ F/ DR]* [P/ F /DR]* ' - '[P/ F/ DR]* [P/ F/ DR]* [P/ F/ DR]*\n\n') - - # Write daily waterfall status section. - for i in range(0, len(report_list)): - builder = report_list[i] - if builder == 'date': - continue - - if builder not in report_dict: - out_file.write('Unable to find information for %s.\n\n' % builder) - continue - - build_dict = report_dict[builder] - status = build_dict.get('build_status', 'bad') - inline = build_dict.get('bvt-inline', '[??/ ?? /??]') - cq = build_dict.get('bvt-cq', '[??/ ?? /??]') - inline_color = build_dict.get('bvt-inline-color', '') - cq_color = build_dict.get('bvt-cq-color', '') - if 'x86' not in builder: - security = build_dict.get('security', '[??/ ?? /??]') - security_color = build_dict.get('security-color', '') - if 'gcc' in builder: - regression = build_dict.get('kernel_daily_regression', '[??/ ?? /??]') - bench = build_dict.get('kernel_daily_benchmarks', '[??/ ?? /??]') - regression_color = build_dict.get('kernel_daily_regression-color', '') - bench_color = build_dict.get('kernel_daily_benchmarks-color', '') - out_file.write(' %6s %6s' - ' %6s %6s %6s\n' % - (inline_color, cq_color, security_color, - regression_color, bench_color)) - out_file.write('%25s %3s %s %s %s %s %s\n' % - (builder, status, inline, cq, security, regression, - bench)) - else: - out_file.write(' %6s %6s' - ' %6s\n' % (inline_color, cq_color, - security_color)) - out_file.write('%25s %3s %s %s %s\n' % (builder, status, inline, cq, - security)) - else: - out_file.write(' %6s %6s\n' % - (inline_color, cq_color)) - out_file.write('%25s %3s %s %s\n' % (builder, status, inline, cq)) - if 'build_link' in build_dict: - out_file.write('%s\n\n' % build_dict['build_link']) - - out_file.write('\n\n*P = Number of tests in suite that Passed; F = ' - 'Number of tests in suite that Failed; DR = Number of tests' - ' in suite that Didn\'t Run.\n') - - if omit_failures: - print('Report generated in %s.' % filename) - return filename - - # Write failure report section. - out_file.write('\n\nSummary of Test Failures as of %s\n\n' % date_string) - - # We want to sort the errors and output them in order of the ones that occur - # most often. So we have to collect the data about all of them, then sort - # it. - error_groups = [] - for suite in fail_dict: - suite_dict = fail_dict[suite] - if suite_dict: - for test in suite_dict: - test_dict = suite_dict[test] - for err_msg in test_dict: - err_list = test_dict[err_msg] - sorted_list = sorted(err_list, key=lambda x: x[0], reverse=True) - err_group = [len(sorted_list), suite, test, err_msg, sorted_list] - error_groups.append(err_group) - - # Sort the errors by the number of errors of each type. Then output them in - # order. - sorted_errors = sorted(error_groups, key=lambda x: x[0], reverse=True) - for i in range(0, len(sorted_errors)): - err_group = sorted_errors[i] - suite = err_group[1] - test = err_group[2] - err_msg = err_group[3] - err_list = err_group[4] - out_file.write('Suite: %s\n' % suite) - out_file.write(' %s (%d failures)\n' % (test, len(err_list))) - out_file.write(' (%s)\n' % err_msg) - for i in range(0, len(err_list)): - err = err_list[i] - out_file.write(' %s, %s, %s\n' % (format_date(err[0]), err[1], - err[2])) - out_file.write('\n') - - print('Report generated in %s.' % filename) - return filename - - -def UpdateReport(report_dict, builder, test, report_date, build_link, - test_summary, board, color): - """Update the data in our report dictionary with current test's data.""" - - if 'date' not in report_dict: - report_dict['date'] = [report_date] - elif report_date not in report_dict['date']: - # It is possible that some of the builders started/finished on different - # days, so we allow for multiple dates in the reports. - report_dict['date'].append(report_date) - - build_key = '' - if builder == GCC_ROTATING_BUILDER: - build_key = '%s-gcc-toolchain' % board - elif builder == LLVM_ROTATING_BUILDER: - build_key = '%s-llvm-next-toolchain' % board - else: - build_key = builder - - if build_key not in report_dict.keys(): - build_dict = dict() - else: - build_dict = report_dict[build_key] - - if 'build_link' not in build_dict: - build_dict['build_link'] = build_link - - if 'date' not in build_dict: - build_dict['date'] = report_date - - if 'board' in build_dict and build_dict['board'] != board: - raise RuntimeError( - 'Error: Two different boards (%s,%s) in one build (%s)!' % - (board, build_dict['board'], build_link)) - build_dict['board'] = board - - color_key = '%s-color' % test - build_dict[color_key] = color - - # Check to see if we already have a build status for this build_key - status = '' - if 'build_status' in build_dict.keys(): - # Use current build_status, unless current test failed (see below). - status = build_dict['build_status'] - - if not test_summary: - # Current test data was not available, so something was bad with build. - build_dict['build_status'] = 'bad' - build_dict[test] = '[ no data ]' - else: - build_dict[test] = test_summary - if not status: - # Current test ok; no other data, so assume build was ok. - build_dict['build_status'] = 'ok' - - report_dict[build_key] = build_dict - - -def UpdateBuilds(builds): - """Update the data in our build-data.txt file.""" - - # The build data file records the last build number for which we - # generated a report. When we generate the next report, we read - # this data and increment it to get the new data; when we finish - # generating the reports, we write the updated values into this file. - # NOTE: One side effect of doing this at the end: If the script - # fails in the middle of generating a report, this data does not get - # updated. - with open(BUILD_DATA_FILE, 'w') as fp: - gcc_max = 0 - llvm_max = 0 - for b in builds: - if b[0] == GCC_ROTATING_BUILDER: - gcc_max = max(gcc_max, b[1]) - elif b[0] == LLVM_ROTATING_BUILDER: - llvm_max = max(llvm_max, b[1]) - else: - fp.write('%s,%d\n' % (b[0], b[1])) - if gcc_max > 0: - fp.write('%s,%d\n' % (GCC_ROTATING_BUILDER, gcc_max)) - if llvm_max > 0: - fp.write('%s,%d\n' % (LLVM_ROTATING_BUILDER, llvm_max)) - - -def GetBuilds(date=0): - """Get build id from builds.""" - - # If date is set, get the build id from waterfall. - builds = [] - - if date: - for builder in WATERFALL_BUILDERS + ROTATING_BUILDERS: - build_ids = GetBuildID(builder, date) - for build_id in build_ids: - builds.append((builder, build_id)) - return builds - - # If date is not set, we try to get the most recent builds. - # Read the values of the last builds used to generate a report, and - # increment them appropriately, to get values for generating the - # current report. (See comments in UpdateBuilds). - with open(BUILD_DATA_FILE, 'r') as fp: - lines = fp.readlines() - - for l in lines: - l = l.rstrip() - words = l.split(',') - builder = words[0] - build = int(words[1]) - builds.append((builder, build + 1)) - # NOTE: We are assuming here that there are always 2 daily builds in - # each of the rotating builders. I am not convinced this is a valid - # assumption. - if builder in ROTATING_BUILDERS: - builds.append((builder, build + 2)) - - return builds - - -def RecordFailures(failure_dict, platform, suite, builder, int_date, log_file, - build_num, failed): - """Read and update the stored data about test failures.""" - - # Get the dictionary for this particular test suite from the failures - # dictionary. - suite_dict = failure_dict[suite] - - # Read in the entire log file for this test/build. - with open(log_file, 'r') as in_file: - lines = in_file.readlines() - - # Update the entries in the failure dictionary for each test within this suite - # that failed. - for test in failed: - # Check to see if there is already an entry in the suite dictionary for this - # test; if so use that, otherwise create a new entry. - if test in suite_dict: - test_dict = suite_dict[test] - else: - test_dict = dict() - # Parse the lines from the log file, looking for lines that indicate this - # test failed. - msg = '' - for l in lines: - words = l.split() - if len(words) < 3: - continue - if ((words[0] == test and words[1] == 'ERROR:') or - (words[0] == 'provision' and words[1] == 'FAIL:')): - words = words[2:] - # Get the error message for the failure. - msg = ' '.join(words) - if not msg: - msg = 'Unknown_Error' - - # Look for an existing entry for this error message in the test dictionary. - # If found use that, otherwise create a new entry for this error message. - if msg in test_dict: - error_list = test_dict[msg] - else: - error_list = list() - # Create an entry for this new failure - new_item = [int_date, platform, builder, build_num] - # Add this failure to the error list if it's not already there. - if new_item not in error_list: - error_list.append([int_date, platform, builder, build_num]) - # Sort the error list by date. - error_list.sort(key=lambda x: x[0]) - # Calculate the earliest date to save; delete records for older failures. - earliest_date = int_date - MAX_SAVE_RECORDS - i = 0 - while i < len(error_list) and error_list[i][0] <= earliest_date: - i += 1 - if i > 0: - error_list = error_list[i:] - # Save the error list in the test's dictionary, keyed on error_msg. - test_dict[msg] = error_list - - # Save the updated test dictionary in the test_suite dictionary. - suite_dict[test] = test_dict - - # Save the updated test_suite dictionary in the failure dictionary. - failure_dict[suite] = suite_dict - - -def ParseLogFile(log_file, test_data_dict, failure_dict, test, builder, - build_num, build_link): - """Parse the log file from the given builder, build_num and test. - - Also adds the results for this test to our test results dictionary, - and calls RecordFailures, to update our test failure data. - """ - - print('Parsing file %s' % log_file) - lines = [] - with open(log_file, 'r') as infile: - lines = infile.readlines() - - passed = {} - failed = {} - not_run = {} - date = '' - status = '' - board = '' - num_provision_errors = 0 - build_ok = True - afe_line = '' - - for line in lines: - if line.rstrip() == '404 Not Found': - print('Warning: File for %s (build number %d), %s was not found.' % - (builder, build_num, test)) - build_ok = False - break - if '[ PASSED ]' in line: - test_name = line.split()[0] - if test_name != 'Suite': - passed[test_name] = True - elif '[ FAILED ]' in line: - test_name = line.split()[0] - if test_name == 'provision': - num_provision_errors += 1 - not_run[test_name] = True - elif test_name != 'Suite': - failed[test_name] = True - elif line.startswith('started: '): - date = line.rstrip() - date = date[9:] - date_obj = time.strptime(date, '%a %b %d %H:%M:%S %Y') - int_date = ( - date_obj.tm_year * 10000 + date_obj.tm_mon * 100 + date_obj.tm_mday) - date = time.strftime('%a %b %d %Y', date_obj) - elif not status and line.startswith('status: '): - status = line.rstrip() - words = status.split(':') - status = words[-1] - elif line.find('Suite passed with a warning') != -1: - status = 'WARNING' - elif line.startswith('@@@STEP_LINK@Link to suite@'): - afe_line = line.rstrip() - words = afe_line.split('@') - for w in words: - if w.startswith('http'): - afe_line = w - afe_line = afe_line.replace('&', '&') - elif 'INFO: RunCommand:' in line: - words = line.split() - for i in range(0, len(words) - 1): - if words[i] == '--board': - board = words[i + 1] - - test_dict = test_data_dict[test] - test_list = test_dict['tests'] - - if build_ok: - for t in test_list: - if not t in passed and not t in failed: - not_run[t] = True - - total_pass = len(passed) - total_fail = len(failed) - total_notrun = len(not_run) - - else: - total_pass = 0 - total_fail = 0 - total_notrun = 0 - status = 'Not found.' - if not build_ok: - return [], date, board, 0, ' ' - - build_dict = dict() - build_dict['id'] = build_num - build_dict['builder'] = builder - build_dict['date'] = date - build_dict['build_link'] = build_link - build_dict['total_pass'] = total_pass - build_dict['total_fail'] = total_fail - build_dict['total_not_run'] = total_notrun - build_dict['afe_job_link'] = afe_line - build_dict['provision_errors'] = num_provision_errors - if status.strip() == 'SUCCESS': - build_dict['color'] = 'green ' - elif status.strip() == 'FAILURE': - build_dict['color'] = ' red ' - elif status.strip() == 'WARNING': - build_dict['color'] = 'orange' - else: - build_dict['color'] = ' ' - - # Use YYYYMMDD (integer) as the build record key - if build_ok: - if board in test_dict: - board_dict = test_dict[board] - else: - board_dict = dict() - board_dict[int_date] = build_dict - - # Only keep the last 5 records (based on date) - keys_list = board_dict.keys() - if len(keys_list) > MAX_SAVE_RECORDS: - min_key = min(keys_list) - del board_dict[min_key] - - # Make sure changes get back into the main dictionary - test_dict[board] = board_dict - test_data_dict[test] = test_dict - - if len(failed) > 0: - RecordFailures(failure_dict, board, test, builder, int_date, log_file, - build_num, failed) - - summary_result = '[%2d/ %2d/ %2d]' % (total_pass, total_fail, total_notrun) - - return summary_result, date, board, int_date, build_dict['color'] - - -def DownloadLogFile(builder, buildnum, test, test_family): - - ce = command_executer.GetCommandExecuter() - os.system('mkdir -p %s/%s/%s' % (DOWNLOAD_DIR, builder, test)) - if builder in ROTATING_BUILDERS: - source = ('https://uberchromegw.corp.google.com/i/chromiumos.tryserver' - '/builders/%s/builds/%d/steps/%s%%20%%5B%s%%5D/logs/stdio' % - (builder, buildnum, test_family, test)) - build_link = ('https://uberchromegw.corp.google.com/i/chromiumos.tryserver' - '/builders/%s/builds/%d' % (builder, buildnum)) - else: - source = ('https://uberchromegw.corp.google.com/i/chromeos/builders/%s/' - 'builds/%d/steps/%s%%20%%5B%s%%5D/logs/stdio' % - (builder, buildnum, test_family, test)) - build_link = ('https://uberchromegw.corp.google.com/i/chromeos/builders/%s' - '/builds/%d' % (builder, buildnum)) - - target = '%s/%s/%s/%d' % (DOWNLOAD_DIR, builder, test, buildnum) - if not os.path.isfile(target) or os.path.getsize(target) == 0: - cmd = 'sso_client %s > %s' % (source, target) - status = ce.RunCommand(cmd) - if status != 0: - return '', '' - - return target, build_link - - -# Check for prodaccess. -def CheckProdAccess(): - status, output, _ = command_executer.GetCommandExecuter().RunCommandWOutput( - 'prodcertstatus') - if status != 0: - return False - # Verify that status is not expired - if 'expires' in output: - return True - return False - - -def ValidOptions(parser, options): - too_many_options = False - if options.main: - if options.rotating or options.failures_report: - too_many_options = True - elif options.rotating and options.failures_report: - too_many_options = True - - if too_many_options: - parser.error('Can only specify one of --main, --rotating or' - ' --failures_report.') - - conflicting_failure_options = False - if options.failures_report and options.omit_failures: - conflicting_failure_options = True - parser.error('Cannot specify both --failures_report and --omit_failures.') - - email_ok = True - if options.email and options.email.find('@') == -1: - email_ok = False - parser.error('"%s" is not a valid email address; it must contain "@..."' % - options.email) - - return not too_many_options and not conflicting_failure_options and email_ok - - -def Main(argv): - """Main function for this script.""" - parser = argparse.ArgumentParser() - parser.add_argument( - '--main', - dest='main', - default=False, - action='store_true', - help='Generate report only for main waterfall ' - 'builders.') - parser.add_argument( - '--rotating', - dest='rotating', - default=False, - action='store_true', - help='Generate report only for rotating builders.') - parser.add_argument( - '--failures_report', - dest='failures_report', - default=False, - action='store_true', - help='Only generate the failures section of the report.') - parser.add_argument( - '--omit_failures', - dest='omit_failures', - default=False, - action='store_true', - help='Do not generate the failures section of the report.') - parser.add_argument( - '--no_update', - dest='no_update', - default=False, - action='store_true', - help='Run reports, but do not update the data files.') - parser.add_argument( - '--date', - dest='date', - default=0, - type=int, - help='The date YYYYMMDD of waterfall report.') - parser.add_argument( - '--email', - dest='email', - default='', - help='Email address to use for sending the report.') - - options = parser.parse_args(argv) - - if not ValidOptions(parser, options): - return 1 - - main_only = options.main - rotating_only = options.rotating - failures_report = options.failures_report - omit_failures = options.omit_failures - date = options.date - - test_data_dict = dict() - failure_dict = dict() - - prod_access = CheckProdAccess() - if not prod_access: - print('ERROR: Please run prodaccess first.') - return - - with open('%s/waterfall-test-data.json' % DATA_DIR, 'r') as input_file: - test_data_dict = json.load(input_file) - - with open('%s/test-failure-data.json' % DATA_DIR, 'r') as fp: - failure_dict = json.load(fp) - - builds = GetBuilds(date) - - waterfall_report_dict = dict() - rotating_report_dict = dict() - int_date = 0 - for test_desc in TESTS: - test, test_family = test_desc - for build in builds: - (builder, buildnum) = build - if test.startswith('kernel') and 'llvm' in builder: - continue - if 'x86' in builder and not test.startswith('bvt'): - continue - target, build_link = DownloadLogFile(builder, buildnum, test, test_family) - - if os.path.exists(target): - test_summary, report_date, board, tmp_date, color = ParseLogFile( - target, test_data_dict, failure_dict, test, builder, buildnum, - build_link) - if not test_summary: - continue - - if tmp_date != 0: - int_date = tmp_date - - if builder in ROTATING_BUILDERS: - UpdateReport(rotating_report_dict, builder, test, report_date, - build_link, test_summary, board, color) - else: - UpdateReport(waterfall_report_dict, builder, test, report_date, - build_link, test_summary, board, color) - - PruneOldFailures(failure_dict, int_date) - - if options.email: - email_to = options.email - else: - email_to = getpass.getuser() - - if waterfall_report_dict and not rotating_only and not failures_report: - main_report = GenerateWaterfallReport(waterfall_report_dict, failure_dict, - 'main', int_date, omit_failures) - EmailReport(main_report, 'Main', format_date(int_date), email_to) - shutil.copy(main_report, ARCHIVE_DIR) - if rotating_report_dict and not main_only and not failures_report: - rotating_report = GenerateWaterfallReport( - rotating_report_dict, failure_dict, 'rotating', int_date, omit_failures) - EmailReport(rotating_report, 'Rotating', format_date(int_date), email_to) - shutil.copy(rotating_report, ARCHIVE_DIR) - - if failures_report: - failures_report = GenerateFailuresReport(failure_dict, int_date) - EmailReport(failures_report, 'Failures', format_date(int_date), email_to) - shutil.copy(failures_report, ARCHIVE_DIR) - - if not options.no_update: - with open('%s/waterfall-test-data.json' % DATA_DIR, 'w') as out_file: - json.dump(test_data_dict, out_file, indent=2) - - with open('%s/test-failure-data.json' % DATA_DIR, 'w') as out_file: - json.dump(failure_dict, out_file, indent=2) - - UpdateBuilds(builds) - - -if __name__ == '__main__': - Main(sys.argv[1:]) - sys.exit(0) diff --git a/deprecated/get_common_image_version.py b/deprecated/get_common_image_version.py deleted file mode 100755 index 4bb6949f..00000000 --- a/deprecated/get_common_image_version.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2013 Google Inc. All Rights Reserved. -"""Script to find list of common images (first beta releases) in Chromeos. - -Display information about stable ChromeOS/Chrome versions to be used -by the team developers. The purpose is to increase team productivity -by using stable (known and tested) ChromeOS/Chrome versions instead of -using randomly selected versions. Currently we define as a "stable" -version the first Beta release in a particular release cycle. -""" - -from __future__ import print_function - -__author__ = 'llozano@google.com (Luis Lozano)' - -import argparse -import pickle -import re -import sys -import urllib - -VERSIONS_HISTORY_URL = 'http://cros-omahaproxy.appspot.com/history' - - -def DisplayBetas(betas): - print('List of betas from %s' % VERSIONS_HISTORY_URL) - for beta in betas: - print(' Release', beta['chrome_major_version'], beta) - return - - -def FindAllBetas(all_versions): - """Get ChromeOS first betas from History URL.""" - - all_betas = [] - prev_beta = {} - for line in all_versions: - match_obj = re.match( - r'(?P.*),(?P.*),' - r'(?P\d*).(?P.*),' - r'(?P.*),beta-channel,,Samsung Chromebook Series 5 550', - line) - if match_obj: - if prev_beta: - if (prev_beta['chrome_major_version'] != - match_obj.group('chrome_major_version')): - all_betas.append(prev_beta) - prev_beta = match_obj.groupdict() - if prev_beta: - all_betas.append(prev_beta) - return all_betas - - -def SerializeBetas(all_betas, serialize_file): - with open(serialize_file, 'wb') as f: - pickle.dump(all_betas, f) - print('Serialized list of betas into', serialize_file) - return - - -def Main(argv): - """Get ChromeOS first betas list from history URL.""" - - parser = argparse.ArgumentParser() - parser.add_argument( - '--serialize', - dest='serialize', - default=None, - help='Save list of common images into the specified ' - 'file.') - options = parser.parse_args(argv) - - try: - opener = urllib.URLopener() - all_versions = opener.open(VERSIONS_HISTORY_URL) - except IOError as ioe: - print('Cannot open', VERSIONS_HISTORY_URL) - print(ioe) - return 1 - - all_betas = FindAllBetas(all_versions) - DisplayBetas(all_betas) - if options.serialize: - SerializeBetas(all_betas, options.serialize) - all_versions.close() - - return 0 - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/mem_tests/README.md b/deprecated/mem_tests/README.md deleted file mode 100644 index 44bf16c9..00000000 --- a/deprecated/mem_tests/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# Memory tests - -## Usage - -These scripts are made to parse TCMalloc output in order to extract certain -info from them. - -In particular, these scripts rely on the error logging system for ChromeOS in -order to extract information. In order to use a script (e.g. `total_mem.py`), -you just have the command: - -``` -./total_mem.py FILENAME -``` - -where `FILENAME` is the name of the log file to be parsed. - -## Codebase Changes - -There are two ideas that motivate these changes: - -1. Turn on TCMalloc sampling. -2. Use perf to collect the sample information. - - -The following files have to be changed: - -in `chrome/browser/metrics/perf_provider_chrome_os`, add: - -``` -#include "third_party/tcmalloc/chromium/src/gperftools/malloc_extension.h" -``` - -Change the perf profiling interval to something small (60*1000 milliseconds). - -Inside DoPeriodicCollection, insert the following code: - -``` -std::string output; -char* chr_arr = new char[9999]; -MallocExtension::instance() ->GetHeapSample(&output); -MallocExtension::instance() ->GetStats(chr_arr, 9999); -LOG(ERROR) << "Output Heap Data: "; -LOG(ERROR) << output; -LOG(ERROR) << "Output Heap Stats: "; -output = ""; -for (unsigned int i = 0; i < strlen(chr_arr); i++) { - output += chr_arr[i]; -} -LOG(ERROR) << output; -delete[] chr_arr; -``` diff --git a/deprecated/mem_tests/clean_data.py b/deprecated/mem_tests/clean_data.py deleted file mode 100755 index 1433ba41..00000000 --- a/deprecated/mem_tests/clean_data.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python2 -"""Cleans output from other scripts to eliminate duplicates. - -When frequently sampling data, we see that records occasionally will contain -the same timestamp (due to perf recording twice in the same second). - -This removes all of the duplicate timestamps for every record. Order with -respect to timestamps is not preserved. Also, the assumption is that the log -file is a csv with the first value in each row being the time in seconds from a -standard time. - -""" - -import argparse - -parser = argparse.ArgumentParser() -parser.add_argument('filename') -args = parser.parse_args() - -my_file = open(args.filename) -output_file = open('clean2.csv', 'a') -dictionary = dict() - -for line in my_file: - new_time = int(line.split(',')[0]) - dictionary[new_time] = line - -for key in dictionary.keys(): - output_file.write(dictionary[key]) diff --git a/deprecated/mem_tests/mem_groups.py b/deprecated/mem_tests/mem_groups.py deleted file mode 100755 index 5d593872..00000000 --- a/deprecated/mem_tests/mem_groups.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/python2 -"""Groups memory by allocation sizes. - -Takes a log entry and sorts sorts everything into groups based on what size -chunks the memory has been allocated in. groups is an array that contains the -divisions (in bytes). - -The output format is: - -timestamp, percent of memory in chunks < groups[0], percent between groups[0] -and groups[1], etc. - -""" - -import argparse -from cros_utils import compute_total_diff -from datetime import datetime - -pretty_print = True - -parser = argparse.ArgumentParser() -parser.add_argument('filename') -args = parser.parse_args() - -my_file = open(args.filename) -output_file = open('groups.csv', 'a') - -# The cutoffs for each group in the output (in bytes) -groups = [1024, 8192, 65536, 524288, 4194304] - -base_time = datetime(2014, 6, 11, 0, 0) -prev_line = '' -half_entry = (None, None) - -for line in my_file: - if 'heap profile:' in line: - if half_entry[0] is not None: - group_totals = half_entry[1] - total = sum(group_totals) * 1.0 - to_join = [half_entry[0]] + [value / total for value in group_totals] - to_output = ','.join([str(elem) for elem in to_join]) - output_file.write(to_output) - total_diff = compute_total_diff(line, base_time) - half_entry = (total_diff, [0] * (len(groups) + 1)) - if '] @ ' in line and 'heap profile:' not in line: - mem_samples = line.strip().split('[')[0] - num_samples, total_mem = map(int, mem_samples.strip().split(':')) - mem_per_sample = total_mem // num_samples - group_totals = half_entry[1] - for cutoff_index in range(len(groups)): - if mem_per_sample <= groups[cutoff_index]: - group_totals[cutoff_index] += total_mem - break - if mem_per_sample > groups[-1]: - group_totals[-1] += total_mem diff --git a/deprecated/mem_tests/total_mem_actual.py b/deprecated/mem_tests/total_mem_actual.py deleted file mode 100755 index d2a0cedf..00000000 --- a/deprecated/mem_tests/total_mem_actual.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/python2 -"""Parses the actual memory usage from TCMalloc. - -This goes through logs that have the actual allocated memory (not sampled) in -the logs. The output is of the form of: - -time (in seconds from some base time), amount of memory allocated by the -application - -""" - -import argparse -from cros_utils import compute_total_diff -from datetime import datetime - -pretty_print = True - -parser = argparse.ArgumentParser() -parser.add_argument('filename') -args = parser.parse_args() - -my_file = open(args.filename) -output_file = open('raw_memory_data.csv', 'a') - -base_time = datetime(2014, 6, 11, 0, 0) -prev_line = '' -half_entry = (None, None) - -for line in my_file: - if 'Output Heap Stats:' in line: - total_diff = compute_total_diff(line, base_time) - half_entry = (total_diff, None) - if 'Bytes in use by application' in line: - total_diff = half_entry[0] - memory_used = int(line.strip().split()[1]) - half_entry = (None, None) - output_file.write('{0},{1}\n'.format(total_diff, memory_used)) diff --git a/deprecated/mem_tests/total_mem_sampled.py b/deprecated/mem_tests/total_mem_sampled.py deleted file mode 100755 index 32aa527c..00000000 --- a/deprecated/mem_tests/total_mem_sampled.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/python2 -"""Parses the total amount of sampled memory from log files. - -This file outputs the total amount of memory that has been sampled by tcmalloc. -The output is of the format: - -time in seconds from a base time, amount of memory that has been sampled - -""" - -import argparse -from cros_utils import compute_total_diff -from datetime import datetime - -parser = argparse.ArgumentParser() -parser.add_argument('filename') -args = parser.parse_args() - -my_file = open(args.filename) -output_file = open('memory_data.csv', 'a') - -base_time = datetime(2014, 6, 11, 0, 0) -prev_line = '' -half_entry = (None, None) - -for line in my_file: - if 'heap profile: ' not in line: - continue - memory_used = line.strip().split(':')[-1].strip().split(']')[0].strip() - total_diff = compute_total_diff(line, base_time) - output_file.write('{0},{1}\n'.format(int(total_diff), memory_used)) diff --git a/deprecated/mem_tests/utils.py b/deprecated/mem_tests/utils.py deleted file mode 100644 index 38bd89ca..00000000 --- a/deprecated/mem_tests/utils.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Utility functions for the memory tests. -""" - -from datetime import datetime - - -def compute_total_diff(line, base_time): - """ - Computes the difference in time the line was recorded from the base time. - - An example of a line is: - [4688:4688:0701/010151:ERROR:perf_provider_chromeos.cc(228)]... - - Here, the month is 07, the day is 01 and the time is 01:01:51. - - line- the line that contains the time the record was taken - base_time- the base time to measure our timestamp from - """ - date = line.strip().split(':')[2].split('/') - timestamp = datetime(2014, int(date[0][0:2]), int(date[0][2:4]), - int(date[1][0:2]), int(date[1][2:4]), int(date[1][4:6])) - return (timestamp - base_time).total_seconds() diff --git a/deprecated/new-generate-waterfall-reports.py b/deprecated/new-generate-waterfall-reports.py deleted file mode 100755 index ef48f8be..00000000 --- a/deprecated/new-generate-waterfall-reports.py +++ /dev/null @@ -1,410 +0,0 @@ -#!/usr/bin/env python2 -"""Generate summary report for ChromeOS toolchain waterfalls.""" - -from __future__ import print_function - -import argparse -import datetime -import getpass -import json -import os -import re -import shutil -import sys -import time - -from cros_utils import command_executer - -# All the test suites whose data we might want for the reports. -TESTS = (('bvt-inline', 'HWTest [bvt-inline]'), ('bvt-cq', 'HWTest [bvt-cq]'), - ('security', 'HWTest [security]')) - -# The main waterfall builders, IN THE ORDER IN WHICH WE WANT THEM -# LISTED IN THE REPORT. -WATERFALL_BUILDERS = [ - 'amd64-llvm-next-toolchain', - 'arm-llvm-next-toolchain', - 'arm64-llvm-next-toolchain', -] - -DATA_DIR = '/google/data/rw/users/mo/mobiletc-prebuild/waterfall-report-data/' -ARCHIVE_DIR = '/google/data/rw/users/mo/mobiletc-prebuild/waterfall-reports/' -DOWNLOAD_DIR = '/tmp/waterfall-logs' -MAX_SAVE_RECORDS = 7 -BUILD_DATA_FILE = '%s/build-data.txt' % DATA_DIR -LLVM_ROTATING_BUILDER = 'llvm_next_toolchain' -ROTATING_BUILDERS = [LLVM_ROTATING_BUILDER] - -# For int-to-string date conversion. Note, the index of the month in this -# list needs to correspond to the month's integer value. i.e. 'Sep' must -# be as MONTHS[9]. -MONTHS = [ - '', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', - 'Nov', 'Dec' -] - -DAYS_PER_MONTH = { - 1: 31, - 2: 28, - 3: 31, - 4: 30, - 5: 31, - 6: 30, - 7: 31, - 8: 31, - 9: 30, - 10: 31, - 11: 31, - 12: 31 -} - - -def format_date(int_date, use_int_month=False): - """Convert an integer date to a string date. YYYYMMDD -> YYYY-MMM-DD""" - - if int_date == 0: - return 'today' - - tmp_date = int_date - day = tmp_date % 100 - tmp_date = tmp_date / 100 - month = tmp_date % 100 - year = tmp_date / 100 - - if use_int_month: - date_str = '%d-%02d-%02d' % (year, month, day) - else: - month_str = MONTHS[month] - date_str = '%d-%s-%d' % (year, month_str, day) - return date_str - - -def EmailReport(report_file, report_type, date, email_to): - """Emails the report to the approprite address.""" - subject = '%s Waterfall Summary report, %s' % (report_type, date) - sendgmr_path = '/google/data/ro/projects/gws-sre/sendgmr' - command = ('%s --to=%s --subject="%s" --body_file=%s' % - (sendgmr_path, email_to, subject, report_file)) - command_executer.GetCommandExecuter().RunCommand(command) - - -def GetColor(status): - """Given a job status string, returns appropriate color string.""" - if status.strip() == 'pass': - color = 'green ' - elif status.strip() == 'fail': - color = ' red ' - elif status.strip() == 'warning': - color = 'orange' - else: - color = ' ' - return color - - -def GenerateWaterfallReport(report_dict, waterfall_type, date): - """Write out the actual formatted report.""" - - filename = 'waterfall_report.%s_waterfall.%s.txt' % (waterfall_type, date) - - date_string = '' - report_list = report_dict.keys() - - with open(filename, 'w') as out_file: - # Write Report Header - out_file.write('\nStatus of %s Waterfall Builds from %s\n\n' % - (waterfall_type, date_string)) - out_file.write(' \n') - out_file.write( - ' Build bvt- ' - ' bvt-cq ' - ' security \n') - out_file.write( - ' status inline ' - ' \n') - - # Write daily waterfall status section. - for builder in report_list: - build_dict = report_dict[builder] - buildbucket_id = build_dict['buildbucket_id'] - overall_status = build_dict['status'] - if 'bvt-inline' in build_dict.keys(): - inline_status = build_dict['bvt-inline'] - else: - inline_status = ' ' - if 'bvt-cq' in build_dict.keys(): - cq_status = build_dict['bvt-cq'] - else: - cq_status = ' ' - if 'security' in build_dict.keys(): - security_status = build_dict['security'] - else: - security_status = ' ' - inline_color = GetColor(inline_status) - cq_color = GetColor(cq_status) - security_color = GetColor(security_status) - - out_file.write( - '%26s %4s %6s %6s %6s\n' % - (builder, overall_status, inline_color, cq_color, security_color)) - if waterfall_type == 'main': - out_file.write(' build url: https://cros-goldeneye.corp.google.com/' - 'chromeos/healthmonitoring/buildDetails?buildbucketId=%s' - '\n' % buildbucket_id) - else: - out_file.write(' build url: https://ci.chromium.org/p/chromeos/' - 'builds/b%s \n' % buildbucket_id) - report_url = ('https://logs.chromium.org/v/?s=chromeos%2Fbuildbucket%2F' - 'cr-buildbucket.appspot.com%2F' + buildbucket_id + - '%2F%2B%2Fsteps%2FReport%2F0%2Fstdout') - out_file.write('\n report status url: %s\n' % report_url) - out_file.write('\n') - - print('Report generated in %s.' % filename) - return filename - - -def GetTryjobData(date, rotating_builds_dict): - """Read buildbucket id and board from stored file. - - buildbot_test_llvm.py, when it launches the rotating builders, - records the buildbucket_id and board for each launch in a file. - This reads that data out of the file so we can find the right - tryjob data. - """ - - date_str = format_date(date, use_int_month=True) - fname = '%s.builds' % date_str - filename = os.path.join(DATA_DIR, 'rotating-builders', fname) - - if not os.path.exists(filename): - print('Cannot find file: %s' % filename) - print('Unable to generate rotating builder report for date %d.' % date) - return - - with open(filename, 'r') as in_file: - lines = in_file.readlines() - - for line in lines: - l = line.strip() - parts = l.split(',') - if len(parts) != 2: - print('Warning: Illegal line in data file.') - print('File: %s' % filename) - print('Line: %s' % l) - continue - buildbucket_id = parts[0] - board = parts[1] - rotating_builds_dict[board] = buildbucket_id - - return - - -def GetRotatingBuildData(date, report_dict, chromeos_root, board, - buildbucket_id, ce): - """Gets rotating builder job results via 'cros buildresult'.""" - path = os.path.join(chromeos_root, 'chromite') - save_dir = os.getcwd() - date_str = format_date(date, use_int_month=True) - os.chdir(path) - - command = ( - 'cros buildresult --buildbucket-id %s --report json' % buildbucket_id) - _, out, _ = ce.RunCommandWOutput(command) - tmp_dict = json.loads(out) - results = tmp_dict[buildbucket_id] - - board_dict = dict() - board_dict['buildbucket_id'] = buildbucket_id - stages_results = results['stages'] - for test in TESTS: - key1 = test[0] - key2 = test[1] - if key2 in stages_results: - board_dict[key1] = stages_results[key2] - board_dict['status'] = results['status'] - report_dict[board] = board_dict - os.chdir(save_dir) - return - - -def GetMainWaterfallData(date, report_dict, chromeos_root, ce): - """Gets main waterfall job results via 'cros buildresult'.""" - path = os.path.join(chromeos_root, 'chromite') - save_dir = os.getcwd() - date_str = format_date(date, use_int_month=True) - os.chdir(path) - for builder in WATERFALL_BUILDERS: - command = ('cros buildresult --build-config %s --date %s --report json' % - (builder, date_str)) - _, out, _ = ce.RunCommandWOutput(command) - tmp_dict = json.loads(out) - builder_dict = dict() - for k in tmp_dict.keys(): - buildbucket_id = k - results = tmp_dict[k] - - builder_dict['buildbucket_id'] = buildbucket_id - builder_dict['status'] = results['status'] - stages_results = results['stages'] - for test in TESTS: - key1 = test[0] - key2 = test[1] - builder_dict[key1] = stages_results[key2] - report_dict[builder] = builder_dict - os.chdir(save_dir) - return - - -# Check for prodaccess. -def CheckProdAccess(): - """Verifies prodaccess is current.""" - status, output, _ = command_executer.GetCommandExecuter().RunCommandWOutput( - 'prodcertstatus') - if status != 0: - return False - # Verify that status is not expired - if 'expires' in output: - return True - return False - - -def ValidDate(date): - """Ensures 'date' is a valid date.""" - min_year = 2018 - - tmp_date = date - day = tmp_date % 100 - tmp_date = tmp_date / 100 - month = tmp_date % 100 - year = tmp_date / 100 - - if day < 1 or month < 1 or year < min_year: - return False - - cur_year = datetime.datetime.now().year - if year > cur_year: - return False - - if month > 12: - return False - - if month == 2 and cur_year % 4 == 0 and cur_year % 100 != 0: - max_day = 29 - else: - max_day = DAYS_PER_MONTH[month] - - if day > max_day: - return False - - return True - - -def ValidOptions(parser, options): - """Error-check the options passed to this script.""" - too_many_options = False - if options.main: - if options.rotating: - too_many_options = True - - if too_many_options: - parser.error('Can only specify one of --main, --rotating.') - - if not os.path.exists(options.chromeos_root): - parser.error( - 'Invalid chromeos root. Cannot find: %s' % options.chromeos_root) - - email_ok = True - if options.email and options.email.find('@') == -1: - email_ok = False - parser.error('"%s" is not a valid email address; it must contain "@..."' % - options.email) - - valid_date = ValidDate(options.date) - - return not too_many_options and valid_date and email_ok - - -def Main(argv): - """Main function for this script.""" - parser = argparse.ArgumentParser() - parser.add_argument( - '--main', - dest='main', - default=False, - action='store_true', - help='Generate report only for main waterfall ' - 'builders.') - parser.add_argument( - '--rotating', - dest='rotating', - default=False, - action='store_true', - help='Generate report only for rotating builders.') - parser.add_argument( - '--date', - dest='date', - required=True, - type=int, - help='The date YYYYMMDD of waterfall report.') - parser.add_argument( - '--email', - dest='email', - default='', - help='Email address to use for sending the report.') - parser.add_argument( - '--chromeos_root', - dest='chromeos_root', - required=True, - help='Chrome OS root in which to run chroot commands.') - - options = parser.parse_args(argv) - - if not ValidOptions(parser, options): - return 1 - - main_only = options.main - rotating_only = options.rotating - date = options.date - - prod_access = CheckProdAccess() - if not prod_access: - print('ERROR: Please run prodaccess first.') - return - - waterfall_report_dict = dict() - rotating_report_dict = dict() - - ce = command_executer.GetCommandExecuter() - if not rotating_only: - GetMainWaterfallData(date, waterfall_report_dict, options.chromeos_root, ce) - - if not main_only: - rotating_builds_dict = dict() - GetTryjobData(date, rotating_builds_dict) - if len(rotating_builds_dict.keys()) > 0: - for board in rotating_builds_dict.keys(): - buildbucket_id = rotating_builds_dict[board] - GetRotatingBuildData(date, rotating_report_dict, options.chromeos_root, - board, buildbucket_id, ce) - - if options.email: - email_to = options.email - else: - email_to = getpass.getuser() - - if waterfall_report_dict and not rotating_only: - main_report = GenerateWaterfallReport(waterfall_report_dict, 'main', date) - - EmailReport(main_report, 'Main', format_date(date), email_to) - shutil.copy(main_report, ARCHIVE_DIR) - if rotating_report_dict and not main_only: - rotating_report = GenerateWaterfallReport(rotating_report_dict, 'rotating', - date) - - EmailReport(rotating_report, 'Rotating', format_date(date), email_to) - shutil.copy(rotating_report, ARCHIVE_DIR) - - -if __name__ == '__main__': - Main(sys.argv[1:]) - sys.exit(0) diff --git a/deprecated/produce_output.py b/deprecated/produce_output.py deleted file mode 100755 index 46512c49..00000000 --- a/deprecated/produce_output.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""This simulates a real job by producing a lot of output.""" - -from __future__ import print_function - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import time - - -def Main(): - """The main function.""" - - for j in range(10): - for i in range(10000): - print(str(j) + 'The quick brown fox jumped over the lazy dog.' + str(i)) - time.sleep(60) - - return 0 - - -if __name__ == '__main__': - Main() diff --git a/deprecated/remote_gcc_build.py b/deprecated/remote_gcc_build.py deleted file mode 100755 index edd0d2b6..00000000 --- a/deprecated/remote_gcc_build.py +++ /dev/null @@ -1,479 +0,0 @@ -#!/usr/bin/env python2 - -# 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. -"""Script to use remote try-bot build image with local gcc.""" - -from __future__ import print_function - -import argparse -import glob -import os -import re -import shutil -import socket -import sys -import tempfile -import time - -from cros_utils import command_executer -from cros_utils import logger -from cros_utils import manifest_versions -from cros_utils import misc - -BRANCH = 'the_actual_branch_used_in_this_script' -TMP_BRANCH = 'tmp_branch' -SLEEP_TIME = 600 - -# pylint: disable=anomalous-backslash-in-string - - -def GetPatchNum(output): - lines = output.splitlines() - line = [l for l in lines if 'googlesource' in l][0] - patch_num = re.findall(r'\d+', line)[0] - if 'chrome-internal' in line: - patch_num = '*' + patch_num - return str(patch_num) - - -def GetPatchString(patch): - if patch: - return '+'.join(patch) - return 'NO_PATCH' - - -def FindVersionForToolchain(branch, chromeos_root): - """Find the version number in artifacts link in the tryserver email.""" - # For example: input: toolchain-3701.42.B - # output: R26-3701.42.1 - digits = branch.split('-')[1].split('B')[0] - manifest_dir = os.path.join(chromeos_root, 'manifest-internal') - os.chdir(manifest_dir) - major_version = digits.split('.')[0] - ce = command_executer.GetCommandExecuter() - command = 'repo sync . && git branch -a | grep {0}'.format(major_version) - _, branches, _ = ce.RunCommandWOutput(command, print_to_console=False) - m = re.search(r'(R\d+)', branches) - if not m: - logger.GetLogger().LogFatal('Cannot find version for branch {0}' - .format(branch)) - version = m.group(0) + '-' + digits + '1' - return version - - -def FindBuildId(description): - """Find the build id of the build at trybot server.""" - running_time = 0 - while True: - (result, number) = FindBuildIdFromLog(description) - if result >= 0: - return (result, number) - logger.GetLogger().LogOutput('{0} minutes passed.' - .format(running_time / 60)) - logger.GetLogger().LogOutput('Sleeping {0} seconds.'.format(SLEEP_TIME)) - time.sleep(SLEEP_TIME) - running_time += SLEEP_TIME - - -def FindBuildIdFromLog(description): - """Get the build id from build log.""" - # returns tuple (result, buildid) - # result == 0, buildid > 0, the build was successful and we have a build id - # result > 0, buildid > 0, the whole build failed for some reason but we - # do have a build id. - # result == -1, buildid == -1, we have not found a finished build for this - # description yet - - file_dir = os.path.dirname(os.path.realpath(__file__)) - commands = ('{0}/cros_utils/buildbot_json.py builds ' - 'http://chromegw/p/tryserver.chromiumos/'.format(file_dir)) - ce = command_executer.GetCommandExecuter() - _, buildinfo, _ = ce.RunCommandWOutput(commands, print_to_console=False) - - my_info = buildinfo.splitlines() - current_line = 1 - running_job = False - result = -1 - - # result == 0, we have a successful build - # result > 0, we have a failed build but build id may be valid - # result == -1, we have not found a finished build for this description - while current_line < len(my_info): - my_dict = {} - while True: - key = my_info[current_line].split(':')[0].strip() - value = my_info[current_line].split(':', 1)[1].strip() - my_dict[key] = value - current_line += 1 - if 'Build' in key or current_line == len(my_info): - break - if ('True' not in my_dict['completed'] and - str(description) in my_dict['reason']): - running_job = True - if ('True' not in my_dict['completed'] or - str(description) not in my_dict['reason']): - continue - result = int(my_dict['result']) - build_id = int(my_dict['number']) - if result == 0: - return (result, build_id) - else: - # Found a finished failed build. - # Keep searching to find a successful one - pass - - if result > 0 and not running_job: - return (result, build_id) - return (-1, -1) - - -def DownloadImage(target, index, dest, version): - """Download artifacts from cloud.""" - if not os.path.exists(dest): - os.makedirs(dest) - - rversion = manifest_versions.RFormatCrosVersion(version) - print(str(rversion)) - # ls_cmd = ("gsutil ls gs://chromeos-image-archive/trybot-{0}/{1}-b{2}" - # .format(target, rversion, index)) - ls_cmd = ('gsutil ls gs://chromeos-image-archive/trybot-{0}/*-b{2}'.format( - target, index)) - - download_cmd = ('$(which gsutil) cp {0} {1}'.format('{0}', dest)) - ce = command_executer.GetCommandExecuter() - - _, out, _ = ce.RunCommandWOutput(ls_cmd, print_to_console=True) - lines = out.splitlines() - download_files = [ - 'autotest.tar', 'chromeos-chrome', 'chromiumos_test_image', 'debug.tgz', - 'sysroot_chromeos-base_chromeos-chrome.tar.xz' - ] - for line in lines: - if any([e in line for e in download_files]): - cmd = download_cmd.format(line) - if ce.RunCommand(cmd): - logger.GetLogger().LogFatal('Command {0} failed, existing...' - .format(cmd)) - - -def UnpackImage(dest): - """Unpack the image, the chroot build dir.""" - chrome_tbz2 = glob.glob(dest + '/*.tbz2')[0] - commands = ('tar xJf {0}/sysroot_chromeos-base_chromeos-chrome.tar.xz ' - '-C {0} &&' - 'tar xjf {1} -C {0} &&' - 'tar xzf {0}/debug.tgz -C {0}/usr/lib/ &&' - 'tar xf {0}/autotest.tar -C {0}/usr/local/ &&' - 'tar xJf {0}/chromiumos_test_image.tar.xz -C {0}'.format( - dest, chrome_tbz2)) - ce = command_executer.GetCommandExecuter() - return ce.RunCommand(commands) - - -def RemoveOldBranch(): - """Remove the branch with name BRANCH.""" - ce = command_executer.GetCommandExecuter() - command = 'git rev-parse --abbrev-ref HEAD' - _, out, _ = ce.RunCommandWOutput(command) - if BRANCH in out: - command = 'git checkout -B {0}'.format(TMP_BRANCH) - ce.RunCommand(command) - command = "git commit -m 'nouse'" - ce.RunCommand(command) - command = 'git branch -D {0}'.format(BRANCH) - ce.RunCommand(command) - - -def UploadManifest(manifest, chromeos_root, branch='master'): - """Copy the manifest to $chromeos_root/manifest-internal and upload.""" - chromeos_root = misc.CanonicalizePath(chromeos_root) - manifest_dir = os.path.join(chromeos_root, 'manifest-internal') - os.chdir(manifest_dir) - ce = command_executer.GetCommandExecuter() - - RemoveOldBranch() - - if branch != 'master': - branch = '{0}'.format(branch) - command = 'git checkout -b {0} -t cros-internal/{1}'.format(BRANCH, branch) - ret = ce.RunCommand(command) - if ret: - raise RuntimeError('Command {0} failed'.format(command)) - - # We remove the default.xml, which is the symbolic link of full.xml. - # After that, we copy our xml file to default.xml. - # We did this because the full.xml might be updated during the - # run of the script. - os.remove(os.path.join(manifest_dir, 'default.xml')) - shutil.copyfile(manifest, os.path.join(manifest_dir, 'default.xml')) - return UploadPatch(manifest) - - -def GetManifestPatch(manifests, version, chromeos_root, branch='master'): - """Return a gerrit patch number given a version of manifest file.""" - temp_dir = tempfile.mkdtemp() - to_file = os.path.join(temp_dir, 'default.xml') - manifests.GetManifest(version, to_file) - return UploadManifest(to_file, chromeos_root, branch) - - -def UploadPatch(source): - """Up load patch to gerrit, return patch number.""" - commands = ('git add -A . &&' - "git commit -m 'test' -m 'BUG=None' -m 'TEST=None' " - "-m 'hostname={0}' -m 'source={1}'".format( - socket.gethostname(), source)) - ce = command_executer.GetCommandExecuter() - ce.RunCommand(commands) - - commands = ('yes | repo upload . --cbr --no-verify') - _, _, err = ce.RunCommandWOutput(commands) - return GetPatchNum(err) - - -def ReplaceSysroot(chromeos_root, dest_dir, target): - """Copy unpacked sysroot and image to chromeos_root.""" - ce = command_executer.GetCommandExecuter() - # get the board name from "board-release". board may contain "-" - board = target.rsplit('-', 1)[0] - board_dir = os.path.join(chromeos_root, 'chroot', 'build', board) - command = 'sudo rm -rf {0}'.format(board_dir) - ce.RunCommand(command) - - command = 'sudo mv {0} {1}'.format(dest_dir, board_dir) - ce.RunCommand(command) - - image_dir = os.path.join(chromeos_root, 'src', 'build', 'images', board, - 'latest') - command = 'rm -rf {0} && mkdir -p {0}'.format(image_dir) - ce.RunCommand(command) - - command = 'mv {0}/chromiumos_test_image.bin {1}'.format(board_dir, image_dir) - return ce.RunCommand(command) - - -def GccBranchForToolchain(branch): - if branch == 'toolchain-3428.65.B': - return 'release-R25-3428.B' - else: - return None - - -def GetGccBranch(branch): - """Get the remote branch name from branch or version.""" - ce = command_executer.GetCommandExecuter() - command = 'git branch -a | grep {0}'.format(branch) - _, out, _ = ce.RunCommandWOutput(command) - if not out: - release_num = re.match(r'.*(R\d+)-*', branch) - if release_num: - release_num = release_num.group(0) - command = 'git branch -a | grep {0}'.format(release_num) - _, out, _ = ce.RunCommandWOutput(command) - if not out: - GccBranchForToolchain(branch) - if not out: - out = 'remotes/cros/master' - new_branch = out.splitlines()[0] - return new_branch - - -def UploadGccPatch(chromeos_root, gcc_dir, branch): - """Upload local gcc to gerrit and get the CL number.""" - ce = command_executer.GetCommandExecuter() - gcc_dir = misc.CanonicalizePath(gcc_dir) - gcc_path = os.path.join(chromeos_root, 'src/third_party/gcc') - assert os.path.isdir(gcc_path), ('{0} is not a valid chromeos root' - .format(chromeos_root)) - assert os.path.isdir(gcc_dir), ('{0} is not a valid dir for gcc' - 'source'.format(gcc_dir)) - os.chdir(gcc_path) - RemoveOldBranch() - if not branch: - branch = 'master' - branch = GetGccBranch(branch) - command = ('git checkout -b {0} -t {1} && ' 'rm -rf *'.format(BRANCH, branch)) - ce.RunCommand(command, print_to_console=False) - - command = ("rsync -az --exclude='*.svn' --exclude='*.git'" - ' {0}/ .'.format(gcc_dir)) - ce.RunCommand(command) - return UploadPatch(gcc_dir) - - -def RunRemote(chromeos_root, branch, patches, is_local, target, chrome_version, - dest_dir): - """The actual running commands.""" - ce = command_executer.GetCommandExecuter() - - if is_local: - local_flag = '--local -r {0}'.format(dest_dir) - else: - local_flag = '--remote' - patch = '' - for p in patches: - patch += ' -g {0}'.format(p) - cbuildbot_path = os.path.join(chromeos_root, 'chromite/cbuildbot') - os.chdir(cbuildbot_path) - branch_flag = '' - if branch != 'master': - branch_flag = ' -b {0}'.format(branch) - chrome_version_flag = '' - if chrome_version: - chrome_version_flag = ' --chrome_version={0}'.format(chrome_version) - description = '{0}_{1}_{2}'.format(branch, GetPatchString(patches), target) - command = ('yes | ./cbuildbot {0} {1} {2} {3} {4} {5}' - ' --remote-description={6}' - ' --chrome_rev=tot'.format(patch, branch_flag, chrome_version, - local_flag, chrome_version_flag, target, - description)) - ce.RunCommand(command) - - return description - - -def Main(argv): - """The main function.""" - # Common initializations - parser = argparse.ArgumentParser() - parser.add_argument( - '-c', - '--chromeos_root', - required=True, - dest='chromeos_root', - help='The chromeos_root') - parser.add_argument( - '-g', '--gcc_dir', default='', dest='gcc_dir', help='The gcc dir') - parser.add_argument( - '-t', - '--target', - required=True, - dest='target', - help=('The target to be build, the list is at' - ' $(chromeos_root)/chromite/buildbot/cbuildbot' - ' --list -all')) - parser.add_argument('-l', '--local', action='store_true') - parser.add_argument( - '-d', - '--dest_dir', - dest='dest_dir', - help=('The dir to build the whole chromeos if' - ' --local is set')) - parser.add_argument( - '--chrome_version', - dest='chrome_version', - default='', - help='The chrome version to use. ' - 'Default it will use the latest one.') - parser.add_argument( - '--chromeos_version', - dest='chromeos_version', - default='', - help=('The chromeos version to use.' - '(1) A release version in the format: ' - "'\d+\.\d+\.\d+\.\d+.*'" - "(2) 'latest_lkgm' for the latest lkgm version")) - parser.add_argument( - '-r', - '--replace_sysroot', - action='store_true', - help=('Whether or not to replace the build/$board dir' - 'under the chroot of chromeos_root and copy ' - 'the image to src/build/image/$board/latest.' - ' Default is False')) - parser.add_argument( - '-b', - '--branch', - dest='branch', - default='', - help=('The branch to run trybot, default is None')) - parser.add_argument( - '-p', - '--patch', - dest='patch', - default='', - help=('The patches to be applied, the patches numbers ' - "be seperated by ','")) - - script_dir = os.path.dirname(os.path.realpath(__file__)) - - args = parser.parse_args(argv[1:]) - target = args.target - if args.patch: - patch = args.patch.split(',') - else: - patch = [] - chromeos_root = misc.CanonicalizePath(args.chromeos_root) - if args.chromeos_version and args.branch: - raise RuntimeError('You can not set chromeos_version and branch at the ' - 'same time.') - - manifests = None - if args.branch: - chromeos_version = '' - branch = args.branch - else: - chromeos_version = args.chromeos_version - manifests = manifest_versions.ManifestVersions() - if chromeos_version == 'latest_lkgm': - chromeos_version = manifests.TimeToVersion(time.mktime(time.gmtime())) - logger.GetLogger().LogOutput('found version %s for latest LKGM' % - (chromeos_version)) - # TODO: this script currently does not handle the case where the version - # is not in the "master" branch - branch = 'master' - - if chromeos_version: - manifest_patch = GetManifestPatch(manifests, chromeos_version, - chromeos_root) - patch.append(manifest_patch) - if args.gcc_dir: - # TODO: everytime we invoke this script we are getting a different - # patch for GCC even if GCC has not changed. The description should - # be based on the MD5 of the GCC patch contents. - patch.append(UploadGccPatch(chromeos_root, args.gcc_dir, branch)) - description = RunRemote(chromeos_root, branch, patch, args.local, target, - args.chrome_version, args.dest_dir) - if args.local or not args.dest_dir: - # TODO: We are not checktng the result of cbuild_bot in here! - return 0 - - # return value: - # 0 => build bot was successful and image was put where requested - # 1 => Build bot FAILED but image was put where requested - # 2 => Build bot failed or BUild bot was successful but and image was - # not generated or could not be put where expected - - os.chdir(script_dir) - dest_dir = misc.CanonicalizePath(args.dest_dir) - (bot_result, build_id) = FindBuildId(description) - if bot_result > 0 and build_id > 0: - logger.GetLogger().LogError('Remote trybot failed but image was generated') - bot_result = 1 - elif bot_result > 0: - logger.GetLogger().LogError('Remote trybot failed. No image was generated') - return 2 - if 'toolchain' in branch: - chromeos_version = FindVersionForToolchain(branch, chromeos_root) - assert not manifest_versions.IsRFormatCrosVersion(chromeos_version) - DownloadImage(target, build_id, dest_dir, chromeos_version) - ret = UnpackImage(dest_dir) - if ret != 0: - return 2 - # todo: return a more inteligent return value - if not args.replace_sysroot: - return bot_result - - ret = ReplaceSysroot(chromeos_root, args.dest_dir, target) - if ret != 0: - return 2 - - # got an image and we were successful in placing it where requested - return bot_result - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/repo_to_repo.py b/deprecated/repo_to_repo.py deleted file mode 100755 index 91c5d580..00000000 --- a/deprecated/repo_to_repo.py +++ /dev/null @@ -1,425 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Module for transferring files between various types of repositories.""" - -from __future__ import print_function - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import argparse -import datetime -import json -import os -import re -import socket -import sys -import tempfile - -from automation.clients.helper import perforce -from cros_utils import command_executer -from cros_utils import logger -from cros_utils import misc - -# pylint: disable=anomalous-backslash-in-string - - -def GetCanonicalMappings(mappings): - canonical_mappings = [] - for mapping in mappings: - remote_path, local_path = mapping.split() - if local_path.endswith('/') and not remote_path.endswith('/'): - local_path = os.path.join(local_path, os.path.basename(remote_path)) - remote_path = remote_path.lstrip('/').split('/', 1)[1] - canonical_mappings.append(perforce.PathMapping(remote_path, local_path)) - return canonical_mappings - - -def SplitMapping(mapping): - parts = mapping.split() - assert len(parts) <= 2, 'Mapping %s invalid' % mapping - remote_path = parts[0] - if len(parts) == 2: - local_path = parts[1] - else: - local_path = '.' - return remote_path, local_path - - -class Repo(object): - """Basic repository base class.""" - - def __init__(self, no_create_tmp_dir=False): - self.repo_type = None - self.address = None - self.mappings = None - self.revision = None - self.ignores = ['.gitignore', '.p4config', 'README.google'] - if no_create_tmp_dir: - self._root_dir = None - else: - self._root_dir = tempfile.mkdtemp() - self._ce = command_executer.GetCommandExecuter() - self._logger = logger.GetLogger() - - def PullSources(self): - """Pull all sources into an internal dir.""" - pass - - def SetupForPush(self): - """Setup a repository for pushing later.""" - pass - - def PushSources(self, commit_message=None, dry_run=False, message_file=None): - """Push to the external repo with the commit message.""" - pass - - def _RsyncExcludingRepoDirs(self, source_dir, dest_dir): - for f in os.listdir(source_dir): - if f in ['.git', '.svn', '.p4config']: - continue - dest_file = os.path.join(dest_dir, f) - source_file = os.path.join(source_dir, f) - if os.path.exists(dest_file): - command = 'rm -rf %s' % dest_file - self._ce.RunCommand(command) - command = 'rsync -a %s %s' % (source_file, dest_dir) - self._ce.RunCommand(command) - return 0 - - def MapSources(self, dest_dir): - """Copy sources from the internal dir to root_dir.""" - return self._RsyncExcludingRepoDirs(self._root_dir, dest_dir) - - def GetRoot(self): - return self._root_dir - - def SetRoot(self, directory): - self._root_dir = directory - - def CleanupRoot(self): - command = 'rm -rf %s' % self._root_dir - return self._ce.RunCommand(command) - - def __str__(self): - return '\n'.join( - str(s) for s in [self.repo_type, self.address, self.mappings]) - - -# Note - this type of repo is used only for "readonly", in other words, this -# only serves as a incoming repo. -class FileRepo(Repo): - """Class for file repositories.""" - - def __init__(self, address, ignores=None): - Repo.__init__(self, no_create_tmp_dir=True) - self.repo_type = 'file' - self.address = address - self.mappings = None - self.branch = None - self.revision = '{0} (as of "{1}")'.format(address, datetime.datetime.now()) - self.gerrit = None - self._root_dir = self.address - if ignores: - self.ignores += ignores - - def CleanupRoot(self): - """Override to prevent deletion.""" - pass - - -class P4Repo(Repo): - """Class for P4 repositories.""" - - def __init__(self, address, mappings, revision=None): - Repo.__init__(self) - self.repo_type = 'p4' - self.address = address - self.mappings = mappings - self.revision = revision - - def PullSources(self): - client_name = socket.gethostname() - client_name += tempfile.mkstemp()[1].replace('/', '-') - mappings = self.mappings - p4view = perforce.View('depot2', GetCanonicalMappings(mappings)) - p4client = perforce.CommandsFactory( - self._root_dir, p4view, name=client_name) - command = p4client.SetupAndDo(p4client.Sync(self.revision)) - ret = self._ce.RunCommand(command) - assert ret == 0, 'Could not setup client.' - command = p4client.InCheckoutDir(p4client.SaveCurrentCLNumber()) - ret, o, _ = self._ce.RunCommandWOutput(command) - assert ret == 0, 'Could not get version from client.' - self.revision = re.search('^\d+$', o.strip(), re.MULTILINE).group(0) - command = p4client.InCheckoutDir(p4client.Remove()) - ret = self._ce.RunCommand(command) - assert ret == 0, 'Could not delete client.' - return 0 - - -class SvnRepo(Repo): - """Class for svn repositories.""" - - def __init__(self, address, mappings): - Repo.__init__(self) - self.repo_type = 'svn' - self.address = address - self.mappings = mappings - - def PullSources(self): - with misc.WorkingDirectory(self._root_dir): - for mapping in self.mappings: - remote_path, local_path = SplitMapping(mapping) - command = 'svn co %s/%s %s' % (self.address, remote_path, local_path) - ret = self._ce.RunCommand(command) - if ret: - return ret - - self.revision = '' - for mapping in self.mappings: - remote_path, local_path = SplitMapping(mapping) - command = 'cd %s && svnversion -c .' % (local_path) - ret, o, _ = self._ce.RunCommandWOutput(command) - self.revision += o.strip().split(':')[-1] - if ret: - return ret - return 0 - - -class GitRepo(Repo): - """Class for git repositories.""" - - def __init__(self, address, branch, mappings=None, ignores=None, gerrit=None): - Repo.__init__(self) - self.repo_type = 'git' - self.address = address - self.branch = branch or 'master' - if ignores: - self.ignores += ignores - self.mappings = mappings - self.gerrit = gerrit - - def _CloneSources(self): - with misc.WorkingDirectory(self._root_dir): - command = 'git clone %s .' % (self.address) - return self._ce.RunCommand(command) - - def PullSources(self): - with misc.WorkingDirectory(self._root_dir): - ret = self._CloneSources() - if ret: - return ret - - command = 'git checkout %s' % self.branch - ret = self._ce.RunCommand(command) - if ret: - return ret - - command = 'git describe --always' - ret, o, _ = self._ce.RunCommandWOutput(command) - self.revision = o.strip() - return ret - - def SetupForPush(self): - with misc.WorkingDirectory(self._root_dir): - ret = self._CloneSources() - logger.GetLogger().LogFatalIf( - ret, 'Could not clone git repo %s.' % self.address) - - command = 'git branch -a | grep -wq %s' % self.branch - ret = self._ce.RunCommand(command) - - if ret == 0: - if self.branch != 'master': - command = ('git branch --track %s remotes/origin/%s' % (self.branch, - self.branch)) - else: - command = 'pwd' - command += '&& git checkout %s' % self.branch - else: - command = 'git symbolic-ref HEAD refs/heads/%s' % self.branch - command += '&& rm -rf *' - ret = self._ce.RunCommand(command) - return ret - - def CommitLocally(self, commit_message=None, message_file=None): - with misc.WorkingDirectory(self._root_dir): - command = 'pwd' - for ignore in self.ignores: - command += '&& echo \'%s\' >> .git/info/exclude' % ignore - command += '&& git add -Av .' - if message_file: - message_arg = '-F %s' % message_file - elif commit_message: - message_arg = '-m \'%s\'' % commit_message - else: - raise RuntimeError('No commit message given!') - command += '&& git commit -v %s' % message_arg - return self._ce.RunCommand(command) - - def PushSources(self, commit_message=None, dry_run=False, message_file=None): - ret = self.CommitLocally(commit_message, message_file) - if ret: - return ret - push_args = '' - if dry_run: - push_args += ' -n ' - with misc.WorkingDirectory(self._root_dir): - if self.gerrit: - label = 'somelabel' - command = 'git remote add %s %s' % (label, self.address) - command += ('&& git push %s %s HEAD:refs/for/master' % (push_args, - label)) - else: - command = 'git push -v %s origin %s:%s' % (push_args, self.branch, - self.branch) - ret = self._ce.RunCommand(command) - return ret - - def MapSources(self, root_dir): - if not self.mappings: - self._RsyncExcludingRepoDirs(self._root_dir, root_dir) - return - with misc.WorkingDirectory(self._root_dir): - for mapping in self.mappings: - remote_path, local_path = SplitMapping(mapping) - remote_path.rstrip('...') - local_path.rstrip('...') - full_local_path = os.path.join(root_dir, local_path) - ret = self._RsyncExcludingRepoDirs(remote_path, full_local_path) - if ret: - return ret - return 0 - - -class RepoReader(object): - """Class for reading repositories.""" - - def __init__(self, filename): - self.filename = filename - self.main_dict = {} - self.input_repos = [] - self.output_repos = [] - - def ParseFile(self): - with open(self.filename) as f: - self.main_dict = json.load(f) - self.CreateReposFromDict(self.main_dict) - return [self.input_repos, self.output_repos] - - def CreateReposFromDict(self, main_dict): - for key, repo_list in main_dict.items(): - for repo_dict in repo_list: - repo = self.CreateRepoFromDict(repo_dict) - if key == 'input': - self.input_repos.append(repo) - elif key == 'output': - self.output_repos.append(repo) - else: - logger.GetLogger().LogFatal('Unknown key: %s found' % key) - - def CreateRepoFromDict(self, repo_dict): - repo_type = repo_dict.get('type', None) - repo_address = repo_dict.get('address', None) - repo_mappings = repo_dict.get('mappings', None) - repo_ignores = repo_dict.get('ignores', None) - repo_branch = repo_dict.get('branch', None) - gerrit = repo_dict.get('gerrit', None) - revision = repo_dict.get('revision', None) - - if repo_type == 'p4': - repo = P4Repo(repo_address, repo_mappings, revision=revision) - elif repo_type == 'svn': - repo = SvnRepo(repo_address, repo_mappings) - elif repo_type == 'git': - repo = GitRepo( - repo_address, - repo_branch, - mappings=repo_mappings, - ignores=repo_ignores, - gerrit=gerrit) - elif repo_type == 'file': - repo = FileRepo(repo_address) - else: - logger.GetLogger().LogFatal('Unknown repo type: %s' % repo_type) - return repo - - -@logger.HandleUncaughtExceptions -def Main(argv): - parser = argparse.ArgumentParser() - parser.add_argument( - '-i', - '--input_file', - dest='input_file', - help='The input file that contains repo descriptions.') - - parser.add_argument( - '-n', - '--dry_run', - dest='dry_run', - action='store_true', - default=False, - help='Do a dry run of the push.') - - parser.add_argument( - '-F', - '--message_file', - dest='message_file', - default=None, - help=('Use contents of the log file as the commit ' - 'message.')) - - options = parser.parse_args(argv) - if not options.input_file: - parser.print_help() - return 1 - rr = RepoReader(options.input_file) - [input_repos, output_repos] = rr.ParseFile() - - # Make sure FileRepo is not used as output destination. - for output_repo in output_repos: - if output_repo.repo_type == 'file': - logger.GetLogger().LogFatal( - 'FileRepo is only supported as an input repo.') - - for output_repo in output_repos: - ret = output_repo.SetupForPush() - if ret: - return ret - - input_revisions = [] - for input_repo in input_repos: - ret = input_repo.PullSources() - if ret: - return ret - input_revisions.append(input_repo.revision) - - for input_repo in input_repos: - for output_repo in output_repos: - ret = input_repo.MapSources(output_repo.GetRoot()) - if ret: - return ret - - commit_message = 'Synced repos to: %s' % ','.join(input_revisions) - for output_repo in output_repos: - ret = output_repo.PushSources( - commit_message=commit_message, - dry_run=options.dry_run, - message_file=options.message_file) - if ret: - return ret - - if not options.dry_run: - for output_repo in output_repos: - output_repo.CleanupRoot() - for input_repo in input_repos: - input_repo.CleanupRoot() - - return ret - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/repo_to_repo_files/binutils-master.json.rtr b/deprecated/repo_to_repo_files/binutils-master.json.rtr deleted file mode 100644 index e9baf804..00000000 --- a/deprecated/repo_to_repo_files/binutils-master.json.rtr +++ /dev/null @@ -1,22 +0,0 @@ -{ - "input": [ - { - "type": "p4", - "mappings": [ - "//depot2/branches/mobile_toolchain_v15_release_branch/gcctools/google_vendor_src_branch/binutils/binutils-2.21/... ..." - ], - "address": "perforce2:2666" - } - ], - "output": [ - { - "type": "git", - "gerrit": true, - "ignores": [ - ".svn", - ".git" - ], - "address": "https://chromium.googlesource.com/chromiumos/third_party/binutils.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/binutils-mobile_toolchain_v16.json.rtr b/deprecated/repo_to_repo_files/binutils-mobile_toolchain_v16.json.rtr deleted file mode 100644 index 927a9a84..00000000 --- a/deprecated/repo_to_repo_files/binutils-mobile_toolchain_v16.json.rtr +++ /dev/null @@ -1,23 +0,0 @@ -{ - "input": [ - { - "type": "p4", - "mappings": [ - "//depot2/branches/mobile_toolchain_v16_release_branch/gcctools/google_vendor_src_branch/binutils/binutils-2.22/... ..." - ], - "address": "perforce2:2666" - } - ], - "output": [ - { - "gerrit": true, - "type": "git", - "branch": "mobile_toolchain_v16_release_branch", - "ignores": [ - ".svn", - ".git" - ], - "address": "https://chromium.googlesource.com/chromiumos/third_party/binutils.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/crosperf.json.rtr b/deprecated/repo_to_repo_files/crosperf.json.rtr deleted file mode 100644 index 95c8f624..00000000 --- a/deprecated/repo_to_repo_files/crosperf.json.rtr +++ /dev/null @@ -1,38 +0,0 @@ -{ - "input": [ - { - "type": "p4", - "mappings": [ - "//depot2/gcctools/chromeos/v14/crosperf/... crosperf/...", - "//depot2/gcctools/chromeos/v14/utils/__init__.py utils/__init__.py", - "//depot2/gcctools/chromeos/v14/utils/colortrans.py utils/colortrans.py", - "//depot2/gcctools/chromeos/v14/utils/command_executer.py utils/command_executer.py", - "//depot2/gcctools/chromeos/v14/utils/email_sender.py utils/email_sender.py", - "//depot2/gcctools/chromeos/v14/utils/file_utils.py utils/file_utils.py", - "//depot2/gcctools/chromeos/v14/utils/logger.py utils/logger.py", - "//depot2/gcctools/chromeos/v14/utils/misc.py utils/misc.py", - "//depot2/gcctools/chromeos/v14/utils/misc_test.py utils/misc_test.py", - "//depot2/gcctools/chromeos/v14/utils/stats.py utils/stats.py", - "//depot2/gcctools/chromeos/v14/utils/tabulator.py utils/tabulator.py", - "//depot2/gcctools/chromeos/v14/utils/tabulator_test.py utils/tabulator_test.py", - "//depot2/gcctools/chromeos/v14/utils/timeline.py utils/timeline.py", - "//depot2/gcctools/chromeos/v14/utils/timeline_test.py utils/timeline_test.py", - "//depot2/gcctools/chromeos/v14/image_chromeos.py image_chromeos.py", - "//depot2/gcctools/chromeos/v14/lock_machine.py lock_machine.py", - "//depot2/gcctools/chromeos/v14/README README" - ], - "address": "perforce2:2666" - } - ], - "output": [ - { - "type": "git", - "gerrit": true, - "ignores": [ - ".svn", - ".git" - ], - "address": "https://chromium.googlesource.com/chromiumos/third_party/toolchain-utils.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/gcc-branches_google_4_7.json.rtr b/deprecated/repo_to_repo_files/gcc-branches_google_4_7.json.rtr deleted file mode 100644 index bc4dadf0..00000000 --- a/deprecated/repo_to_repo_files/gcc-branches_google_4_7.json.rtr +++ /dev/null @@ -1,22 +0,0 @@ -{ - "input": [ - { - "type": "svn", - "mappings": [ - "branches/google/gcc-4_7-mobile" - ], - "address": "svn://gcc.gnu.org/svn/gcc" - } - ], - "output": [ - { - "type": "git", - "ignores": [ - ".svn", - ".git" - ], - "branch": "gcc.gnu.org/branches/google/gcc-4_7-mobile", - "address": "https://chromium.googlesource.com/chromiumos/third_party/gcc.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/gcc-branches_google_main.json.rtr b/deprecated/repo_to_repo_files/gcc-branches_google_main.json.rtr deleted file mode 100644 index f34063d2..00000000 --- a/deprecated/repo_to_repo_files/gcc-branches_google_main.json.rtr +++ /dev/null @@ -1,22 +0,0 @@ -{ - "input": [ - { - "type": "svn", - "mappings": [ - "branches/google/main" - ], - "address": "svn://gcc.gnu.org/svn/gcc" - } - ], - "output": [ - { - "type": "git", - "branch": "gcc.gnu.org/branches/google/main", - "ignores": [ - ".svn", - ".git" - ], - "address": "https://chromium.googlesource.com/chromiumos/third_party/gcc.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/gcc-master.json.rtr b/deprecated/repo_to_repo_files/gcc-master.json.rtr deleted file mode 100644 index 692ae7c9..00000000 --- a/deprecated/repo_to_repo_files/gcc-master.json.rtr +++ /dev/null @@ -1,23 +0,0 @@ -{ - "input": [ - { - "type": "svn", - "mappings": [ - "branches/google/gcc-4_7-mobile" - ], - "address": "svn://gcc.gnu.org/svn/gcc" - } - ], - "output": [ - { - "gerrit": true, - "type": "git", - "ignores": [ - ".svn", - ".git" - ], - "branch": "master", - "address": "https://chromium.googlesource.com/chromiumos/third_party/gcc.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/gdb-master.json.rtr b/deprecated/repo_to_repo_files/gdb-master.json.rtr deleted file mode 100644 index b67ec6f7..00000000 --- a/deprecated/repo_to_repo_files/gdb-master.json.rtr +++ /dev/null @@ -1,20 +0,0 @@ -{ - "input": [ - { - "type": "git", - "branch": "202befe3cb3ad0eec07eaaf3f0706e42926b6bbb", - "address": "git://sourceware.org/git/gdb.git" - } - ], - "output": [ - { - "type": "git", - "ignores": [ - ".svn", - ".git" - ], - "branch": "chromeos_master", - "address": "https://chromium.googlesource.com/chromiumos/third_party/gdb.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/repo_to_repo_files/toolchain-utils.json.rtr b/deprecated/repo_to_repo_files/toolchain-utils.json.rtr deleted file mode 100644 index 1975d6b5..00000000 --- a/deprecated/repo_to_repo_files/toolchain-utils.json.rtr +++ /dev/null @@ -1,28 +0,0 @@ -{ - "input": [ - { - "type": "p4", - "mappings": [ - "//depot2/gcctools/chromeos/v14/crosperf/... crosperf/...", - "//depot2/gcctools/chromeos/v14/utils/... utils/...", - "//depot2/gcctools/chromeos/v14/image_chromeos.py image_chromeos.py", - "//depot2/gcctools/chromeos/v14/lock_machine.py lock_machine.py", - "//depot2/gcctools/chromeos/v14/README README", - "//depot2/gcctools/chromeos/v14/.gitignore .gitignore" - ], - "address": "perforce2:2666" - } - ], - "output": [ - { - "type": "git", - "ignores": [ - ".svn", - ".git", - ".pyc", - "logs" - ], - "address": "https://chrome-internal.googlesource.com/chromeos/toolchain-utils.git" - } - ] -} \ No newline at end of file diff --git a/deprecated/report_generator.py b/deprecated/report_generator.py deleted file mode 100755 index c94b51c2..00000000 --- a/deprecated/report_generator.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to compare a baseline results file to a new results file.""" - -from __future__ import print_function - -__author__ = 'raymes@google.com (Raymes Khoury)' - -import sys -from cros_utils import logger -from cros_utils import html_tools - -PASS = 'pass' -FAIL = 'fail' -NOT_EXECUTED = 'not executed' - - -class ResultsReport(object): - """Class for holding report results.""" - - def __init__(self, report, num_tests_executed, num_passes, num_failures, - num_regressions): - self.report = report - self.num_tests_executed = num_tests_executed - self.num_passes = num_passes - self.num_failures = num_failures - self.num_regressions = num_regressions - - def GetReport(self): - return self.report - - def GetNumExecuted(self): - return self.num_tests_executed - - def GetNumPasses(self): - return self.num_passes - - def GetNumFailures(self): - return self.num_failures - - def GetNumRegressions(self): - return self.num_regressions - - def GetSummary(self): - summary = 'Tests executed: %s\n' % str(self.num_tests_executed) - summary += 'Tests Passing: %s\n' % str(self.num_passes) - summary += 'Tests Failing: %s\n' % str(self.num_failures) - summary += 'Regressions: %s\n' % str(self.num_regressions) - return summary - - -def Usage(): - print('Usage: %s baseline_results new_results' % sys.argv[0]) - sys.exit(1) - - -def ParseResults(results_filename): - results = [] - try: - results_file = open(results_filename, 'rb') - for line in results_file: - if line.strip() != '': - results.append(line.strip().split('\t')) - results_file.close() - except IOError: - logger.GetLogger().LogWarning('Could not open results file: ' + - results_filename) - return results - - -def GenerateResultsReport(baseline_file, new_result_file): - baseline_results = ParseResults(baseline_file) - new_results = ParseResults(new_result_file) - - test_status = {} - - for new_result in new_results: - new_test_name = new_result[0] - new_test_result = new_result[1] - test_status[new_test_name] = (new_test_result, NOT_EXECUTED) - - for baseline_result in baseline_results: - baseline_test_name = baseline_result[0] - baseline_test_result = baseline_result[1] - if baseline_test_name in test_status: - new_test_result = test_status[baseline_test_name][0] - test_status[baseline_test_name] = (new_test_result, baseline_test_result) - else: - test_status[baseline_test_name] = (NOT_EXECUTED, baseline_test_result) - - regressions = [] - for result in test_status.keys(): - if test_status[result][0] != test_status[result][1]: - regressions.append(result) - - num_tests_executed = len(new_results) - num_regressions = len(regressions) - num_passes = 0 - num_failures = 0 - for result in new_results: - if result[1] == PASS: - num_passes += 1 - else: - num_failures += 1 - - report = html_tools.GetPageHeader('Test Summary') - report += html_tools.GetHeader('Test Summary') - report += html_tools.GetListHeader() - report += html_tools.GetListItem('Tests executed: ' + str(num_tests_executed)) - report += html_tools.GetListItem('Passes: ' + str(num_passes)) - report += html_tools.GetListItem('Failures: ' + str(num_failures)) - report += html_tools.GetListItem('Regressions: ' + str(num_regressions)) - report += html_tools.GetListFooter() - report += html_tools.GetHeader('Regressions', 2) - report += html_tools.GetTableHeader(['Test name', 'Expected result', - 'Actual result']) - - for regression in regressions: - report += html_tools.GetTableRow([regression[:150], test_status[regression][ - 1], test_status[regression][0]]) - report += '\n' - report += html_tools.GetTableFooter() - report += html_tools.GetHeader('All Tests', 2) - report += html_tools.GetTableHeader(['Test name', 'Expected result', - 'Actual result']) - for result in test_status.keys(): - report += html_tools.GetTableRow([result[:150], test_status[result][1], - test_status[result][0]]) - report += '\n' - report += html_tools.GetTableFooter() - report += html_tools.GetFooter() - return ResultsReport(report, num_tests_executed, num_passes, num_failures, - num_regressions) - - -def Main(argv): - if len(argv) < 2: - Usage() - - print(GenerateResultsReport(argv[1], argv[2])[0]) - - -if __name__ == '__main__': - Main(sys.argv) diff --git a/deprecated/run_benchmarks.py b/deprecated/run_benchmarks.py deleted file mode 100755 index 4818750a..00000000 --- a/deprecated/run_benchmarks.py +++ /dev/null @@ -1,245 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to run ChromeOS benchmarks - -Inputs: - chromeos_root - board - [chromeos/cpu/| - chromeos/browser/[pagecycler|sunspider]| - chromeos/startup] - hostname/IP of Chromeos machine - - chromeos/cpu/ - - Read run script rules from bench.mk perflab-bin, copy benchmark to - host, run - and return results. - - chromeos/startup - - Re-image host with image in perflab-bin - - Call run_tests to run startup test, gather results. - - Restore host back to what it was. - - chromeos/browser/* - - Call build_chromebrowser to build image with new browser - - Copy image to perflab-bin - -""" - -from __future__ import print_function - -__author__ = 'bjanakiraman@google.com (Bhaskar Janakiraman)' - -import argparse -import os -import re -import sys - -import image_chromeos -import run_tests -from cros_utils import command_executer -from cros_utils import logger - -# pylint: disable=anomalous-backslash-in-string - -KNOWN_BENCHMARKS = [ - 'chromeos/startup', 'chromeos/browser/pagecycler', - 'chromeos/browser/sunspider', 'chromeos/browser/v8bench', - 'chromeos/cpu/bikjmp' -] - -name_map = { - 'pagecycler': 'Page', - 'sunspider': 'SunSpider', - 'v8bench': 'V8Bench', - 'startup': 'BootPerfServer' -} - -# Run command template - -# Common initializations -cmd_executer = command_executer.GetCommandExecuter() - - -def Usage(parser, message): - print('ERROR: %s' % message) - parser.print_help() - sys.exit(0) - - -def RunBrowserBenchmark(chromeos_root, board, bench, machine): - """Run browser benchmarks. - - Args: - chromeos_root: ChromeOS src dir - board: Board being tested - bench: Name of benchmark (chromeos/browser/*) - machine: name of chromeos machine - """ - benchname = re.split('/', bench)[2] - benchname = name_map[benchname] - ret = run_tests.RunRemoteTests(chromeos_root, machine, board, benchname) - return ret - - -def RunStartupBenchmark(chromeos_root, board, machine): - """Run browser benchmarks. - - Args: - chromeos_root: ChromeOS src dir - board: Board being tested - machine: name of chromeos machine - """ - benchname = 'startup' - benchname = name_map[benchname] - ret = run_tests.RunRemoteTests(chromeos_root, machine, board, benchname) - return ret - - -def RunCpuBenchmark(chromeos_root, bench, workdir, machine): - """Run CPU benchmark. - - Args: - chromeos_root: ChromeOS src dir - bench: Name of benchmark - workdir: directory containing benchmark directory - machine: name of chromeos machine - - Returns: - status: 0 on success - """ - - benchname = re.split('/', bench)[2] - benchdir = '%s/%s' % (workdir, benchname) - - # Delete any existing run directories on machine. - # Since this has exclusive access to the machine, - # we do not worry about duplicates. - args = 'rm -rf /tmp/%s' % benchname - retv = cmd_executer.CrosRunCommand(args, - chromeos_root=chromeos_root, - machine=machine) - if retv: - return retv - - # Copy benchmark directory. - retv = cmd_executer.CopyFiles(benchdir, - '/tmp/' + benchname, - chromeos_root=chromeos_root, - dest_machine=machine, - dest_cros=True) - if retv: - return retv - - # Parse bench.mk to extract run flags. - - benchmk_file = open('%s/bench.mk' % benchdir, 'r') - for line in benchmk_file: - line.rstrip() - if re.match('^run_cmd', line): - line = re.sub('^run_cmd.*\${PERFLAB_PATH}', './out', line) - line = re.sub('\${PERFLAB_INPUT}', './data', line) - run_cmd = line - break - - # Execute on remote machine - # Capture output and process it. - sshargs = "'cd /tmp/%s;" % benchname - sshargs += "time -p %s'" % run_cmd - cmd_executer.CrosRunCommand(sshargs, - chromeos_root=chromeos_root, - machine=machine) - - return retv - - -def Main(argv): - """Build ChromeOS.""" - # Common initializations - - parser = argparse.ArgumentParser() - parser.add_argument('-c', - '--chromeos_root', - dest='chromeos_root', - help='Target directory for ChromeOS installation.') - parser.add_argument('-m', - '--machine', - dest='machine', - help='The chromeos host machine.') - parser.add_argument('--workdir', - dest='workdir', - default='./perflab-bin', - help='Work directory for perflab outputs.') - parser.add_argument('--board', - dest='board', - help='ChromeOS target board, e.g. x86-generic') - parser.add_argumen('args', margs='+', help='Benchmarks to run.') - - options = parser.parse_args(argv[1:]) - - # validate args - for arg in options.args: - if arg not in KNOWN_BENCHMARKS: - logger.GetLogger().LogFatal('Bad benchmark %s specified' % arg) - - if options.chromeos_root is None: - Usage(parser, '--chromeos_root must be set') - - if options.board is None: - Usage(parser, '--board must be set') - - if options.machine is None: - Usage(parser, '--machine must be set') - - found_err = 0 - retv = 0 - for arg in options.args: - # CPU benchmarks - comps = re.split('/', arg) - if re.match('chromeos/cpu', arg): - benchname = comps[2] - print('RUNNING %s' % benchname) - retv = RunCpuBenchmark(options.chromeos_root, arg, options.workdir, - options.machine) - if not found_err: - found_err = retv - elif re.match('chromeos/startup', arg): - benchname = comps[1] - image_args = [ - os.path.dirname(os.path.abspath(__file__)) + '/image_chromeos.py', - '--chromeos_root=' + options.chromeos_root, - '--remote=' + options.machine, '--image=' + options.workdir + '/' + - benchname + '/chromiumos_image.bin' - ] - logger.GetLogger().LogOutput('Reimaging machine %s' % options.machine) - image_chromeos.Main(image_args) - - logger.GetLogger().LogOutput('Running %s' % arg) - retv = RunStartupBenchmark(options.chromeos_root, options.board, - options.machine) - if not found_err: - found_err = retv - elif re.match('chromeos/browser', arg): - benchname = comps[2] - image_args = [ - os.path.dirname(os.path.abspath(__file__)) + '/image_chromeos.py', - '--chromeos_root=' + options.chromeos_root, - '--remote=' + options.machine, '--image=' + options.workdir + '/' + - benchname + '/chromiumos_image.bin' - ] - logger.GetLogger().LogOutput('Reimaging machine %s' % options.machine) - image_chromeos.Main(image_args) - - logger.GetLogger().LogOutput('Running %s' % arg) - retv = RunBrowserBenchmark(options.chromeos_root, options.board, arg, - options.machine) - if not found_err: - found_err = retv - - return found_err - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/sheriff_rotation.py b/deprecated/sheriff_rotation.py deleted file mode 100755 index f6873077..00000000 --- a/deprecated/sheriff_rotation.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to rotate the weekly team sheriff. - -This script determines who the next sheriff is, updates the file -appropriately and sends out email notifying the team. -""" - -from __future__ import print_function - -__author__ = 'asharif@google.com (Ahmad Sharif)' - -import argparse -import datetime -import os -import sys - -from cros_utils import constants -from cros_utils import email_sender - - -class SheriffHandler(object): - """Main class for handling sheriff rotations.""" - - SHERIFF_FILE = os.path.join(constants.CROSTC_WORKSPACE, 'sheriffs.txt') - SUBJECT = 'You (%s) are the sheriff for the week: %s - %s' - BODY = ('Please see instructions here: ' - 'https://sites.google.com/a/google.com/chromeos-toolchain-team-home2' - '/home/sheriff-s-corner/sheriff-duties') - - def GetWeekInfo(self, day=datetime.datetime.today()): - """Return week_start, week_end.""" - - epoch = datetime.datetime.utcfromtimestamp(0) - delta_since_epoch = day - epoch - - abs_days = abs(delta_since_epoch.days) - 2 # To get it to start from Sat. - day_of_week = abs_days % 7 - - week_begin = day - datetime.timedelta(days=day_of_week) - week_end = day + datetime.timedelta(days=(6 - day_of_week)) - - strftime_format = '%A, %B %d %Y' - - return (week_begin.strftime(strftime_format), - week_end.strftime(strftime_format)) - - def GetCurrentSheriff(self): - """Return the current sheriff.""" - return self.ReadSheriffsAsList()[0] - - def ReadSheriffsAsList(self): - """Return the sheriff file contents.""" - contents = '' - with open(self.SHERIFF_FILE, 'r') as f: - contents = f.read() - return contents.splitlines() - - def WriteSheriffsAsList(self, to_write): - with open(self.SHERIFF_FILE, 'w') as f: - f.write('\n'.join(to_write)) - - def GetRotatedSheriffs(self, num_rotations=1): - """Return the sheriff file contents.""" - sheriff_list = self.ReadSheriffsAsList() - - new_sheriff_list = [] - num_rotations = num_rotations % len(sheriff_list) - new_sheriff_list = ( - sheriff_list[num_rotations:] + sheriff_list[:num_rotations]) - return new_sheriff_list - - def Email(self): - es = email_sender.EmailSender() - current_sheriff = self.GetCurrentSheriff() - week_start, week_end = self.GetWeekInfo() - subject = self.SUBJECT % (current_sheriff, week_start, week_end) - es.SendEmail([current_sheriff], - subject, - self.BODY, - email_from=os.path.basename(__file__), - email_cc=['c-compiler-chrome']) - - -def Main(argv): - parser = argparse.ArgumentParser() - parser.add_argument('-e', - '--email', - dest='email', - action='store_true', - help='Email the sheriff.') - parser.add_argument('-r', - '--rotate', - dest='rotate', - help='Print sheriffs after n rotations.') - parser.add_argument('-w', - '--write', - dest='write', - action='store_true', - default=False, - help='Wrote rotated contents to the sheriff file.') - - options = parser.parse_args(argv) - - sheriff_handler = SheriffHandler() - - current_sheriff = sheriff_handler.GetCurrentSheriff() - week_start, week_end = sheriff_handler.GetWeekInfo() - - print('Current sheriff: %s (%s - %s)' % (current_sheriff, week_start, - week_end)) - - if options.email: - sheriff_handler.Email() - - if options.rotate: - rotated_sheriffs = sheriff_handler.GetRotatedSheriffs(int(options.rotate)) - print('Rotated sheriffs (after %s rotations)' % options.rotate) - print('\n'.join(rotated_sheriffs)) - if options.write: - sheriff_handler.WriteSheriffsAsList(rotated_sheriffs) - print('Rotated sheriffs written to file.') - - return 0 - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/summarize_results.py b/deprecated/summarize_results.py deleted file mode 100755 index 67d7e9a4..00000000 --- a/deprecated/summarize_results.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to summarize the results of various log files.""" - -from __future__ import print_function - -__author__ = 'raymes@google.com (Raymes Khoury)' - -from cros_utils import command_executer -import os -import sys -import re - -RESULTS_DIR = 'results' -RESULTS_FILE = RESULTS_DIR + '/results.csv' - -# pylint: disable=anomalous-backslash-in-string - -class DejaGNUSummarizer(object): - """DejaGNU Summarizer Class""" - - def __int__(self): - pass - - def Matches(self, log_file): - for log_line in log_file: - if log_line.find("""tests ===""") > -1: - return True - return False - - def Summarize(self, log_file, filename): - result = '' - pass_statuses = ['PASS', 'XPASS'] - fail_statuses = ['FAIL', 'XFAIL', 'UNSUPPORTED'] - name_count = {} - for line in log_file: - line = line.strip().split(':') - if len(line) > 1 and (line[0] in pass_statuses or - line[0] in fail_statuses): - test_name = (':'.join(line[1:])).replace('\t', ' ').strip() - count = name_count.get(test_name, 0) + 1 - name_count[test_name] = count - test_name = '%s (%s)' % (test_name, str(count)) - if line[0] in pass_statuses: - test_result = 'pass' - else: - test_result = 'fail' - result += '%s\t%s\t%s\n' % (test_name, test_result, filename) - return result - - -class PerflabSummarizer(object): - """Perflab Summarizer class""" - - def __init__(self): - pass - - def Matches(self, log_file): - p = re.compile('METRIC isolated \w+') - for log_line in log_file: - if p.search(log_line): - return True - return False - - def Summarize(self, log_file, filename): - result = '' - p = re.compile("METRIC isolated (\w+) .*\['(.*?)'\]") - log_file_lines = '\n'.join(log_file) - matches = p.findall(log_file_lines) - for match in matches: - if len(match) != 2: - continue - result += '%s\t%s\t%s\n' % (match[0], match[1], filename) - return result - - -class AutoTestSummarizer(object): - """AutoTest Summarizer class""" - - def __init__(self): - pass - - def Matches(self, log_file): - for log_line in log_file: - if log_line.find("""Installing autotest on""") > -1: - return True - return False - - def Summarize(self, log_file, filename): - result = '' - pass_statuses = ['PASS'] - fail_statuses = ['FAIL'] - for line in log_file: - line = line.strip().split(' ') - if len(line) > 1 and (line[-1].strip() in pass_statuses or - line[-1].strip() in fail_statuses): - test_name = (line[0].strip()) - if line[-1].strip() in pass_statuses: - test_result = 'pass' - else: - test_result = 'fail' - result += '%s\t%s\t%s\n' % (test_name, test_result, filename) - return result - - -def Usage(): - print('Usage: %s log_file' % sys.argv[0]) - sys.exit(1) - - -def SummarizeFile(filename): - summarizers = [DejaGNUSummarizer(), AutoTestSummarizer(), PerflabSummarizer()] - inp = open(filename, 'rb') - executer = command_executer.GetCommandExecuter() - for summarizer in summarizers: - inp.seek(0) - if summarizer.Matches(inp): - executer.CopyFiles(filename, RESULTS_DIR, recursive=False) - inp.seek(0) - result = summarizer.Summarize(inp, os.path.basename(filename)) - inp.close() - return result - inp.close() - return None - - -def Main(argv): - if len(argv) != 2: - Usage() - filename = argv[1] - - executer = command_executer.GetCommandExecuter() - executer.RunCommand('mkdir -p %s' % RESULTS_DIR) - summary = SummarizeFile(filename) - if summary is not None: - output = open(RESULTS_FILE, 'a') - output.write(summary.strip() + '\n') - output.close() - return 0 - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) diff --git a/deprecated/test_gcc_dejagnu.py b/deprecated/test_gcc_dejagnu.py deleted file mode 100755 index 4ea0c51e..00000000 --- a/deprecated/test_gcc_dejagnu.py +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script adapter used by automation client for testing dejagnu. - - This is not intended to be run on command line. - To kick off a single dejagnu run, use ./dejagnu/run_dejagnu.py -""" - -from __future__ import print_function - -__author__ = 'shenhan@google.com (Han Shen)' - -import argparse -import sys -import setup_chromeos -import build_tc - -from dejagnu import run_dejagnu -from cros_utils import command_executer -from cros_utils import email_sender - - -class DejagnuAdapter(object): - """Dejagnu Adapter class""" - - # TODO(shenhan): move these to constants.py. - _CHROMIUM_GCC_GIT = ('https://chromium.googlesource.com/' - 'chromiumos/third_party/gcc.git') - _CHROMIUM_GCC_BRANCH = 'gcc.gnu.org/branches/google/gcc-4_7-mobile' - - _cmd_exec = command_executer.GetCommandExecuter() - - def __init__(self, board, remote, gcc_dir, chromeos_root, runtestflags, - cleanup): - self._board = board - self._remote = remote - self._gcc_dir = gcc_dir - self._chromeos_root = chromeos_root - self._runtestflags = runtestflags - self._cleanup = cleanup - - def SetupChromeOS(self): - cmd = [ - setup_chromeos.__file__, '--dir=' + self._chromeos_root, '--minilayout', - '--jobs=8' - ] - ret = setup_chromeos.Main(cmd) - if ret: - raise RuntimeError('Failed to checkout chromeos') - ## Do cros_sdk and setup_board, otherwise build_tc in next step will fail. - cmd = 'cd {0} && cros_sdk --download'.format(self._chromeos_root) - ret = self._cmd_exec.RunCommand(cmd, terminated_timeout=9000) - if ret: - raise RuntimeError('Failed to create chroot.') - - def SetupBoard(self): - cmd = 'setup_board --board=' + self._board - ret = self._cmd_exec.ChrootRunCommand( - self._chromeos_root, cmd, terminated_timeout=4000) - if ret: - raise RuntimeError('Failed to setup board.') - - def CheckoutGCC(self): - cmd = 'git clone {0} {1} && cd {1} && git checkout {2}'.format( - self._CHROMIUM_GCC_GIT, self._gcc_dir, self._CHROMIUM_GCC_BRANCH) - - ret = self._cmd_exec.RunCommand(cmd, terminated_timeout=300) - if ret: - raise RuntimeError('Failed to checkout gcc.') - ## Handle build_tc bug. - cmd = ('touch {0}/gcc/config/arm/arm-tune.md ' + \ - '{0}/gcc/config/arm/arm-tables.opt').format(self._gcc_dir) - ret = self._cmd_exec.RunCommand(cmd) - - def BuildGCC(self): - build_gcc_args = [ - build_tc.__file__, '--board=' + self._board, - '--chromeos_root=' + self._chromeos_root, '--gcc_dir=' + self._gcc_dir - ] - ret = build_tc.Main(build_gcc_args) - if ret: - raise RuntimeError('Building gcc failed.') - - def CheckGCC(self): - args = [ - run_dejagnu.__file__, '--board=' + self._board, - '--chromeos_root=' + self._chromeos_root, '--mount=' + self._gcc_dir, - '--remote=' + self._remote - ] - if self._cleanup: - args.append('--cleanup=' + self._cleanup) - if self._runtestflags: - args.append('--flags=' + self._runtestflags) - return run_dejagnu.Main(args) - - -# Parse the output log to determine how many failures we have. -# Return -1 if parse output log failed. -def GetNumNewFailures(input_str): - if not input_str: - return 0 - start_counting = False - n_failures = 0 - for l in input_str.splitlines(): - print(l) - if not start_counting and 'Build results not in the manifest' in l: - start_counting = True - elif start_counting and l and (l.find('UNRESOLVED:') == 0 or - l.find('FAIL:') == 0 or l.find('XFAIL:') == 0 - or l.find('XPASS:') == 0): - n_failures = n_failures + 1 - if not start_counting: - return -1 - return n_failures - - -# Do not throw any exception in this function! -def EmailResult(result): - email_to = ['c-compiler-chrome@google.com'] - if len(result) == 4: - subject = 'Job failed: dejagnu test didn\'t finish' - email_text = 'Job failed prematurely, check exception below.\n' + \ - result[3] - elif result[0]: - subject = 'Job finished: dejagnu test failed' - num_new_failures = GetNumNewFailures(result[1]) - if num_new_failures >= 0: - summary = '{0} new fail(s), check log below.'.format(num_new_failures) - else: - summary = 'At least 1 new fail found, check log below.' - email_text = summary + \ - ('\nStdout ====\n' - '{0}\n' - '\nStderr ===\n' - '{1}\n').format(result[1], result[2]) - else: - subject = 'Job finished: dejagnu test passed' - email_text = ('Cool! No new fail found.\n' - '\nStdout ====\n' - '{0}\n' - '\nStderr ====\n' - '{1}\n').format(result[1], result[2]) - - try: - email_sender.EmailSender().SendEmail(email_to, subject, email_text) - print('Email sent.') - except Exception as e: - # Do not propagate this email sending exception, you want to email an - # email exception? Just log it on console. - print('Sending email failed - {0}' - 'Subject: {1}' - 'Text: {2}').format(str(e), subject, email_text) - - -def ProcessArguments(argv): - """Processing script arguments.""" - parser = argparse.ArgumentParser( - description=('This script is used by nightly client to test gcc. ' - 'DO NOT run it unless you know what you are doing.'), - usage='test_gcc_dejagnu.py options') - parser.add_argument( - '-b', - '--board', - dest='board', - help=('Required. Specify board type. For example ' - '\'lumpy\' and \'daisy\'')) - parser.add_argument( - '-r', - '--remote', - dest='remote', - help=('Required. Specify remote board address')) - parser.add_argument( - '-g', - '--gcc_dir', - dest='gcc_dir', - default='gcc.live', - help=('Optional. Specify gcc checkout directory.')) - parser.add_argument( - '-c', - '--chromeos_root', - dest='chromeos_root', - default='chromeos.live', - help=('Optional. Specify chromeos checkout directory.')) - parser.add_argument( - '--cleanup', - dest='cleanup', - default=None, - help=('Optional. Do cleanup after the test.')) - parser.add_argument( - '--runtestflags', - dest='runtestflags', - default=None, - help=('Optional. Options to RUNTESTFLAGS env var ' - 'while invoking make check. ' - '(Mainly used for testing purpose.)')) - - options = parser.parse_args(argv[1:]) - - if not options.board or not options.remote: - raise SyntaxError('--board and --remote are mandatory options.') - - return options - - -def Main(argv): - opt = ProcessArguments(argv) - adapter = DejagnuAdapter(opt.board, opt.remote, opt.gcc_dir, - opt.chromeos_root, opt.runtestflags, opt.cleanup) - try: - adapter.SetupChromeOS() - adapter.SetupBoard() - adapter.CheckoutGCC() - adapter.BuildGCC() - ret = adapter.CheckGCC() - except Exception as e: - print(e) - ret = (1, '', '', str(e)) - finally: - EmailResult(ret) - - return ret - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval[0]) diff --git a/deprecated/test_gdb_dejagnu.py b/deprecated/test_gdb_dejagnu.py deleted file mode 100755 index 6f37a4c9..00000000 --- a/deprecated/test_gdb_dejagnu.py +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/bin/env python2 -"""Script adapter used by automation client for testing dejagnu. - - This is not intended to be run on command line. - To kick off a single dejagnu run, use ./dejagnu/run_dejagnu.py -""" - -from __future__ import print_function - -import argparse -import sys -import setup_chromeos - -from dejagnu import gdb_dejagnu -from cros_utils import command_executer -from cros_utils import email_sender - - -class DejagnuAdapter(object): - """Dejagnu Adapter class.""" - - def __init__(self, board, remote, gdb_dir, chromeos_root, cleanup): - self._board = board - self._remote = remote - self._gdb_dir = gdb_dir - self._chromeos_root = chromeos_root - self._cleanup = cleanup - self._cmd_exec = command_executer.GetCommandExecuter() - - def SetupChromeOS(self): - cmd = [ - setup_chromeos.__file__, '--dir=' + self._chromeos_root, '--minilayout', - '--jobs=8' - ] - ret = setup_chromeos.Main(cmd) - if ret: - raise RuntimeError('Failed to checkout chromeos') - ## Do cros_sdk and setup_board, otherwise build_tc in next step will fail. - cmd = 'cd {0} && cros_sdk --download'.format(self._chromeos_root) - ret = self._cmd_exec.RunCommand(cmd, terminated_timeout=9000) - if ret: - raise RuntimeError('Failed to create chroot.') - - def SetupBoard(self): - cmd = 'setup_board --board=' + self._board - ret = self._cmd_exec.ChrootRunCommand( - self._chromeos_root, cmd, terminated_timeout=4000) - if ret: - raise RuntimeError('Failed to setup board.') - - def CheckGDB(self): - args = [ - gdb_dejagnu.__file__, '--board=' + self._board, - '--chromeos_root=' + self._chromeos_root, '--mount=' + self._gdb_dir, - '--remote=' + self._remote - ] - if self._cleanup: - args.append('--cleanup=' + self._cleanup) - return gdb_dejagnu.Main(args) - - -# Parse the output log to determine how many failures we have. -# Return -1 if parse output log failed. -def GetNumNewFailures(result): - if not result: - return 0 - return len(result) - - -# Do not throw any exception in this function! -def EmailResult(result): - email_to = ['yunlian@google.com'] - if len(result) == 4: - subject = 'Job failed: dejagnu test didn\'t finish' - email_text = ( - 'Job failed prematurely, check exception below.\n' + result[3]) - elif result[0]: - subject = 'Job finished: dejagnu test failed' - num_new_failures = GetNumNewFailures(result[1]) - if num_new_failures >= 0: - summary = '{0} new fail(s), check log below.'.format(num_new_failures) - else: - summary = 'At least 1 new fail found, check log below.' - email_text = (summary + ('\nStdout ====\n' - '{0}\n' - '\nStderr ===\n' - '{1}\n').format(result[1], result[2])) - else: - subject = 'Job finished: dejagnu test passed' - email_text = ('Cool! No new fail found.\n' - '\nStdout ====\n' - '{0}\n' - '\nStderr ====\n' - '{1}\n').format(result[1], result[2]) - - try: - email_sender.EmailSender().SendEmail(email_to, subject, email_text) - print('Email sent.') - except Exception as e: - # Do not propagate this email sending exception, you want to email an - # email exception? Just log it on console. - print('Sending email failed - {0}' - 'Subject: {1}' - 'Text: {2}').format(str(e), subject, email_text) - - -def ProcessArguments(argv): - """Processing script arguments.""" - parser = argparse.ArgumentParser( - description=('This script is used by nightly client to test gdb. ' - 'DO NOT run it unless you know what you are doing.'), - usage='test_gdb_dejagnu.py options') - parser.add_argument( - '-b', - '--board', - dest='board', - help=('Required. Specify board type. For example ' - '\'lumpy\' and \'daisy\'')) - parser.add_argument( - '-r', - '--remote', - dest='remote', - help=('Required. Specify remote board address')) - parser.add_argument( - '-g', - '--gdb_dir', - dest='gdb_dir', - default='', - help=('Optional. Specify gdb checkout directory.')) - parser.add_argument( - '-c', - '--chromeos_root', - dest='chromeos_root', - default='chromeos.live', - help=('Optional. Specify chromeos checkout directory.')) - parser.add_argument( - '--cleanup', - dest='cleanup', - default=None, - help=('Optional. Do cleanup after the test.')) - - options = parser.parse_args(argv) - - if not options.board or not options.remote: - raise SyntaxError('--board and --remote are mandatory options.') - - return options - - -def Main(argv): - opt = ProcessArguments(argv) - print(opt) - adapter = DejagnuAdapter(opt.board, opt.remote, opt.gdb_dir, - opt.chromeos_root, opt.cleanup) - try: - adapter.SetupChromeOS() - adapter.SetupBoard() - ret = adapter.CheckGDB() - except Exception as e: - print(e) - ret = (1, '', '', str(e)) - finally: - EmailResult(ret) - - return ret - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval[0]) diff --git a/deprecated/test_toolchains.py b/deprecated/test_toolchains.py deleted file mode 100755 index 8684653f..00000000 --- a/deprecated/test_toolchains.py +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/env python2 - -# Script to test different toolchains against ChromeOS benchmarks. -"""Toolchain team nightly performance test script (local builds).""" - -from __future__ import print_function - -import argparse -import datetime -import os -import sys -import build_chromeos -import setup_chromeos -from cros_utils import command_executer -from cros_utils import misc -from cros_utils import logger - -CROSTC_ROOT = '/usr/local/google/crostc' -MAIL_PROGRAM = '~/var/bin/mail-sheriff' -PENDING_ARCHIVES_DIR = os.path.join(CROSTC_ROOT, 'pending_archives') -NIGHTLY_TESTS_DIR = os.path.join(CROSTC_ROOT, 'nightly_test_reports') - - -class GCCConfig(object): - """GCC configuration class.""" - - def __init__(self, githash): - self.githash = githash - - -class ToolchainConfig(object): - """Toolchain configuration class.""" - - def __init__(self, gcc_config=None): - self.gcc_config = gcc_config - - -class ChromeOSCheckout(object): - """Main class for checking out, building and testing ChromeOS.""" - - def __init__(self, board, chromeos_root): - self._board = board - self._chromeos_root = chromeos_root - self._ce = command_executer.GetCommandExecuter() - self._l = logger.GetLogger() - self._build_num = None - - def _DeleteChroot(self): - command = 'cd %s; cros_sdk --delete' % self._chromeos_root - return self._ce.RunCommand(command) - - def _DeleteCcahe(self): - # crosbug.com/34956 - command = 'sudo rm -rf %s' % os.path.join(self._chromeos_root, '.cache') - return self._ce.RunCommand(command) - - def _GetBuildNumber(self): - """Get the build number of the ChromeOS image from the chroot. - - This function assumes a ChromeOS image has been built in the chroot. - It translates the 'latest' symlink in the - /src/build/images/ directory, to find the actual - ChromeOS build number for the image that was built. For example, if - src/build/image/lumpy/latest -> R37-5982.0.2014_06_23_0454-a1, then - This function would parse it out and assign 'R37-5982' to self._build_num. - This is used to determine the official, vanilla build to use for - comparison tests. - """ - # Get the path to 'latest' - sym_path = os.path.join( - misc.GetImageDir(self._chromeos_root, self._board), 'latest') - # Translate the symlink to its 'real' path. - real_path = os.path.realpath(sym_path) - # Break up the path and get the last piece - # (e.g. 'R37-5982.0.2014_06_23_0454-a1" - path_pieces = real_path.split('/') - last_piece = path_pieces[-1] - # Break this piece into the image number + other pieces, and get the - # image number [ 'R37-5982', '0', '2014_06_23_0454-a1'] - image_parts = last_piece.split('.') - self._build_num = image_parts[0] - - def _BuildLabelName(self, config): - pieces = config.split('/') - compiler_version = pieces[-1] - label = compiler_version + '_tot_afdo' - return label - - def _BuildAndImage(self, label=''): - if (not label or - not misc.DoesLabelExist(self._chromeos_root, self._board, label)): - build_chromeos_args = [ - build_chromeos.__file__, '--chromeos_root=%s' % self._chromeos_root, - '--board=%s' % self._board, '--rebuild' - ] - if self._public: - build_chromeos_args.append('--env=USE=-chrome_internal') - - ret = build_chromeos.Main(build_chromeos_args) - if ret != 0: - raise RuntimeError("Couldn't build ChromeOS!") - - if not self._build_num: - self._GetBuildNumber() - # Check to see if we need to create the symbolic link for the vanilla - # image, and do so if appropriate. - if not misc.DoesLabelExist(self._chromeos_root, self._board, 'vanilla'): - build_name = '%s-release/%s.0.0' % (self._board, self._build_num) - full_vanilla_path = os.path.join(os.getcwd(), self._chromeos_root, - 'chroot/tmp', build_name) - misc.LabelLatestImage(self._chromeos_root, self._board, label, - full_vanilla_path) - else: - misc.LabelLatestImage(self._chromeos_root, self._board, label) - return label - - def _SetupBoard(self, env_dict, usepkg_flag, clobber_flag): - env_string = misc.GetEnvStringFromDict(env_dict) - command = ('%s %s' % (env_string, misc.GetSetupBoardCommand( - self._board, usepkg=usepkg_flag, force=clobber_flag))) - ret = self._ce.ChrootRunCommand(self._chromeos_root, command) - error_str = "Could not setup board: '%s'" % command - assert ret == 0, error_str - - def _UnInstallToolchain(self): - command = ('sudo CLEAN_DELAY=0 emerge -C cross-%s/gcc' % - misc.GetCtargetFromBoard(self._board, self._chromeos_root)) - ret = self._ce.ChrootRunCommand(self._chromeos_root, command) - if ret != 0: - raise RuntimeError("Couldn't uninstall the toolchain!") - - def _CheckoutChromeOS(self): - # TODO(asharif): Setup a fixed ChromeOS version (quarterly snapshot). - if not os.path.exists(self._chromeos_root): - setup_chromeos_args = ['--dir=%s' % self._chromeos_root] - if self._public: - setup_chromeos_args.append('--public') - ret = setup_chromeos.Main(setup_chromeos_args) - if ret != 0: - raise RuntimeError("Couldn't run setup_chromeos!") - - def _BuildToolchain(self, config): - # Call setup_board for basic, vanilla setup. - self._SetupBoard({}, usepkg_flag=True, clobber_flag=False) - # Now uninstall the vanilla compiler and setup/build our custom - # compiler. - self._UnInstallToolchain() - envdict = { - 'USE': 'git_gcc', - 'GCC_GITHASH': config.gcc_config.githash, - 'EMERGE_DEFAULT_OPTS': '--exclude=gcc' - } - self._SetupBoard(envdict, usepkg_flag=False, clobber_flag=False) - - -class ToolchainComparator(ChromeOSCheckout): - """Main class for running tests and generating reports.""" - - def __init__(self, - board, - remotes, - configs, - clean, - public, - force_mismatch, - noschedv2=False): - self._board = board - self._remotes = remotes - self._chromeos_root = 'chromeos' - self._configs = configs - self._clean = clean - self._public = public - self._force_mismatch = force_mismatch - self._ce = command_executer.GetCommandExecuter() - self._l = logger.GetLogger() - timestamp = datetime.datetime.strftime(datetime.datetime.now(), - '%Y-%m-%d_%H:%M:%S') - self._reports_dir = os.path.join( - NIGHTLY_TESTS_DIR, - '%s.%s' % (timestamp, board),) - self._noschedv2 = noschedv2 - ChromeOSCheckout.__init__(self, board, self._chromeos_root) - - def _FinishSetup(self): - # Get correct .boto file - current_dir = os.getcwd() - src = '/usr/local/google/home/mobiletc-prebuild/.boto' - dest = os.path.join(current_dir, self._chromeos_root, - 'src/private-overlays/chromeos-overlay/' - 'googlestorage_account.boto') - # Copy the file to the correct place - copy_cmd = 'cp %s %s' % (src, dest) - retv = self._ce.RunCommand(copy_cmd) - if retv != 0: - raise RuntimeError("Couldn't copy .boto file for google storage.") - - # Fix protections on ssh key - command = ('chmod 600 /var/cache/chromeos-cache/distfiles/target' - '/chrome-src-internal/src/third_party/chromite/ssh_keys' - '/testing_rsa') - retv = self._ce.ChrootRunCommand(self._chromeos_root, command) - if retv != 0: - raise RuntimeError('chmod for testing_rsa failed') - - def _TestLabels(self, labels): - experiment_file = 'toolchain_experiment.txt' - image_args = '' - if self._force_mismatch: - image_args = '--force-mismatch' - experiment_header = """ - board: %s - remote: %s - retries: 1 - """ % (self._board, self._remotes) - experiment_tests = """ - benchmark: all_toolchain_perf { - suite: telemetry_Crosperf - iterations: 3 - } - """ - - with open(experiment_file, 'w') as f: - f.write(experiment_header) - f.write(experiment_tests) - for label in labels: - # TODO(asharif): Fix crosperf so it accepts labels with symbols - crosperf_label = label - crosperf_label = crosperf_label.replace('-', '_') - crosperf_label = crosperf_label.replace('+', '_') - crosperf_label = crosperf_label.replace('.', '') - - # Use the official build instead of building vanilla ourselves. - if label == 'vanilla': - build_name = '%s-release/%s.0.0' % (self._board, self._build_num) - - # Now add 'official build' to test file. - official_image = """ - official_image { - chromeos_root: %s - build: %s - } - """ % (self._chromeos_root, build_name) - f.write(official_image) - - else: - experiment_image = """ - %s { - chromeos_image: %s - image_args: %s - } - """ % (crosperf_label, os.path.join( - misc.GetImageDir(self._chromeos_root, self._board), label, - 'chromiumos_test_image.bin'), image_args) - f.write(experiment_image) - - crosperf = os.path.join(os.path.dirname(__file__), 'crosperf', 'crosperf') - noschedv2_opts = '--noschedv2' if self._noschedv2 else '' - command = ('{crosperf} --no_email=True --results_dir={r_dir} ' - '--json_report=True {noschedv2_opts} {exp_file}').format( - crosperf=crosperf, - r_dir=self._reports_dir, - noschedv2_opts=noschedv2_opts, - exp_file=experiment_file) - - ret = self._ce.RunCommand(command) - if ret != 0: - raise RuntimeError('Crosperf execution error!') - else: - # Copy json report to pending archives directory. - command = 'cp %s/*.json %s/.' % (self._reports_dir, PENDING_ARCHIVES_DIR) - ret = self._ce.RunCommand(command) - return - - def _SendEmail(self): - """Find email msesage generated by crosperf and send it.""" - filename = os.path.join(self._reports_dir, 'msg_body.html') - if (os.path.exists(filename) and - os.path.exists(os.path.expanduser(MAIL_PROGRAM))): - command = ('cat %s | %s -s "Nightly test results, %s" -team -html' % - (filename, MAIL_PROGRAM, self._board)) - self._ce.RunCommand(command) - - def DoAll(self): - self._CheckoutChromeOS() - labels = [] - labels.append('vanilla') - for config in self._configs: - label = self._BuildLabelName(config.gcc_config.githash) - if not misc.DoesLabelExist(self._chromeos_root, self._board, label): - self._BuildToolchain(config) - label = self._BuildAndImage(label) - labels.append(label) - self._FinishSetup() - self._TestLabels(labels) - self._SendEmail() - if self._clean: - ret = self._DeleteChroot() - if ret != 0: - return ret - ret = self._DeleteCcahe() - if ret != 0: - return ret - return 0 - - -def Main(argv): - """The main function.""" - # Common initializations - ### command_executer.InitCommandExecuter(True) - command_executer.InitCommandExecuter() - parser = argparse.ArgumentParser() - parser.add_argument( - '--remote', dest='remote', help='Remote machines to run tests on.') - parser.add_argument( - '--board', dest='board', default='x86-alex', help='The target board.') - parser.add_argument( - '--githashes', - dest='githashes', - default='master', - help='The gcc githashes to test.') - parser.add_argument( - '--clean', - dest='clean', - default=False, - action='store_true', - help='Clean the chroot after testing.') - parser.add_argument( - '--public', - dest='public', - default=False, - action='store_true', - help='Use the public checkout/build.') - parser.add_argument( - '--force-mismatch', - dest='force_mismatch', - default='', - help='Force the image regardless of board mismatch') - parser.add_argument( - '--noschedv2', - dest='noschedv2', - action='store_true', - default=False, - help='Pass --noschedv2 to crosperf.') - options = parser.parse_args(argv) - if not options.board: - print('Please give a board.') - return 1 - if not options.remote: - print('Please give at least one remote machine.') - return 1 - toolchain_configs = [] - for githash in options.githashes.split(','): - gcc_config = GCCConfig(githash=githash) - toolchain_config = ToolchainConfig(gcc_config=gcc_config) - toolchain_configs.append(toolchain_config) - fc = ToolchainComparator(options.board, options.remote, toolchain_configs, - options.clean, options.public, - options.force_mismatch, options.noschedv2) - return fc.DoAll() - - -if __name__ == '__main__': - retval = Main(sys.argv[1:]) - sys.exit(retval) diff --git a/deprecated/verify_compiler.py b/deprecated/verify_compiler.py deleted file mode 100755 index b70c1257..00000000 --- a/deprecated/verify_compiler.py +++ /dev/null @@ -1,233 +0,0 @@ -#!/usr/bin/env python2 -"""Verify that a ChromeOS sub-tree was built with a particular compiler""" - -from __future__ import print_function - -import argparse -import fnmatch -import os -import sys - -from cros_utils import command_executer - -COMPILERS = ['gcc', 'clang'] - -COMPILER_STRINGS = {'gcc': 'GNU C', 'clang': 'clang version'} - -ERR_NO_DEBUG_INFO = 1024 - - -def UsageError(parser, message): - """Output error message and help/usage info.""" - - print('ERROR: %s' % message) - parser.print_help() - sys.exit(0) - - -def CreateTmpDwarfFile(filename, dwarf_file, cmd_executer): - """Create temporary dwarfdump file, to be parsed later.""" - - cmd = ('readelf --debug-dump=info %s | grep -A5 DW_AT_producer > %s' % - (filename, dwarf_file)) - retval = cmd_executer.RunCommand(cmd, print_to_console=False) - return retval - - -def FindAllFiles(root_dir): - """Create a list of all the *.debug and *.dwp files to be checked.""" - - file_list = [] - tmp_list = [ - os.path.join(dirpath, f) - for dirpath, _, files in os.walk(root_dir) - for f in fnmatch.filter(files, '*.debug') - ] - for f in tmp_list: - if 'build-id' not in f: - file_list.append(f) - tmp_list = [ - os.path.join(dirpath, f) - for dirpath, _, files in os.walk(root_dir) - for f in fnmatch.filter(files, '*.dwp') - ] - file_list += tmp_list - return file_list - - -def VerifyArgs(compiler, filename, tmp_dir, root_dir, options, parser): - """Verify that the option values and combinations are valid.""" - - if options.filename and options.all_files: - UsageError(parser, 'Cannot use both --file and --all_files.') - if options.filename and options.root_dir: - UsageError(parser, 'Cannot use both --file and --root_dir.') - if options.all_files and not options.root_dir: - UsageError(parser, 'Missing --root_dir option.') - if options.root_dir and not options.all_files: - UsageError(parser, 'Missing --all_files option.') - if not options.filename and not options.all_files: - UsageError(parser, 'Must specify either --file or --all_files.') - - # Verify that the values specified are valid. - if filename: - if not os.path.exists(filename): - UsageError(parser, 'Cannot find %s' % filename) - compiler = options.compiler.lower() - if compiler not in COMPILERS: - UsageError(parser, '%s is not a valid compiler (gcc or clang).' % compiler) - if root_dir and not os.path.exists(root_dir): - UsageError(parser, '%s does not exist.' % root_dir) - if not os.path.exists(tmp_dir): - os.makedirs(tmp_dir) - - -def CheckFile(filename, compiler, tmp_dir, options, cmd_executer): - """Verify the information in a single file.""" - - print('Checking %s' % filename) - # Verify that file contains debug information. - cmd = 'readelf -SW %s | grep debug_info' % filename - retval = cmd_executer.RunCommand(cmd, print_to_console=False) - if retval != 0: - print('No debug info in this file. Unable to verify compiler.') - # There's no debug info in this file, so skip it. - return ERR_NO_DEBUG_INFO - - tmp_name = os.path.basename(filename) + '.dwarf' - dwarf_file = os.path.join(tmp_dir, tmp_name) - status = CreateTmpDwarfFile(filename, dwarf_file, cmd_executer) - - if status != 0: - print('Unable to create dwarf file for %s (status: %d).' % (filename, - status)) - return status - - comp_str = COMPILER_STRINGS[compiler] - - retval = 0 - with open(dwarf_file, 'r') as in_file: - lines = in_file.readlines() - looking_for_name = False - for line in lines: - if 'DW_AT_producer' in line: - looking_for_name = False - if 'GNU AS' in line: - continue - if comp_str not in line: - looking_for_name = True - retval = 1 - elif looking_for_name: - if 'DW_AT_name' in line: - words = line.split(':') - bad_file = words[-1] - print('FAIL: %s was not compiled with %s.' % (bad_file.rstrip(), - compiler)) - looking_for_name = False - elif 'DW_TAG_' in line: - looking_for_name = False - - if not options.keep_file: - os.remove(dwarf_file) - - return retval - - -def Main(argv): - - cmd_executer = command_executer.GetCommandExecuter() - parser = argparse.ArgumentParser() - parser.add_argument( - '--file', dest='filename', help='Name of file to be verified.') - parser.add_argument( - '--compiler', - dest='compiler', - required=True, - help='Desired compiler (gcc or clang)') - parser.add_argument( - '--tmp_dir', - dest='tmp_dir', - help='Directory in which to put dwarf dump file.' - ' Defaults to /tmp') - parser.add_argument( - '--keep_file', - dest='keep_file', - default=False, - action='store_true', - help='Do not delete dwarf file when done.') - parser.add_argument( - '--all_files', - dest='all_files', - default=False, - action='store_true', - help='Find and check ALL .debug/.dwp files ' - 'in subtree. Must be used with --root_dir ' - '(and NOT with --file).') - parser.add_argument( - '--root_dir', - dest='root_dir', - help='Root of subtree in which to look for ' - 'files. Must be used with --all_files, and' - ' not with --file.') - - options = parser.parse_args(argv) - - compiler = options.compiler - filename = None - if options.filename: - filename = os.path.realpath(os.path.expanduser(options.filename)) - tmp_dir = '/tmp' - if options.tmp_dir: - tmp_dir = os.path.realpath(os.path.expanduser(options.tmp_dir)) - root_dir = None - if options.root_dir: - root_dir = os.path.realpath(os.path.expanduser(options.root_dir)) - - VerifyArgs(compiler, filename, tmp_dir, root_dir, options, parser) - - file_list = [] - if filename: - file_list.append(filename) - else: - file_list = FindAllFiles(root_dir) - - bad_files = [] - unknown_files = [] - all_pass = True - for f in file_list: - result = CheckFile(f, compiler, tmp_dir, options, cmd_executer) - if result == ERR_NO_DEBUG_INFO: - unknown_files.append(f) - all_pass = False - elif result != 0: - bad_files.append(f) - all_pass = False - - if all_pass: - print('\n\nSUCCESS: All compilation units were compiled with %s.\n' % - compiler) - return 0 - else: - if len(bad_files) == 0: - print( - '\n\n*Mostly* SUCCESS: All files that could be checked were compiled ' - 'with %s.' % compiler) - print( - '\n\nUnable to verify the following files (no debug info in them):\n') - for f in unknown_files: - print(f) - else: - print('\n\nFAILED: The following files were not compiled with %s:\n' % - compiler) - for f in bad_files: - print(f) - if len(unknown_files) > 0: - print('\n\nUnable to verify the following files (no debug info in ' - 'them):\n') - for f in unknown_files: - print(f) - return 1 - - -if __name__ == '__main__': - sys.exit(Main(sys.argv[1:])) diff --git a/deprecated/weekly_report.py b/deprecated/weekly_report.py deleted file mode 100755 index 476b9f0d..00000000 --- a/deprecated/weekly_report.py +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -# -# Copyright Google Inc. 2014 - -"""Module to generate the 7-day crosperf reports.""" - -from __future__ import print_function - -import argparse -import datetime -import os -import sys - -from cros_utils import constants -from cros_utils import command_executer - -WEEKDAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] -DATA_ROOT_DIR = os.path.join(constants.CROSTC_WORKSPACE, 'weekly_test_data') -EXPERIMENT_FILE = os.path.join(DATA_ROOT_DIR, 'weekly_report') -MAIL_PROGRAM = '~/var/bin/mail-sheriff' - - -def Generate_Vanilla_Report_File(vanilla_image_paths, board, remote, - chromeos_root, cmd_executer): - - experiment_header = """ -name: weekly_vanilla_report -cache_only: True -same_specs: False -board: %s -remote: %s -""" % (board, remote) - - experiment_tests = """ -benchmark: all_toolchain_perf { - suite: telemetry_Crosperf - iterations: 3 -} -""" - - filename = '%s_%s_vanilla.exp' % (EXPERIMENT_FILE, board) - if os.path.exists(filename): - cmd = 'rm %s' % filename - cmd_executer.RunCommand(cmd) - - with open(filename, 'w') as f: - f.write(experiment_header) - f.write(experiment_tests) - - # Add each vanilla image - for test_path in vanilla_image_paths: - pieces = test_path.split('/') - test_name = pieces[-1] - test_image = """ -%s { - chromeos_root: %s - chromeos_image: %s -} -""" % (test_name, chromeos_root, - os.path.join(test_path, 'chromiumos_test_image.bin')) - f.write(test_image) - - return filename - - -def Generate_Test_File(test_image_paths, vanilla_image_path, board, remote, - chromeos_root, cmd_executer): - - experiment_header = """ -name: weekly_report -cache_only: True -same_specs: False -board: %s -remote: %s -""" % (board, remote) - - experiment_tests = """ -benchmark: all_toolchain_perf { - suite: telemetry_Crosperf - iterations: 3 -} -""" - - filename = '%s_%s.exp' % (EXPERIMENT_FILE, board) - if os.path.exists(filename): - cmd = 'rm %s' % filename - cmd_executer.RunCommand(cmd) - - with open(filename, 'w') as f: - f.write(experiment_header) - f.write(experiment_tests) - - # Add vanilla image (first) - vanilla_image = """ -%s { - chromeos_root: %s - chromeos_image: %s -} -""" % (vanilla_image_path.split('/')[-1], chromeos_root, - os.path.join(vanilla_image_path, 'chromiumos_test_image.bin')) - - f.write(vanilla_image) - - # Add each test image - for test_path in test_image_paths: - pieces = test_path.split('/') - test_name = pieces[-1] - test_image = """ -%s { - chromeos_root: %s - chromeos_image: %s -} -""" % (test_name, chromeos_root, - os.path.join(test_path, 'chromiumos_test_image.bin')) - f.write(test_image) - - return filename - - -def Main(argv): - - parser = argparse.ArgumentParser() - parser.add_argument('-b', '--board', dest='board', help='Target board.') - parser.add_argument('-r', '--remote', dest='remote', help='Target device.') - parser.add_argument( - '-v', - '--vanilla_only', - dest='vanilla_only', - action='store_true', - default=False, - help='Generate a report comparing only the vanilla ' - 'images.') - - options = parser.parse_args(argv[1:]) - - if not options.board: - print('Must specify a board.') - return 1 - - if not options.remote: - print('Must specify at least one remote.') - return 1 - - cmd_executer = command_executer.GetCommandExecuter(log_level='average') - - # Find starting index, for cycling through days of week, generating - # reports starting 6 days ago from today. Generate list of indices for - # order in which to look at weekdays for report: - todays_index = datetime.datetime.today().isoweekday() - indices = [] - start = todays_index + 1 - end = start + 7 - for i in range(start, end): - indices.append(i % 7) - # E.g. if today is Sunday, then start report with last Monday, so - # indices = [1, 2, 3, 4, 5, 6, 0]. - - # Find all the test image tar files, untar them and add them to - # the list. Also find and untar vanilla image tar files, and keep - # track of the first vanilla image. - report_image_paths = [] - vanilla_image_paths = [] - first_vanilla_image = None - for i in indices: - day = WEEKDAYS[i] - data_path = os.path.join(DATA_ROOT_DIR, options.board, day) - if os.path.exists(data_path): - # First, untar the test image. - tar_file_name = '%s_test_image.tar' % day - tar_file_path = os.path.join(data_path, tar_file_name) - image_dir = '%s_test_image' % day - image_path = os.path.join(data_path, image_dir) - if os.path.exists(tar_file_path): - if not os.path.exists(image_path): - os.makedirs(image_path) - cmd = ('cd %s; tar -xvf %s -C %s --strip-components 1' % - (data_path, tar_file_path, image_path)) - ret = cmd_executer.RunCommand(cmd) - if not ret: - report_image_paths.append(image_path) - # Next, untar the vanilla image. - vanilla_file = '%s_vanilla_image.tar' % day - v_file_path = os.path.join(data_path, vanilla_file) - image_dir = '%s_vanilla_image' % day - image_path = os.path.join(data_path, image_dir) - if os.path.exists(v_file_path): - if not os.path.exists(image_path): - os.makedirs(image_path) - cmd = ('cd %s; tar -xvf %s -C %s --strip-components 1' % - (data_path, v_file_path, image_path)) - ret = cmd_executer.RunCommand(cmd) - if not ret: - vanilla_image_paths.append(image_path) - if not first_vanilla_image: - first_vanilla_image = image_path - - # Find a chroot we can use. Look for a directory containing both - # an experiment file and a chromeos directory (the experiment file will - # only be created if both images built successfully, i.e. the chroot is - # good). - chromeos_root = None - timestamp = datetime.datetime.strftime(datetime.datetime.now(), - '%Y-%m-%d_%H:%M:%S') - results_dir = os.path.join( - os.path.expanduser('~/nightly_test_reports'), - '%s.%s' % (timestamp, options.board), 'weekly_tests') - - for day in WEEKDAYS: - startdir = os.path.join(constants.CROSTC_WORKSPACE, 'nightly-tests', day) - num_dirs = os.listdir(startdir) - for d in num_dirs: - exp_file = os.path.join(startdir, d, 'toolchain_experiment.txt') - chroot = os.path.join(startdir, d, 'chromeos') - if os.path.exists(chroot) and os.path.exists(exp_file): - chromeos_root = chroot - if chromeos_root: - break - if chromeos_root: - break - - if not chromeos_root: - print('Unable to locate a usable chroot. Exiting without report.') - return 1 - - # Create the Crosperf experiment file for generating the weekly report. - if not options.vanilla_only: - filename = Generate_Test_File(report_image_paths, first_vanilla_image, - options.board, options.remote, chromeos_root, - cmd_executer) - else: - filename = Generate_Vanilla_Report_File(vanilla_image_paths, options.board, - options.remote, chromeos_root, - cmd_executer) - - # Run Crosperf on the file to generate the weekly report. - cmd = ('%s/toolchain-utils/crosperf/crosperf ' - '%s --no_email=True --results_dir=%s' % (constants.CROSTC_WORKSPACE, - filename, results_dir)) - retv = cmd_executer.RunCommand(cmd) - if retv == 0: - # Send the email, if the crosperf command worked. - filename = os.path.join(results_dir, 'msg_body.html') - if (os.path.exists(filename) and - os.path.exists(os.path.expanduser(MAIL_PROGRAM))): - vanilla_string = ' ' - if options.vanilla_only: - vanilla_string = ' Vanilla ' - command = ('cat %s | %s -s "Weekly%sReport results, %s" -team -html' % - (filename, MAIL_PROGRAM, vanilla_string, options.board)) - retv = cmd_executer.RunCommand(command) - - return retv - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) -- cgit v1.2.3 From 505ab9530dc7a3a1d84b351f9ce682b4e8e33bc6 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 7 Apr 2020 14:08:55 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R83-12997.0-1585561233 to R83-13015.0-1586166041 Change-Id: Iee0f2680ef15f0d11a36e7add28456b4b8780d34 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2140247 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f907373a..aff3e24e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R84-13015.0-1586166393" }, "chromeos-kernel-3_18": { - "name": "R83-12997.0-1585561233" + "name": "R83-13015.0-1586166041" }, "chromeos-kernel-4_14": { "name": "R84-13015.0-1586166104" -- cgit v1.2.3 From 0b3b75ebc2e89ed7055b3153a198cb29be2b8c71 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 8 Apr 2020 14:59:40 -0700 Subject: compiler_wrapper: assume /dev/null is a configure test Linux does a lot of "is this flag supported" testing by passing /dev/null as an input file. Since this code is pretty heuristic-y anyway, let's see if we can get by with calling that a `configure`-like file. :) BUG=None TEST=emerge-eve chromeos-kernel-4_4; no more fatal warnings Change-Id: Ie1cd80b36e93a9269280345a1df006baa356a9f6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2142404 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 3 ++- compiler_wrapper/disable_werror_flag_test.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 2800c5fa..f68786d4 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -48,7 +48,8 @@ func isLikelyAConfTest(cfg *config, cmd *command) bool { } for _, a := range cmd.Args { - if strings.HasPrefix(a, "conftest.c") { + // The kernel, for example, will do configure tests with /dev/null as a source file. + if a == "/dev/null" || strings.HasPrefix(a, "conftest.c") { return true } } diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index 9d762599..53b0fb52 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -73,7 +73,7 @@ func TestDoubleBuildWithWNoErrorFlag(t *testing.T) { func TestKnownConfigureFileParsing(t *testing.T) { withTestContext(t, func(ctx *testContext) { - for _, f := range []string{"conftest.c", "conftest.cpp"} { + for _, f := range []string{"conftest.c", "conftest.cpp", "/dev/null"} { if !isLikelyAConfTest(ctx.cfg, ctx.newCommand(clangX86_64, f)) { t.Errorf("%q isn't considered a conf test file", f) } -- cgit v1.2.3 From ada5177bc9d5f685bc0d8d7b3ff524ad06550531 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 8 Apr 2020 10:47:17 -0700 Subject: llvm_tools: uprev ebuilds for LLVM roll CLs Currently update_chromeos_llvm_hash.py uprevs ebuild files by increasing the -r*.ebuild by 1. This patch renames the ebuild files with the new SVN reversion and date for LLVM roll CLs. BUG=chromium:1041590 TEST=local tests. Change-Id: I209191f7d34594010914afb54d4c346e3f13c6fa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2139094 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- llvm_tools/README.md | 20 +-- llvm_tools/update_chromeos_llvm_hash.py | 94 ++++++++++--- llvm_tools/update_chromeos_llvm_hash_unittest.py | 160 +++++++++++++++++------ 3 files changed, 208 insertions(+), 66 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 07c11651..d42462ad 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -64,11 +64,11 @@ $ ./update_packages_and_run_tryjobs.py \ --builders kevin-release-tryjob nocturne-release-tryjob ``` -## `update_chromeos_llvm_next_hash.py` +## `update_chromeos_llvm_hash.py` ### Usage -This script is used for updating a package's/packages' `LLVM_NEXT_HASH` and +This script is used for updating a package's/packages' LLVM hashes and creating a change list of those changes which will uploaded for review. For example, some changes that would be included in the change list are the updated ebuilds, changes made to the patches of the updated packages such @@ -81,13 +81,14 @@ have their `LLVM_NEXT_HASH` updated. For example: ``` -$ ./update_chromeos_llvm_next_hash.py \ +$ ./update_chromeos_llvm_hash.py \ --update_packages sys-devel/llvm sys-libs/compiler-rt \ + --is_llvm_next \ --llvm_version google3 \ --failure_mode disable_patches ``` -The example above would update sys-devel/llvm and sys-libs/compiler-rt +The example above would update sys-devel/llvm and sys-libs/compiler-rt's `LLVM_NEXT_HASH` to the latest google3's git hash of LLVM. And the change list may include patches that were disabled for either sys-devel/llvm or sys-libs/compiler-rt. @@ -95,23 +96,24 @@ sys-libs/compiler-rt. For help with the command line arguments of the script, run: ``` -$ ./update_chromeos_llvm_next.py --help +$ ./update_chromeos_llvm_hash.py --help ``` -For example, to update `LLVM_NEXT_HASH` to top of trunk of LLVM: +For example, to update `LLVM_HASH` to top of trunk of LLVM: ``` -$ ./update_chromeos_llvm_next_hash.py \ +$ ./update_chromeos_llvm_hash.py \ --update_packages sys-devel/llvm sys-libs/compiler-rt \ --llvm_version tot \ --failure_mode disable_patches ``` -For example, to update `LLVM_NEXT_HASH` to the git hash of revision 367622: +For example, to create a roll CL to the git hash of revision 367622: ``` -$ ./update_chromeos_llvm_next_hash.py \ +$ ./update_chromeos_llvm_hash.py \ --update_packages sys-devel/llvm sys-libs/compiler-rt \ + sys-libs/libcxx sys-libs/libcxxabi sys-libs/llvm-libunwind \ --llvm_version 367622 \ --failure_mode disable_patches ``` diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index 916eb67b..c18e72fe 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -14,6 +14,7 @@ for review. from __future__ import print_function from collections import namedtuple +from datetime import datetime from enum import Enum import argparse @@ -89,10 +90,8 @@ def GetCommandLineArgs(): parser.add_argument( '--is_llvm_next', action='store_true', - help= - 'which llvm hash to update. Update LLVM_NEXT_HASH specified. ' \ - 'Otherwise, update LLVM_HASH' - ) + help='which llvm hash to update. If specified, update LLVM_NEXT_HASH. ' + 'Otherwise, update LLVM_HASH') # Add argument for the LLVM version to use. parser.add_argument( @@ -313,15 +312,14 @@ def ReplaceLLVMHash(ebuild_lines, llvm_variant, git_hash, svn_version): raise ValueError('Failed to update %s' % llvm_variant.value) -def UprevEbuild(symlink): - """Uprevs the ebuild's revision number. +def UprevEbuildSymlink(symlink): + """Uprevs the symlink's revision number. Increases the revision number by 1 and stages the change in the temporary repo. Args: - symlink: The absolute path of the symlink that points to - the ebuild of the package. + symlink: The absolute path of an ebuild symlink. Raises: ValueError: Failed to uprev the symlink or failed to stage the changes. @@ -330,24 +328,84 @@ def UprevEbuild(symlink): if not os.path.islink(symlink): raise ValueError('Invalid symlink provided: %s' % symlink) - # Find the revision number and increment it by 1. new_symlink, is_changed = re.subn( r'r([0-9]+).ebuild', lambda match: 'r%s.ebuild' % str(int(match.group(1)) + 1), symlink, count=1) + if not is_changed: + raise ValueError('Failed to uprev the symlink.') + + symlink_dirname = os.path.dirname(symlink) + + # rename the symlink + cmd = ['git', '-C', symlink_dirname, 'mv', symlink, new_symlink] + + ExecCommandAndCaptureOutput(cmd, verbose=verbose) + + +def UprevEbuildToVersion(symlink, svn_version): + """Uprevs the ebuild's revision number. + + Increases the revision number by 1 and stages the change in + the temporary repo. + + Args: + symlink: The absolute path of an ebuild symlink. + svn_version: The SVN-style revision number of git_hash. + + Raises: + ValueError: Failed to uprev the ebuild or failed to stage the changes. + """ + + if not os.path.islink(symlink): + raise ValueError('Invalid symlink provided: %s' % symlink) + + ebuild = os.path.realpath(symlink) + # llvm + package = os.path.basename(os.path.dirname(symlink)) + if not package: + raise ValueError('Tried to uprev an unknown package') + # llvm + if package == 'llvm': + new_ebuild, is_changed = re.subn( + r'pre([0-9]+)_p([0-9]+)', + 'pre%s_p%s' % (svn_version, \ + datetime.today().strftime('%Y%m%d')), + ebuild, + count=1) + # any other package + else: + new_ebuild, is_changed = re.subn( + r'pre([0-9]+)', + 'pre%s' % (datetime.today().strftime('%Y%m%d')), + ebuild, + count=1) + if not is_changed: # failed to increment the revision number raise ValueError('Failed to uprev the ebuild.') - path_to_symlink_dir = os.path.dirname(symlink) + symlink_dirname = os.path.dirname(symlink) - # Stage the new symlink for commit. - stage_symlink_cmd = [ - 'git', '-C', path_to_symlink_dir, 'mv', symlink, new_symlink - ] + # Rename the ebuild + cmd = ['git', '-C', symlink_dirname, 'mv', ebuild, new_ebuild] + ExecCommandAndCaptureOutput(cmd, verbose=verbose) + + # Create a symlink of the renamed ebuild + new_symlink = new_ebuild[:-len('.ebuild')] + '-r1.ebuild' + cmd = ['ln', '-s', new_ebuild, new_symlink] + ExecCommandAndCaptureOutput(cmd, verbose=verbose) + + if not os.path.islink(new_symlink): + raise ValueError('Invalid symlink name: %s' % new_ebuild[:-len('.ebuild')]) + + cmd = ['git', '-C', symlink_dirname, 'add', new_symlink] + ExecCommandAndCaptureOutput(cmd, verbose=verbose) - ExecCommandAndCaptureOutput(stage_symlink_cmd, verbose=verbose) + # Remove the old symlink + cmd = ['git', '-C', symlink_dirname, 'rm', symlink] + ExecCommandAndCaptureOutput(cmd, verbose=verbose) def _CreateRepo(path_to_repo_dir, branch): @@ -636,6 +694,7 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, Ex: 'FailureModes.FAIL' git_hash_source: The source of which git hash to use based off of. Ex: 'google3', 'tot', or such as 365123 + extra_commit_msg: extra test to append to the commit message. Returns: A nametuple that has two (key, value) pairs, where the first pair is the @@ -685,7 +744,10 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version) - UprevEbuild(symlink_path) + if llvm_variant == LLVMVariant.current: + UprevEbuildToVersion(symlink_path, svn_version) + else: + UprevEbuildSymlink(symlink_path) cur_dir_name = os.path.basename(path_to_ebuild_dir) parent_dir_name = os.path.basename(os.path.dirname(path_to_ebuild_dir)) diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index b29b0784..b6d8c5da 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -9,7 +9,9 @@ from __future__ import print_function from collections import namedtuple +from datetime import datetime import os +import re import subprocess import unittest import unittest.mock as mock @@ -88,10 +90,7 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_islink): symlink_path = '/path/to/chroot/src/package-r1.ebuild' - abs_path_to_package = '/abs/path/to/src/package.ebuild' - - # Simulate 'os.path.realpath' when a valid path is passed in. mock_realpath.return_value = abs_path_to_package expected_resolved_paths = {symlink_path: abs_path_to_package} @@ -265,61 +264,137 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_stage_commit_command.assert_called_once() - # Simulate behavior of 'os.path.islink()' when the argument passed in is not a - # symbolic link. @mock.patch.object(os.path, 'islink', return_value=False) - def testFailedToUprevEbuildForInvalidSymlink(self, mock_islink): - symlink_to_uprev = '/symlink/to/package.ebuild' + def testFailedToUprevEbuildToVersionForInvalidSymlink(self, mock_islink): + symlink_path = '/path/to/chroot/package/package.ebuild' + svn_version = 1000 + + # Verify the exception is raised when a invalid symbolic link is passed in. + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UprevEbuildToVersion(symlink_path, svn_version) + + self.assertEqual( + str(err.exception), 'Invalid symlink provided: %s' % symlink_path) + + mock_islink.assert_called_once() + + @mock.patch.object(os.path, 'islink', return_value=False) + def testFailedToUprevEbuildSymlinkForInvalidSymlink(self, mock_islink): + symlink_path = '/path/to/chroot/package/package.ebuild' - # Verify the exception is raised when a symbolic link is not passed in. + # Verify the exception is raised when a invalid symbolic link is passed in. with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash.UprevEbuild(symlink_to_uprev) + update_chromeos_llvm_hash.UprevEbuildSymlink(symlink_path) self.assertEqual( - str(err.exception), 'Invalid symlink provided: %s' % symlink_to_uprev) + str(err.exception), 'Invalid symlink provided: %s' % symlink_path) mock_islink.assert_called_once() # Simulate 'os.path.islink' when a symbolic link is passed in. @mock.patch.object(os.path, 'islink', return_value=True) - def testFailedToUprevEbuild(self, mock_islink): - symlink_to_uprev = '/symlink/to/package.ebuild' + # Simulate 'os.path.realpath' when a symbolic link is passed in. + @mock.patch.object(os.path, 'realpath', return_value=True) + def testFailedToUprevEbuildToVersion(self, mock_realpath, mock_islink): + symlink_path = '/path/to/chroot/llvm/llvm_pre123_p.ebuild' + mock_realpath.return_value = '/abs/path/to/llvm/llvm_pre123_p.ebuild' + svn_version = 1000 - # Verify the exception is raised when the symlink does not have a revision - # number. + # Verify the exception is raised when the symlink does not match the + # expected pattern with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash.UprevEbuild(symlink_to_uprev) + update_chromeos_llvm_hash.UprevEbuildToVersion(symlink_path, svn_version) self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') - mock_islink.assert_called_once_with(symlink_to_uprev) + mock_islink.assert_called_once_with(symlink_path) + + # Simulate 'os.path.islink' when a symbolic link is passed in. + @mock.patch.object(os.path, 'islink', return_value=True) + def testFailedToUprevEbuildSymlink(self, mock_islink): + symlink_path = '/path/to/chroot/llvm/llvm_pre123_p.ebuild' + + # Verify the exception is raised when the symlink does not match the + # expected pattern + with self.assertRaises(ValueError) as err: + update_chromeos_llvm_hash.UprevEbuildSymlink(symlink_path) + + self.assertEqual(str(err.exception), 'Failed to uprev the symlink.') + + mock_islink.assert_called_once_with(symlink_path) # Simulate 'os.path.islink' when a valid symbolic link is passed in. @mock.patch.object(os.path, 'islink', return_value=True) - # Simulate 'os.path.dirname' when returning a path to the directory of a - # valid symbolic link. - @mock.patch.object(os.path, 'dirname', return_value='/symlink/to') + @mock.patch.object(os.path, 'realpath') # Simulate 'RunCommandWOutput' when successfully added the upreved symlink # for commit. @mock.patch.object( update_chromeos_llvm_hash, 'ExecCommandAndCaptureOutput', return_value=None) - def testSuccessfullyUprevEbuild(self, mock_command_output, mock_dirname, - mock_islink): + def testSuccessfullyUprevEbuildToVersion(self, mock_command_output, + mock_realpath, mock_islink): + symlink = '/symlink/to/llvm/llvm_pre3_p2-r10.ebuild' + ebuild = '/abs/path/to/llvm_pre3_p2.ebuild' + mock_realpath.return_value = ebuild + svn_version = 1000 + + update_chromeos_llvm_hash.UprevEbuildToVersion(symlink, svn_version) + + mock_islink.assert_called() + + mock_realpath.assert_called_once_with(symlink) + + mock_command_output.assert_called() + # Verify commands + symlink_dir = os.path.dirname(symlink) + new_ebuild, _is_changed = re.subn( + r'pre([0-9]+)_p([0-9]+)', + 'pre%s_p%s' % (svn_version, \ + datetime.today().strftime('%Y%m%d')), + ebuild, + count=1) + new_symlink = new_ebuild[:-len('.ebuild')] + '-r1.ebuild' + + expected_cmd = ['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild] + self.assertEqual(mock_command_output.call_args_list[0], + mock.call(expected_cmd, verbose=False)) + + expected_cmd = ['ln', '-s', new_ebuild, new_symlink] + self.assertEqual(mock_command_output.call_args_list[1], + mock.call(expected_cmd, verbose=False)) + + expected_cmd = ['git', '-C', symlink_dir, 'add', new_symlink] + self.assertEqual(mock_command_output.call_args_list[2], + mock.call(expected_cmd, verbose=False)) + + expected_cmd = ['git', '-C', symlink_dir, 'rm', symlink] + self.assertEqual(mock_command_output.call_args_list[3], + mock.call(expected_cmd, verbose=False)) + + # Simulate 'os.path.islink' when a valid symbolic link is passed in. + @mock.patch.object(os.path, 'islink', return_value=True) + # Simulate 'RunCommandWOutput' when successfully added the upreved symlink + # for commit. + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyUprevEbuildSymlink(self, mock_command_output, + mock_islink): symlink_to_uprev = '/symlink/to/package-r1.ebuild' - update_chromeos_llvm_hash.UprevEbuild(symlink_to_uprev) + update_chromeos_llvm_hash.UprevEbuildSymlink(symlink_to_uprev) mock_islink.assert_called_once_with(symlink_to_uprev) - mock_dirname.assert_called_once_with(symlink_to_uprev) - mock_command_output.assert_called_once() # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a + # directory. + @mock.patch.object(os.path, 'isdir', return_value=False) def testFailedToCreateRepoForInvalidDirectoryPath(self, mock_isdir): path_to_repo = '/path/to/repo' @@ -755,12 +830,14 @@ class UpdateLLVMHashTest(unittest.TestCase): 'CreatePathDictionaryFromPackages') @mock.patch.object(update_chromeos_llvm_hash, '_CreateRepo') @mock.patch.object(update_chromeos_llvm_hash, 'UpdateEbuildLLVMHash') - @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuild') + @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuildSymlink') @mock.patch.object(update_chromeos_llvm_hash, 'UploadChanges') @mock.patch.object(update_chromeos_llvm_hash, '_DeleteRepo') + @mock.patch.object(os.path, 'realpath') def testExceptionRaisedWhenUpdatingPackages( - self, mock_delete_repo, mock_upload_changes, mock_uprev_ebuild, - mock_update_llvm_next, mock_create_repo, mock_create_path_dict): + self, mock_realpath, mock_delete_repo, mock_upload_changes, + mock_uprev_symlink, mock_update_llvm_next, mock_create_repo, + mock_create_path_dict): abs_path_to_package = '/some/path/to/chroot/src/path/to/package.ebuild' @@ -783,9 +860,9 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(svn_version, 1000) return - # Test function to simulate 'UprevEbuild' when the symlink to the ebuild - # does not have a revision number. - def FailedToUprevEbuild(_symlink_path): + # Test function to simulate 'UprevEbuildSymlink' when the symlink to the + # ebuild does not have a revision number. + def FailedToUprevEbuildSymlink(_symlink_path): # Raises a 'ValueError' exception because the symlink did not have have a # revision number. raise ValueError('Failed to uprev the ebuild.') @@ -794,7 +871,7 @@ class UpdateLLVMHashTest(unittest.TestCase): # when an exception is raised. def ShouldNotExecuteUploadChanges(_repo_path, _git_hash, _commit_messages): # Test function should not be called (i.e. execution should resume in the - # 'finally' block) because 'UprevEbuild()' raised an + # 'finally' block) because 'UprevEbuildSymlink' raised an # exception. assert False, 'Failed to go to "finally" block ' \ 'after the exception was raised.' @@ -810,8 +887,9 @@ class UpdateLLVMHashTest(unittest.TestCase): # Use test function to simulate behavior. mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash - mock_uprev_ebuild.side_effect = FailedToUprevEbuild + mock_uprev_symlink.side_effect = FailedToUprevEbuildSymlink mock_upload_changes.side_effect = ShouldNotExecuteUploadChanges + mock_realpath.return_value = '/abs/path/to/test-packages/package1.ebuild' packages_to_update = ['test-packages/package1'] llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next @@ -824,7 +902,7 @@ class UpdateLLVMHashTest(unittest.TestCase): extra_commit_msg = None # Verify exception is raised when an exception is thrown within - # the 'try' block by UprevEbuild function. + # the 'try' block by UprevEbuildSymlink function. with self.assertRaises(ValueError) as err: update_chromeos_llvm_hash.UpdatePackages( packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, @@ -841,7 +919,7 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_update_llvm_next.assert_called_once_with( abs_path_to_package, llvm_variant, git_hash, svn_version) - mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) + mock_uprev_symlink.assert_called_once_with(symlink_path_to_package) mock_upload_changes.assert_not_called() @@ -851,7 +929,7 @@ class UpdateLLVMHashTest(unittest.TestCase): 'CreatePathDictionaryFromPackages') @mock.patch.object(update_chromeos_llvm_hash, '_CreateRepo') @mock.patch.object(update_chromeos_llvm_hash, 'UpdateEbuildLLVMHash') - @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuild') + @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuildSymlink') @mock.patch.object(update_chromeos_llvm_hash, 'UploadChanges') @mock.patch.object(update_chromeos_llvm_hash, '_DeleteRepo') @mock.patch.object(llvm_patch_management, 'UpdatePackagesPatchMetadataFile') @@ -859,7 +937,7 @@ class UpdateLLVMHashTest(unittest.TestCase): 'StagePatchMetadataFileForCommit') def testSuccessfullyUpdatedPackages( self, mock_stage_patch_file, mock_update_package_metadata_file, - mock_delete_repo, mock_upload_changes, mock_uprev_ebuild, + mock_delete_repo, mock_upload_changes, mock_uprev_symlink, mock_update_llvm_next, mock_create_repo, mock_create_path_dict): abs_path_to_package = '/some/path/to/chroot/src/path/to/package.ebuild' @@ -884,9 +962,9 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(svn_version, 1000) return - # Test function to simulate 'UprevEbuild' when successfully incremented - # the revision number by 1. - def SuccessfullyUprevedEbuild(symlink_path): + # Test function to simulate 'UprevEbuildSymlink' when successfully + # incremented the revision number by 1. + def SuccessfullyUprevedEbuildSymlink(symlink_path): self.assertEqual(symlink_path, '/some/path/to/chroot/src/path/to/package-r1.ebuild') @@ -943,7 +1021,7 @@ class UpdateLLVMHashTest(unittest.TestCase): # Use test function to simulate behavior. mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash - mock_uprev_ebuild.side_effect = SuccessfullyUprevedEbuild + mock_uprev_symlink.side_effect = SuccessfullyUprevedEbuildSymlink mock_update_package_metadata_file.side_effect = RetrievedPatchResults mock_upload_changes.side_effect = SuccessfullyUploadedChanges @@ -975,7 +1053,7 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_update_llvm_next.assert_called_once_with( abs_path_to_package, llvm_variant, git_hash, svn_version) - mock_uprev_ebuild.assert_called_once_with(symlink_path_to_package) + mock_uprev_symlink.assert_called_once_with(symlink_path_to_package) expected_commit_messages = [ 'llvm-next/tot: upgrade to a123testhash5 (r1000)\n', -- cgit v1.2.3 From c76ecd6380b2de9868a47eff08b9c36a079ae3b7 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 8 Apr 2020 17:22:21 -0700 Subject: llvm_tools: Fix bug in creating symlink Pass "-r" to ln to keep the symlink relative rather than absolute. BUG=chromium:1041590 TEST=unit tests. Change-Id: I925df430abd0d25a94e17a06186ee9f503efa264 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2142920 Reviewed-by: George Burgess Tested-by: Manoj Gupta --- llvm_tools/update_chromeos_llvm_hash.py | 2 +- llvm_tools/update_chromeos_llvm_hash_unittest.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index c18e72fe..4f55a5db 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -394,7 +394,7 @@ def UprevEbuildToVersion(symlink, svn_version): # Create a symlink of the renamed ebuild new_symlink = new_ebuild[:-len('.ebuild')] + '-r1.ebuild' - cmd = ['ln', '-s', new_ebuild, new_symlink] + cmd = ['ln', '-s', '-r', new_ebuild, new_symlink] ExecCommandAndCaptureOutput(cmd, verbose=verbose) if not os.path.islink(new_symlink): diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index b6d8c5da..a9f1841f 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -361,7 +361,7 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(mock_command_output.call_args_list[0], mock.call(expected_cmd, verbose=False)) - expected_cmd = ['ln', '-s', new_ebuild, new_symlink] + expected_cmd = ['ln', '-s', '-r', new_ebuild, new_symlink] self.assertEqual(mock_command_output.call_args_list[1], mock.call(expected_cmd, verbose=False)) -- cgit v1.2.3 From 0ca78c6a8dd0e86ce19ae4fd2858a15b1d974950 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 8 Apr 2020 17:29:00 -0700 Subject: llvm_tools: test_cq: Fix when no reviewers are specified If no reviewers are specified, the tool errors out because 'None' is not iterable. Also update unit test to use mock.call to verify function arguments. BUG=chromium:1067029 TEST=unit tests Change-Id: I542f897ec876211f7fa898550364fa2878691aad Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2142923 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/update_packages_and_test_cq.py | 6 ++--- llvm_tools/update_packages_and_test_cq_unittest.py | 28 +++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/llvm_tools/update_packages_and_test_cq.py b/llvm_tools/update_packages_and_test_cq.py index bc8a99e4..17416a2c 100755 --- a/llvm_tools/update_packages_and_test_cq.py +++ b/llvm_tools/update_packages_and_test_cq.py @@ -67,14 +67,14 @@ def GetCommandLineArgs(): parser.add_argument( '--is_llvm_next', action='store_true', - help= - 'which llvm hash to update. Update LLVM_NEXT_HASH if specified. ' - 'Otherwise, update LLVM_HASH' ) + help='which llvm hash to update. Update LLVM_NEXT_HASH if specified. ' + 'Otherwise, update LLVM_HASH') # Add argument to add reviewers for the created CL. parser.add_argument( '--reviewers', nargs='+', + default=[], help='The reviewers for the package update changelist') # Add argument for whether to display command contents to `stdout`. diff --git a/llvm_tools/update_packages_and_test_cq_unittest.py b/llvm_tools/update_packages_and_test_cq_unittest.py index 78f5f136..acf17c6d 100755 --- a/llvm_tools/update_packages_and_test_cq_unittest.py +++ b/llvm_tools/update_packages_and_test_cq_unittest.py @@ -85,10 +85,10 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): ] self.assertEqual(mock_exec_cmd.call_count, 2) - self.assertEqual(mock_exec_cmd.call_args_list[0][0][0], - expected_gerrit_cmd_1) - self.assertEqual(mock_exec_cmd.call_args_list[1][0][0], - expected_gerrit_cmd_2) + self.assertEqual(mock_exec_cmd.call_args_list[0], + mock.call(expected_gerrit_cmd_1)) + self.assertEqual(mock_exec_cmd.call_args_list[1], + mock.call(expected_gerrit_cmd_2)) # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( @@ -118,12 +118,12 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): ] self.assertEqual(mock_exec_cmd.call_count, 3) - self.assertEqual(mock_exec_cmd.call_args_list[0][0][0], - expected_gerrit_cmd_1) - self.assertEqual(mock_exec_cmd.call_args_list[1][0][0], - expected_gerrit_cmd_2) - self.assertEqual(mock_exec_cmd.call_args_list[2][0][0], - expected_gerrit_cmd_3) + self.assertEqual(mock_exec_cmd.call_args_list[0], + mock.call(expected_gerrit_cmd_1)) + self.assertEqual(mock_exec_cmd.call_args_list[1], + mock.call(expected_gerrit_cmd_2)) + self.assertEqual(mock_exec_cmd.call_args_list[2], + mock.call(expected_gerrit_cmd_3)) # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( @@ -164,10 +164,10 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): ] self.assertEqual(mock_exec_cmd.call_count, 2) - self.assertEqual(mock_exec_cmd.call_args_list[0][0][0], - expected_gerrit_cmd_1) - self.assertEqual(mock_exec_cmd.call_args_list[1][0][0], - expected_gerrit_cmd_2) + self.assertEqual(mock_exec_cmd.call_args_list[0], + mock.call(expected_gerrit_cmd_1)) + self.assertEqual(mock_exec_cmd.call_args_list[1], + mock.call(expected_gerrit_cmd_2)) if __name__ == '__main__': -- cgit v1.2.3 From b70c3c1c7371b572ff3f0b2c1a42e89838bcd689 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Fri, 10 Apr 2020 12:01:26 -0700 Subject: llvm_tools: fix the naming of ebuilds for LLVM rolls Use LLVM SVN version in the name ebuilds in LLVM roll CLs. BUG=chromium:1041590 TEST=local tests. Change-Id: I61d45b166968d4081f11dd9838b6774d2502250b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2145671 Tested-by: Jian Cai Reviewed-by: Manoj Gupta --- llvm_tools/update_chromeos_llvm_hash.py | 13 +++--- llvm_tools/update_chromeos_llvm_hash_unittest.py | 54 +++++++++++++++++++++--- 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index 4f55a5db..c44e8e14 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -378,18 +378,15 @@ def UprevEbuildToVersion(symlink, svn_version): # any other package else: new_ebuild, is_changed = re.subn( - r'pre([0-9]+)', - 'pre%s' % (datetime.today().strftime('%Y%m%d')), - ebuild, - count=1) + r'pre([0-9]+)', 'pre%s' % svn_version, ebuild, count=1) if not is_changed: # failed to increment the revision number raise ValueError('Failed to uprev the ebuild.') - symlink_dirname = os.path.dirname(symlink) + symlink_dir = os.path.dirname(symlink) # Rename the ebuild - cmd = ['git', '-C', symlink_dirname, 'mv', ebuild, new_ebuild] + cmd = ['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild] ExecCommandAndCaptureOutput(cmd, verbose=verbose) # Create a symlink of the renamed ebuild @@ -400,11 +397,11 @@ def UprevEbuildToVersion(symlink, svn_version): if not os.path.islink(new_symlink): raise ValueError('Invalid symlink name: %s' % new_ebuild[:-len('.ebuild')]) - cmd = ['git', '-C', symlink_dirname, 'add', new_symlink] + cmd = ['git', '-C', symlink_dir, 'add', new_symlink] ExecCommandAndCaptureOutput(cmd, verbose=verbose) # Remove the old symlink - cmd = ['git', '-C', symlink_dirname, 'rm', symlink] + cmd = ['git', '-C', symlink_dir, 'rm', symlink] ExecCommandAndCaptureOutput(cmd, verbose=verbose) diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index a9f1841f..2ea483b6 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -323,19 +323,16 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_islink.assert_called_once_with(symlink_path) - # Simulate 'os.path.islink' when a valid symbolic link is passed in. @mock.patch.object(os.path, 'islink', return_value=True) @mock.patch.object(os.path, 'realpath') - # Simulate 'RunCommandWOutput' when successfully added the upreved symlink - # for commit. @mock.patch.object( update_chromeos_llvm_hash, 'ExecCommandAndCaptureOutput', return_value=None) - def testSuccessfullyUprevEbuildToVersion(self, mock_command_output, - mock_realpath, mock_islink): - symlink = '/symlink/to/llvm/llvm_pre3_p2-r10.ebuild' - ebuild = '/abs/path/to/llvm_pre3_p2.ebuild' + def testSuccessfullyUprevEbuildToVersionLLVM(self, mock_command_output, + mock_realpath, mock_islink): + symlink = '/path/to/llvm/llvm_pre3_p2-r10.ebuild' + ebuild = '/abs/path/to/llvm/llvm_pre3_p2.ebuild' mock_realpath.return_value = ebuild svn_version = 1000 @@ -373,6 +370,49 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(mock_command_output.call_args_list[3], mock.call(expected_cmd, verbose=False)) + @mock.patch.object(os.path, 'islink', return_value=True) + @mock.patch.object(os.path, 'realpath') + @mock.patch.object( + update_chromeos_llvm_hash, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyUprevEbuildToVersionNonLLVM(self, mock_command_output, + mock_realpath, mock_islink): + symlink = '/path/to/compiler-rt/compiler-rt_pre3_p2-r10.ebuild' + ebuild = '/abs/path/to/compiler-rt/compiler-rt_pre3_p2.ebuild' + mock_realpath.return_value = ebuild + svn_version = 1000 + + update_chromeos_llvm_hash.UprevEbuildToVersion(symlink, svn_version) + + mock_islink.assert_called() + + mock_realpath.assert_called_once_with(symlink) + + mock_command_output.assert_called() + + # Verify commands + symlink_dir = os.path.dirname(symlink) + new_ebuild, _is_changed = re.subn( + r'pre([0-9]+)', 'pre%s' % svn_version, ebuild, count=1) + new_symlink = new_ebuild[:-len('.ebuild')] + '-r1.ebuild' + + expected_cmd = ['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild] + self.assertEqual(mock_command_output.call_args_list[0], + mock.call(expected_cmd, verbose=False)) + + expected_cmd = ['ln', '-s', '-r', new_ebuild, new_symlink] + self.assertEqual(mock_command_output.call_args_list[1], + mock.call(expected_cmd, verbose=False)) + + expected_cmd = ['git', '-C', symlink_dir, 'add', new_symlink] + self.assertEqual(mock_command_output.call_args_list[2], + mock.call(expected_cmd, verbose=False)) + + expected_cmd = ['git', '-C', symlink_dir, 'rm', symlink] + self.assertEqual(mock_command_output.call_args_list[3], + mock.call(expected_cmd, verbose=False)) + # Simulate 'os.path.islink' when a valid symbolic link is passed in. @mock.patch.object(os.path, 'islink', return_value=True) # Simulate 'RunCommandWOutput' when successfully added the upreved symlink -- cgit v1.2.3 From 10ed31a339421ba2b4a60d6003d14c158ef97a40 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 13 Apr 2020 09:01:19 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R84-13015.0-1586166276 to R84-13020.8-1586770302 Change-Id: I8d5e0e793d03c0fb59b80e52c170ca556a7449de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2147555 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index aff3e24e..f9cd2cbf 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R84-13015.0-1586166104" }, "chromeos-kernel-4_19": { - "name": "R84-13015.0-1586166276" + "name": "R84-13020.8-1586770302" } } \ No newline at end of file -- cgit v1.2.3 From b12b7024519a30e8b4ef47a2f4f355f30e904182 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 13 Apr 2020 13:31:16 -0700 Subject: llvm_tools: Stop marking CL as WIP WIP CLs are not handled by gwsq to find oncall reviewer. We already pass "--ne" so the emails are not sent out for anyone monitoring this repo which is probably enough. BUG=chromium:1067029 TEST=unit tests, gswq assigned reviewer in CL:2146298 Change-Id: I962d6201482a5ba9bc3a0db2ba6db4fc4f0841de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2148000 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/update_chromeos_llvm_hash.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index c44e8e14..4f6e9936 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -527,20 +527,19 @@ def UploadChanges(path_to_repo_dir, branch, commit_messages): commit_cmd, cwd=path_to_repo_dir, verbose=verbose) # Upload the changes for review. - upload_change_cmd = ( - 'yes | repo upload --wip --ne --br=%s --no-verify' % branch) + # Use --ne to avoid sending email notifications. + upload_change_cmd = [ + 'repo', 'upload', '--yes', '--ne', '--no-verify', + '--br=%s' % branch + ] # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. # pylint: disable=unexpected-keyword-arg - - # NOTE: Need `shell=True` in order to pipe `yes` into `repo upload ...`. - # # The CL URL is sent to 'stderr', so need to redirect 'stderr' to 'stdout'. upload_changes_obj = subprocess.Popen( upload_change_cmd, cwd=path_to_repo_dir, - shell=True, encoding='UTF-8', stdout=subprocess.PIPE, stderr=subprocess.STDOUT) -- cgit v1.2.3 From 52372d92a3b587d1eccd21444be47685f2051ddd Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 13 Apr 2020 14:17:37 -0700 Subject: llvm_tools: Add default value for dependent CLs Use [] as a default value to avoid non-iterable type errors. BUG=chromium:1067029 TEST=unit tests Change-Id: Ibc4c76c2dcda8e3846d323345aeea49ac2e9acaf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2148005 Reviewed-by: George Burgess Tested-by: Manoj Gupta --- llvm_tools/update_packages_and_test_cq.py | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm_tools/update_packages_and_test_cq.py b/llvm_tools/update_packages_and_test_cq.py index 17416a2c..15246e49 100755 --- a/llvm_tools/update_packages_and_test_cq.py +++ b/llvm_tools/update_packages_and_test_cq.py @@ -53,6 +53,7 @@ def GetCommandLineArgs(): parser.add_argument( '--extra_change_lists', type=int, + default=[], nargs='+', help='change lists that would like to be run alongside the change list ' 'of updating the packages') -- cgit v1.2.3 From 6ce18013ca3f9a9d04cad82fb5ca238b1e9e9c5f Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 8 Apr 2020 20:35:23 -0700 Subject: llvm_tools: check more arguments when launching LLVM TOT tryjobs update_packages_and_run_tryjobs.py currently only check LLVM SVN revision to decide if we should launch tryjobs. This change includes more factors to consider, including builders, extra CLs, tryjob options, and ebuild versions of the packages. BUG=chromium:1001602 TEST=local tests. Change-Id: Id0ba762558f8df3386936f0c797a61c437b97c9f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2143383 Tested-by: Manoj Gupta Reviewed-by: Manoj Gupta --- llvm_tools/update_packages_and_run_tryjobs.py | 68 ++++---- .../update_packages_and_run_tryjobs_unittest.py | 179 +++++++++------------ 2 files changed, 111 insertions(+), 136 deletions(-) diff --git a/llvm_tools/update_packages_and_run_tryjobs.py b/llvm_tools/update_packages_and_run_tryjobs.py index 9cb6cfad..dc9e6643 100755 --- a/llvm_tools/update_packages_and_run_tryjobs.py +++ b/llvm_tools/update_packages_and_run_tryjobs.py @@ -46,7 +46,7 @@ def GetCommandLineArgs(): parser.add_argument( '--last_tested', help='the absolute path to the file that contains the last tested ' - 'svn version') + 'arguments.') # Add argument for other change lists that want to run alongside the tryjob # which has a change list of updating a package's git hash. @@ -106,36 +106,32 @@ def GetCommandLineArgs(): return args_output -def GetLastTestedSVNVersion(last_tested_file): - """Gets the lasted tested svn version from the file. +def UnchangedSinceLastRun(last_tested_file, arg_dict): + """Gets the arguments used for last run Args: - last_tested_file: The absolute path to the file that contains the last - tested svn version. + last_tested_file: The absolute path to the file that contains the + arguments for the last run. + arg_dict: The arguments used for this run. Returns: - The last tested svn version or 'None' if the file did not have a last tested - svn version (the file exists, but failed to convert the contents to an - integer) or the file does not exist. + Return true if the arguments used for last run exist and are the + same as the arguments used for this run. Otherwise return false. """ if not last_tested_file: - return None - - last_svn_version = None + return False # Get the last tested svn version if the file exists. + last_arg_dict = None try: - with open(last_tested_file) as file_obj: - # For now, the first line contains the last tested svn version. - return int(file_obj.read().rstrip()) + with open(last_tested_file) as f: + last_arg_dict = json.load(f) - except IOError: - pass - except ValueError: - pass + except (IOError, ValueError): + return False - return last_svn_version + return arg_dict == last_arg_dict def GetTryJobCommand(change_list, extra_change_lists, options, builder): @@ -264,8 +260,6 @@ def main(): args_output = GetCommandLineArgs() - last_svn_version = GetLastTestedSVNVersion(args_output.last_tested) - update_packages = [ 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' @@ -277,12 +271,25 @@ def main(): git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(svn_option) - # There is no need to run tryjobs when the SVN version matches the last tested - # SVN version. - if last_svn_version == svn_version: - print('svn version (%d) matches the last tested svn version (%d) in %s' % - (svn_version, last_svn_version, args_output.last_tested)) - return + # There is no need to run tryjobs when all the key parameters remain unchanged + # from last time. + + # If --last_tested is specified, check if the current run has the same + # arguments last time --last_tested is used. + if args_output.last_tested: + chroot_file_paths = update_chromeos_llvm_hash.GetChrootBuildPaths( + args_output.chroot_path, update_packages) + arg_dict = { + 'svn_version': svn_version, + 'ebuilds': chroot_file_paths, + 'builders': args_output.builders, + 'extra_cls': args_output.extra_change_lists, + 'tryjob_options': args_output.options + } + if UnchangedSinceLastRun(args_output.last_tested, arg_dict): + print('svn version (%d) matches the last tested svn version in %s' % + (svn_version, args_output.last_tested)) + return update_chromeos_llvm_hash.verbose = args_output.verbose @@ -310,11 +317,10 @@ def main(): for tryjob in tryjob_results: print(tryjob) - # Updated the packages and submitted tryjobs successfully, so the file will - # contain 'svn_version' which will now become the last tested svn version. + # If --last_tested is specified, record the arguments used if args_output.last_tested: - with open(args_output.last_tested, 'w') as file_obj: - file_obj.write(str(svn_version)) + with open(args_output.last_tested, 'w') as f: + json.dump(arg_dict, f, indent=2) if __name__ == '__main__': diff --git a/llvm_tools/update_packages_and_run_tryjobs_unittest.py b/llvm_tools/update_packages_and_run_tryjobs_unittest.py index e7563f65..7352f4ca 100755 --- a/llvm_tools/update_packages_and_run_tryjobs_unittest.py +++ b/llvm_tools/update_packages_and_run_tryjobs_unittest.py @@ -24,33 +24,45 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): def testNoLastTestedFile(self): self.assertEqual( - update_packages_and_run_tryjobs.GetLastTestedSVNVersion(None), None) + update_packages_and_run_tryjobs.UnchangedSinceLastRun(None, {}), False) - def testFailedToGetIntegerFromLastTestedFile(self): - # Create a temporary file to simulate the behavior of the last tested file - # when the file does not have a SVN version (i.e. int() failed). + def testEmptyLastTestedFile(self): with CreateTemporaryFile() as temp_file: self.assertEqual( - update_packages_and_run_tryjobs.GetLastTestedSVNVersion(temp_file), - None) + update_packages_and_run_tryjobs.UnchangedSinceLastRun(temp_file, {}), + False) - def testLastTestFileDoesNotExist(self): + def testLastTestedFileDoesNotExist(self): # Simulate 'open()' on a lasted tested file that does not exist. mock.mock_open(read_data='') self.assertEqual( - update_packages_and_run_tryjobs.GetLastTestedSVNVersion( - '/some/file/that/does/not/exist.txt'), None) + update_packages_and_run_tryjobs.UnchangedSinceLastRun( + '/some/file/that/does/not/exist.txt', {}), False) - def testSuccessfullyRetrievedLastTestedSVNVersion(self): - with CreateTemporaryFile() as temp_file: - # Simulate behavior when the last tested file contains a SVN version. - with open(temp_file, 'w') as svn_file: - svn_file.write('1234') + def testMatchedLastTestedFile(self): + with CreateTemporaryFile() as last_tested_file: + arg_dict = { + 'svn_version': + 1234, + 'ebuilds': [ + '/path/to/package1-r2.ebuild', + '/path/to/package2/package2-r3.ebuild' + ], + 'builders': [ + 'kevin-llvm-next-toolchain-tryjob', + 'eve-llvm-next-toolchain-tryjob' + ], + 'extra_cls': [10, 1], + 'tryjob_options': ['latest-toolchain', 'hwtest'] + } + + with open(last_tested_file, 'w') as f: + f.write(json.dumps(arg_dict, indent=2)) self.assertEqual( - update_packages_and_run_tryjobs.GetLastTestedSVNVersion(temp_file), - 1234) + update_packages_and_run_tryjobs.UnchangedSinceLastRun( + last_tested_file, arg_dict), True) def testGetTryJobCommandWithNoExtraInformation(self): test_change_list = 1234 @@ -94,17 +106,11 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): test_change_list, test_extra_cls, test_options, test_builder), expected_tryjob_cmd_list) - # Simulate `datetime.datetime.utcnow()` when retrieving the current time when - # submitted a tryjob. @mock.patch.object( update_packages_and_run_tryjobs, 'GetCurrentTimeInUTC', return_value='2019-09-09') - # Simulate the behavior of `AddTryjobLinkToCL()` when successfully added the - # tryjob url to the CL that was uploaded to Gerrit for review. @mock.patch.object(update_packages_and_run_tryjobs, 'AddTryjobLinkToCL') - # Simulate behavior of `ChrootRunCommand()` when successfully submitted a - # tryjob via `cros tryjob`. @mock.patch.object(update_packages_and_run_tryjobs, 'ChrootRunCommand') def testSuccessfullySubmittedTryJob( self, mock_chroot_cmd, mock_add_tryjob_link_to_cl, mock_launch_time): @@ -151,8 +157,6 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): mock_launch_time.assert_called_once() - # Simulate behavior of `ExecCommandAndCaptureOutput()` when successfully added - # the tryjob link to the CL via `gerrit message `. @mock.patch.object( update_packages_and_run_tryjobs, 'ExecCommandAndCaptureOutput', @@ -175,112 +179,77 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): mock_exec_cmd.assert_called_once_with(expected_gerrit_message) - # Simulate behavior of `GetCommandLineArgs()` when successfully parsed the - # command line for the optional/required arguments for the script. - @mock.patch.object(update_packages_and_run_tryjobs, 'GetCommandLineArgs') - # Simulate behavior of `GetLLVMHashAndVersionFromSVNOption()` when - # successfully retrieved the LLVM hash and version for google3. - @mock.patch.object(update_packages_and_run_tryjobs, - 'GetLLVMHashAndVersionFromSVNOption') - # Simulate behavior of `GetLastTestedSVNVersion()` when successfully retrieved - # the last tested revision from the last tested file. - @mock.patch.object( - update_packages_and_run_tryjobs, - 'GetLastTestedSVNVersion', - return_value=100) - # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the - # script outside of the chroot. - @mock.patch.object( - update_packages_and_run_tryjobs, 'VerifyOutsideChroot', return_value=True) - def testLastTestSVNVersionMatchesSVNVersion( - self, mock_outside_chroot, mock_get_last_tested_version, - mock_get_hash_and_version, mock_get_commandline_args): - - args_output_obj = ArgsOutputTest() - - mock_get_commandline_args.return_value = args_output_obj - - mock_get_hash_and_version.return_value = ('a123testhash1', 100) - - update_packages_and_run_tryjobs.main() - - mock_outside_chroot.assert_called_once() - - mock_get_commandline_args.assert_called_once() - - mock_get_last_tested_version.assert_called_once_with( - args_output_obj.last_tested) - - mock_get_hash_and_version.assert_called_once_with( - args_output_obj.llvm_version) - - # Simulate the behavior of `RunTryJobs()` when successfully submitted a - # tryjob. @mock.patch.object(update_packages_and_run_tryjobs, 'RunTryJobs') - # Simulate behavior of `UpdatePackages()` when successfully updated the - # packages and uploaded a CL for review. @mock.patch.object(update_chromeos_llvm_hash, 'UpdatePackages') - # Simulate behavior of `GetCommandLineArgs()` when successfully parsed the - # command line for the optional/required arguments for the script. @mock.patch.object(update_packages_and_run_tryjobs, 'GetCommandLineArgs') - # Simulate behavior of `GetLLVMHashAndVersionFromSVNOption()` when - # successfully retrieved the LLVM hash and version for google3. @mock.patch.object(update_packages_and_run_tryjobs, 'GetLLVMHashAndVersionFromSVNOption') - # Simulate behavior of `GetLastTestedSVNVersion()` when successfully retrieved - # the last tested revision from the last tested file. - @mock.patch.object( - update_packages_and_run_tryjobs, - 'GetLastTestedSVNVersion', - return_value=100) - # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the - # script outside of the chroot. @mock.patch.object( update_packages_and_run_tryjobs, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') def testUpdatedLastTestedFileWithNewTestedRevision( - self, mock_outside_chroot, mock_get_last_tested_version, + self, mock_get_chroot_build_paths, mock_outside_chroot, mock_get_hash_and_version, mock_get_commandline_args, mock_update_packages, mock_run_tryjobs): - mock_get_hash_and_version.return_value = ('a123testhash2', 200) - - test_cl_url = 'https://some_cl_url.com' - - test_cl_number = 12345 - - mock_update_packages.return_value = CommitContents( - url=test_cl_url, cl_number=test_cl_number) - - tryjob_test_results = [{ - 'link': 'https://some_tryjob_url.com', - 'buildbucket_id': 1234 - }] - - mock_run_tryjobs.return_value = tryjob_test_results - # Create a temporary file to simulate the last tested file that contains a # revision. with CreateTemporaryFile() as last_tested_file: - args_output_obj = ArgsOutputTest(svn_option=200) - args_output_obj.last_tested = last_tested_file - - mock_get_commandline_args.return_value = args_output_obj + builders = [ + 'kevin-llvm-next-toolchain-tryjob', 'eve-llvm-next-toolchain-tryjob' + ] + extra_cls = [10, 1] + tryjob_options = ['latest-toolchain', 'hwtest'] + ebuilds = [ + '/path/to/package1/package1-r2.ebuild', + '/path/to/package2/package2-r3.ebuild' + ] + + arg_dict = { + 'svn_version': 100, + 'ebuilds': ebuilds, + 'builders': builders, + 'extra_cls': extra_cls, + 'tryjob_options': tryjob_options + } + # Parepared last tested file + with open(last_tested_file, 'w') as f: + json.dump(arg_dict, f, indent=2) + + # Call with a changed LLVM svn version + args_output = ArgsOutputTest() + args_output.builders = builders + args_output.extra_change_lists = extra_cls + args_output.options = tryjob_options + args_output.last_tested = last_tested_file + + mock_get_commandline_args.return_value = args_output + + mock_get_chroot_build_paths.return_value = ebuilds + + mock_get_hash_and_version.return_value = ('a123testhash2', 200) + + mock_update_packages.return_value = CommitContents( + url='https://some_cl_url.com', cl_number=12345) + + mock_run_tryjobs.return_value = [{ + 'link': 'https://some_tryjob_url.com', + 'buildbucket_id': 1234 + }] update_packages_and_run_tryjobs.main() # Verify that the lasted tested file has been updated to the new LLVM # revision. - with open(last_tested_file) as update_revision: - new_revision = update_revision.readline() + with open(last_tested_file) as f: + arg_dict = json.load(f) - self.assertEqual(int(new_revision.rstrip()), 200) + self.assertEqual(arg_dict['svn_version'], 200) mock_outside_chroot.assert_called_once() mock_get_commandline_args.assert_called_once() - mock_get_last_tested_version.assert_called_once() - mock_get_hash_and_version.assert_called_once() mock_run_tryjobs.assert_called_once() -- cgit v1.2.3 From 6d31fa95f8826935f82f38a4648801c8135590ee Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 13 Apr 2020 14:46:25 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R83-13015.0-1586166041 to R84-13020.8-1586770844 Change-Id: Iffdba290d6100f2d1040a132a22096d578db6ed8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2148009 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f9cd2cbf..e872f386 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R84-13015.0-1586166393" }, "chromeos-kernel-3_18": { - "name": "R83-13015.0-1586166041" + "name": "R84-13020.8-1586770844" }, "chromeos-kernel-4_14": { "name": "R84-13015.0-1586166104" -- cgit v1.2.3 From 0371f8a5157e2d34d81dab0e87458469d3332621 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 13 Apr 2020 20:43:49 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R84-13015.0-1586166393 to R84-13020.8-1586771110 Change-Id: I8dad60515d164181c76cf4ce0e21d612968f7ce9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2144998 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index e872f386..70b914ce 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R84-13015.0-1586166393" + "name": "R84-13020.8-1586771110" }, "chromeos-kernel-3_18": { "name": "R84-13020.8-1586770844" -- cgit v1.2.3 From 624bdfc1e82dcaaf577bb843cafc2d4ec36b43fd Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 14 Apr 2020 02:00:59 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R84-13015.0-1586166104 to R84-13020.8-1586770363 Change-Id: I5756e948b9e88d11fdea0151bc30a4d81dfff5d4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2144221 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 70b914ce..356ed2de 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R84-13020.8-1586770844" }, "chromeos-kernel-4_14": { - "name": "R84-13015.0-1586166104" + "name": "R84-13020.8-1586770363" }, "chromeos-kernel-4_19": { "name": "R84-13020.8-1586770302" -- cgit v1.2.3 From 5d09ca047e14466720c080f0e7e627582fad8ec8 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 13 Apr 2020 18:51:44 -0700 Subject: llvm_tools: merge update_packages_*.py files Merge update_packages_and_run_tryjobs.py and update_packages_and_test_cq.py as the two modules share much command code. BUG=chromium:1001602 TEST=local tests. Change-Id: Iac957ea77af4257e454fec99ff13424e778ec51a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2148478 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- llvm_tools/README.md | 27 +- llvm_tools/modify_a_tryjob.py | 2 +- llvm_tools/update_packages_and_run_tests.py | 394 +++++++++++++++++++ .../update_packages_and_run_tests_unittest.py | 415 +++++++++++++++++++++ llvm_tools/update_packages_and_run_tryjobs.py | 327 ---------------- .../update_packages_and_run_tryjobs_unittest.py | 261 ------------- llvm_tools/update_packages_and_test_cq.py | 226 ----------- llvm_tools/update_packages_and_test_cq_unittest.py | 174 --------- 8 files changed, 825 insertions(+), 1001 deletions(-) create mode 100755 llvm_tools/update_packages_and_run_tests.py create mode 100755 llvm_tools/update_packages_and_run_tests_unittest.py delete mode 100755 llvm_tools/update_packages_and_run_tryjobs.py delete mode 100755 llvm_tools/update_packages_and_run_tryjobs_unittest.py delete mode 100755 llvm_tools/update_packages_and_test_cq.py delete mode 100755 llvm_tools/update_packages_and_test_cq_unittest.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index d42462ad..ce094e98 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -14,13 +14,13 @@ version. **NOTE: sudo must be permissive (i.e. **`cros_sdk`** should NOT prompt for a password)** -## `update_packages_and_run_tryjobs.py` +## `update_packages_and_run_tests.py` ### Usage -This script is used for updating a package's `LLVM_NEXT_HASH` (sys-devel/llvm, +This script is used for updating a package's LLVM hash (sys-devel/llvm, sys-libs/compiler-rt, sys-libs/libcxx, sys-libs/libcxxabi, and -sys-libs/llvm-libunwind) and then run tryjobs after updating the git hash. +sys-libs/llvm-libunwind) and then run tests after updating the git hash. An example when this script should be run is when certain boards would like to be tested with the updated `LLVM_NEXT_HASH`. @@ -28,8 +28,10 @@ to be tested with the updated `LLVM_NEXT_HASH`. For example: ``` -$ ./update_packages_and_run_tryjobs.py \ +$ ./update_packages_and_run_tests.py \ + --is_llvm_next \ --llvm_version tot \ + tryjobs \ --options nochromesdk latest-toolchain \ --builders kevin-release-tryjob nocturne-release-tryjob ``` @@ -41,25 +43,26 @@ in 'nochromesdk' and 'latest-toolchain' for each tryjob. For help with the command line arguments of the script, run: ``` -$ ./update_packages_and_run_tryjobs.py --help +$ ./update_packages_and_run_tests.py --help ``` -Similarly as the previous example, but for updating `LLVM_NEXT_HASH` to -google3: +Similarly as the previous example, but for updating `LLVM_HASH` to +google3 and test with cq+1: ``` -$ ./update_packages_and_run_tryjobs.py \ +$ ./update_packages_and_run_tests.py \ --llvm_version google3 \ - --options nochromesdk latest-toolchain \ - --builders kevin-release-tryjob nocturne-release-tryjob + cq ``` Similarly as the previous example, but for updating `LLVM_NEXT_HASH` to -the git hash of revision 367622: +the git hash of revision 367622 and test with tryobs: ``` -$ ./update_packages_and_run_tryjobs.py \ +$ ./update_packages_and_run_tests.py \ + --is_llvm_next \ --llvm_version 367622 \ + tryjobs \ --options nochromesdk latest-toolchain \ --builders kevin-release-tryjob nocturne-release-tryjob ``` diff --git a/llvm_tools/modify_a_tryjob.py b/llvm_tools/modify_a_tryjob.py index 5d04e7f4..41337257 100755 --- a/llvm_tools/modify_a_tryjob.py +++ b/llvm_tools/modify_a_tryjob.py @@ -17,7 +17,7 @@ import sys from assert_not_in_chroot import VerifyOutsideChroot from failure_modes import FailureModes from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption -from update_packages_and_run_tryjobs import RunTryJobs +from update_packages_and_run_tests import RunTryJobs from update_tryjob_status import FindTryjobIndex from update_tryjob_status import TryjobStatus import update_chromeos_llvm_hash diff --git a/llvm_tools/update_packages_and_run_tests.py b/llvm_tools/update_packages_and_run_tests.py new file mode 100755 index 00000000..ee57ea09 --- /dev/null +++ b/llvm_tools/update_packages_and_run_tests.py @@ -0,0 +1,394 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2019 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. + +"""Runs a tryjob/tryjobs after updating the packages.""" + +from __future__ import print_function + +import argparse +import datetime +import json +import os + +from assert_not_in_chroot import VerifyOutsideChroot +from failure_modes import FailureModes +from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption +from get_llvm_hash import is_svn_option +from subprocess_helpers import ChrootRunCommand +from subprocess_helpers import ExecCommandAndCaptureOutput +import update_chromeos_llvm_hash + + +def GetCommandLineArgs(): + """Parses the command line for the command line arguments. + + Returns: + The log level to use when retrieving the LLVM hash or google3 LLVM version, + the chroot path to use for executing chroot commands, + a list of a package or packages to update their LLVM next hash, + and the LLVM version to use when retrieving the LLVM hash. + """ + + # Default path to the chroot if a path is not specified. + cros_root = os.path.expanduser('~') + cros_root = os.path.join(cros_root, 'chromiumos') + + # Create parser and add optional command-line arguments. + parser = argparse.ArgumentParser( + description='Update an LLVM hash of packages and run tests.') + + # Add argument for other change lists that want to run alongside the tryjob + # which has a change list of updating a package's git hash. + parser.add_argument( + '--extra_change_lists', + type=int, + nargs='+', + default=[], + help='change lists that would like to be run alongside the change list ' + 'of updating the packages') + + # Add argument for a specific chroot path. + parser.add_argument( + '--chroot_path', + default=cros_root, + help='the path to the chroot (default: %(default)s)') + + # Add argument to choose between llvm and llvm-next. + parser.add_argument( + '--is_llvm_next', + action='store_true', + help='which llvm hash to update. Update LLVM_NEXT_HASH if specified. ' + 'Otherwise, update LLVM_HASH') + + # Add argument for the absolute path to the file that contains information on + # the previous tested svn version. + parser.add_argument( + '--last_tested', + help='the absolute path to the file that contains the last tested ' + 'arguments.') + + # Add argument for the LLVM version to use. + parser.add_argument( + '--llvm_version', + type=is_svn_option, + required=True, + help='which git hash of LLVM to find ' + '{google3, ToT, } ' + '(default: finds the git hash of the google3 LLVM ' + 'version)') + + # Add argument to add reviewers for the created CL. + parser.add_argument( + '--reviewers', + nargs='+', + default=[], + help='The reviewers for the package update changelist') + + # Add argument for whether to display command contents to `stdout`. + parser.add_argument( + '--verbose', + action='store_true', + help='display contents of a command to the terminal ' + '(default: %(default)s)') + + subparsers = parser.add_subparsers(dest='subparser_name') + # Testing with the tryjobs. + tryjob_subparser = subparsers.add_parser('tryjobs') + tryjob_subparser.add_argument( + '--builders', + required=True, + nargs='+', + default=[], + help='builders to use for the tryjob testing') + + # Add argument for custom options for the tryjob. + tryjob_subparser.add_argument( + '--options', + required=False, + nargs='+', + default=[], + help='options to use for the tryjob testing') + + # Testing with CQ. + subparsers.add_parser('cq') + + args_output = parser.parse_args() + + subparser_names = ['tryjobs', 'cq'] + if args_output.subparser_name not in subparser_names: + parser.error('one of %s must be specified' % subparser_names) + + return args_output + + +def UnchangedSinceLastRun(last_tested_file, arg_dict): + """Gets the arguments used for last run + + Args: + last_tested_file: The absolute path to the file that contains the + arguments for the last run. + arg_dict: The arguments used for this run. + + Returns: + Return true if the arguments used for last run exist and are the + same as the arguments used for this run. Otherwise return false. + """ + + if not last_tested_file: + return False + + # Get the last tested svn version if the file exists. + last_arg_dict = None + try: + with open(last_tested_file) as f: + last_arg_dict = json.load(f) + + except (IOError, ValueError): + return False + + return arg_dict == last_arg_dict + + +def AddReviewers(cl, reviewers, chroot_path): + """Add reviewers for the created CL.""" + + gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') + for reviewer in reviewers: + cmd = [gerrit_abs_path, 'reviewers', str(cl), reviewer] + + ExecCommandAndCaptureOutput(cmd) + + +def AddTryjobLinkToCL(tryjobs, cl, chroot_path): + """Adds the tryjob link(s) to the CL as a comment.""" + + # NOTE: Invoking `cros_sdk` does not make each tryjob link appear on its own + # line, so invoking the `gerrit` command directly instead of using `cros_sdk` + # to do it for us. + # + # FIXME: Need to figure out why `cros_sdk` does not add each tryjob link as a + # newline. + gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') + + tryjob_links = ['Started the following tryjobs:'] + tryjob_links.extend(tryjob['link'] for tryjob in tryjobs) + + add_message_cmd = [ + gerrit_abs_path, 'message', + str(cl), '\n'.join(tryjob_links) + ] + + ExecCommandAndCaptureOutput(add_message_cmd) + + +# Testing with tryjobs +def GetCurrentTimeInUTC(): + """Returns the current time via `datetime.datetime.utcnow()`.""" + return datetime.datetime.utcnow() + + +def GetTryJobCommand(change_list, extra_change_lists, options, builder): + """Constructs the 'tryjob' command. + + Args: + change_list: The CL obtained from updating the packages. + extra_change_lists: Extra change lists that would like to be run alongside + the change list of updating the packages. + options: Options to be passed into the tryjob command. + builder: The builder to be passed into the tryjob command. + + Returns: + The 'tryjob' command with the change list of updating the packages and + any extra information that was passed into the command line. + """ + + tryjob_cmd = ['cros', 'tryjob', '--yes', '--json', '-g', '%d' % change_list] + + if extra_change_lists: + for extra_cl in extra_change_lists: + tryjob_cmd.extend(['-g', '%d' % extra_cl]) + + tryjob_cmd.append(builder) + + if options: + tryjob_cmd.extend('--%s' % option for option in options) + + return tryjob_cmd + + +def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path, + verbose): + """Runs a tryjob/tryjobs. + + Args: + cl_number: The CL created by updating the packages. + extra_change_lists: Any extra change lists that would run alongside the CL + that was created by updating the packages ('cl_number'). + options: Any options to be passed into the 'tryjob' command. + builders: All the builders to run the 'tryjob' with. + chroot_path: The absolute path to the chroot. + verbose: Print command contents to `stdout`. + + Returns: + A list that contains stdout contents of each tryjob, where stdout is + information (a hashmap) about the tryjob. The hashmap also contains stderr + if there was an error when running a tryjob. + + Raises: + ValueError: Failed to submit a tryjob. + """ + + # Contains the results of each tryjob. The results are retrieved from 'out' + # which is stdout of the command executer. + tryjob_results = [] + + # For each builder passed into the command line: + # + # Run a tryjob with the change list number obtained from updating the + # packages and append additional changes lists and options obtained from the + # command line. + for cur_builder in builders: + tryjob_cmd = GetTryJobCommand(cl_number, extra_change_lists, options, + cur_builder) + + out = ChrootRunCommand(chroot_path, tryjob_cmd, verbose=verbose) + + tryjob_launch_time = GetCurrentTimeInUTC() + + tryjob_contents = json.loads(out) + + buildbucket_id = int(tryjob_contents[0]['buildbucket_id']) + + new_tryjob = { + 'launch_time': str(tryjob_launch_time), + 'link': str(tryjob_contents[0]['url']), + 'buildbucket_id': buildbucket_id, + 'extra_cls': extra_change_lists, + 'options': options, + 'builder': [cur_builder] + } + + tryjob_results.append(new_tryjob) + + AddTryjobLinkToCL(tryjob_results, cl_number, chroot_path) + + return tryjob_results + + +# Testing with CQ +def GetCQDependString(dependent_cls): + """Get CQ dependency string e.g. `Cq-Depend: chromium:MM, chromium:NN`.""" + + if not dependent_cls: + return None + + # Cq-Depend must start a new paragraph prefixed with "Cq-Depend". + return '\nCq-Depend: ' + ', '.join(('chromium:%s' % i) for i in dependent_cls) + + +def StartCQDryRun(cl, dependent_cls, chroot_path): + """Start CQ dry run for the changelist and dependencies.""" + + gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') + + cl_list = [cl] + cl_list.extend(dependent_cls) + + for changes in cl_list: + cq_dry_run_cmd = [gerrit_abs_path, 'label-cq', str(changes), '1'] + + ExecCommandAndCaptureOutput(cq_dry_run_cmd) + + +def main(): + """Updates the packages' LLVM hash and run tests. + + Raises: + AssertionError: The script was run inside the chroot. + """ + + VerifyOutsideChroot() + + args_output = GetCommandLineArgs() + + update_packages = [ + 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', + 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' + ] + + patch_metadata_file = 'PATCHES.json' + + svn_option = args_output.llvm_version + + git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(svn_option) + + # There is no need to run tryjobs when all the key parameters remain unchanged + # from last time. + + # If --last_tested is specified, check if the current run has the same + # arguments last time --last_tested is used. + if args_output.last_tested: + chroot_file_paths = update_chromeos_llvm_hash.GetChrootBuildPaths( + args_output.chroot_path, update_packages) + arg_dict = { + 'svn_version': svn_version, + 'ebuilds': chroot_file_paths, + 'extra_cls': args_output.extra_change_lists, + } + if args_output.subparser_name == 'tryjobs': + arg_dict['builders'] = args_output.builders + arg_dict['tryjob_options'] = args_output.options + if UnchangedSinceLastRun(args_output.last_tested, arg_dict): + print('svn version (%d) matches the last tested svn version in %s' % + (svn_version, args_output.last_tested)) + return + + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current + if args_output.is_llvm_next: + llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next + update_chromeos_llvm_hash.verbose = args_output.verbose + extra_commit_msg = None + if args_output.subparser_name == 'cq': + extra_commit_msg = GetCQDependString(args_output.extra_change_lists) + + change_list = update_chromeos_llvm_hash.UpdatePackages( + update_packages, + llvm_variant, + git_hash, + svn_version, + args_output.chroot_path, + patch_metadata_file, + FailureModes.DISABLE_PATCHES, + svn_option, + extra_commit_msg=extra_commit_msg) + + AddReviewers(change_list.cl_number, args_output.reviewers, + args_output.chroot_path) + + print('Successfully updated packages to %d' % svn_version) + print('Gerrit URL: %s' % change_list.url) + print('Change list number: %d' % change_list.cl_number) + + if args_output.subparser_name == 'tryjobs': + tryjob_results = RunTryJobs(change_list.cl_number, + args_output.extra_change_lists, + args_output.options, args_output.builders, + args_output.chroot_path, args_output.verbose) + print('Tryjobs:') + for tryjob in tryjob_results: + print(tryjob) + else: + StartCQDryRun(change_list.cl_number, args_output.extra_change_lists, + args_output.chroot_path) + + # If --last_tested is specified, record the arguments used + if args_output.last_tested: + with open(args_output.last_tested, 'w') as f: + json.dump(arg_dict, f, indent=2) + + +if __name__ == '__main__': + main() diff --git a/llvm_tools/update_packages_and_run_tests_unittest.py b/llvm_tools/update_packages_and_run_tests_unittest.py new file mode 100755 index 00000000..721b995f --- /dev/null +++ b/llvm_tools/update_packages_and_run_tests_unittest.py @@ -0,0 +1,415 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2019 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. + +"""Unittests for running tests after updating packages.""" + +from __future__ import print_function + +import json +import unittest +import unittest.mock as mock + +from test_helpers import ArgsOutputTest +from test_helpers import CreateTemporaryFile +from update_chromeos_llvm_hash import CommitContents +import update_chromeos_llvm_hash +import update_packages_and_run_tests + + +# Testing with tryjobs. +class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): + """Unittests when running tryjobs after updating packages.""" + + def testNoLastTestedFile(self): + self.assertEqual( + update_packages_and_run_tests.UnchangedSinceLastRun(None, {}), False) + + def testEmptyLastTestedFile(self): + with CreateTemporaryFile() as temp_file: + self.assertEqual( + update_packages_and_run_tests.UnchangedSinceLastRun(temp_file, {}), + False) + + def testLastTestedFileDoesNotExist(self): + # Simulate 'open()' on a lasted tested file that does not exist. + mock.mock_open(read_data='') + + self.assertEqual( + update_packages_and_run_tests.UnchangedSinceLastRun( + '/some/file/that/does/not/exist.txt', {}), False) + + def testMatchedLastTestedFile(self): + with CreateTemporaryFile() as last_tested_file: + arg_dict = { + 'svn_version': + 1234, + 'ebuilds': [ + '/path/to/package1-r2.ebuild', + '/path/to/package2/package2-r3.ebuild' + ], + 'builders': [ + 'kevin-llvm-next-toolchain-tryjob', + 'eve-llvm-next-toolchain-tryjob' + ], + 'extra_cls': [10, 1], + 'tryjob_options': ['latest-toolchain', 'hwtest'] + } + + with open(last_tested_file, 'w') as f: + f.write(json.dumps(arg_dict, indent=2)) + + self.assertEqual( + update_packages_and_run_tests.UnchangedSinceLastRun( + last_tested_file, arg_dict), True) + + def testGetTryJobCommandWithNoExtraInformation(self): + test_change_list = 1234 + + test_builder = 'nocturne' + + expected_tryjob_cmd_list = [ + 'cros', 'tryjob', '--yes', '--json', '-g', + '%d' % test_change_list, test_builder + ] + + self.assertEqual( + update_packages_and_run_tests.GetTryJobCommand(test_change_list, None, + None, test_builder), + expected_tryjob_cmd_list) + + def testGetTryJobCommandWithExtraInformation(self): + test_change_list = 4321 + test_extra_cls = [1000, 10] + test_options = ['report_error', 'delete_tryjob'] + test_builder = 'kevin' + + expected_tryjob_cmd_list = [ + 'cros', + 'tryjob', + '--yes', + '--json', + '-g', + '%d' % test_change_list, + '-g', + '%d' % test_extra_cls[0], + '-g', + '%d' % test_extra_cls[1], + test_builder, + '--%s' % test_options[0], + '--%s' % test_options[1], + ] + + self.assertEqual( + update_packages_and_run_tests.GetTryJobCommand( + test_change_list, test_extra_cls, test_options, test_builder), + expected_tryjob_cmd_list) + + @mock.patch.object( + update_packages_and_run_tests, + 'GetCurrentTimeInUTC', + return_value='2019-09-09') + @mock.patch.object(update_packages_and_run_tests, 'AddTryjobLinkToCL') + @mock.patch.object(update_packages_and_run_tests, 'ChrootRunCommand') + def testSuccessfullySubmittedTryJob( + self, mock_chroot_cmd, mock_add_tryjob_link_to_cl, mock_launch_time): + + expected_tryjob_cmd_list = [ + 'cros', 'tryjob', '--yes', '--json', '-g', + '%d' % 900, '-g', + '%d' % 1200, 'builder1', '--some_option' + ] + + buildbucket_id = '1234' + url = 'https://some_tryjob_url.com' + + tryjob_launch_contents = [{'buildbucket_id': buildbucket_id, 'url': url}] + + mock_chroot_cmd.return_value = json.dumps(tryjob_launch_contents) + + extra_cls = [1200] + tryjob_options = ['some_option'] + builder_list = ['builder1'] + chroot_path = '/some/path/to/chroot' + cl_to_launch_tryjob = 900 + verbose = False + + tryjob_results_list = update_packages_and_run_tests.RunTryJobs( + cl_to_launch_tryjob, extra_cls, tryjob_options, builder_list, + chroot_path, verbose) + + expected_tryjob_dict = { + 'launch_time': mock_launch_time.return_value, + 'link': url, + 'buildbucket_id': int(buildbucket_id), + 'extra_cls': extra_cls, + 'options': tryjob_options, + 'builder': builder_list + } + + self.assertEqual(tryjob_results_list, [expected_tryjob_dict]) + + mock_chroot_cmd.assert_called_once_with( + chroot_path, expected_tryjob_cmd_list, verbose=False) + + mock_add_tryjob_link_to_cl.assert_called_once() + + @mock.patch.object( + update_packages_and_run_tests, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testSuccessfullyAddedTryjobLinkToCL(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + + test_cl_number = 1000 + + tryjob_result = [{'link': 'https://some_tryjob_link.com'}] + + update_packages_and_run_tests.AddTryjobLinkToCL(tryjob_result, + test_cl_number, chroot_path) + + expected_gerrit_message = [ + '%s/chromite/bin/gerrit' % chroot_path, 'message', + str(test_cl_number), + 'Started the following tryjobs:\n%s' % tryjob_result[0]['link'] + ] + + mock_exec_cmd.assert_called_once_with(expected_gerrit_message) + + @mock.patch.object(update_packages_and_run_tests, 'RunTryJobs') + @mock.patch.object(update_chromeos_llvm_hash, 'UpdatePackages') + @mock.patch.object(update_packages_and_run_tests, 'GetCommandLineArgs') + @mock.patch.object(update_packages_and_run_tests, + 'GetLLVMHashAndVersionFromSVNOption') + @mock.patch.object( + update_packages_and_run_tests, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') + def testUpdatedLastTestedFileWithNewTestedRevision( + self, mock_get_chroot_build_paths, mock_outside_chroot, + mock_get_hash_and_version, mock_get_commandline_args, + mock_update_packages, mock_run_tryjobs): + + # Create a temporary file to simulate the last tested file that contains a + # revision. + with CreateTemporaryFile() as last_tested_file: + builders = [ + 'kevin-llvm-next-toolchain-tryjob', 'eve-llvm-next-toolchain-tryjob' + ] + extra_cls = [10, 1] + tryjob_options = ['latest-toolchain', 'hwtest'] + ebuilds = [ + '/path/to/package1/package1-r2.ebuild', + '/path/to/package2/package2-r3.ebuild' + ] + + arg_dict = { + 'svn_version': 100, + 'ebuilds': ebuilds, + 'builders': builders, + 'extra_cls': extra_cls, + 'tryjob_options': tryjob_options + } + # Parepared last tested file + with open(last_tested_file, 'w') as f: + json.dump(arg_dict, f, indent=2) + + # Call with a changed LLVM svn version + args_output = ArgsOutputTest() + args_output.is_llvm_next = True + args_output.extra_change_lists = extra_cls + args_output.last_tested = last_tested_file + args_output.reviewers = [] + + args_output.subparser_name = 'tryjobs' + args_output.builders = builders + args_output.options = tryjob_options + + mock_get_commandline_args.return_value = args_output + + mock_get_chroot_build_paths.return_value = ebuilds + + mock_get_hash_and_version.return_value = ('a123testhash2', 200) + + mock_update_packages.return_value = CommitContents( + url='https://some_cl_url.com', cl_number=12345) + + mock_run_tryjobs.return_value = [{ + 'link': 'https://some_tryjob_url.com', + 'buildbucket_id': 1234 + }] + + update_packages_and_run_tests.main() + + # Verify that the lasted tested file has been updated to the new LLVM + # revision. + with open(last_tested_file) as f: + arg_dict = json.load(f) + + self.assertEqual(arg_dict['svn_version'], 200) + + mock_outside_chroot.assert_called_once() + + mock_get_commandline_args.assert_called_once() + + mock_get_hash_and_version.assert_called_once() + + mock_run_tryjobs.assert_called_once() + + mock_update_packages.assert_called_once() + + +class UpdatePackagesAndRunTestCQTest(unittest.TestCase): + """Unittests for CQ dry run after updating packages.""" + + def testGetCQDependString(self): + test_no_changelists = [] + test_single_changelist = [1234] + test_multiple_changelists = [1234, 5678] + + self.assertEqual( + update_packages_and_run_tests.GetCQDependString(test_no_changelists), + None) + + self.assertEqual( + update_packages_and_run_tests.GetCQDependString(test_single_changelist), + '\nCq-Depend: chromium:1234') + + self.assertEqual( + update_packages_and_run_tests.GetCQDependString( + test_multiple_changelists), + '\nCq-Depend: chromium:1234, chromium:5678') + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_run_tests, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testStartCQDryRunNoDeps(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + test_cl_number = 1000 + + # test with no deps cls. + extra_cls = [] + update_packages_and_run_tests.StartCQDryRun(test_cl_number, extra_cls, + chroot_path) + + expected_gerrit_message = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(test_cl_number), '1' + ] + + mock_exec_cmd.assert_called_once_with(expected_gerrit_message) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_run_tests, + 'ExecCommandAndCaptureOutput', + return_value=None) + # test with a single deps cl. + def testStartCQDryRunSingleDep(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + test_cl_number = 1000 + + extra_cls = [2000] + update_packages_and_run_tests.StartCQDryRun(test_cl_number, extra_cls, + chroot_path) + + expected_gerrit_cmd_1 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(test_cl_number), '1' + ] + expected_gerrit_cmd_2 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(2000), '1' + ] + + self.assertEqual(mock_exec_cmd.call_count, 2) + self.assertEqual(mock_exec_cmd.call_args_list[0], + mock.call(expected_gerrit_cmd_1)) + self.assertEqual(mock_exec_cmd.call_args_list[1], + mock.call(expected_gerrit_cmd_2)) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_run_tests, + 'ExecCommandAndCaptureOutput', + return_value=None) + def testStartCQDryRunMultipleDep(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + test_cl_number = 1000 + + # test with multiple deps cls. + extra_cls = [3000, 4000] + update_packages_and_run_tests.StartCQDryRun(test_cl_number, extra_cls, + chroot_path) + + expected_gerrit_cmd_1 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(test_cl_number), '1' + ] + expected_gerrit_cmd_2 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(3000), '1' + ] + expected_gerrit_cmd_3 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', + str(4000), '1' + ] + + self.assertEqual(mock_exec_cmd.call_count, 3) + self.assertEqual(mock_exec_cmd.call_args_list[0], + mock.call(expected_gerrit_cmd_1)) + self.assertEqual(mock_exec_cmd.call_args_list[1], + mock.call(expected_gerrit_cmd_2)) + self.assertEqual(mock_exec_cmd.call_args_list[2], + mock.call(expected_gerrit_cmd_3)) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_run_tests, + 'ExecCommandAndCaptureOutput', + return_value=None) + # test with no reviewers. + def testAddReviewersNone(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + reviewers = [] + test_cl_number = 1000 + + update_packages_and_run_tests.AddReviewers(test_cl_number, reviewers, + chroot_path) + self.assertTrue(mock_exec_cmd.not_called) + + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. + @mock.patch.object( + update_packages_and_run_tests, + 'ExecCommandAndCaptureOutput', + return_value=None) + # test with multiple reviewers. + def testAddReviewersMultiple(self, mock_exec_cmd): + chroot_path = '/abs/path/to/chroot' + reviewers = ['none1@chromium.org', 'none2@chromium.org'] + test_cl_number = 1000 + + update_packages_and_run_tests.AddReviewers(test_cl_number, reviewers, + chroot_path) + + expected_gerrit_cmd_1 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'reviewers', + str(test_cl_number), 'none1@chromium.org' + ] + expected_gerrit_cmd_2 = [ + '%s/chromite/bin/gerrit' % chroot_path, 'reviewers', + str(test_cl_number), 'none2@chromium.org' + ] + + self.assertEqual(mock_exec_cmd.call_count, 2) + self.assertEqual(mock_exec_cmd.call_args_list[0], + mock.call(expected_gerrit_cmd_1)) + self.assertEqual(mock_exec_cmd.call_args_list[1], + mock.call(expected_gerrit_cmd_2)) + + +if __name__ == '__main__': + unittest.main() diff --git a/llvm_tools/update_packages_and_run_tryjobs.py b/llvm_tools/update_packages_and_run_tryjobs.py deleted file mode 100755 index dc9e6643..00000000 --- a/llvm_tools/update_packages_and_run_tryjobs.py +++ /dev/null @@ -1,327 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2019 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. - -"""Runs a tryjob/tryjobs after updating the packages.""" - -from __future__ import print_function - -import argparse -import datetime -import json -import os - -from assert_not_in_chroot import VerifyOutsideChroot -from failure_modes import FailureModes -from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption -from get_llvm_hash import is_svn_option -from subprocess_helpers import ChrootRunCommand -from subprocess_helpers import ExecCommandAndCaptureOutput -import update_chromeos_llvm_hash - - -def GetCommandLineArgs(): - """Parses the command line for the command line arguments. - - Returns: - The log level to use when retrieving the LLVM hash or google3 LLVM version, - the chroot path to use for executing chroot commands, - a list of a package or packages to update their LLVM next hash, - and the LLVM version to use when retrieving the LLVM hash. - """ - - # Default path to the chroot if a path is not specified. - cros_root = os.path.expanduser('~') - cros_root = os.path.join(cros_root, 'chromiumos') - - # Create parser and add optional command-line arguments. - parser = argparse.ArgumentParser( - description= - 'Runs a tryjob if successfully updated LLVM_NEXT_HASH of packages.') - - # Add argument for the absolute path to the file that contains information on - # the previous tested svn version. - parser.add_argument( - '--last_tested', - help='the absolute path to the file that contains the last tested ' - 'arguments.') - - # Add argument for other change lists that want to run alongside the tryjob - # which has a change list of updating a package's git hash. - parser.add_argument( - '--extra_change_lists', - type=int, - nargs='+', - help='change lists that would like to be run alongside the change list ' - 'of updating the packages') - - # Add argument for custom options for the tryjob. - parser.add_argument( - '--options', - required=False, - nargs='+', - help='options to use for the tryjob testing') - - # Add argument for builders for the tryjob. - parser.add_argument( - '--builders', - required=True, - nargs='+', - help='builders to use for the tryjob testing') - - # Add argument for the description of the tryjob. - parser.add_argument( - '--description', - required=False, - nargs='+', - help='the description of the tryjob') - - # Add argument for a specific chroot path. - parser.add_argument( - '--chroot_path', - default=cros_root, - help='the path to the chroot (default: %(default)s)') - - # Add argument for whether to display command contents to `stdout`. - parser.add_argument( - '--verbose', - action='store_true', - help='display contents of a command to the terminal ' - '(default: %(default)s)') - - # Add argument for the LLVM version to use. - parser.add_argument( - '--llvm_version', - type=is_svn_option, - required=True, - help='which git hash of LLVM to find ' - '{google3, ToT, } ' - '(default: finds the git hash of the google3 LLVM ' - 'version)') - - args_output = parser.parse_args() - - return args_output - - -def UnchangedSinceLastRun(last_tested_file, arg_dict): - """Gets the arguments used for last run - - Args: - last_tested_file: The absolute path to the file that contains the - arguments for the last run. - arg_dict: The arguments used for this run. - - Returns: - Return true if the arguments used for last run exist and are the - same as the arguments used for this run. Otherwise return false. - """ - - if not last_tested_file: - return False - - # Get the last tested svn version if the file exists. - last_arg_dict = None - try: - with open(last_tested_file) as f: - last_arg_dict = json.load(f) - - except (IOError, ValueError): - return False - - return arg_dict == last_arg_dict - - -def GetTryJobCommand(change_list, extra_change_lists, options, builder): - """Constructs the 'tryjob' command. - - Args: - change_list: The CL obtained from updating the packages. - extra_change_lists: Extra change lists that would like to be run alongside - the change list of updating the packages. - options: Options to be passed into the tryjob command. - builder: The builder to be passed into the tryjob command. - - Returns: - The 'tryjob' command with the change list of updating the packages and - any extra information that was passed into the command line. - """ - - tryjob_cmd = ['cros', 'tryjob', '--yes', '--json', '-g', '%d' % change_list] - - if extra_change_lists: - for extra_cl in extra_change_lists: - tryjob_cmd.extend(['-g', '%d' % extra_cl]) - - tryjob_cmd.append(builder) - - if options: - tryjob_cmd.extend('--%s' % option for option in options) - - return tryjob_cmd - - -def GetCurrentTimeInUTC(): - """Returns the current time via `datetime.datetime.utcnow()`.""" - return datetime.datetime.utcnow() - - -def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path, - verbose): - """Runs a tryjob/tryjobs. - - Args: - cl_number: The CL created by updating the packages. - extra_change_lists: Any extra change lists that would run alongside the CL - that was created by updating the packages ('cl_number'). - options: Any options to be passed into the 'tryjob' command. - builders: All the builders to run the 'tryjob' with. - chroot_path: The absolute path to the chroot. - verbose: Print command contents to `stdout`. - - Returns: - A list that contains stdout contents of each tryjob, where stdout is - information (a hashmap) about the tryjob. The hashmap also contains stderr - if there was an error when running a tryjob. - - Raises: - ValueError: Failed to submit a tryjob. - """ - - # Contains the results of each tryjob. The results are retrieved from 'out' - # which is stdout of the command executer. - tryjob_results = [] - - # For each builder passed into the command line: - # - # Run a tryjob with the change list number obtained from updating the - # packages and append additional changes lists and options obtained from the - # command line. - for cur_builder in builders: - tryjob_cmd = GetTryJobCommand(cl_number, extra_change_lists, options, - cur_builder) - - out = ChrootRunCommand(chroot_path, tryjob_cmd, verbose=verbose) - - tryjob_launch_time = GetCurrentTimeInUTC() - - tryjob_contents = json.loads(out) - - buildbucket_id = int(tryjob_contents[0]['buildbucket_id']) - - new_tryjob = { - 'launch_time': str(tryjob_launch_time), - 'link': str(tryjob_contents[0]['url']), - 'buildbucket_id': buildbucket_id, - 'extra_cls': extra_change_lists, - 'options': options, - 'builder': [cur_builder] - } - - tryjob_results.append(new_tryjob) - - AddTryjobLinkToCL(tryjob_results, cl_number, chroot_path) - - return tryjob_results - - -def AddTryjobLinkToCL(tryjobs, cl, chroot_path): - """Adds the tryjob link(s) to the CL via `gerrit message `.""" - - # NOTE: Invoking `cros_sdk` does not make each tryjob link appear on its own - # line, so invoking the `gerrit` command directly instead of using `cros_sdk` - # to do it for us. - # - # FIXME: Need to figure out why `cros_sdk` does not add each tryjob link as a - # newline. - gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') - - tryjob_links = ['Started the following tryjobs:'] - tryjob_links.extend(tryjob['link'] for tryjob in tryjobs) - - add_message_cmd = [ - gerrit_abs_path, 'message', - str(cl), '\n'.join(tryjob_links) - ] - - ExecCommandAndCaptureOutput(add_message_cmd) - - -def main(): - """Updates the packages' 'LLVM_NEXT_HASH' and submits tryjobs. - - Raises: - AssertionError: The script was run inside the chroot. - """ - - VerifyOutsideChroot() - - args_output = GetCommandLineArgs() - - update_packages = [ - 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', - 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' - ] - - patch_metadata_file = 'PATCHES.json' - - svn_option = args_output.llvm_version - - git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(svn_option) - - # There is no need to run tryjobs when all the key parameters remain unchanged - # from last time. - - # If --last_tested is specified, check if the current run has the same - # arguments last time --last_tested is used. - if args_output.last_tested: - chroot_file_paths = update_chromeos_llvm_hash.GetChrootBuildPaths( - args_output.chroot_path, update_packages) - arg_dict = { - 'svn_version': svn_version, - 'ebuilds': chroot_file_paths, - 'builders': args_output.builders, - 'extra_cls': args_output.extra_change_lists, - 'tryjob_options': args_output.options - } - if UnchangedSinceLastRun(args_output.last_tested, arg_dict): - print('svn version (%d) matches the last tested svn version in %s' % - (svn_version, args_output.last_tested)) - return - - update_chromeos_llvm_hash.verbose = args_output.verbose - - change_list = update_chromeos_llvm_hash.UpdatePackages( - update_packages, - update_chromeos_llvm_hash.LLVMVariant.next, - git_hash, - svn_version, - args_output.chroot_path, - patch_metadata_file, - FailureModes.DISABLE_PATCHES, - svn_option, - extra_commit_msg=None) - - print('Successfully updated packages to %d' % svn_version) - print('Gerrit URL: %s' % change_list.url) - print('Change list number: %d' % change_list.cl_number) - - tryjob_results = RunTryJobs(change_list.cl_number, - args_output.extra_change_lists, - args_output.options, args_output.builders, - args_output.chroot_path, args_output.verbose) - - print('Tryjobs:') - for tryjob in tryjob_results: - print(tryjob) - - # If --last_tested is specified, record the arguments used - if args_output.last_tested: - with open(args_output.last_tested, 'w') as f: - json.dump(arg_dict, f, indent=2) - - -if __name__ == '__main__': - main() diff --git a/llvm_tools/update_packages_and_run_tryjobs_unittest.py b/llvm_tools/update_packages_and_run_tryjobs_unittest.py deleted file mode 100755 index 7352f4ca..00000000 --- a/llvm_tools/update_packages_and_run_tryjobs_unittest.py +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2019 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. - -"""Unittests for running tryjobs after updating packages.""" - -from __future__ import print_function - -import json -import unittest -import unittest.mock as mock - -from test_helpers import ArgsOutputTest -from test_helpers import CreateTemporaryFile -from update_chromeos_llvm_hash import CommitContents -import update_chromeos_llvm_hash -import update_packages_and_run_tryjobs - - -class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): - """Unittests when running tryjobs after updating packages.""" - - def testNoLastTestedFile(self): - self.assertEqual( - update_packages_and_run_tryjobs.UnchangedSinceLastRun(None, {}), False) - - def testEmptyLastTestedFile(self): - with CreateTemporaryFile() as temp_file: - self.assertEqual( - update_packages_and_run_tryjobs.UnchangedSinceLastRun(temp_file, {}), - False) - - def testLastTestedFileDoesNotExist(self): - # Simulate 'open()' on a lasted tested file that does not exist. - mock.mock_open(read_data='') - - self.assertEqual( - update_packages_and_run_tryjobs.UnchangedSinceLastRun( - '/some/file/that/does/not/exist.txt', {}), False) - - def testMatchedLastTestedFile(self): - with CreateTemporaryFile() as last_tested_file: - arg_dict = { - 'svn_version': - 1234, - 'ebuilds': [ - '/path/to/package1-r2.ebuild', - '/path/to/package2/package2-r3.ebuild' - ], - 'builders': [ - 'kevin-llvm-next-toolchain-tryjob', - 'eve-llvm-next-toolchain-tryjob' - ], - 'extra_cls': [10, 1], - 'tryjob_options': ['latest-toolchain', 'hwtest'] - } - - with open(last_tested_file, 'w') as f: - f.write(json.dumps(arg_dict, indent=2)) - - self.assertEqual( - update_packages_and_run_tryjobs.UnchangedSinceLastRun( - last_tested_file, arg_dict), True) - - def testGetTryJobCommandWithNoExtraInformation(self): - test_change_list = 1234 - - test_builder = 'nocturne' - - expected_tryjob_cmd_list = [ - 'cros', 'tryjob', '--yes', '--json', '-g', - '%d' % test_change_list, test_builder - ] - - self.assertEqual( - update_packages_and_run_tryjobs.GetTryJobCommand( - test_change_list, None, None, test_builder), - expected_tryjob_cmd_list) - - def testGetTryJobCommandWithExtraInformation(self): - test_change_list = 4321 - test_extra_cls = [1000, 10] - test_options = ['report_error', 'delete_tryjob'] - test_builder = 'kevin' - - expected_tryjob_cmd_list = [ - 'cros', - 'tryjob', - '--yes', - '--json', - '-g', - '%d' % test_change_list, - '-g', - '%d' % test_extra_cls[0], - '-g', - '%d' % test_extra_cls[1], - test_builder, - '--%s' % test_options[0], - '--%s' % test_options[1], - ] - - self.assertEqual( - update_packages_and_run_tryjobs.GetTryJobCommand( - test_change_list, test_extra_cls, test_options, test_builder), - expected_tryjob_cmd_list) - - @mock.patch.object( - update_packages_and_run_tryjobs, - 'GetCurrentTimeInUTC', - return_value='2019-09-09') - @mock.patch.object(update_packages_and_run_tryjobs, 'AddTryjobLinkToCL') - @mock.patch.object(update_packages_and_run_tryjobs, 'ChrootRunCommand') - def testSuccessfullySubmittedTryJob( - self, mock_chroot_cmd, mock_add_tryjob_link_to_cl, mock_launch_time): - - expected_tryjob_cmd_list = [ - 'cros', 'tryjob', '--yes', '--json', '-g', - '%d' % 900, '-g', - '%d' % 1200, 'builder1', '--some_option' - ] - - buildbucket_id = '1234' - url = 'https://some_tryjob_url.com' - - tryjob_launch_contents = [{'buildbucket_id': buildbucket_id, 'url': url}] - - mock_chroot_cmd.return_value = json.dumps(tryjob_launch_contents) - - extra_cls = [1200] - tryjob_options = ['some_option'] - builder_list = ['builder1'] - chroot_path = '/some/path/to/chroot' - cl_to_launch_tryjob = 900 - verbose = False - - tryjob_results_list = update_packages_and_run_tryjobs.RunTryJobs( - cl_to_launch_tryjob, extra_cls, tryjob_options, builder_list, - chroot_path, verbose) - - expected_tryjob_dict = { - 'launch_time': '2019-09-09', - 'link': url, - 'buildbucket_id': int(buildbucket_id), - 'extra_cls': extra_cls, - 'options': tryjob_options, - 'builder': builder_list - } - - self.assertEqual(tryjob_results_list, [expected_tryjob_dict]) - - mock_chroot_cmd.assert_called_once_with( - chroot_path, expected_tryjob_cmd_list, verbose=False) - - mock_add_tryjob_link_to_cl.assert_called_once() - - mock_launch_time.assert_called_once() - - @mock.patch.object( - update_packages_and_run_tryjobs, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyAddedTryjobLinkToCL(self, mock_exec_cmd): - chroot_path = '/abs/path/to/chroot' - - test_cl_number = 1000 - - tryjob_result = [{'link': 'https://some_tryjob_link.com'}] - - update_packages_and_run_tryjobs.AddTryjobLinkToCL( - tryjob_result, test_cl_number, chroot_path) - - expected_gerrit_message = [ - '%s/chromite/bin/gerrit' % chroot_path, 'message', - str(test_cl_number), - 'Started the following tryjobs:\n%s' % tryjob_result[0]['link'] - ] - - mock_exec_cmd.assert_called_once_with(expected_gerrit_message) - - @mock.patch.object(update_packages_and_run_tryjobs, 'RunTryJobs') - @mock.patch.object(update_chromeos_llvm_hash, 'UpdatePackages') - @mock.patch.object(update_packages_and_run_tryjobs, 'GetCommandLineArgs') - @mock.patch.object(update_packages_and_run_tryjobs, - 'GetLLVMHashAndVersionFromSVNOption') - @mock.patch.object( - update_packages_and_run_tryjobs, 'VerifyOutsideChroot', return_value=True) - @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') - def testUpdatedLastTestedFileWithNewTestedRevision( - self, mock_get_chroot_build_paths, mock_outside_chroot, - mock_get_hash_and_version, mock_get_commandline_args, - mock_update_packages, mock_run_tryjobs): - - # Create a temporary file to simulate the last tested file that contains a - # revision. - with CreateTemporaryFile() as last_tested_file: - builders = [ - 'kevin-llvm-next-toolchain-tryjob', 'eve-llvm-next-toolchain-tryjob' - ] - extra_cls = [10, 1] - tryjob_options = ['latest-toolchain', 'hwtest'] - ebuilds = [ - '/path/to/package1/package1-r2.ebuild', - '/path/to/package2/package2-r3.ebuild' - ] - - arg_dict = { - 'svn_version': 100, - 'ebuilds': ebuilds, - 'builders': builders, - 'extra_cls': extra_cls, - 'tryjob_options': tryjob_options - } - # Parepared last tested file - with open(last_tested_file, 'w') as f: - json.dump(arg_dict, f, indent=2) - - # Call with a changed LLVM svn version - args_output = ArgsOutputTest() - args_output.builders = builders - args_output.extra_change_lists = extra_cls - args_output.options = tryjob_options - args_output.last_tested = last_tested_file - - mock_get_commandline_args.return_value = args_output - - mock_get_chroot_build_paths.return_value = ebuilds - - mock_get_hash_and_version.return_value = ('a123testhash2', 200) - - mock_update_packages.return_value = CommitContents( - url='https://some_cl_url.com', cl_number=12345) - - mock_run_tryjobs.return_value = [{ - 'link': 'https://some_tryjob_url.com', - 'buildbucket_id': 1234 - }] - - update_packages_and_run_tryjobs.main() - - # Verify that the lasted tested file has been updated to the new LLVM - # revision. - with open(last_tested_file) as f: - arg_dict = json.load(f) - - self.assertEqual(arg_dict['svn_version'], 200) - - mock_outside_chroot.assert_called_once() - - mock_get_commandline_args.assert_called_once() - - mock_get_hash_and_version.assert_called_once() - - mock_run_tryjobs.assert_called_once() - - mock_update_packages.assert_called_once() - - -if __name__ == '__main__': - unittest.main() diff --git a/llvm_tools/update_packages_and_test_cq.py b/llvm_tools/update_packages_and_test_cq.py deleted file mode 100755 index 15246e49..00000000 --- a/llvm_tools/update_packages_and_test_cq.py +++ /dev/null @@ -1,226 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2020 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. - -"""Runs CQ dry run after updating the packages.""" - -from __future__ import print_function - -import argparse -import datetime -import json -import os - -from assert_not_in_chroot import VerifyOutsideChroot -from failure_modes import FailureModes -from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption -from get_llvm_hash import is_svn_option -from subprocess_helpers import ChrootRunCommand -from subprocess_helpers import ExecCommandAndCaptureOutput -import update_chromeos_llvm_hash - - -def GetCommandLineArgs(): - """Parses the command line for the command line arguments. - - Returns: - The log level to use when retrieving the LLVM hash or google3 LLVM version, - the chroot path to use for executing chroot commands, - a list of a package or packages to update their LLVM next hash, - and the LLVM version to use when retrieving the LLVM hash. - """ - - # Default path to the chroot if a path is not specified. - cros_root = os.path.expanduser('~') - cros_root = os.path.join(cros_root, 'chromiumos') - - # Create parser and add optional command-line arguments. - parser = argparse.ArgumentParser( - description= - 'Runs a tryjob if successfully updated LLVM_NEXT_HASH of packages.') - - # Add argument for the absolute path to the file that contains information on - # the previous tested svn version. - parser.add_argument( - '--last_tested', - help='the absolute path to the file that contains the last tested ' - 'svn version') - - # Add argument for other change lists that want to run alongside the tryjob - # which has a change list of updating a package's git hash. - parser.add_argument( - '--extra_change_lists', - type=int, - default=[], - nargs='+', - help='change lists that would like to be run alongside the change list ' - 'of updating the packages') - - # Add argument for a specific chroot path. - parser.add_argument( - '--chroot_path', - default=cros_root, - help='the path to the chroot (default: %(default)s)') - - # Add argument to choose between llvm and llvm-next. - parser.add_argument( - '--is_llvm_next', - action='store_true', - help='which llvm hash to update. Update LLVM_NEXT_HASH if specified. ' - 'Otherwise, update LLVM_HASH') - - # Add argument to add reviewers for the created CL. - parser.add_argument( - '--reviewers', - nargs='+', - default=[], - help='The reviewers for the package update changelist') - - # Add argument for whether to display command contents to `stdout`. - parser.add_argument( - '--verbose', - action='store_true', - help='display contents of a command to the terminal ' - '(default: %(default)s)') - - # Add argument for the LLVM version to use. - parser.add_argument( - '--llvm_version', - type=is_svn_option, - required=True, - help='which git hash of LLVM to find ' - '{google3, ToT, } ' - '(default: finds the git hash of the google3 LLVM ' - 'version)') - - args_output = parser.parse_args() - - return args_output - - -def GetLastTestedSVNVersion(last_tested_file): - """Gets the lasted tested svn version from the file. - - Args: - last_tested_file: The absolute path to the file that contains the last - tested svn version. - - Returns: - The last tested svn version or 'None' if the file did not have a last tested - svn version (the file exists, but failed to convert the contents to an - integer) or the file does not exist. - """ - - if not last_tested_file: - return None - - last_svn_version = None - - # Get the last tested svn version if the file exists. - try: - with open(last_tested_file) as file_obj: - # For now, the first line contains the last tested svn version. - return int(file_obj.read().rstrip()) - - except (IOError, ValueError): - pass - - return last_svn_version - - -def GetCQDependString(dependent_cls): - """Get CQ dependency string e.g. `Cq-Depend: chromium:MM, chromium:NN`.""" - - if not dependent_cls: - return None - - # Cq-Depend must start a new paragraph prefixed with "Cq-Depend". - return '\nCq-Depend: ' + ', '.join(('chromium:%s' % i) for i in dependent_cls) - - -def AddReviewers(cl, reviewers, chroot_path): - """Add reviewers for the created CL.""" - - gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') - for reviewer in reviewers: - cmd = [gerrit_abs_path, 'reviewers', str(cl), reviewer] - - ExecCommandAndCaptureOutput(cmd) - - -def StartCQDryRun(cl, dependent_cls, chroot_path): - """Start CQ dry run for the changelist and dependencies.""" - - gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') - - cl_list = [cl] - cl_list.extend(dependent_cls) - - for changes in cl_list: - cq_dry_run_cmd = [gerrit_abs_path, 'label-cq', str(changes), '1'] - - ExecCommandAndCaptureOutput(cq_dry_run_cmd) - - -def main(): - """Updates the packages' 'LLVM_NEXT_HASH' and submits tryjobs. - - Raises: - AssertionError: The script was run inside the chroot. - """ - - VerifyOutsideChroot() - - args_output = GetCommandLineArgs() - - last_svn_version = GetLastTestedSVNVersion(args_output.last_tested) - - update_packages = [ - 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', - 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' - ] - - patch_metadata_file = 'PATCHES.json' - - svn_option = args_output.llvm_version - - git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(svn_option) - - # There is no need to run tryjobs when the SVN version matches the last tested - # SVN version. - if last_svn_version == svn_version: - print('svn version (%d) matches the last tested svn version (%d) in %s' % - (svn_version, last_svn_version, args_output.last_tested)) - return - - llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current - if args_output.is_llvm_next: - llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next - update_chromeos_llvm_hash.verbose = args_output.verbose - extra_commit_msg = GetCQDependString(args_output.extra_change_lists) - - change_list = update_chromeos_llvm_hash.UpdatePackages( - update_packages, llvm_variant, git_hash, svn_version, - args_output.chroot_path, patch_metadata_file, - FailureModes.DISABLE_PATCHES, svn_option, extra_commit_msg) - - print('Successfully updated packages to %d' % svn_version) - print('Gerrit URL: %s' % change_list.url) - print('Change list number: %d' % change_list.cl_number) - - AddReviewers(change_list.cl_number, args_output.reviewers, - args_output.chroot_path) - StartCQDryRun(change_list.cl_number, args_output.extra_change_lists, - args_output.chroot_path) - - # Updated the packages and submitted tryjobs successfully, so the file will - # contain 'svn_version' which will now become the last tested svn version. - if args_output.last_tested: - with open(args_output.last_tested, 'w', encoding='utf-8') as file_obj: - file_obj.write(str(svn_version)) - - -if __name__ == '__main__': - main() diff --git a/llvm_tools/update_packages_and_test_cq_unittest.py b/llvm_tools/update_packages_and_test_cq_unittest.py deleted file mode 100755 index acf17c6d..00000000 --- a/llvm_tools/update_packages_and_test_cq_unittest.py +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2020 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. - -"""Unittests for running tryjobs after updating packages.""" - -from __future__ import print_function - -import json -import unittest -import unittest.mock as mock - -from test_helpers import ArgsOutputTest -from test_helpers import CreateTemporaryFile -from update_chromeos_llvm_hash import CommitContents -import update_chromeos_llvm_hash -import update_packages_and_test_cq - - -class UpdatePackagesAndRunTestCQTest(unittest.TestCase): - """Unittests for CQ dry run after updating packages.""" - - def testGetCQDependString(self): - test_no_changelists = [] - test_single_changelist = [1234] - test_multiple_changelists = [1234, 5678] - - self.assertEqual( - update_packages_and_test_cq.GetCQDependString(test_no_changelists), - None) - - self.assertEqual( - update_packages_and_test_cq.GetCQDependString(test_single_changelist), - '\nCq-Depend: chromium:1234') - - self.assertEqual( - update_packages_and_test_cq.GetCQDependString( - test_multiple_changelists), - '\nCq-Depend: chromium:1234, chromium:5678') - - # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - update_packages_and_test_cq, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testStartCQDryRunNoDeps(self, mock_exec_cmd): - chroot_path = '/abs/path/to/chroot' - test_cl_number = 1000 - - # test with no deps cls. - extra_cls = [] - update_packages_and_test_cq.StartCQDryRun(test_cl_number, extra_cls, - chroot_path) - - expected_gerrit_message = [ - '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', - str(test_cl_number), '1' - ] - - mock_exec_cmd.assert_called_once_with(expected_gerrit_message) - - # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - update_packages_and_test_cq, - 'ExecCommandAndCaptureOutput', - return_value=None) - # test with a single deps cl. - def testStartCQDryRunSingleDep(self, mock_exec_cmd): - chroot_path = '/abs/path/to/chroot' - test_cl_number = 1000 - - extra_cls = [2000] - update_packages_and_test_cq.StartCQDryRun(test_cl_number, extra_cls, - chroot_path) - - expected_gerrit_cmd_1 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', - str(test_cl_number), '1' - ] - expected_gerrit_cmd_2 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', - str(2000), '1' - ] - - self.assertEqual(mock_exec_cmd.call_count, 2) - self.assertEqual(mock_exec_cmd.call_args_list[0], - mock.call(expected_gerrit_cmd_1)) - self.assertEqual(mock_exec_cmd.call_args_list[1], - mock.call(expected_gerrit_cmd_2)) - - # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - update_packages_and_test_cq, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testStartCQDryRunMultipleDep(self, mock_exec_cmd): - chroot_path = '/abs/path/to/chroot' - test_cl_number = 1000 - - # test with multiple deps cls. - extra_cls = [3000, 4000] - update_packages_and_test_cq.StartCQDryRun(test_cl_number, extra_cls, - chroot_path) - - expected_gerrit_cmd_1 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', - str(test_cl_number), '1' - ] - expected_gerrit_cmd_2 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', - str(3000), '1' - ] - expected_gerrit_cmd_3 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'label-cq', - str(4000), '1' - ] - - self.assertEqual(mock_exec_cmd.call_count, 3) - self.assertEqual(mock_exec_cmd.call_args_list[0], - mock.call(expected_gerrit_cmd_1)) - self.assertEqual(mock_exec_cmd.call_args_list[1], - mock.call(expected_gerrit_cmd_2)) - self.assertEqual(mock_exec_cmd.call_args_list[2], - mock.call(expected_gerrit_cmd_3)) - - # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - update_packages_and_test_cq, - 'ExecCommandAndCaptureOutput', - return_value=None) - # test with no reviewers. - def testAddReviewersNone(self, mock_exec_cmd): - chroot_path = '/abs/path/to/chroot' - reviewers = [] - test_cl_number = 1000 - - update_packages_and_test_cq.AddReviewers(test_cl_number, reviewers, - chroot_path) - self.assertTrue(mock_exec_cmd.not_called) - - # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - update_packages_and_test_cq, - 'ExecCommandAndCaptureOutput', - return_value=None) - # test with multiple reviewers. - def testAddReviewersMultiple(self, mock_exec_cmd): - chroot_path = '/abs/path/to/chroot' - reviewers = ['none1@chromium.org', 'none2@chromium.org'] - test_cl_number = 1000 - - update_packages_and_test_cq.AddReviewers(test_cl_number, reviewers, - chroot_path) - - expected_gerrit_cmd_1 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'reviewers', - str(test_cl_number), 'none1@chromium.org' - ] - expected_gerrit_cmd_2 = [ - '%s/chromite/bin/gerrit' % chroot_path, 'reviewers', - str(test_cl_number), 'none2@chromium.org' - ] - - self.assertEqual(mock_exec_cmd.call_count, 2) - self.assertEqual(mock_exec_cmd.call_args_list[0], - mock.call(expected_gerrit_cmd_1)) - self.assertEqual(mock_exec_cmd.call_args_list[1], - mock.call(expected_gerrit_cmd_2)) - - -if __name__ == '__main__': - unittest.main() -- cgit v1.2.3 From 9258b055847fcefb635c0aa74d5be08e699ab37c Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Wed, 15 Apr 2020 17:33:46 -0700 Subject: toolchain-utils: provide option to migrate nightly tests to recipe This patch provides two new options to buildbot_test_toolchain script, which launches nightly performance tests for toolchain. Option `--recipe` introduces new location and mechanism to find latest image from recipe bucket. The recipe builder for each board monitored by toolchain team builds an image every day and store results to certain gs locaton. When this option specified, the script no longer launches tryjob to get a new image but tries to access the lastest existing image in the last two days from the gs location. Option `--test` makes it easier to test locally, it blocks all locations in chrotomation machine and do not send or store unnecessary results after tests finish. A small change to lock_machine.py fixes an issue while related to swarming when testing this change. BUG=chromium:1071271 TEST=./buildbot_test_toolchains.py --board=lulu --remote=chromeos2-row9-rack8-host7.cros --chromeos_root=$chromiumos --test=True --recipe=True Change-Id: I724a31ce174955c1f002bb7e330919f23535e105 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2151717 Reviewed-by: Tiancong Wang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang Commit-Queue: Zhizhou Yang --- buildbot_test_toolchains.py | 140 ++++++++++++++++++---------------- cros_utils/buildbot_utils.py | 34 ++++++++- cros_utils/buildbot_utils_unittest.py | 47 +++++++++++- lock_machine.py | 5 +- 4 files changed, 156 insertions(+), 70 deletions(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 184a1ecc..1e8b33ac 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -22,6 +22,7 @@ import argparse import datetime import os import re +import shutil import sys import time @@ -37,6 +38,7 @@ CROSTC_ROOT = '/usr/local/google/crostc' NIGHTLY_TESTS_DIR = os.path.join(CROSTC_ROOT, 'nightly-tests') ROLE_ACCOUNT = 'mobiletc-prebuild' TOOLCHAIN_DIR = os.path.dirname(os.path.realpath(__file__)) +TMP_TOOLCHAIN_TEST = '/tmp/toolchain-tests' MAIL_PROGRAM = '~/var/bin/mail-sheriff' PENDING_ARCHIVES_DIR = os.path.join(CROSTC_ROOT, 'pending_archives') NIGHTLY_TESTS_RESULTS = os.path.join(CROSTC_ROOT, 'nightly_test_reports') @@ -45,7 +47,6 @@ IMAGE_DIR = '{board}-{image_type}' IMAGE_VERSION_STR = r'{chrome_version}-{tip}\.{branch}\.{branch_branch}' IMAGE_FS = IMAGE_DIR + '/' + IMAGE_VERSION_STR TRYBOT_IMAGE_FS = IMAGE_FS + '-{build_id}' -PFQ_IMAGE_FS = IMAGE_FS + '-rc1' IMAGE_RE_GROUPS = { 'board': r'(?P\S+)', 'image_type': r'(?P\S+)', @@ -57,6 +58,19 @@ IMAGE_RE_GROUPS = { } TRYBOT_IMAGE_RE = TRYBOT_IMAGE_FS.format(**IMAGE_RE_GROUPS) +RECIPE_IMAGE_FS = IMAGE_FS + '-{build_id}-{buildbucket_id}' +RECIPE_IMAGE_RE_GROUPS = { + 'board': r'(?P\S+)', + 'image_type': r'(?P\S+)', + 'chrome_version': r'(?PR\d+)', + 'tip': r'(?P\d+)', + 'branch': r'(?P\d+)', + 'branch_branch': r'(?P\d+)', + 'build_id': r'(?P\d+)', + 'buildbucket_id': r'(?P\d+)' +} +RECIPE_IMAGE_RE = RECIPE_IMAGE_FS.format(**RECIPE_IMAGE_RE_GROUPS) + TELEMETRY_AQUARIUM_UNSUPPORTED = ['bob', 'elm', 'veyron_minnie'] @@ -69,6 +83,8 @@ class ToolchainComparator(object): chromeos_root, weekday, patches, + recipe=False, + test=False, noschedv2=False): self._board = board self._remotes = remotes @@ -79,6 +95,8 @@ class ToolchainComparator(object): self._build = '%s-release-tryjob' % board self._patches = patches.split(',') if patches else [] self._patches_string = '_'.join(str(p) for p in self._patches) + self._recipe = recipe + self._test = test self._noschedv2 = noschedv2 if not weekday: @@ -88,7 +106,7 @@ class ToolchainComparator(object): self._date = datetime.date.today().strftime('%Y/%m/%d') timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S') self._reports_dir = os.path.join( - NIGHTLY_TESTS_RESULTS, + TMP_TOOLCHAIN_TEST if self._test else NIGHTLY_TESTS_RESULTS, '%s.%s' % (timestamp, board), ) @@ -98,55 +116,33 @@ class ToolchainComparator(object): Args: trybot_image: artifact name such as 'daisy-release-tryjob/R40-6394.0.0-b1389' + for recipe images, name is in this format: + 'lulu-llvm-next-nightly/R84-13037.0.0-31011-8883172717979984032/' Returns: Latest official image name, e.g. 'daisy-release/R57-9089.0.0'. """ # We need to filter out -tryjob in the trybot_image. - trybot = re.sub('-tryjob', '', trybot_image) - mo = re.search(TRYBOT_IMAGE_RE, trybot) + if self._recipe: + trybot = re.sub('-llvm-next-nightly', '-release', trybot_image) + mo = re.search(RECIPE_IMAGE_RE, trybot) + else: + trybot = re.sub('-tryjob', '', trybot_image) + mo = re.search(TRYBOT_IMAGE_RE, trybot) assert mo dirname = IMAGE_DIR.replace('\\', '').format(**mo.groupdict()) return buildbot_utils.GetLatestImage(self._chromeos_root, dirname) - def _GetNonAFDOImageName(self, trybot_image): - """Given a trybot artifact name, get corresponding non-AFDO image name. - - We get the non-AFDO image from the PFQ builders. This image - is not generated for all the boards and, the closest PFQ image - was the one build for the previous ChromeOS version (the chrome - used in the current version is the one validated in the previous - version). - The previous ChromeOS does not always exist either. So, we try - a couple of versions before. - - Args: - trybot_image: artifact name such as - 'daisy-release-tryjob/R40-6394.0.0-b1389' - - Returns: - Corresponding chrome PFQ image name, e.g. - 'daisy-chrome-pfq/R40-6393.0.0-rc1'. - """ - trybot = re.sub('-tryjob', '', trybot_image) - mo = re.search(TRYBOT_IMAGE_RE, trybot) - assert mo - image_dict = mo.groupdict() - image_dict['image_type'] = 'chrome-pfq' - for _ in range(2): - image_dict['tip'] = str(int(image_dict['tip']) - 1) - nonafdo_image = PFQ_IMAGE_FS.replace('\\', '').format(**image_dict) - if buildbot_utils.DoesImageExist(self._chromeos_root, nonafdo_image): - return nonafdo_image - return '' - - def _TestImages(self, trybot_image, vanilla_image, nonafdo_image): + def _TestImages(self, trybot_image, vanilla_image): """Create crosperf experiment file. Given the names of the trybot, vanilla and non-AFDO images, create the appropriate crosperf experiment file and launch crosperf on it. """ - experiment_file_dir = os.path.join(NIGHTLY_TESTS_DIR, self._weekday) + if self._test: + experiment_file_dir = TMP_TOOLCHAIN_TEST + else: + experiment_file_dir = os.path.join(NIGHTLY_TESTS_DIR, self._weekday) experiment_file_name = '%s_toolchain_experiment.txt' % self._board compiler_string = 'llvm' @@ -212,17 +208,6 @@ class ToolchainComparator(object): """ % (self._chromeos_root, vanilla_image) f.write(official_image) - # Now add non-AFDO image to test file. - if nonafdo_image: - official_nonafdo_image = """ - nonafdo_image { - chromeos_root: %s - build: %s - compiler: llvm - } - """ % (self._chromeos_root, nonafdo_image) - f.write(official_nonafdo_image) - label_string = '%s_trybot_image' % compiler_string # Reuse autotest files from vanilla image for trybot images @@ -240,10 +225,11 @@ class ToolchainComparator(object): crosperf = os.path.join(TOOLCHAIN_DIR, 'crosperf', 'crosperf') noschedv2_opts = '--noschedv2' if self._noschedv2 else '' - command = ('{crosperf} --no_email=True --results_dir={r_dir} ' + command = ('{crosperf} --no_email={no_email} --results_dir={r_dir} ' '--intel_pstate=no_hwp --logging_level=verbose ' '--json_report=True {noschedv2_opts} {exp_file}').format( crosperf=crosperf, + no_email=not self._test, r_dir=self._reports_dir, noschedv2_opts=noschedv2_opts, exp_file=experiment_file) @@ -278,32 +264,37 @@ class ToolchainComparator(object): Launch trybot, get image names, create crosperf experiment file, run crosperf, and copy images into seven-day report directories. """ - buildbucket_id, trybot_image = buildbot_utils.GetTrybotImage( - self._chromeos_root, - self._build, - self._patches, - tryjob_flags=['--notests'], - build_toolchain=True) - - print('trybot_url: \ - http://cros-goldeneye/chromeos/healthmonitoring/buildDetails?buildbucketId=%s' - % buildbucket_id) + if self._recipe: + print('Using recipe buckets to get latest image.') + trybot_image = buildbot_utils.GetLatestRecipeImage( + self._chromeos_root, '%s-llvm-next-nightly' % self._board) + else: + # Launch tryjob and wait to get image location. + buildbucket_id, trybot_image = buildbot_utils.GetTrybotImage( + self._chromeos_root, + self._build, + self._patches, + tryjob_flags=['--notests'], + build_toolchain=True) + print('trybot_url: \ + http://cros-goldeneye/chromeos/healthmonitoring/buildDetails?buildbucketId=%s' + % buildbucket_id) + if not trybot_image: self._l.LogError('Unable to find trybot_image!') return 2 vanilla_image = self._GetVanillaImageName(trybot_image) - nonafdo_image = self._GetNonAFDOImageName(trybot_image) print('trybot_image: %s' % trybot_image) print('vanilla_image: %s' % vanilla_image) - print('nonafdo_image: %s' % nonafdo_image) - ret = self._TestImages(trybot_image, vanilla_image, nonafdo_image) + ret = self._TestImages(trybot_image, vanilla_image) # Always try to send report email as crosperf will generate report when # tests partially succeeded. - self._SendEmail() - self._CopyJson() + if not self._test: + self._SendEmail() + self._CopyJson() # Non-zero ret here means crosperf tests partially failed, raise error here # so that toolchain summary report can catch it. if ret != 0: @@ -343,6 +334,19 @@ def Main(argv): action='store_true', default=False, help='Pass --noschedv2 to crosperf.') + parser.add_argument( + '--recipe', + dest='recipe', + default=True, + help='Use images generated from recipe rather than' + 'launching tryjob to get images.') + parser.add_argument( + '--test', + dest='test', + default=False, + help='Test this script on local desktop, ' + 'disabling mobiletc checking and email sending.' + 'Artifacts stored in /tmp/toolchain-tests') options = parser.parse_args(argv[1:]) if not options.board: @@ -354,9 +358,15 @@ def Main(argv): if not options.chromeos_root: print('Please specify the ChromeOS root directory.') return 1 + if options.test: + print('Cleaning local test directory for this script.') + if os.path.exists(TMP_TOOLCHAIN_TEST): + shutil.rmtree(TMP_TOOLCHAIN_TEST) + os.mkdir(TMP_TOOLCHAIN_TEST) fc = ToolchainComparator(options.board, options.remote, options.chromeos_root, - options.weekday, options.patches, options.noschedv2) + options.weekday, options.patches, options.recipe, + options.test, options.noschedv2) return fc.DoAll() diff --git a/cros_utils/buildbot_utils.py b/cros_utils/buildbot_utils.py index 859e0134..e0c54782 100644 --- a/cros_utils/buildbot_utils.py +++ b/cros_utils/buildbot_utils.py @@ -243,8 +243,10 @@ def GetLatestImage(chromeos_root, path): ce = command_executer.GetCommandExecuter() command = ('gsutil ls gs://chromeos-image-archive/%s' % path) - _, out, _ = ce.ChrootRunCommandWOutput( + ret, out, _ = ce.ChrootRunCommandWOutput( chromeos_root, command, print_to_console=False) + if ret != 0: + raise RuntimeError('Failed to list buckets with command: %s.' % command) candidates = [l.split('/')[-2] for l in out.split()] candidates = [fmt.match(c) for c in candidates] candidates = [[int(r) for r in m.group(1, 2, 3, 4)] for m in candidates if m] @@ -258,3 +260,33 @@ def GetLatestImage(chromeos_root, path): if DoesImageExist(chromeos_root, build): return build + + +def GetLatestRecipeImage(chromeos_root, path): + """Get latest nightly test image from recipe bucket. + + Image location example: + $ARCHIVE/lulu-llvm-next-nightly/R84-13037.0.0-31011-8883172717979984032 + """ + + fmt = re.compile(r'R([0-9]+)-([0-9]+).([0-9]+).([0-9]+)-([0-9]+)') + + ce = command_executer.GetCommandExecuter() + command = ('gsutil ls gs://chromeos-image-archive/%s' % path) + ret, out, _ = ce.ChrootRunCommandWOutput( + chromeos_root, command, print_to_console=False) + if ret != 0: + raise RuntimeError('Failed to list buckets with command: %s.' % command) + candidates = [l.split('/')[-2] for l in out.split()] + candidates = [(fmt.match(c), c) for c in candidates] + candidates = [([int(r) + for r in m[0].group(1, 2, 3, 4, 5)], m[1]) + for m in candidates + if m] + candidates.sort(key=lambda x: x[0], reverse=True) + # Try to get ony last two days of images since nightly tests are run once + # another day. + for c in candidates[:2]: + build = '%s/%s' % (path, c[1]) + if DoesImageExist(chromeos_root, build): + return build diff --git a/cros_utils/buildbot_utils_unittest.py b/cros_utils/buildbot_utils_unittest.py index 4fc3d170..afbdfaef 100755 --- a/cros_utils/buildbot_utils_unittest.py +++ b/cros_utils/buildbot_utils_unittest.py @@ -44,9 +44,12 @@ class TrybotTest(unittest.TestCase): 'gs://chromeos-image-archive/{0}/R78-12421.0.0/', 'gs://chromeos-image-archive/{0}/R78-12422.0.0/', 'gs://chromeos-image-archive/{0}/R78-12423.0.0/', - # "R79-12384.0.0" image should be blacklisted. - # TODO(crbug.com/992242): Remove the filter by 2019-09-05. - 'gs://chromeos-image-archive/{0}/R79-12384.0.0/', + ]) + + GSUTILS_LS_RECIPE = '\n'.join([ + 'gs://chromeos-image-archive/{0}/R83-12995.0.0-30031-8885075268947031/', + 'gs://chromeos-image-archive/{0}/R83-13003.0.0-30196-8884755532184725/', + 'gs://chromeos-image-archive/{0}/R83-13003.0.0-30218-8884712858556419/', ]) buildresult_out = ( @@ -144,6 +147,44 @@ class TrybotTest(unittest.TestCase): image = buildbot_utils.GetLatestImage('', IMAGE_DIR) self.assertIsNone(image) + def testGetLatestRecipeImageValid(self): + with patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') as mocked_run: + with patch.object(buildbot_utils, 'DoesImageExist') as mocked_imageexist: + IMAGE_DIR = 'lulu-llvm-next-nightly' + mocked_run.return_value = (0, self.GSUTILS_LS_RECIPE.format(IMAGE_DIR), + '') + mocked_imageexist.return_value = True + image = buildbot_utils.GetLatestRecipeImage('', IMAGE_DIR) + self.assertEqual( + image, '{0}/R83-13003.0.0-30218-8884712858556419'.format(IMAGE_DIR)) + + def testGetLatestRecipeImageInvalid(self): + with patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') as mocked_run: + with patch.object(buildbot_utils, 'DoesImageExist') as mocked_imageexist: + IMAGE_DIR = 'kefka-llvm-next-nightly' + mocked_run.return_value = (0, self.GSUTILS_LS_RECIPE.format(IMAGE_DIR), + '') + mocked_imageexist.return_value = False + image = buildbot_utils.GetLatestRecipeImage('', IMAGE_DIR) + self.assertIsNone(image) + + def testGetLatestRecipeImageTwodays(self): + with patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') as mocked_run: + with patch.object(buildbot_utils, 'DoesImageExist') as mocked_imageexist: + IMAGE_DIR = 'lulu-llvm-next-nightly' + mocked_run.return_value = (0, self.GSUTILS_LS_RECIPE.format(IMAGE_DIR), + '') + mocked_imageexist.side_effect = [False, False, True] + image = buildbot_utils.GetLatestRecipeImage('', IMAGE_DIR) + self.assertIsNone(image) + mocked_imageexist.side_effect = [False, True, True] + image = buildbot_utils.GetLatestRecipeImage('', IMAGE_DIR) + self.assertEqual( + image, '{0}/R83-13003.0.0-30196-8884755532184725'.format(IMAGE_DIR)) + if __name__ == '__main__': unittest.main() diff --git a/lock_machine.py b/lock_machine.py index 2948381d..8588ebfd 100755 --- a/lock_machine.py +++ b/lock_machine.py @@ -378,7 +378,10 @@ class LockManager(object): if os.path.exists(self.SKYLAB_CREDENTIAL): credential = '--auth-service-account-json %s' % self.SKYLAB_CREDENTIAL swarming = os.path.join(self.chromeos_root, self.SWARMING) - cmd = (('%s query --swarming https://chromeos-swarming.appspot.com ' \ + # TODO(zhizhouy): Swarming script doesn't support python3 so explicitly + # launch it with python2 until migrated. + cmd = (('python2 %s ' \ + 'query --swarming https://chromeos-swarming.appspot.com ' \ "%s 'bots/list?is_dead=FALSE&dimensions=dut_name:%s'") % \ (swarming, credential, -- cgit v1.2.3 From c16daa1eb92cba9781a557798b065747128acfb1 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 15 Apr 2020 17:53:41 -0700 Subject: llvm_tools: move common functions into standalone modules Move common functions into separate modules and update dependencies accordingly. BUG=chromium:1057428 TEST=local tests. Change-Id: I40f1b613f0a41f1fc478c811379c851479aff7c3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2151708 Reviewed-by: Manoj Gupta Reviewed-by: George Burgess Tested-by: Jian Cai --- llvm_tools/assert_not_in_chroot.py | 24 -- llvm_tools/auto_llvm_bisection.py | 6 +- llvm_tools/auto_llvm_bisection_unittest.py | 37 ++- llvm_tools/chroot.py | 96 ++++++ llvm_tools/chroot_unittest.py | 66 ++++ llvm_tools/git.py | 136 ++++++++ llvm_tools/git_unittest.py | 173 ++++++++++ llvm_tools/llvm_bisection.py | 56 ++-- llvm_tools/llvm_bisection_unittest.py | 58 ++-- llvm_tools/llvm_patch_management.py | 26 +- llvm_tools/llvm_patch_management_unittest.py | 19 +- llvm_tools/modify_a_tryjob.py | 32 +- llvm_tools/modify_a_tryjob_unittest.py | 73 ++--- llvm_tools/update_all_tryjobs_with_auto.py | 13 +- llvm_tools/update_chromeos_llvm_hash.py | 246 +------------- llvm_tools/update_chromeos_llvm_hash_unittest.py | 353 +++------------------ llvm_tools/update_packages_and_run_tests.py | 32 +- .../update_packages_and_run_tests_unittest.py | 52 ++- llvm_tools/update_tryjob_status.py | 4 +- 19 files changed, 719 insertions(+), 783 deletions(-) delete mode 100644 llvm_tools/assert_not_in_chroot.py create mode 100755 llvm_tools/chroot.py create mode 100755 llvm_tools/chroot_unittest.py create mode 100755 llvm_tools/git.py create mode 100755 llvm_tools/git_unittest.py diff --git a/llvm_tools/assert_not_in_chroot.py b/llvm_tools/assert_not_in_chroot.py deleted file mode 100644 index 6b78d95c..00000000 --- a/llvm_tools/assert_not_in_chroot.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2019 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. - -"""Helper module to determine whether a script is executed inside the chroot.""" - -from __future__ import print_function - -import os - - -def VerifyOutsideChroot(): - """Checks whether the script invoked was executed in the chroot. - - Raises: - AssertionError: The script was run inside the chroot. - """ - - chroot_only_path = '/mnt/host/depot_tools' - - in_chroot_err_message = 'Script should be run outside the chroot.' - - assert not os.path.isdir(chroot_only_path), in_chroot_err_message diff --git a/llvm_tools/auto_llvm_bisection.py b/llvm_tools/auto_llvm_bisection.py index cd3d70b6..dd29cf4f 100755 --- a/llvm_tools/auto_llvm_bisection.py +++ b/llvm_tools/auto_llvm_bisection.py @@ -14,10 +14,10 @@ import sys import time import traceback -from assert_not_in_chroot import VerifyOutsideChroot -from update_all_tryjobs_with_auto import GetPathToUpdateAllTryjobsWithAutoScript +import chroot from llvm_bisection import BisectionExitStatus import llvm_bisection +from update_all_tryjobs_with_auto import GetPathToUpdateAllTryjobsWithAutoScript # Used to re-try for 'llvm_bisection.py' to attempt to launch more tryjobs. BISECTION_RETRY_TIME_SECS = 10 * 60 @@ -46,7 +46,7 @@ def main(): AssertionError: The script was run inside the chroot. """ - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = llvm_bisection.GetCommandLineArgs() diff --git a/llvm_tools/auto_llvm_bisection_unittest.py b/llvm_tools/auto_llvm_bisection_unittest.py index 3e6e3a3e..56b556e6 100755 --- a/llvm_tools/auto_llvm_bisection_unittest.py +++ b/llvm_tools/auto_llvm_bisection_unittest.py @@ -15,10 +15,10 @@ import traceback import unittest import unittest.mock as mock -from test_helpers import ArgsOutputTest -from test_helpers import CallCountsToMockFunctions import auto_llvm_bisection +import chroot import llvm_bisection +import test_helpers class AutoLLVMBisectionTest(unittest.TestCase): @@ -26,8 +26,7 @@ class AutoLLVMBisectionTest(unittest.TestCase): # Simulate the behavior of `VerifyOutsideChroot()` when successfully invoking # the script outside of the chroot. - @mock.patch.object( - auto_llvm_bisection, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) # Simulate behavior of `time.sleep()` when waiting for errors to settle caused # by `llvm_bisection.main()` (e.g. network issue, etc.). @mock.patch.object(time, 'sleep') @@ -49,12 +48,14 @@ class AutoLLVMBisectionTest(unittest.TestCase): # Simulate `llvm_bisection.GetCommandLineArgs()` when parsing the command line # arguments required by the bisection script. @mock.patch.object( - llvm_bisection, 'GetCommandLineArgs', return_value=ArgsOutputTest()) + llvm_bisection, + 'GetCommandLineArgs', + return_value=test_helpers.ArgsOutputTest()) def testFailedToStartBisection( self, mock_get_args, mock_get_auto_script, mock_is_file, mock_llvm_bisection, mock_traceback, mock_sleep, mock_outside_chroot): - def MockLLVMBisectionRaisesException(args_output): + def MockLLVMBisectionRaisesException(_args_output): raise ValueError('Failed to launch more tryjobs.') # Use the test function to simulate the behavior of an exception happening @@ -82,8 +83,7 @@ class AutoLLVMBisectionTest(unittest.TestCase): @mock.patch.object(subprocess, 'call', return_value=0) # Simulate the behavior of `VerifyOutsideChroot()` when successfully invoking # the script outside of the chroot. - @mock.patch.object( - auto_llvm_bisection, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) # Simulate behavior of `time.sleep()` when waiting for errors to settle caused # by `llvm_bisection.main()` (e.g. network issue, etc.). @mock.patch.object(time, 'sleep') @@ -105,7 +105,9 @@ class AutoLLVMBisectionTest(unittest.TestCase): # Simulate `llvm_bisection.GetCommandLineArgs()` when parsing the command line # arguments required by the bisection script. @mock.patch.object( - llvm_bisection, 'GetCommandLineArgs', return_value=ArgsOutputTest()) + llvm_bisection, + 'GetCommandLineArgs', + return_value=test_helpers.ArgsOutputTest()) def testSuccessfullyBisectedLLVMRevision( self, mock_get_args, mock_get_auto_script, mock_is_file, mock_llvm_bisection, mock_traceback, mock_sleep, mock_outside_chroot, @@ -113,8 +115,8 @@ class AutoLLVMBisectionTest(unittest.TestCase): # Simulate the behavior of `os.path.isfile()` when checking whether the # status file provided exists. - @CallCountsToMockFunctions - def MockStatusFileCheck(call_count, last_tested): + @test_helpers.CallCountsToMockFunctions + def MockStatusFileCheck(call_count, _last_tested): # Simulate that the status file does not exist, so the LLVM bisection # script would create the status file and launch tryjobs. if call_count < 2: @@ -130,8 +132,8 @@ class AutoLLVMBisectionTest(unittest.TestCase): # Simulate behavior of `llvm_bisection.main()` when successfully bisected # between the good and bad LLVM revision. - @CallCountsToMockFunctions - def MockLLVMBisectionReturnValue(call_count, args_output): + @test_helpers.CallCountsToMockFunctions + def MockLLVMBisectionReturnValue(call_count, _args_output): # Simulate that successfully launched more tryjobs. if call_count == 0: return 0 @@ -176,8 +178,7 @@ class AutoLLVMBisectionTest(unittest.TestCase): @mock.patch.object(time, 'time') # Simulate the behavior of `VerifyOutsideChroot()` when successfully invoking # the script outside of the chroot. - @mock.patch.object( - auto_llvm_bisection, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) # Simulate behavior of `time.sleep()` when waiting for errors to settle caused # by `llvm_bisection.main()` (e.g. network issue, etc.). @mock.patch.object(time, 'sleep') @@ -193,13 +194,15 @@ class AutoLLVMBisectionTest(unittest.TestCase): # Simulate `llvm_bisection.GetCommandLineArgs()` when parsing the command line # arguments required by the bisection script. @mock.patch.object( - llvm_bisection, 'GetCommandLineArgs', return_value=ArgsOutputTest()) + llvm_bisection, + 'GetCommandLineArgs', + return_value=test_helpers.ArgsOutputTest()) def testFailedToUpdatePendingTryJobs( self, mock_get_args, mock_get_auto_script, mock_is_file, mock_sleep, mock_outside_chroot, mock_time, mock_update_tryjobs): # Simulate behavior of `time.time()` for time passed. - @CallCountsToMockFunctions + @test_helpers.CallCountsToMockFunctions def MockTimePassed(call_count): if call_count < 3: return call_count diff --git a/llvm_tools/chroot.py b/llvm_tools/chroot.py new file mode 100755 index 00000000..1c3eb025 --- /dev/null +++ b/llvm_tools/chroot.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Chroot helper functions.""" + +from __future__ import print_function + +import os +import subprocess +import collections + +CommitContents = collections.namedtuple('CommitContents', ['url', 'cl_number']) + + +def InChroot(): + """Returns True if currently in the chroot.""" + return 'CROS_WORKON_SRCROOT' in os.environ + + +def VerifyOutsideChroot(): + """Checks whether the script invoked was executed in the chroot. + + Raises: + AssertionError: The script was run inside the chroot. + """ + + assert not InChroot(), 'Script should be run outside the chroot.' + + +def GetChrootEbuildPaths(chromeos_root, packages): + """Gets the chroot path(s) of the package(s). + + Args: + chromeos_root: The absolute path to the chroot to + use for executing chroot commands. + packages: A list of a package/packages to + be used to find their chroot path. + + Returns: + A list of chroot paths of the packages' ebuild files. + + Raises: + ValueError: Failed to get the chroot path of a package. + """ + + chroot_paths = [] + + # Find the chroot path for each package's ebuild. + for package in sorted(set(packages)): + chroot_path = subprocess.check_output( + ['cros_sdk', '--', 'equery', 'w', package], + cwd=chromeos_root, + encoding='utf-8') + chroot_paths.append(chroot_path.strip()) + + return chroot_paths + + +def ConvertChrootPathsToAbsolutePaths(chromeos_root, chroot_paths): + """Converts the chroot path(s) to absolute symlink path(s). + + Args: + chromeos_root: The absolute path to the chroot. + chroot_paths: A list of chroot paths to convert to absolute paths. + + Returns: + A list of absolute path(s). + + Raises: + ValueError: Invalid prefix for the chroot path or + invalid chroot paths were provided. + """ + + abs_paths = [] + + chroot_prefix = '/mnt/host/source/' + + # Iterate through the chroot paths. + # + # For each chroot file path, remove '/mnt/host/source/' prefix + # and combine the chroot path with the result and add it to the list. + for chroot_path in chroot_paths: + if not chroot_path.startswith(chroot_prefix): + raise ValueError('Invalid prefix for the chroot path: %s' % chroot_path) + + rel_path = chroot_path[len(chroot_prefix):] + + # combine the chromeos root path + '/src/...' + abs_path = os.path.join(chromeos_root, rel_path) + + abs_paths.append(abs_path) + + return abs_paths diff --git a/llvm_tools/chroot_unittest.py b/llvm_tools/chroot_unittest.py new file mode 100755 index 00000000..5eec5675 --- /dev/null +++ b/llvm_tools/chroot_unittest.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Unit tests for chroot helper functions.""" + +from __future__ import print_function + +import subprocess +import unittest +import unittest.mock as mock + +import chroot + +# These are unittests; protected access is OK to a point. +# pylint: disable=protected-access + + +class HelperFunctionsTest(unittest.TestCase): + """Test class for updating LLVM hashes of packages.""" + + @mock.patch.object(subprocess, 'check_output') + def testSucceedsToGetChrootEbuildPathForPackage(self, mock_chroot_command): + package_chroot_path = '/chroot/path/to/package.ebuild' + + # Emulate ChrootRunCommandWOutput behavior when a chroot path is found for + # a valid package. + mock_chroot_command.return_value = package_chroot_path + + chroot_path = '/test/chroot/path' + package_list = ['new-test/package'] + + self.assertEqual( + chroot.GetChrootEbuildPaths(chroot_path, package_list), + [package_chroot_path]) + + mock_chroot_command.assert_called_once() + + def testFailedToConvertChrootPathWithInvalidPrefix(self): + chroot_path = '/path/to/chroot' + chroot_file_path = '/src/package.ebuild' + + # Verify the exception is raised when a chroot path does not have the prefix + # '/mnt/host/source/'. + with self.assertRaises(ValueError) as err: + chroot.ConvertChrootPathsToAbsolutePaths(chroot_path, [chroot_file_path]) + + self.assertEqual( + str(err.exception), 'Invalid prefix for the chroot path: ' + '%s' % chroot_file_path) + + def testSucceedsToConvertChrootPathToAbsolutePath(self): + chroot_path = '/path/to/chroot' + chroot_file_paths = ['/mnt/host/source/src/package.ebuild'] + + expected_abs_path = '/path/to/chroot/src/package.ebuild' + + self.assertEqual( + chroot.ConvertChrootPathsToAbsolutePaths( + chroot_path, chroot_file_paths), [expected_abs_path]) + + +if __name__ == '__main__': + unittest.main() diff --git a/llvm_tools/git.py b/llvm_tools/git.py new file mode 100755 index 00000000..778d9695 --- /dev/null +++ b/llvm_tools/git.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Git helper functions.""" + +from __future__ import print_function + +import collections +import os +import re +import subprocess +import tempfile + +CommitContents = collections.namedtuple('CommitContents', ['url', 'cl_number']) + + +def InChroot(): + """Returns True if currently in the chroot.""" + return 'CROS_WORKON_SRCROOT' in os.environ + + +def VerifyOutsideChroot(): + """Checks whether the script invoked was executed in the chroot. + + Raises: + AssertionError: The script was run inside the chroot. + """ + + assert not InChroot(), 'Script should be run outside the chroot.' + + +def CreateBranch(repo, branch): + """Creates a branch in the given repo. + + Args: + repo: The absolute path to the repo. + branch: The name of the branch to create. + + Raises: + ValueError: Failed to create a repo in that directory. + """ + + if not os.path.isdir(repo): + raise ValueError('Invalid directory path provided: %s' % repo) + + subprocess.check_output(['git', '-C', repo, 'reset', 'HEAD', '--hard'], + encoding='utf-8') + + subprocess.check_output(['repo', 'start', branch], cwd=repo, encoding='utf-8') + + +def DeleteBranch(repo, branch): + """Deletes a branch in the given repo. + + Args: + repo: The absolute path of the repo. + branch: The name of the branch to delete. + + Raises: + ValueError: Failed to delete the repo in that directory. + """ + + if not os.path.isdir(repo): + raise ValueError('Invalid directory path provided: %s' % repo) + + subprocess.check_output(['git', '-C', repo, 'checkout', 'cros/master'], + encoding='utf-8') + + subprocess.check_output(['git', '-C', repo, 'reset', 'HEAD', '--hard'], + encoding='utf-8') + + subprocess.check_output(['git', '-C', repo, 'branch', '-D', branch], + encoding='utf-8') + + +def UploadChanges(repo, branch, commit_messages): + """Uploads the changes in the specifed branch of the given repo for review. + + Args: + repo: The absolute path to the repo where changes were made. + branch: The name of the branch to upload. + commit_messages: A string of commit message(s) (i.e. '[message]' + of the changes made. + + Returns: + A nametuple that has two (key, value) pairs, where the first pair is the + Gerrit commit URL and the second pair is the change list number. + + Raises: + ValueError: Failed to create a commit or failed to upload the + changes for review. + """ + + if not os.path.isdir(repo): + raise ValueError('Invalid path provided: %s' % repo) + + # Create a git commit. + with tempfile.NamedTemporaryFile(mode='w+t') as f: + f.write('\n'.join(commit_messages)) + f.flush() + + subprocess.check_output(['git', 'commit', '-F', f.name], + cwd=repo, + encoding='utf-8') + + # Upload the changes for review. + # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow + # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. + # pylint: disable=unexpected-keyword-arg + # The CL URL is sent to 'stderr', so need to redirect 'stderr' to 'stdout'. + upload_changes_obj = subprocess.Popen( + ['repo', 'upload', '--yes', '--ne', '--no-verify', + '--br=%s' % branch], + cwd=repo, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + encoding='utf-8') + + out, _ = upload_changes_obj.communicate() + + if upload_changes_obj.returncode: # Failed to upload changes. + print(out) + raise ValueError('Failed to upload changes for review') + + found_url = re.search( + r'https://chromium-review.googlesource.com/c/' + r'chromiumos/overlays/chromiumos-overlay/\+/([0-9]+)', out.rstrip()) + + if not found_url: + raise ValueError('Failed to find change list URL.') + + return CommitContents( + url=found_url.group(0), cl_number=int(found_url.group(1))) diff --git a/llvm_tools/git_unittest.py b/llvm_tools/git_unittest.py new file mode 100755 index 00000000..39316276 --- /dev/null +++ b/llvm_tools/git_unittest.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Unit tests for git helper functions.""" + +from __future__ import print_function + +import os +import subprocess +import unittest +import unittest.mock as mock + +import git + +# These are unittests; protected access is OK to a point. +# pylint: disable=protected-access + + +class HelperFunctionsTest(unittest.TestCase): + """Test class for updating LLVM hashes of packages.""" + + @mock.patch.object(os.path, 'isdir', return_value=False) + def testFailedToCreateBranchForInvalidDirectoryPath(self, mock_isdir): + path_to_repo = '/invalid/path/to/repo' + branch = 'branch-name' + + # Verify the exception is raised when provided an invalid directory path. + with self.assertRaises(ValueError) as err: + git.CreateBranch(path_to_repo, branch) + + self.assertEqual( + str(err.exception), + 'Invalid directory path provided: %s' % path_to_repo) + + mock_isdir.assert_called_once() + + @mock.patch.object(os.path, 'isdir', return_value=True) + @mock.patch.object(subprocess, 'check_output', return_value=None) + def testSuccessfullyCreatedBranch(self, mock_command_output, mock_isdir): + path_to_repo = '/path/to/repo' + branch = 'branch-name' + + git.CreateBranch(path_to_repo, branch) + + mock_isdir.assert_called_once_with(path_to_repo) + + self.assertEqual(mock_command_output.call_count, 2) + + @mock.patch.object(os.path, 'isdir', return_value=False) + def testFailedToDeleteBranchForInvalidDirectoryPath(self, mock_isdir): + path_to_repo = '/invalid/path/to/repo' + branch = 'branch-name' + + # Verify the exception is raised on an invalid repo path. + with self.assertRaises(ValueError) as err: + git.DeleteBranch(path_to_repo, branch) + + self.assertEqual( + str(err.exception), + 'Invalid directory path provided: %s' % path_to_repo) + + mock_isdir.assert_called_once() + + @mock.patch.object(os.path, 'isdir', return_value=True) + @mock.patch.object(subprocess, 'check_output', return_value=None) + def testSuccessfullyDeletedBranch(self, mock_command_output, mock_isdir): + path_to_repo = '/valid/path/to/repo' + branch = 'branch-name' + + git.DeleteBranch(path_to_repo, branch) + + mock_isdir.assert_called_once_with(path_to_repo) + + self.assertEqual(mock_command_output.call_count, 3) + + @mock.patch.object(os.path, 'isdir', return_value=False) + def testFailedToUploadChangesForInvalidDirectoryPath(self, mock_isdir): + path_to_repo = '/some/path/to/repo' + branch = 'update-LLVM_NEXT_HASH-a123testhash3' + commit_messages = ['Test message'] + + # Verify exception is raised when on an invalid repo path. + with self.assertRaises(ValueError) as err: + git.UploadChanges(path_to_repo, branch, commit_messages) + + self.assertEqual( + str(err.exception), 'Invalid path provided: %s' % path_to_repo) + + mock_isdir.assert_called_once() + + @mock.patch.object(os.path, 'isdir', return_value=True) + @mock.patch.object(subprocess, 'check_output', return_value=None) + @mock.patch.object(subprocess, 'Popen') + def testFailedToUploadChangesForReview(self, mock_repo_upload, + mock_command_output, mock_isdir): + + # Simulate the behavior of 'subprocess.Popen()' when uploading the changes + # for review + # + # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. + mock_repo_upload.return_value.communicate.return_value = ( + None, 'Branch does not exist.') + + # Exit code of 1 means failed to upload changes for review. + mock_repo_upload.return_value.returncode = 1 + + path_to_repo = '/some/path/to/repo' + branch = 'invalid-branch-name' + commit_messages = ['Test message'] + + # Verify exception is raised when failed to upload the changes for review. + with self.assertRaises(ValueError) as err: + git.UploadChanges(path_to_repo, branch, commit_messages) + + self.assertEqual(str(err.exception), 'Failed to upload changes for review') + + mock_isdir.assert_called_once_with(path_to_repo) + + mock_command_output.assert_called_once() + mock_command_output_args = mock_command_output.call_args_list[0][0][0] + expected_mock_command_output_prefix = ['git', 'commit', '-F'] + self.assertEqual( + mock_command_output_args[:len(expected_mock_command_output_prefix)], + expected_mock_command_output_prefix) + + mock_repo_upload.assert_called_once() + + @mock.patch.object(os.path, 'isdir', return_value=True) + @mock.patch.object(subprocess, 'check_output', return_value=None) + @mock.patch.object(subprocess, 'Popen') + def testSuccessfullyUploadedChangesForReview(self, mock_repo_upload, + mock_command_output, mock_isdir): + + # A test CL generated by `repo upload`. + repo_upload_contents = ('remote: https://chromium-review.googlesource.' + 'com/c/chromiumos/overlays/chromiumos-overlay/' + '+/193147 Fix stdout') + + # Simulate the behavior of 'subprocess.Popen()' when uploading the changes + # for review + # + # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. + mock_repo_upload.return_value.communicate.return_value = ( + repo_upload_contents, None) + + # Exit code of 0 means successfully uploaded changes for review. + mock_repo_upload.return_value.returncode = 0 + + path_to_repo = '/some/path/to/repo' + branch = 'branch-name' + commit_messages = ['Test message'] + + change_list = git.UploadChanges(path_to_repo, branch, commit_messages) + + self.assertEqual( + change_list.url, + 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' + 'chromiumos-overlay/+/193147') + + self.assertEqual(change_list.cl_number, 193147) + + mock_isdir.assert_called_once_with(path_to_repo) + + mock_command_output.assert_called_once() + + mock_repo_upload.assert_called_once() + + +if __name__ == '__main__': + unittest.main() diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py index 4ff921d2..2772ca48 100755 --- a/llvm_tools/llvm_bisection.py +++ b/llvm_tools/llvm_bisection.py @@ -11,17 +11,14 @@ from __future__ import print_function import argparse import enum import errno -import get_llvm_hash import json import os import sys -from assert_not_in_chroot import VerifyOutsideChroot -from get_llvm_hash import CreateTempLLVMRepo -from get_llvm_hash import LLVMHash -from modify_a_tryjob import AddTryjob -from update_tryjob_status import FindTryjobIndex -from update_tryjob_status import TryjobStatus +import chroot +import get_llvm_hash +import modify_a_tryjob +import update_tryjob_status class BisectionExitStatus(enum.Enum): @@ -182,18 +179,20 @@ def GetStartAndEndRevision(start, end, tryjobs): 'go to %s and update it' % cur_tryjob_dict['link']) all_bad_revisions = [end] - all_bad_revisions.extend(cur_tryjob['rev'] - for cur_tryjob in tryjobs - if cur_tryjob['status'] == TryjobStatus.BAD.value) + all_bad_revisions.extend( + cur_tryjob['rev'] + for cur_tryjob in tryjobs + if cur_tryjob['status'] == update_tryjob_status.TryjobStatus.BAD.value) # The minimum value for the 'bad' field in the tryjobs is the new end # version. bad_rev = min(all_bad_revisions) all_good_revisions = [start] - all_good_revisions.extend(cur_tryjob['rev'] - for cur_tryjob in tryjobs - if cur_tryjob['status'] == TryjobStatus.GOOD.value) + all_good_revisions.extend( + cur_tryjob['rev'] + for cur_tryjob in tryjobs + if cur_tryjob['status'] == update_tryjob_status.TryjobStatus.GOOD.value) # The maximum value for the 'good' field in the tryjobs is the new start # version. @@ -212,7 +211,7 @@ def GetStartAndEndRevision(start, end, tryjobs): pending_revisions = { tryjob['rev'] for tryjob in tryjobs - if tryjob['status'] == TryjobStatus.PENDING.value and + if tryjob['status'] == update_tryjob_status.TryjobStatus.PENDING.value and good_rev < tryjob['rev'] < bad_rev } @@ -224,7 +223,7 @@ def GetStartAndEndRevision(start, end, tryjobs): skip_revisions = { tryjob['rev'] for tryjob in tryjobs - if tryjob['status'] == TryjobStatus.SKIP.value and + if tryjob['status'] == update_tryjob_status.TryjobStatus.SKIP.value and good_rev < tryjob['rev'] < bad_rev } @@ -254,8 +253,6 @@ def GetRevisionsBetweenBisection(start, end, parallel, src_path, A list of revisions between 'start' and 'end'. """ - new_llvm = LLVMHash() - valid_revisions = [] # Start at ('start' + 1) because 'start' is the good revision. @@ -292,10 +289,10 @@ def GetRevisionsListAndHashList(start, end, parallel, src_path, pending_revisions, skip_revisions): """Determines the revisions between start and end.""" - new_llvm = LLVMHash() + new_llvm = get_llvm_hash.LLVMHash() with new_llvm.CreateTempDirectory() as temp_dir: - with CreateTempLLVMRepo(temp_dir) as new_repo: + with get_llvm_hash.CreateTempLLVMRepo(temp_dir) as new_repo: if not src_path: src_path = new_repo @@ -303,7 +300,9 @@ def GetRevisionsListAndHashList(start, end, parallel, src_path, revisions = GetRevisionsBetweenBisection( start, end, parallel, src_path, pending_revisions, skip_revisions) - git_hashes = [get_llvm_hash.GetGitHashFrom(src_path, rev) for rev in revisions] + git_hashes = [ + get_llvm_hash.GetGitHashFrom(src_path, rev) for rev in revisions + ] return revisions, git_hashes @@ -329,7 +328,7 @@ def CheckForExistingTryjobsInRevisionsToLaunch(revisions, jobs): """Checks if a revision in 'revisions' exists in 'jobs' list.""" for rev in revisions: - if FindTryjobIndex(rev, jobs) is not None: + if update_tryjob_status.FindTryjobIndex(rev, jobs) is not None: raise ValueError('Revision %d exists already in "jobs"' % rev) @@ -340,10 +339,10 @@ def UpdateBisection(revisions, git_hashes, bisect_contents, last_tested, try: for svn_revision, git_hash in zip(revisions, git_hashes): - tryjob_dict = AddTryjob(update_packages, git_hash, svn_revision, - chroot_path, patch_metadata_file, - extra_change_lists, options, builder, verbose, - svn_revision) + tryjob_dict = modify_a_tryjob.AddTryjob( + update_packages, git_hash, svn_revision, chroot_path, + patch_metadata_file, extra_change_lists, options, builder, verbose, + svn_revision) bisect_contents['jobs'].append(tryjob_dict) finally: @@ -364,7 +363,7 @@ def _NoteCompletedBisection(last_tested, src_path, end): if src_path: bad_llvm_hash = get_llvm_hash.GetGitHashFrom(src_path, end) else: - bad_llvm_hash = LLVMHash().GetLLVMHash(end) + bad_llvm_hash = get_llvm_hash.LLVMHash().GetLLVMHash(end) print( 'The bad revision is %d and its commit hash is %s' % (end, bad_llvm_hash)) @@ -390,7 +389,7 @@ def main(args_output): AssertionError: The script was run inside the chroot. """ - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() update_packages = [ 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', @@ -458,5 +457,4 @@ def main(args_output): if __name__ == '__main__': - args_output = GetCommandLineArgs() - sys.exit(main(args_output)) + sys.exit(main(GetCommandLineArgs())) diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py index ccef649c..e730293b 100755 --- a/llvm_tools/llvm_bisection_unittest.py +++ b/llvm_tools/llvm_bisection_unittest.py @@ -4,21 +4,22 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# pylint: disable=protected-access + """Tests for LLVM bisection.""" from __future__ import print_function -import get_llvm_hash import json -import llvm_bisection import unittest import unittest.mock as mock -from get_llvm_hash import LLVMHash -from test_helpers import ArgsOutputTest -from test_helpers import CallCountsToMockFunctions -from test_helpers import CreateTemporaryJsonFile -from test_helpers import WritePrettyJsonFile +import chroot +import get_llvm_hash +import llvm_bisection +import modify_a_tryjob +import test_helpers +import update_tryjob_status class LLVMBisectionTest(unittest.TestCase): @@ -155,7 +156,7 @@ class LLVMBisectionTest(unittest.TestCase): # Simulate behavior of `GetGitHashFrom()` when the revision does not # exist in the LLVM source tree. - def MockGetGitHashForRevisionRaiseException(src_path, revision): + def MockGetGitHashForRevisionRaiseException(_src_path, _revision): raise ValueError('Revision does not exist') mock_get_git_hash.side_effect = MockGetGitHashForRevisionRaiseException @@ -204,7 +205,7 @@ class LLVMBisectionTest(unittest.TestCase): @mock.patch.object(llvm_bisection, 'GetRevisionsBetweenBisection') # Simulate behavior of `CreatTempLLVMRepo()` when successfully created a # worktree when a source path was not provided. - @mock.patch.object(llvm_bisection, 'CreateTempLLVMRepo') + @mock.patch.object(get_llvm_hash, 'CreateTempLLVMRepo') def testSuccessfullyGetRevisionsListAndHashList( self, mock_create_temp_llvm_repo, mock_get_revisions_between_bisection, mock_get_git_hash): @@ -213,8 +214,8 @@ class LLVMBisectionTest(unittest.TestCase): 'a123testhash1', 'a123testhash2', 'a123testhash3' ]) - @CallCountsToMockFunctions - def MockGetGitHashForRevision(call_count, src_path, rev): + @test_helpers.CallCountsToMockFunctions + def MockGetGitHashForRevision(call_count, _src_path, _rev): # Simulate retrieving the git hash for the revision. if call_count < 3: return expected_revisions_and_hash_tuple[1][call_count] @@ -276,7 +277,7 @@ class LLVMBisectionTest(unittest.TestCase): # Simulate behavior of `FindTryjobIndex()` when the index of the tryjob was # found. - @mock.patch.object(llvm_bisection, 'FindTryjobIndex', return_value=0) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) def testTryjobExistsInRevisionsToLaunch(self, mock_find_tryjob_index): test_existing_jobs = [{'rev': 102, 'status': 'good'}] @@ -297,7 +298,7 @@ class LLVMBisectionTest(unittest.TestCase): mock_find_tryjob_index.assert_called_once() - @mock.patch.object(llvm_bisection, 'AddTryjob') + @mock.patch.object(modify_a_tryjob, 'AddTryjob') def testSuccessfullyUpdatedStatusFileWhenExceptionIsRaised( self, mock_add_tryjob): @@ -306,10 +307,10 @@ class LLVMBisectionTest(unittest.TestCase): # Simulate behavior of `AddTryjob()` when successfully launched a tryjob for # the updated packages. - @CallCountsToMockFunctions - def MockAddTryjob(call_count, packages, git_hash, revision, chroot_path, - patch_file, extra_cls, options, builder, verbose, - svn_revision): + @test_helpers.CallCountsToMockFunctions + def MockAddTryjob(call_count, _packages, _git_hash, _revision, _chroot_path, + _patch_file, _extra_cls, _options, _builder, _verbose, + _svn_revision): if call_count < 2: return {'rev': revisions_list[call_count], 'status': 'pending'} @@ -329,15 +330,15 @@ class LLVMBisectionTest(unittest.TestCase): bisection_contents = {'start': start, 'end': end, 'jobs': []} - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() packages = ['sys-devel/llvm'] patch_file = '/abs/path/to/PATCHES.json' # Create a temporary .JSON file to simulate a status file for bisection. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisection_contents, f) + test_helpers.WritePrettyJsonFile(bisection_contents, f) # Verify that the status file is updated when an exception happened when # attempting to launch a revision (i.e. progress is not lost). @@ -392,7 +393,8 @@ class LLVMBisectionTest(unittest.TestCase): # Simulate behavior of `GetLLVMHash()` when successfully retrieved # the git hash of the bad revision. - @mock.patch.object(LLVMHash, 'GetLLVMHash', return_value='a123testhash5') + @mock.patch.object( + get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash5') def testCompletedBisectionWhenNotProvidedSrcPath(self, mock_get_git_hash): last_tested = '/some/last/tested_file.json' @@ -412,9 +414,9 @@ class LLVMBisectionTest(unittest.TestCase): test_bisect_contents = {'start': start, 'end': end, 'jobs': []} # Simulate that the status file exists. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(test_bisect_contents, f) + test_helpers.WritePrettyJsonFile(test_bisect_contents, f) self.assertDictEqual( llvm_bisection.LoadStatusFile(temp_json_file, start, end), @@ -444,7 +446,7 @@ class LLVMBisectionTest(unittest.TestCase): @mock.patch.object(llvm_bisection, 'LoadStatusFile') # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the # script outside of the chroot. - @mock.patch.object(llvm_bisection, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) def testSuccessfullyBisectedLLVM( self, mock_outside_chroot, mock_load_status_file, mock_validate_start_and_end, mock_get_start_and_end_revision, @@ -483,7 +485,7 @@ class LLVMBisectionTest(unittest.TestCase): # end (in this case, none). mock_get_revision_and_hash_list.return_value = [], [] - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.start_rev = start args_output.end_rev = end args_output.parallel = 3 @@ -517,7 +519,7 @@ class LLVMBisectionTest(unittest.TestCase): @mock.patch.object(llvm_bisection, 'LoadStatusFile') # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the # script outside of the chroot. - @mock.patch.object(llvm_bisection, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) def testNoMoreTryjobsToLaunch( self, mock_outside_chroot, mock_load_status_file, mock_validate_start_and_end, mock_get_start_and_end_revision, @@ -541,7 +543,7 @@ class LLVMBisectionTest(unittest.TestCase): no_revisions_error_message = ('No more tryjobs to launch between %d and ' '%d' % (start, end)) - def MockNoRevisionsErrorException(start, end, skip, pending): + def MockNoRevisionsErrorException(_start, _end, _skip, _pending): raise ValueError(no_revisions_error_message) # Simulate behavior of `LoadStatusFile()` when successfully loaded the @@ -567,7 +569,7 @@ class LLVMBisectionTest(unittest.TestCase): mock_die_with_no_revisions_error.side_effect = MockNoRevisionsErrorException # Simulate behavior of arguments passed into the command line. - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.start_rev = start args_output.end_rev = end args_output.parallel = 3 diff --git a/llvm_tools/llvm_patch_management.py b/llvm_tools/llvm_patch_management.py index ef8b65c8..90f9a5c0 100755 --- a/llvm_tools/llvm_patch_management.py +++ b/llvm_tools/llvm_patch_management.py @@ -3,23 +3,21 @@ # Copyright 2019 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. +# +# pylint: disable=global-statement """Creates the arguments for the patch manager for LLVM.""" from __future__ import print_function import argparse -import get_llvm_hash import os -import patch_manager -from assert_not_in_chroot import VerifyOutsideChroot from failure_modes import FailureModes -from get_llvm_hash import CreateTempLLVMRepo -from get_llvm_hash import GetGoogle3LLVMVersion -from get_llvm_hash import LLVMHash -from subprocess_helpers import ChrootRunCommand -from subprocess_helpers import ExecCommandAndCaptureOutput +import chroot +import get_llvm_hash +import patch_manager +import subprocess_helpers # If set to `True`, then the contents of `stdout` after executing a command will # be displayed to the terminal. @@ -123,7 +121,7 @@ def GetPathToFilesDirectory(chroot_path, package): raise ValueError('Invalid chroot provided: %s' % chroot_path) # Get the absolute chroot path to the ebuild. - chroot_ebuild_path = ChrootRunCommand( + chroot_ebuild_path = subprocess_helpers.ChrootRunCommand( chroot_path, ['equery', 'w', package], verbose=verbose) # Get the absolute chroot path to $FILESDIR's parent directory. @@ -180,7 +178,7 @@ def _MoveSrcTreeHEADToGitHash(src_path, git_hash): move_head_cmd = ['git', '-C', src_path, 'checkout', git_hash] - ExecCommandAndCaptureOutput(move_head_cmd, verbose=verbose) + subprocess_helpers.ExecCommandAndCaptureOutput(move_head_cmd, verbose=verbose) def UpdatePackagesPatchMetadataFile(chroot_path, svn_version, @@ -206,10 +204,10 @@ def UpdatePackagesPatchMetadataFile(chroot_path, svn_version, # that has information on the patches. package_info = {} - llvm_hash = LLVMHash() + llvm_hash = get_llvm_hash.LLVMHash() with llvm_hash.CreateTempDirectory() as temp_dir: - with CreateTempLLVMRepo(temp_dir) as src_path: + with get_llvm_hash.CreateTempLLVMRepo(temp_dir) as src_path: # Ensure that 'svn_version' exists in the chromiumum mirror of LLVM by # finding its corresponding git hash. git_hash = get_llvm_hash.GetGitHashFrom(src_path, svn_version) @@ -247,14 +245,14 @@ def main(): AssertionError: The script was run inside the chroot. """ - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = GetCommandLineArgs() # Get the google3 LLVM version if a LLVM version was not provided. llvm_version = args_output.llvm_version if llvm_version in ('', 'google3', 'google3-unstable'): - llvm_version = GetGoogle3LLVMVersion( + llvm_version = get_llvm_hash.GetGoogle3LLVMVersion( stable=llvm_version != 'google3-unstable') UpdatePackagesPatchMetadataFile(args_output.chroot_path, llvm_version, diff --git a/llvm_tools/llvm_patch_management_unittest.py b/llvm_tools/llvm_patch_management_unittest.py index 75f003e9..968a816a 100755 --- a/llvm_tools/llvm_patch_management_unittest.py +++ b/llvm_tools/llvm_patch_management_unittest.py @@ -4,20 +4,21 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# pylint: disable=protected-access + """Unit tests when creating the arguments for the patch manager.""" from __future__ import print_function from collections import namedtuple -from failure_modes import FailureModes - -import get_llvm_hash -import llvm_patch_management import os -import patch_manager -import subprocess import unittest import unittest.mock as mock +from failure_modes import FailureModes +import get_llvm_hash +import llvm_patch_management +import patch_manager +import subprocess_helpers class LlvmPatchManagementTest(unittest.TestCase): @@ -43,7 +44,7 @@ class LlvmPatchManagementTest(unittest.TestCase): # Simulate the behavior of 'os.path.isdir()' when a valid chroot path is # passed in. @mock.patch.object(os.path, 'isdir', return_value=True) - @mock.patch.object(llvm_patch_management, 'ChrootRunCommand') + @mock.patch.object(subprocess_helpers, 'ChrootRunCommand') @mock.patch.object(llvm_patch_management, '_GetRelativePathOfChrootPath') def testSuccessfullyGetPathToFilesDir( self, mock_get_relative_path_of_chroot_path, mock_chroot_cmd, mock_isdir): @@ -149,7 +150,7 @@ class LlvmPatchManagementTest(unittest.TestCase): get_llvm_hash, 'GetGitHashFrom', return_value='a123testhash1') # Simulate `CreateTempLLVMRepo()` when successfully created a work tree from # the LLVM repo copy in `llvm_tools` directory. - @mock.patch.object(llvm_patch_management, 'CreateTempLLVMRepo') + @mock.patch.object(get_llvm_hash, 'CreateTempLLVMRepo') # Simulate behavior of `_MoveSrcTreeHEADToGitHash()` when successfully moved # the head pointer to the git hash of the revision. @mock.patch.object(llvm_patch_management, '_MoveSrcTreeHEADToGitHash') @@ -222,7 +223,7 @@ class LlvmPatchManagementTest(unittest.TestCase): get_llvm_hash, 'GetGitHashFrom', return_value='a123testhash1') # Simulate `CreateTempLLVMRepo()` when successfully created a work tree from # the LLVM repo copy in `llvm_tools` directory. - @mock.patch.object(llvm_patch_management, 'CreateTempLLVMRepo') + @mock.patch.object(get_llvm_hash, 'CreateTempLLVMRepo') # Simulate behavior of `_MoveSrcTreeHEADToGitHash()` when successfully moved # the head pointer to the git hash of the revision. @mock.patch.object(llvm_patch_management, '_MoveSrcTreeHEADToGitHash') diff --git a/llvm_tools/modify_a_tryjob.py b/llvm_tools/modify_a_tryjob.py index 41337257..0d6b070f 100755 --- a/llvm_tools/modify_a_tryjob.py +++ b/llvm_tools/modify_a_tryjob.py @@ -14,12 +14,11 @@ import json import os import sys -from assert_not_in_chroot import VerifyOutsideChroot -from failure_modes import FailureModes -from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption -from update_packages_and_run_tests import RunTryJobs -from update_tryjob_status import FindTryjobIndex -from update_tryjob_status import TryjobStatus +import chroot +import failure_modes +import get_llvm_hash +import update_packages_and_run_tests +import update_tryjob_status import update_chromeos_llvm_hash @@ -124,7 +123,7 @@ def GetCLAfterUpdatingPackages(packages, git_hash, svn_version, chroot_path, svn_version, chroot_path, patch_metadata_file, - FailureModes.DISABLE_PATCHES, + failure_modes.FailureModes.DISABLE_PATCHES, svn_option, extra_commit_msg=None) @@ -150,15 +149,15 @@ def CreateNewTryjobEntryForBisection(cl, extra_cls, options, builder, # 'builder' : [BUILDER_AS_A_LIST] # } # ] - tryjob_results = RunTryJobs(cl, extra_cls, options, [builder], chroot_path, - verbose) + tryjob_results = update_packages_and_run_tests.RunTryJobs( + cl, extra_cls, options, [builder], chroot_path, verbose) print('\nTryjob:') print(tryjob_results[0]) # Add necessary information about the tryjob. tryjob_results[0]['url'] = cl_url tryjob_results[0]['rev'] = revision - tryjob_results[0]['status'] = TryjobStatus.PENDING.value + tryjob_results[0]['status'] = update_tryjob_status.TryjobStatus.PENDING.value tryjob_results[0]['cl'] = cl return tryjob_results[0] @@ -215,7 +214,8 @@ def PerformTryjobModification(revision, modify_tryjob, status_file, extra_cls, if not bisect_contents['jobs'] and modify_tryjob != ModifyTryjob.ADD: sys.exit('No tryjobs in %s' % status_file) - tryjob_index = FindTryjobIndex(revision, bisect_contents['jobs']) + tryjob_index = update_tryjob_status.FindTryjobIndex(revision, + bisect_contents['jobs']) # 'FindTryjobIndex()' returns None if the tryjob was not found. if tryjob_index is None and modify_tryjob != ModifyTryjob.ADD: @@ -229,13 +229,14 @@ def PerformTryjobModification(revision, modify_tryjob, status_file, extra_cls, print('Successfully deleted the tryjob of revision %d' % revision) elif modify_tryjob == ModifyTryjob.RELAUNCH: # Need to update the tryjob link and buildbucket ID. - tryjob_results = RunTryJobs( + tryjob_results = update_packages_and_run_tests.RunTryJobs( bisect_contents['jobs'][tryjob_index]['cl'], bisect_contents['jobs'][tryjob_index]['extra_cls'], bisect_contents['jobs'][tryjob_index]['options'], bisect_contents['jobs'][tryjob_index]['builder'], chroot_path, verbose) - bisect_contents['jobs'][tryjob_index]['status'] = TryjobStatus.PENDING.value + bisect_contents['jobs'][tryjob_index][ + 'status'] = update_tryjob_status.TryjobStatus.PENDING.value bisect_contents['jobs'][tryjob_index]['link'] = tryjob_results[0]['link'] bisect_contents['jobs'][tryjob_index]['buildbucket_id'] = tryjob_results[0][ 'buildbucket_id'] @@ -258,7 +259,8 @@ def PerformTryjobModification(revision, modify_tryjob, status_file, extra_cls, patch_metadata_file = 'PATCHES.json' - git_hash, revision = GetLLVMHashAndVersionFromSVNOption(revision) + git_hash, revision = get_llvm_hash.GetLLVMHashAndVersionFromSVNOption( + revision) tryjob_dict = AddTryjob(update_packages, git_hash, revision, chroot_path, patch_metadata_file, extra_cls, options, builder, @@ -280,7 +282,7 @@ def PerformTryjobModification(revision, modify_tryjob, status_file, extra_cls, def main(): """Removes, relaunches, or adds a tryjob.""" - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = GetCommandLineArgs() diff --git a/llvm_tools/modify_a_tryjob_unittest.py b/llvm_tools/modify_a_tryjob_unittest.py index 2b492f1d..e3c62972 100755 --- a/llvm_tools/modify_a_tryjob_unittest.py +++ b/llvm_tools/modify_a_tryjob_unittest.py @@ -12,10 +12,11 @@ import json import unittest import unittest.mock as mock -from test_helpers import ArgsOutputTest -from test_helpers import CreateTemporaryJsonFile -from test_helpers import WritePrettyJsonFile +import get_llvm_hash import modify_a_tryjob +import test_helpers +import update_packages_and_run_tests +import update_tryjob_status class ModifyATryjobTest(unittest.TestCase): @@ -26,13 +27,13 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) revision_to_modify = 369411 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.builders = None args_output.options = None @@ -48,7 +49,7 @@ class ModifyATryjobTest(unittest.TestCase): # Simulate the behavior of `FindTryjobIndex()` when the index of the tryjob # was not found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=None) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=None) def testNoTryjobIndexFound(self, mock_find_tryjob_index): bisect_test_contents = { 'start': 369410, @@ -62,13 +63,13 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) revision_to_modify = 369412 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.builders = None args_output.options = None @@ -88,7 +89,7 @@ class ModifyATryjobTest(unittest.TestCase): # Simulate the behavior of `FindTryjobIndex()` when the index of the tryjob # was found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=0) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) def testSuccessfullyRemovedTryjobInStatusFile(self, mock_find_tryjob_index): bisect_test_contents = { 'start': 369410, @@ -102,13 +103,13 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) revision_to_modify = 369414 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.builders = None args_output.options = None @@ -129,10 +130,10 @@ class ModifyATryjobTest(unittest.TestCase): # Simulate the behavior of `RunTryJobs()` when successfully submitted a # tryjob. - @mock.patch.object(modify_a_tryjob, 'RunTryJobs') + @mock.patch.object(update_packages_and_run_tests, 'RunTryJobs') # Simulate the behavior of `FindTryjobIndex()` when the index of the tryjob # was found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=0) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) def testSuccessfullyRelaunchedTryjob(self, mock_find_tryjob_index, mock_run_tryjob): @@ -162,13 +163,13 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) revision_to_modify = 369411 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.builders = None args_output.options = None @@ -207,7 +208,7 @@ class ModifyATryjobTest(unittest.TestCase): # Simulate the behavior of `FindTryjobIndex()` when the index of the tryjob # was found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=0) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) def testAddingTryjobThatAlreadyExists(self, mock_find_tryjob_index): bisect_test_contents = { 'start': 369410, @@ -221,16 +222,16 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) revision_to_add = 369411 # Index of the tryjob in 'jobs' list. tryjob_index = 0 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.options = None # Verify the exception is raised when the tryjob that is going to added @@ -248,7 +249,7 @@ class ModifyATryjobTest(unittest.TestCase): mock_find_tryjob_index.assert_called_once() # Simulate the behavior of `FindTryjobIndex()` when the tryjob was not found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=None) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=None) def testSuccessfullyDidNotAddTryjobOutsideOfBisectionBounds( self, mock_find_tryjob_index): @@ -263,14 +264,14 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) # Add a revision that is outside of 'start' and 'end'. revision_to_add = 369450 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.options = None # Verify the exception is raised when adding a tryjob that does not exist @@ -292,11 +293,11 @@ class ModifyATryjobTest(unittest.TestCase): # Simulate the behavior of `GetLLVMHashAndVersionFromSVNOption()` when # successfully retrieved the git hash of the revision to launch a tryjob for. @mock.patch.object( - modify_a_tryjob, + get_llvm_hash, 'GetLLVMHashAndVersionFromSVNOption', return_value=('a123testhash1', 369418)) # Simulate the behavior of `FindTryjobIndex()` when the tryjob was not found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=None) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=None) def testSuccessfullyAddedTryjob(self, mock_find_tryjob_index, mock_get_llvm_hash, mock_add_tryjob): @@ -311,14 +312,14 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) # Add a revision that is outside of 'start' and 'end'. revision_to_add = 369418 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.options = None new_tryjob_info = { @@ -358,7 +359,7 @@ class ModifyATryjobTest(unittest.TestCase): mock_add_tryjob.assert_called_once() # Simulate the behavior of `FindTryjobIndex()` when the tryjob was found. - @mock.patch.object(modify_a_tryjob, 'FindTryjobIndex', return_value=0) + @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) def testModifyATryjobOptionDoesNotExist(self, mock_find_tryjob_index): bisect_test_contents = { 'start': 369410, @@ -371,14 +372,14 @@ class ModifyATryjobTest(unittest.TestCase): # Create a temporary .JSON file to simulate a .JSON file that has bisection # contents. - with CreateTemporaryJsonFile() as temp_json_file: + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: with open(temp_json_file, 'w') as f: - WritePrettyJsonFile(bisect_test_contents, f) + test_helpers.WritePrettyJsonFile(bisect_test_contents, f) # Add a revision that is outside of 'start' and 'end'. revision_to_modify = 369414 - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.builders = None args_output.options = None diff --git a/llvm_tools/update_all_tryjobs_with_auto.py b/llvm_tools/update_all_tryjobs_with_auto.py index 511bfffa..11e67ed4 100755 --- a/llvm_tools/update_all_tryjobs_with_auto.py +++ b/llvm_tools/update_all_tryjobs_with_auto.py @@ -12,9 +12,8 @@ import argparse import json import os -from assert_not_in_chroot import VerifyOutsideChroot -from update_tryjob_status import GetAutoResult -from update_tryjob_status import TryjobStatus +import chroot +import update_tryjob_status def GetPathToUpdateAllTryjobsWithAutoScript(): @@ -59,7 +58,7 @@ def GetCommandLineArgs(): def main(): """Updates the status of a tryjob.""" - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = GetCommandLineArgs() @@ -67,9 +66,9 @@ def main(): bisect_contents = json.load(tryjobs) for tryjob in bisect_contents['jobs']: - if tryjob['status'] == TryjobStatus.PENDING.value: - tryjob['status'] = GetAutoResult(args_output.chroot_path, - tryjob['buildbucket_id']) + if tryjob['status'] == update_tryjob_status.TryjobStatus.PENDING.value: + tryjob['status'] = update_tryjob_status.GetAutoResult( + args_output.chroot_path, tryjob['buildbucket_id']) new_file = '%s.new' % args_output.last_tested with open(new_file, 'w') as update_tryjobs: diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index 4f6e9936..f8cb04e4 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -13,21 +13,18 @@ for review. """ from __future__ import print_function -from collections import namedtuple from datetime import datetime from enum import Enum import argparse import os import re -import subprocess -import tempfile -from assert_not_in_chroot import VerifyOutsideChroot from failure_modes import FailureModes -from subprocess_helpers import ChrootRunCommand, ExecCommandAndCaptureOutput -from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption, is_svn_option +from subprocess_helpers import ExecCommandAndCaptureOutput +import chroot import get_llvm_hash +import git import llvm_patch_management @@ -43,8 +40,6 @@ class LLVMVariant(Enum): # be displayed to the terminal. verbose = False -CommitContents = namedtuple('CommitContents', ['url', 'cl_number']) - def GetCommandLineArgs(): """Parses the command line for the optional command line arguments. @@ -96,7 +91,7 @@ def GetCommandLineArgs(): # Add argument for the LLVM version to use. parser.add_argument( '--llvm_version', - type=is_svn_option, + type=get_llvm_hash.is_svn_option, required=True, help='which git hash to use. Either a svn revision, or one ' 'of %s' % sorted(get_llvm_hash.KNOWN_HASH_SOURCES)) @@ -131,76 +126,6 @@ def GetCommandLineArgs(): return args_output -def GetChrootBuildPaths(chromeos_root, package_list): - """Gets the chroot path(s) of the package(s). - - Args: - chromeos_root: The absolute path to the chroot to - use for executing chroot commands. - package_list: A list of a package/packages to - be used to find their chroot path. - - Returns: - A list of a chroot path/chroot paths of the package's ebuild file. - - Raises: - ValueError: Failed to get the chroot path of a package. - """ - - chroot_paths = [] - - # Find the chroot path for each package's ebuild. - for cur_package in sorted(set(package_list)): - # Cmd to find the chroot path for the package. - equery_cmd = ['equery', 'w', cur_package] - - chroot_path = ChrootRunCommand(chromeos_root, equery_cmd, verbose=verbose) - - chroot_paths.append(chroot_path.strip()) - - return chroot_paths - - -def _ConvertChrootPathsToSymLinkPaths(chromeos_root, chroot_file_paths): - """Converts the chroot path(s) to absolute symlink path(s). - - Args: - chromeos_root: The absolute path to the chroot. - chroot_file_paths: A list of a chroot path/chroot paths to convert to - a absolute symlink path/symlink paths. - - Returns: - A list of absolute path(s) which are symlinks that point to - the ebuild of the package(s). - - Raises: - ValueError: Invalid prefix for the chroot path or - invalid chroot path(s) were provided. - """ - - symlink_file_paths = [] - - chroot_prefix = '/mnt/host/source/' - - # Iterate through the chroot paths. - # - # For each chroot file path, remove '/mnt/host/source/' prefix - # and combine the chroot path with the result and add it to the list. - for cur_chroot_file_path in chroot_file_paths: - if not cur_chroot_file_path.startswith(chroot_prefix): - raise ValueError( - 'Invalid prefix for the chroot path: %s' % cur_chroot_file_path) - - rel_path = cur_chroot_file_path[len(chroot_prefix):] - - # combine the chromeos root path + '/src/...' - absolute_symlink_path = os.path.join(chromeos_root, rel_path) - - symlink_file_paths.append(absolute_symlink_path) - - return symlink_file_paths - - def GetEbuildPathsFromSymLinkPaths(symlinks): """Reads the symlink(s) to get the ebuild path(s) to the package(s). @@ -405,154 +330,6 @@ def UprevEbuildToVersion(symlink, svn_version): ExecCommandAndCaptureOutput(cmd, verbose=verbose) -def _CreateRepo(path_to_repo_dir, branch): - """Creates a temporary repo for the changes. - - Args: - path_to_repo_dir: The absolute path to the repo. - branch: The name of the branch to create. - llvm_variant: The LLVM hash to update. - git_hash: The new git hash. - - Raises: - ValueError: Failed to create a repo in that directory. - """ - - if not os.path.isdir(path_to_repo_dir): - raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - - reset_changes_cmd = [ - 'git', - '-C', - path_to_repo_dir, - 'reset', - 'HEAD', - '--hard', - ] - - ExecCommandAndCaptureOutput(reset_changes_cmd, verbose=verbose) - - create_repo_cmd = ['repo', 'start', branch] - - ExecCommandAndCaptureOutput( - create_repo_cmd, cwd=path_to_repo_dir, verbose=verbose) - - -def _DeleteRepo(path_to_repo_dir, branch): - """Deletes the temporary repo. - - Args: - path_to_repo_dir: The absolute path of the repo. - branch: The name of the branch to delete. - - Raises: - ValueError: Failed to delete the repo in that directory. - """ - - if not os.path.isdir(path_to_repo_dir): - raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - - checkout_to_master_cmd = [ - 'git', '-C', path_to_repo_dir, 'checkout', 'cros/master' - ] - - ExecCommandAndCaptureOutput(checkout_to_master_cmd, verbose=verbose) - - reset_head_cmd = ['git', '-C', path_to_repo_dir, 'reset', 'HEAD', '--hard'] - - ExecCommandAndCaptureOutput(reset_head_cmd, verbose=verbose) - - delete_repo_cmd = ['git', '-C', path_to_repo_dir, 'branch', '-D', branch] - - ExecCommandAndCaptureOutput(delete_repo_cmd, verbose=verbose) - - -def GetGerritRepoUploadContents(repo_upload_contents): - """Parses 'repo upload' to get the Gerrit commit URL and CL number. - - Args: - repo_upload_contents: The contents of the 'repo upload' command. - - Returns: - A nametuple that has two (key, value) pairs, where the first pair is the - Gerrit commit URL and the second pair is the change list number. - - Raises: - ValueError: The contents of the 'repo upload' command did not contain a - Gerrit commit URL. - """ - - found_url = re.search( - r'https://chromium-review.googlesource.com/c/' - r'chromiumos/overlays/chromiumos-overlay/\+/([0-9]+)', - repo_upload_contents) - - if not found_url: - raise ValueError('Failed to find change list URL.') - - cl_number = int(found_url.group(1)) - - return CommitContents(url=found_url.group(0), cl_number=cl_number) - - -def UploadChanges(path_to_repo_dir, branch, commit_messages): - """Uploads the changes (updating LLVM next hash and uprev symlink) for review. - - Args: - path_to_repo_dir: The absolute path to the repo where changes were made. - branch: The name of the branch to upload. - commit_messages: A string of commit message(s) (i.e. '[message]' - of the changes made. - - Returns: - A nametuple that has two (key, value) pairs, where the first pair is the - Gerrit commit URL and the second pair is the change list number. - - Raises: - ValueError: Failed to create a commit or failed to upload the - changes for review. - """ - - if not os.path.isdir(path_to_repo_dir): - raise ValueError('Invalid directory path provided: %s' % path_to_repo_dir) - - # Create a git commit. - with tempfile.NamedTemporaryFile(mode='w+t') as commit_msg_file: - commit_msg_file.write('\n'.join(commit_messages)) - commit_msg_file.flush() - - commit_cmd = ['git', 'commit', '-F', commit_msg_file.name] - - ExecCommandAndCaptureOutput( - commit_cmd, cwd=path_to_repo_dir, verbose=verbose) - - # Upload the changes for review. - # Use --ne to avoid sending email notifications. - upload_change_cmd = [ - 'repo', 'upload', '--yes', '--ne', '--no-verify', - '--br=%s' % branch - ] - - # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow - # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. - # pylint: disable=unexpected-keyword-arg - # The CL URL is sent to 'stderr', so need to redirect 'stderr' to 'stdout'. - upload_changes_obj = subprocess.Popen( - upload_change_cmd, - cwd=path_to_repo_dir, - encoding='UTF-8', - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - out, _ = upload_changes_obj.communicate() - - if upload_changes_obj.returncode: # Failed to upload changes. - print(out) - raise ValueError('Failed to upload changes for review') - - return GetGerritRepoUploadContents(out.rstrip()) - - def CreatePathDictionaryFromPackages(chroot_path, update_packages): """Creates a symlink and ebuild path pair dictionary from the packages. @@ -567,10 +344,10 @@ def CreatePathDictionaryFromPackages(chroot_path, update_packages): """ # Construct a list containing the chroot file paths of the package(s). - chroot_file_paths = GetChrootBuildPaths(chroot_path, update_packages) + chroot_file_paths = chroot.GetChrootEbuildPaths(chroot_path, update_packages) # Construct a list containing the symlink(s) of the package(s). - symlink_file_paths = _ConvertChrootPathsToSymLinkPaths( + symlink_file_paths = chroot.ConvertChrootPathsToAbsolutePaths( chroot_path, chroot_file_paths) # Create a dictionary where the key is the absolute path of the symlink to @@ -708,7 +485,7 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, branch = 'update-' + llvm_variant.value + '-' + git_hash - _CreateRepo(repo_path, branch) + git.CreateBranch(repo_path, branch) try: commit_message_header = 'llvm' @@ -762,10 +539,10 @@ def UpdatePackages(packages, llvm_variant, git_hash, svn_version, chroot_path, if extra_commit_msg: commit_messages.append(extra_commit_msg) - change_list = UploadChanges(repo_path, branch, commit_messages) + change_list = git.UploadChanges(repo_path, branch, commit_messages) finally: - _DeleteRepo(repo_path, branch) + git.DeleteBranch(repo_path, branch) return change_list @@ -777,7 +554,7 @@ def main(): AssertionError: The script was run inside the chroot. """ - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = GetCommandLineArgs() @@ -787,7 +564,8 @@ def main(): git_hash_source = args_output.llvm_version - git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(git_hash_source) + git_hash, svn_version = get_llvm_hash.GetLLVMHashAndVersionFromSVNOption( + git_hash_source) change_list = UpdatePackages( args_output.update_packages, diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index 2ea483b6..5f86c2b0 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -12,13 +12,14 @@ from collections import namedtuple from datetime import datetime import os import re -import subprocess import unittest import unittest.mock as mock -from failure_modes import FailureModes -from test_helpers import CreateTemporaryJsonFile +import chroot +import failure_modes +import git import llvm_patch_management +import test_helpers import update_chromeos_llvm_hash # These are unittests; protected access is OK to a point. @@ -28,81 +29,6 @@ import update_chromeos_llvm_hash class UpdateLLVMHashTest(unittest.TestCase): """Test class for updating LLVM hashes of packages.""" - @mock.patch.object(update_chromeos_llvm_hash, 'ChrootRunCommand') - def testSucceedsToGetChrootPathForPackage(self, mock_chroot_command): - package_chroot_path = '/chroot/path/to/package.ebuild' - - # Emulate ChrootRunCommandWOutput behavior when a chroot path is found for - # a valid package. - mock_chroot_command.return_value = package_chroot_path - - chroot_path = '/test/chroot/path' - package_list = ['new-test/package'] - - self.assertEqual( - update_chromeos_llvm_hash.GetChrootBuildPaths( - chroot_path, package_list), [package_chroot_path]) - - mock_chroot_command.assert_called_once() - - def testFailedToConvertChrootPathWithInvalidPrefixToSymlinkPath(self): - chroot_path = '/path/to/chroot' - chroot_file_path = '/src/package.ebuild' - - # Verify the exception is raised when a symlink does not have the prefix - # '/mnt/host/source/'. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash._ConvertChrootPathsToSymLinkPaths( - chroot_path, [chroot_file_path]) - - self.assertEqual( - str(err.exception), 'Invalid prefix for the chroot path: ' - '%s' % chroot_file_path) - - def testSucceedsToConvertChrootPathToSymlinkPath(self): - chroot_path = '/path/to/chroot' - chroot_file_paths = ['/mnt/host/source/src/package.ebuild'] - - expected_symlink_path = '/path/to/chroot/src/package.ebuild' - - self.assertEqual( - update_chromeos_llvm_hash._ConvertChrootPathsToSymLinkPaths( - chroot_path, chroot_file_paths), [expected_symlink_path]) - - # Simulate 'os.path.islink' when a path is not a symbolic link. - @mock.patch.object(os.path, 'islink', return_value=False) - def testFailedToGetEbuildPathFromInvalidSymlink(self, mock_islink): - symlink_path = '/symlink/path/src/to/package-r1.ebuild' - - # Verify the exception is raised when the argument is not a symbolic link. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash.GetEbuildPathsFromSymLinkPaths([symlink_path]) - - self.assertEqual( - str(err.exception), 'Invalid symlink provided: %s' % symlink_path) - - mock_islink.assert_called_once_with(symlink_path) - - # Simulate 'os.path.islink' when a path is a symbolic link. - @mock.patch.object(os.path, 'islink', return_value=True) - @mock.patch.object(os.path, 'realpath') - def testSucceedsToGetEbuildPathFromValidSymlink(self, mock_realpath, - mock_islink): - - symlink_path = '/path/to/chroot/src/package-r1.ebuild' - abs_path_to_package = '/abs/path/to/src/package.ebuild' - mock_realpath.return_value = abs_path_to_package - - expected_resolved_paths = {symlink_path: abs_path_to_package} - - self.assertEqual( - update_chromeos_llvm_hash.GetEbuildPathsFromSymLinkPaths( - [symlink_path]), expected_resolved_paths) - - mock_realpath.assert_called_once_with(symlink_path) - - mock_islink.assert_called_once_with(symlink_path) - # Simulate behavior of 'os.path.isfile()' when the ebuild path to a package # does not exist. @mock.patch.object(os.path, 'isfile', return_value=False) @@ -126,7 +52,7 @@ class UpdateLLVMHashTest(unittest.TestCase): @mock.patch.object(os.path, 'isfile', return_value=True) def testFailedToUpdateLLVMHash(self, mock_isfile): # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: + with test_helpers.CreateTemporaryJsonFile() as ebuild_file: with open(ebuild_file, 'w') as f: f.write('\n'.join([ 'First line in the ebuild', 'Second line in the ebuild', @@ -154,7 +80,7 @@ class UpdateLLVMHashTest(unittest.TestCase): @mock.patch.object(os.path, 'isfile', return_value=True) def testFailedToUpdateLLVMNextHash(self, mock_isfile): # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: + with test_helpers.CreateTemporaryJsonFile() as ebuild_file: with open(ebuild_file, 'w') as f: f.write('\n'.join([ 'First line in the ebuild', 'Second line in the ebuild', @@ -188,7 +114,7 @@ class UpdateLLVMHashTest(unittest.TestCase): self, mock_stage_commit_command, mock_isfile): # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: + with test_helpers.CreateTemporaryJsonFile() as ebuild_file: # Updates LLVM_HASH to 'git_hash' and revision to # 'svn_version'. llvm_variant = update_chromeos_llvm_hash.LLVMVariant.current @@ -231,7 +157,7 @@ class UpdateLLVMHashTest(unittest.TestCase): self, mock_stage_commit_command, mock_isfile): # Create a temporary file to simulate an ebuild file of a package. - with CreateTemporaryJsonFile() as ebuild_file: + with test_helpers.CreateTemporaryJsonFile() as ebuild_file: # Updates LLVM_NEXT_HASH to 'git_hash' and revision to # 'svn_version'. llvm_variant = update_chromeos_llvm_hash.LLVMVariant.next @@ -435,213 +361,8 @@ class UpdateLLVMHashTest(unittest.TestCase): # directory. - @mock.patch.object(os.path, 'isdir', return_value=False) - def testFailedToCreateRepoForInvalidDirectoryPath(self, mock_isdir): - path_to_repo = '/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash1' - - # Verify the exception is raised when provided an invalid directory path. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash._CreateRepo(path_to_repo, branch) - - self.assertEqual( - str(err.exception), - 'Invalid directory path provided: %s' % path_to_repo) - - mock_isdir.assert_called_once() - - # Simulate 'os.path.isdir' when a valid repo path is provided. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully reset - # changes and created a repo. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyCreatedRepo(self, mock_command_output, mock_isdir): - path_to_repo = '/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash1' - - update_chromeos_llvm_hash._CreateRepo(path_to_repo, branch) - - mock_isdir.assert_called_once_with(path_to_repo) - - self.assertEqual(mock_command_output.call_count, 2) - - # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a - # directory. - @mock.patch.object(os.path, 'isdir', return_value=False) - def testFailedToDeleteRepoForInvalidDirectoryPath(self, mock_isdir): - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash2' - - # Verify the exception is raised on an invalid repo path. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash._DeleteRepo(path_to_repo, branch) - - self.assertEqual( - str(err.exception), - 'Invalid directory path provided: %s' % path_to_repo) - - mock_isdir.assert_called_once() - - # Simulate 'os.path.isdir' on valid directory path. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate 'ExecCommandAndCaptureOutput()' when successfully checkout to - # cros/master, reset changes, and deleted the repo. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - def testSuccessfullyDeletedRepo(self, mock_command_output, mock_isdir): - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash2' - - update_chromeos_llvm_hash._DeleteRepo(path_to_repo, branch) - - mock_isdir.assert_called_once_with(path_to_repo) - - self.assertEqual(mock_command_output.call_count, 3) - - def testFailedToFindChangeListURL(self): - repo_upload_contents = 'remote: https://some_url' - - # Verify the exception is raised when failed to find the Gerrit URL when - # parsing the 'repo upload' contents. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash.GetGerritRepoUploadContents( - repo_upload_contents) - - self.assertEqual(str(err.exception), 'Failed to find change list URL.') - - def testSuccessfullyGetGerritRepoUploadContents(self): - repo_upload_contents = ('remote: https://chromium-review.googlesource.com' - '/c/chromiumos/overlays/chromiumos-overlay/+/' - '193147 Some commit header') - - change_list = update_chromeos_llvm_hash.GetGerritRepoUploadContents( - repo_upload_contents) - - self.assertEqual( - change_list.url, - 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' - 'chromiumos-overlay/+/193147') - - self.assertEqual(change_list.cl_number, 193147) - - # Simulate behavior of 'os.path.isdir()' when the path to the repo is not a - # directory. - @mock.patch.object(os.path, 'isdir', return_value=False) - def testFailedToUploadChangesForInvalidPathDirectory(self, mock_isdir): - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['Test message'] - - # Verify exception is raised when on an invalid repo path. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash.UploadChanges(path_to_repo, branch, - commit_messages) - - self.assertEqual( - str(err.exception), - 'Invalid directory path provided: %s' % path_to_repo) - - mock_isdir.assert_called_once() - - # Simulate 'os.path.isdir' on a valid repo path. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully - # committed the changes. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - @mock.patch.object(subprocess, 'Popen') - def testFailedToUploadChangesForReview(self, mock_repo_upload, - mock_command_output, mock_isdir): - - # Simulate the behavior of 'subprocess.Popen()' when uploading the changes - # for review - # - # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. - mock_repo_upload.return_value.communicate.return_value = ( - None, 'Branch does not exist.') - - # Exit code of 1 means failed to upload changes for review. - mock_repo_upload.return_value.returncode = 1 - - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['Test message'] - - # Verify exception is raised when failed to upload the changes for review. - with self.assertRaises(ValueError) as err: - update_chromeos_llvm_hash.UploadChanges(path_to_repo, branch, - commit_messages) - - self.assertEqual(str(err.exception), 'Failed to upload changes for review') - - mock_isdir.assert_called_once_with(path_to_repo) - - mock_command_output.assert_called_once() - mock_command_output_args = mock_command_output.call_args_list[0][0][0] - expected_mock_command_output_prefix = ['git', 'commit', '-F'] - self.assertEqual( - mock_command_output_args[:len(expected_mock_command_output_prefix)], - expected_mock_command_output_prefix) - - mock_repo_upload.assert_called_once() - - # Simulate 'os.path.isdir' when a valid repo path is passed in. - @mock.patch.object(os.path, 'isdir', return_value=True) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully - # committed the changes. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) - @mock.patch.object(subprocess, 'Popen') - def testSuccessfullyUploadedChangesForReview(self, mock_repo_upload, - mock_command_output, mock_isdir): - - # A test CL generated by `repo upload`. - repo_upload_contents = ('remote: https://chromium-review.googlesource.' - 'com/c/chromiumos/overlays/chromiumos-overlay/' - '+/193147 Fix stdout') - - # Simulate the behavior of 'subprocess.Popen()' when uploading the changes - # for review - # - # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. - mock_repo_upload.return_value.communicate.return_value = ( - repo_upload_contents, None) - - # Exit code of 0 means successfully uploaded changes for review. - mock_repo_upload.return_value.returncode = 0 - - path_to_repo = '/some/path/to/repo' - branch = 'update-LLVM_NEXT_HASH-a123testhash3' - commit_messages = ['Test message'] - - change_list = update_chromeos_llvm_hash.UploadChanges( - path_to_repo, branch, commit_messages) - - self.assertEqual( - change_list.url, - 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' - 'chromiumos-overlay/+/193147') - - self.assertEqual(change_list.cl_number, 193147) - - mock_isdir.assert_called_once_with(path_to_repo) - - mock_command_output.assert_called_once() - - mock_repo_upload.assert_called_once() - - @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') - @mock.patch.object(update_chromeos_llvm_hash, - '_ConvertChrootPathsToSymLinkPaths') + @mock.patch.object(chroot, 'GetChrootEbuildPaths') + @mock.patch.object(chroot, 'ConvertChrootPathsToAbsolutePaths') def testExceptionRaisedWhenCreatingPathDictionaryFromPackages( self, mock_chroot_paths_to_symlinks, mock_get_chroot_paths): @@ -650,18 +371,18 @@ class UpdateLLVMHashTest(unittest.TestCase): package_name = 'test-pckg/package' package_chroot_path = '/some/chroot/path/to/package-r1.ebuild' - # Test function to simulate '_ConvertChrootPathsToSymLinkPaths' when a + # Test function to simulate 'ConvertChrootPathsToAbsolutePaths' when a # symlink does not start with the prefix '/mnt/host/source'. def BadPrefixChrootPath(_chroot_path, _chroot_file_paths): raise ValueError('Invalid prefix for the chroot path: ' '%s' % package_chroot_path) - # Simulate 'GetChrootBuildPaths' when valid packages are passed in. + # Simulate 'GetChrootEbuildPaths' when valid packages are passed in. # # Returns a list of chroot paths. mock_get_chroot_paths.return_value = [package_chroot_path] - # Use test function to simulate '_ConvertChrootPathsToSymLinkPaths' + # Use test function to simulate 'ConvertChrootPathsToAbsolutePaths' # behavior. mock_chroot_paths_to_symlinks.side_effect = BadPrefixChrootPath @@ -679,9 +400,8 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_chroot_paths_to_symlinks.assert_called_once_with( chroot_path, [package_chroot_path]) - @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') - @mock.patch.object(update_chromeos_llvm_hash, - '_ConvertChrootPathsToSymLinkPaths') + @mock.patch.object(chroot, 'GetChrootEbuildPaths') + @mock.patch.object(chroot, 'ConvertChrootPathsToAbsolutePaths') @mock.patch.object(update_chromeos_llvm_hash, 'GetEbuildPathsFromSymLinkPaths') def testSuccessfullyCreatedPathDictionaryFromPackages( @@ -690,7 +410,7 @@ class UpdateLLVMHashTest(unittest.TestCase): package_chroot_path = '/mnt/host/source/src/path/to/package-r1.ebuild' - # Simulate 'GetChrootBuildPaths' when returning a chroot path for a valid + # Simulate 'GetChrootEbuildPaths' when returning a chroot path for a valid # package. # # Returns a list of chroot paths. @@ -698,7 +418,7 @@ class UpdateLLVMHashTest(unittest.TestCase): package_symlink_path = '/some/path/to/chroot/src/path/to/package-r1.ebuild' - # Simulate '_ConvertChrootPathsToSymLinkPaths' when returning a symlink to + # Simulate 'ConvertChrootPathsToAbsolutePaths' when returning a symlink to # a chroot path that points to a package. # # Returns a list of symlink file paths. @@ -868,11 +588,11 @@ class UpdateLLVMHashTest(unittest.TestCase): @mock.patch.object(update_chromeos_llvm_hash, 'CreatePathDictionaryFromPackages') - @mock.patch.object(update_chromeos_llvm_hash, '_CreateRepo') + @mock.patch.object(git, 'CreateBranch') @mock.patch.object(update_chromeos_llvm_hash, 'UpdateEbuildLLVMHash') @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuildSymlink') - @mock.patch.object(update_chromeos_llvm_hash, 'UploadChanges') - @mock.patch.object(update_chromeos_llvm_hash, '_DeleteRepo') + @mock.patch.object(git, 'UploadChanges') + @mock.patch.object(git, 'DeleteBranch') @mock.patch.object(os.path, 'realpath') def testExceptionRaisedWhenUpdatingPackages( self, mock_realpath, mock_delete_repo, mock_upload_changes, @@ -886,9 +606,9 @@ class UpdateLLVMHashTest(unittest.TestCase): path_to_package_dir = '/some/path/to/chroot/src/path/to' - # Test function to simulate '_CreateRepo' when successfully created the - # repo on a valid repo path. - def SuccessfullyCreateRepoForChanges(_repo_path, branch): + # Test function to simulate 'CreateBranch' when successfully created the + # branch on a valid repo path. + def SuccessfullyCreateBranchForChanges(_repo_path, branch): self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash4') return @@ -925,7 +645,7 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_create_path_dict.return_value = test_package_path_dict # Use test function to simulate behavior. - mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges + mock_create_repo.side_effect = SuccessfullyCreateBranchForChanges mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash mock_uprev_symlink.side_effect = FailedToUprevEbuildSymlink mock_upload_changes.side_effect = ShouldNotExecuteUploadChanges @@ -946,7 +666,7 @@ class UpdateLLVMHashTest(unittest.TestCase): with self.assertRaises(ValueError) as err: update_chromeos_llvm_hash.UpdatePackages( packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, FailureModes.FAIL, git_hash_source, + patch_metadata_file, failure_modes.FailureModes.FAIL, git_hash_source, extra_commit_msg) self.assertEqual(str(err.exception), 'Failed to uprev the ebuild.') @@ -967,11 +687,11 @@ class UpdateLLVMHashTest(unittest.TestCase): @mock.patch.object(update_chromeos_llvm_hash, 'CreatePathDictionaryFromPackages') - @mock.patch.object(update_chromeos_llvm_hash, '_CreateRepo') + @mock.patch.object(git, 'CreateBranch') @mock.patch.object(update_chromeos_llvm_hash, 'UpdateEbuildLLVMHash') @mock.patch.object(update_chromeos_llvm_hash, 'UprevEbuildSymlink') - @mock.patch.object(update_chromeos_llvm_hash, 'UploadChanges') - @mock.patch.object(update_chromeos_llvm_hash, '_DeleteRepo') + @mock.patch.object(git, 'UploadChanges') + @mock.patch.object(git, 'DeleteBranch') @mock.patch.object(llvm_patch_management, 'UpdatePackagesPatchMetadataFile') @mock.patch.object(update_chromeos_llvm_hash, 'StagePatchMetadataFileForCommit') @@ -987,9 +707,9 @@ class UpdateLLVMHashTest(unittest.TestCase): path_to_package_dir = '/some/path/to/chroot/src/path/to' - # Test function to simulate '_CreateRepo' when successfully created the repo - # for the changes to be made to the ebuild files. - def SuccessfullyCreateRepoForChanges(_repo_path, branch): + # Test function to simulate 'CreateBranch' when successfully created the + # branch for the changes to be made to the ebuild files. + def SuccessfullyCreateBranchForChanges(_repo_path, branch): self.assertEqual(branch, 'update-LLVM_NEXT_HASH-a123testhash5') return @@ -1019,7 +739,7 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(svn_version, 1000) self.assertEqual(patch_metadata_file, 'PATCHES.json') self.assertListEqual(packages, ['path/to']) - self.assertEqual(mode, FailureModes.DISABLE_PATCHES) + self.assertEqual(mode, failure_modes.FailureModes.DISABLE_PATCHES) PatchInfo = namedtuple('PatchInfo', [ 'applied_patches', 'failed_patches', 'non_applicable_patches', @@ -1047,8 +767,7 @@ class UpdateLLVMHashTest(unittest.TestCase): def SuccessfullyUploadedChanges(_repo_path, _branch, _commit_messages): commit_url = 'https://some_name/path/to/commit/+/12345' - return update_chromeos_llvm_hash.CommitContents( - url=commit_url, cl_number=12345) + return git.CommitContents(url=commit_url, cl_number=12345) test_package_path_dict = {symlink_path_to_package: abs_path_to_package} @@ -1059,7 +778,7 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_create_path_dict.return_value = test_package_path_dict # Use test function to simulate behavior. - mock_create_repo.side_effect = SuccessfullyCreateRepoForChanges + mock_create_repo.side_effect = SuccessfullyCreateBranchForChanges mock_update_llvm_next.side_effect = SuccessfullyUpdatedLLVMHash mock_uprev_symlink.side_effect = SuccessfullyUprevedEbuildSymlink mock_update_package_metadata_file.side_effect = RetrievedPatchResults @@ -1077,8 +796,8 @@ class UpdateLLVMHashTest(unittest.TestCase): change_list = update_chromeos_llvm_hash.UpdatePackages( packages_to_update, llvm_variant, git_hash, svn_version, chroot_path, - patch_metadata_file, FailureModes.DISABLE_PATCHES, git_hash_source, - extra_commit_msg) + patch_metadata_file, failure_modes.FailureModes.DISABLE_PATCHES, + git_hash_source, extra_commit_msg) self.assertEqual(change_list.url, 'https://some_name/path/to/commit/+/12345') diff --git a/llvm_tools/update_packages_and_run_tests.py b/llvm_tools/update_packages_and_run_tests.py index ee57ea09..9fe4fe02 100755 --- a/llvm_tools/update_packages_and_run_tests.py +++ b/llvm_tools/update_packages_and_run_tests.py @@ -13,12 +13,10 @@ import datetime import json import os -from assert_not_in_chroot import VerifyOutsideChroot -from failure_modes import FailureModes -from get_llvm_hash import GetLLVMHashAndVersionFromSVNOption -from get_llvm_hash import is_svn_option -from subprocess_helpers import ChrootRunCommand -from subprocess_helpers import ExecCommandAndCaptureOutput +import chroot +import failure_modes +import get_llvm_hash +import subprocess_helpers import update_chromeos_llvm_hash @@ -73,7 +71,7 @@ def GetCommandLineArgs(): # Add argument for the LLVM version to use. parser.add_argument( '--llvm_version', - type=is_svn_option, + type=get_llvm_hash.is_svn_option, required=True, help='which git hash of LLVM to find ' '{google3, ToT, } ' @@ -159,7 +157,7 @@ def AddReviewers(cl, reviewers, chroot_path): for reviewer in reviewers: cmd = [gerrit_abs_path, 'reviewers', str(cl), reviewer] - ExecCommandAndCaptureOutput(cmd) + subprocess_helpers.ExecCommandAndCaptureOutput(cmd) def AddTryjobLinkToCL(tryjobs, cl, chroot_path): @@ -181,7 +179,7 @@ def AddTryjobLinkToCL(tryjobs, cl, chroot_path): str(cl), '\n'.join(tryjob_links) ] - ExecCommandAndCaptureOutput(add_message_cmd) + subprocess_helpers.ExecCommandAndCaptureOutput(add_message_cmd) # Testing with tryjobs @@ -254,7 +252,8 @@ def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path, tryjob_cmd = GetTryJobCommand(cl_number, extra_change_lists, options, cur_builder) - out = ChrootRunCommand(chroot_path, tryjob_cmd, verbose=verbose) + out = subprocess_helpers.ChrootRunCommand( + chroot_path, tryjob_cmd, verbose=verbose) tryjob_launch_time = GetCurrentTimeInUTC() @@ -300,7 +299,7 @@ def StartCQDryRun(cl, dependent_cls, chroot_path): for changes in cl_list: cq_dry_run_cmd = [gerrit_abs_path, 'label-cq', str(changes), '1'] - ExecCommandAndCaptureOutput(cq_dry_run_cmd) + subprocess_helpers.ExecCommandAndCaptureOutput(cq_dry_run_cmd) def main(): @@ -310,7 +309,7 @@ def main(): AssertionError: The script was run inside the chroot. """ - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = GetCommandLineArgs() @@ -323,7 +322,8 @@ def main(): svn_option = args_output.llvm_version - git_hash, svn_version = GetLLVMHashAndVersionFromSVNOption(svn_option) + git_hash, svn_version = get_llvm_hash.GetLLVMHashAndVersionFromSVNOption( + svn_option) # There is no need to run tryjobs when all the key parameters remain unchanged # from last time. @@ -331,8 +331,8 @@ def main(): # If --last_tested is specified, check if the current run has the same # arguments last time --last_tested is used. if args_output.last_tested: - chroot_file_paths = update_chromeos_llvm_hash.GetChrootBuildPaths( - args_output.chroot_path, update_packages) + chroot_file_paths = chroot.GetChrootEbuildPaths(args_output.chroot_path, + update_packages) arg_dict = { 'svn_version': svn_version, 'ebuilds': chroot_file_paths, @@ -361,7 +361,7 @@ def main(): svn_version, args_output.chroot_path, patch_metadata_file, - FailureModes.DISABLE_PATCHES, + failure_modes.FailureModes.DISABLE_PATCHES, svn_option, extra_commit_msg=extra_commit_msg) diff --git a/llvm_tools/update_packages_and_run_tests_unittest.py b/llvm_tools/update_packages_and_run_tests_unittest.py index 721b995f..70ecfffe 100755 --- a/llvm_tools/update_packages_and_run_tests_unittest.py +++ b/llvm_tools/update_packages_and_run_tests_unittest.py @@ -12,9 +12,11 @@ import json import unittest import unittest.mock as mock -from test_helpers import ArgsOutputTest -from test_helpers import CreateTemporaryFile -from update_chromeos_llvm_hash import CommitContents +import chroot +import get_llvm_hash +import git +import subprocess_helpers +import test_helpers import update_chromeos_llvm_hash import update_packages_and_run_tests @@ -28,7 +30,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): update_packages_and_run_tests.UnchangedSinceLastRun(None, {}), False) def testEmptyLastTestedFile(self): - with CreateTemporaryFile() as temp_file: + with test_helpers.CreateTemporaryFile() as temp_file: self.assertEqual( update_packages_and_run_tests.UnchangedSinceLastRun(temp_file, {}), False) @@ -42,7 +44,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): '/some/file/that/does/not/exist.txt', {}), False) def testMatchedLastTestedFile(self): - with CreateTemporaryFile() as last_tested_file: + with test_helpers.CreateTemporaryFile() as last_tested_file: arg_dict = { 'svn_version': 1234, @@ -112,7 +114,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): 'GetCurrentTimeInUTC', return_value='2019-09-09') @mock.patch.object(update_packages_and_run_tests, 'AddTryjobLinkToCL') - @mock.patch.object(update_packages_and_run_tests, 'ChrootRunCommand') + @mock.patch.object(subprocess_helpers, 'ChrootRunCommand') def testSuccessfullySubmittedTryJob( self, mock_chroot_cmd, mock_add_tryjob_link_to_cl, mock_launch_time): @@ -157,9 +159,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): mock_add_tryjob_link_to_cl.assert_called_once() @mock.patch.object( - update_packages_and_run_tests, - 'ExecCommandAndCaptureOutput', - return_value=None) + subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) def testSuccessfullyAddedTryjobLinkToCL(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' @@ -181,11 +181,9 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): @mock.patch.object(update_packages_and_run_tests, 'RunTryJobs') @mock.patch.object(update_chromeos_llvm_hash, 'UpdatePackages') @mock.patch.object(update_packages_and_run_tests, 'GetCommandLineArgs') - @mock.patch.object(update_packages_and_run_tests, - 'GetLLVMHashAndVersionFromSVNOption') - @mock.patch.object( - update_packages_and_run_tests, 'VerifyOutsideChroot', return_value=True) - @mock.patch.object(update_chromeos_llvm_hash, 'GetChrootBuildPaths') + @mock.patch.object(get_llvm_hash, 'GetLLVMHashAndVersionFromSVNOption') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + @mock.patch.object(chroot, 'GetChrootEbuildPaths') def testUpdatedLastTestedFileWithNewTestedRevision( self, mock_get_chroot_build_paths, mock_outside_chroot, mock_get_hash_and_version, mock_get_commandline_args, @@ -193,7 +191,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): # Create a temporary file to simulate the last tested file that contains a # revision. - with CreateTemporaryFile() as last_tested_file: + with test_helpers.CreateTemporaryFile() as last_tested_file: builders = [ 'kevin-llvm-next-toolchain-tryjob', 'eve-llvm-next-toolchain-tryjob' ] @@ -216,7 +214,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): json.dump(arg_dict, f, indent=2) # Call with a changed LLVM svn version - args_output = ArgsOutputTest() + args_output = test_helpers.ArgsOutputTest() args_output.is_llvm_next = True args_output.extra_change_lists = extra_cls args_output.last_tested = last_tested_file @@ -232,7 +230,7 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): mock_get_hash_and_version.return_value = ('a123testhash2', 200) - mock_update_packages.return_value = CommitContents( + mock_update_packages.return_value = git.CommitContents( url='https://some_cl_url.com', cl_number=12345) mock_run_tryjobs.return_value = [{ @@ -283,9 +281,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( - update_packages_and_run_tests, - 'ExecCommandAndCaptureOutput', - return_value=None) + subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) def testStartCQDryRunNoDeps(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 @@ -304,9 +300,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( - update_packages_and_run_tests, - 'ExecCommandAndCaptureOutput', - return_value=None) + subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) # test with a single deps cl. def testStartCQDryRunSingleDep(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' @@ -333,9 +327,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( - update_packages_and_run_tests, - 'ExecCommandAndCaptureOutput', - return_value=None) + subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) def testStartCQDryRunMultipleDep(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 @@ -368,9 +360,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( - update_packages_and_run_tests, - 'ExecCommandAndCaptureOutput', - return_value=None) + subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) # test with no reviewers. def testAddReviewersNone(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' @@ -383,9 +373,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object( - update_packages_and_run_tests, - 'ExecCommandAndCaptureOutput', - return_value=None) + subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) # test with multiple reviewers. def testAddReviewersMultiple(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' diff --git a/llvm_tools/update_tryjob_status.py b/llvm_tools/update_tryjob_status.py index 38eab8e5..f1500364 100755 --- a/llvm_tools/update_tryjob_status.py +++ b/llvm_tools/update_tryjob_status.py @@ -15,7 +15,7 @@ import os import subprocess import sys -from assert_not_in_chroot import VerifyOutsideChroot +import chroot from subprocess_helpers import ChrootRunCommand from test_helpers import CreateTemporaryJsonFile @@ -310,7 +310,7 @@ def UpdateTryjobStatus(revision, set_status, status_file, chroot_path, def main(): """Updates the status of a tryjob.""" - VerifyOutsideChroot() + chroot.VerifyOutsideChroot() args_output = GetCommandLineArgs() -- cgit v1.2.3 From a5ec48569265998036527fcfeb94c1f9c1e314a3 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Thu, 16 Apr 2020 18:36:23 -0700 Subject: llvm_tools: cherry pick CLs in addition to LLVM Add support to cherrypick_cl module to cherry pick CLs for other packages in addition to LLVM. BUG=chromium:1057428 TEST=local tests. Change-Id: I8dfbb3d57032525dd19d0461f0943c370f987e17 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2154004 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- llvm_tools/cherrypick_cl.py | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py index 68a11a4c..0641c092 100755 --- a/llvm_tools/cherrypick_cl.py +++ b/llvm_tools/cherrypick_cl.py @@ -18,6 +18,7 @@ import shlex import subprocess import sys +import chroot import get_llvm_hash import git_llvm_rev @@ -58,18 +59,18 @@ def add_cherrypick(patches_json_path: str, patches_dir: str, os.rename(temp_file, patches_json_path) -def parse_ebuild_for_assignment(llvm_path: str, var_name: str) -> str: +def parse_ebuild_for_assignment(ebuild_path: str, var_name: str) -> str: # '_pre' filters the LLVM 9.0 ebuild, which we never want to target, from # this list. candidates = [ - x for x in os.listdir(llvm_path) - if x.endswith('.ebuild') and x.startswith('llvm') and '_pre' in x + x for x in os.listdir(ebuild_path) + if x.endswith('.ebuild') and '_pre' in x ] if not candidates: - raise ValueError('No LLVM ebuilds found under %r' % llvm_path) + raise ValueError('No ebuilds found under %r' % ebuild_path) - ebuild = os.path.join(llvm_path, max(candidates)) + ebuild = os.path.join(ebuild_path, max(candidates)) with open(ebuild, encoding='utf-8') as f: var_name_eq = var_name + '=' for orig_line in f: @@ -99,6 +100,7 @@ def resolve_llvm_ref(llvm_dir: str, sha: str) -> str: def main(): + chroot.VerifyOutsideChroot() logging.basicConfig( format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', level=logging.INFO, @@ -106,7 +108,10 @@ def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( - '--llvm', help='Path to sys-devel/llvm. Will autodetect if not provided.') + '--chroot_path', + default=os.path.join(os.path.expanduser('~'), 'chromiumos'), + help='the path to the chroot (default: %(default)s)') + parser.add_argument('--package', help='target package to apply the patch to.') parser.add_argument( '--start_sha', default='llvm-next', @@ -116,30 +121,27 @@ def main(): '--sha', help='LLVM git SHA. Either this or --sha must be specified.') args = parser.parse_args() - if args.llvm: - llvm = args.llvm - else: - my_dir = os.path.dirname(os.path.realpath(__file__)) - llvm = os.path.join( - my_dir, '../../../third_party/chromiumos-overlay/sys-devel/llvm') - if not os.path.isdir(llvm): - raise ValueError("Couldn't autodetect llvm") + symlink = chroot.GetChrootEbuildPaths(args.chroot_path, [args.package])[0] - llvm = os.path.realpath(llvm) + symlink = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path, + [symlink])[0] + symlink_dir = os.path.dirname(symlink) - patches_json_path = os.path.join(llvm, 'files/PATCHES.json') - relative_patches_dir = 'cherry' - patches_dir = os.path.join(llvm, 'files', relative_patches_dir) + patches_json_path = os.path.join(symlink_dir, 'files/PATCHES.json') + relative_patches_dir = '' + if 'llvm' in args.package: + relative_patches_dir = 'cherry' + patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) llvm_config = git_llvm_rev.LLVMConfig( remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) start_sha = args.start_sha if start_sha == 'llvm': - start_sha = parse_ebuild_for_assignment(llvm, 'LLVM_HASH') + start_sha = parse_ebuild_for_assignment(symlink_dir, 'LLVM_HASH') logging.info('Autodetected llvm hash == %s', start_sha) elif start_sha == 'llvm-next': - start_sha = parse_ebuild_for_assignment(llvm, 'LLVM_NEXT_HASH') + start_sha = parse_ebuild_for_assignment(symlink_dir, 'LLVM_NEXT_HASH') logging.info('Autodetected llvm-next hash == %s', start_sha) start_sha = resolve_llvm_ref(llvm_config.dir, start_sha) -- cgit v1.2.3 From 4cecf34338970ce2037570b647cbadc4beaf7cf1 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 20 Apr 2020 08:28:57 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R84-13020.8-1586770302 to R84-13020.16-1587375753 Change-Id: If9e7d2fefb87bcaed26b1898f52ce2d73c87eeb1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2156927 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 356ed2de..fc37a2e8 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R84-13020.8-1586770363" }, "chromeos-kernel-4_19": { - "name": "R84-13020.8-1586770302" + "name": "R84-13020.16-1587375753" } } \ No newline at end of file -- cgit v1.2.3 From 1c9a394babdc0ad4420b790fdd97ed3655c34229 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 20 Apr 2020 14:14:06 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R84-13020.8-1586770844 to R84-13020.16-1587375187 Change-Id: Ib81c54b19f434e752f7e7dda13cc3a3392a43b7a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2158065 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index fc37a2e8..11836ad1 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R84-13020.8-1586771110" }, "chromeos-kernel-3_18": { - "name": "R84-13020.8-1586770844" + "name": "R84-13020.16-1587375187" }, "chromeos-kernel-4_14": { "name": "R84-13020.8-1586770363" -- cgit v1.2.3 From 9d016531c6dd3822c5f8e17dd6f5b2c55345b24c Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 20 Apr 2020 20:31:56 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R84-13020.8-1586771110 to R84-13020.16-1587375315 Change-Id: If5710abd73452a9ffc88d1f879cc2bd49ae8c693 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2158372 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 11836ad1..4041c1a4 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R84-13020.8-1586771110" + "name": "R84-13020.16-1587375315" }, "chromeos-kernel-3_18": { "name": "R84-13020.16-1587375187" -- cgit v1.2.3 From 9c17d84bcb0f4465c611e1304cdfa7d1d47a8301 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 21 Apr 2020 02:05:13 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R84-13020.8-1586770363 to R84-13020.16-1587375990 Change-Id: I5ffc6077187750ff17e254f8caa55fdf91e323bf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2158836 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 4041c1a4..98e8b1c9 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R84-13020.16-1587375187" }, "chromeos-kernel-4_14": { - "name": "R84-13020.8-1586770363" + "name": "R84-13020.16-1587375990" }, "chromeos-kernel-4_19": { "name": "R84-13020.16-1587375753" -- cgit v1.2.3 From 089004cd44039fd9d57fab03093a0e3a9e5d9c10 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 20 Apr 2020 17:58:02 -0700 Subject: llvm_tot: add an option for recipe builders. Add an option to launch LLVM TOT builders with recipe builders to update_packages_and_run_tests.py. The builders launched will not run hwtests for now. BUG=chromium:1072063 TEST=local tests. Change-Id: I1c34090f2d2ea6d9b7efab0a0dccf795396c96d1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2157624 Tested-by: Jian Cai Reviewed-by: Manoj Gupta Reviewed-by: George Burgess --- llvm_tools/README.md | 10 +- llvm_tools/update_packages_and_run_tests.py | 170 +++++++++++++++------ .../update_packages_and_run_tests_unittest.py | 159 +++++++++++-------- 3 files changed, 220 insertions(+), 119 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index ce094e98..b0fbea5a 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -21,6 +21,8 @@ password)** This script is used for updating a package's LLVM hash (sys-devel/llvm, sys-libs/compiler-rt, sys-libs/libcxx, sys-libs/libcxxabi, and sys-libs/llvm-libunwind) and then run tests after updating the git hash. +There are three ways to test the change, including starting tryjobs, +recipe builders or using cq+1. An example when this script should be run is when certain boards would like to be tested with the updated `LLVM_NEXT_HASH`. @@ -56,15 +58,15 @@ $ ./update_packages_and_run_tests.py \ ``` Similarly as the previous example, but for updating `LLVM_NEXT_HASH` to -the git hash of revision 367622 and test with tryobs: +the git hash of revision 367622 and test with recipe builders: ``` $ ./update_packages_and_run_tests.py \ --is_llvm_next \ --llvm_version 367622 \ - tryjobs \ - --options nochromesdk latest-toolchain \ - --builders kevin-release-tryjob nocturne-release-tryjob + recipe \ + --options -nocanary \ + --builders chromeos/toolchain/kevin-llvm chromeos/toolchain/nocturne-llvm ``` ## `update_chromeos_llvm_hash.py` diff --git a/llvm_tools/update_packages_and_run_tests.py b/llvm_tools/update_packages_and_run_tests.py index 9fe4fe02..f47b5cda 100755 --- a/llvm_tools/update_packages_and_run_tests.py +++ b/llvm_tools/update_packages_and_run_tests.py @@ -12,11 +12,11 @@ import argparse import datetime import json import os +import subprocess import chroot import failure_modes import get_llvm_hash -import subprocess_helpers import update_chromeos_llvm_hash @@ -93,8 +93,10 @@ def GetCommandLineArgs(): '(default: %(default)s)') subparsers = parser.add_subparsers(dest='subparser_name') + subparser_names = [] # Testing with the tryjobs. tryjob_subparser = subparsers.add_parser('tryjobs') + subparser_names.append('tryjobs') tryjob_subparser.add_argument( '--builders', required=True, @@ -110,12 +112,29 @@ def GetCommandLineArgs(): default=[], help='options to use for the tryjob testing') + # Testing with the recipe builders + recipe_subparser = subparsers.add_parser('recipe') + subparser_names.append('recipe') + recipe_subparser.add_argument( + '--options', + required=False, + nargs='+', + default=[], + help='options passed to the recipe builders') + + recipe_subparser.add_argument( + '--builders', + required=True, + nargs='+', + default=[], + help='recipe builders to launch') + # Testing with CQ. subparsers.add_parser('cq') + subparser_names.append('cq') args_output = parser.parse_args() - subparser_names = ['tryjobs', 'cq'] if args_output.subparser_name not in subparser_names: parser.error('one of %s must be specified' % subparser_names) @@ -157,11 +176,11 @@ def AddReviewers(cl, reviewers, chroot_path): for reviewer in reviewers: cmd = [gerrit_abs_path, 'reviewers', str(cl), reviewer] - subprocess_helpers.ExecCommandAndCaptureOutput(cmd) + subprocess.check_output(cmd) -def AddTryjobLinkToCL(tryjobs, cl, chroot_path): - """Adds the tryjob link(s) to the CL as a comment.""" +def AddLinksToCL(tests, cl, chroot_path): + """Adds the test link(s) to the CL as a comment.""" # NOTE: Invoking `cros_sdk` does not make each tryjob link appear on its own # line, so invoking the `gerrit` command directly instead of using `cros_sdk` @@ -171,15 +190,12 @@ def AddTryjobLinkToCL(tryjobs, cl, chroot_path): # newline. gerrit_abs_path = os.path.join(chroot_path, 'chromite/bin/gerrit') - tryjob_links = ['Started the following tryjobs:'] - tryjob_links.extend(tryjob['link'] for tryjob in tryjobs) + links = ['Started the following tests:'] + links.extend(test['link'] for test in tests) - add_message_cmd = [ - gerrit_abs_path, 'message', - str(cl), '\n'.join(tryjob_links) - ] + add_message_cmd = [gerrit_abs_path, 'message', str(cl), '\n'.join(links)] - subprocess_helpers.ExecCommandAndCaptureOutput(add_message_cmd) + subprocess.check_output(add_message_cmd) # Testing with tryjobs @@ -209,16 +225,15 @@ def GetTryJobCommand(change_list, extra_change_lists, options, builder): for extra_cl in extra_change_lists: tryjob_cmd.extend(['-g', '%d' % extra_cl]) - tryjob_cmd.append(builder) - if options: tryjob_cmd.extend('--%s' % option for option in options) + tryjob_cmd.append(builder) + return tryjob_cmd -def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path, - verbose): +def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path): """Runs a tryjob/tryjobs. Args: @@ -228,7 +243,6 @@ def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path, options: Any options to be passed into the 'tryjob' command. builders: All the builders to run the 'tryjob' with. chroot_path: The absolute path to the chroot. - verbose: Print command contents to `stdout`. Returns: A list that contains stdout contents of each tryjob, where stdout is @@ -239,42 +253,91 @@ def RunTryJobs(cl_number, extra_change_lists, options, builders, chroot_path, ValueError: Failed to submit a tryjob. """ - # Contains the results of each tryjob. The results are retrieved from 'out' - # which is stdout of the command executer. - tryjob_results = [] + # Contains the results of each builder. + tests = [] - # For each builder passed into the command line: - # - # Run a tryjob with the change list number obtained from updating the + # Run tryjobs with the change list number obtained from updating the # packages and append additional changes lists and options obtained from the # command line. - for cur_builder in builders: - tryjob_cmd = GetTryJobCommand(cl_number, extra_change_lists, options, - cur_builder) + for builder in builders: + cmd = GetTryJobCommand(cl_number, extra_change_lists, options, builder) + + out = subprocess.check_output(cmd, cwd=chroot_path, encoding='utf-8') + + test_output = json.loads(out) + + tests.append({ + 'launch_time': str(GetCurrentTimeInUTC()), + 'link': str(test_output[0]['url']), + 'buildbucket_id': int(test_output[0]['buildbucket_id']), + 'extra_cls': extra_change_lists, + 'options': options, + 'builder': [builder] + }) - out = subprocess_helpers.ChrootRunCommand( - chroot_path, tryjob_cmd, verbose=verbose) + AddLinksToCL(tests, cl_number, chroot_path) - tryjob_launch_time = GetCurrentTimeInUTC() + return tests - tryjob_contents = json.loads(out) - buildbucket_id = int(tryjob_contents[0]['buildbucket_id']) +def StartRecipeBuilders(cl_number, extra_change_lists, options, builders, + chroot_path): + """Launch recipe builders. - new_tryjob = { - 'launch_time': str(tryjob_launch_time), - 'link': str(tryjob_contents[0]['url']), - 'buildbucket_id': buildbucket_id, + Args: + cl_number: The CL created by updating the packages. + extra_change_lists: Any extra change lists that would run alongside the CL + that was created by updating the packages ('cl_number'). + options: Any options to be passed into the 'tryjob' command. + builders: All the builders to run the 'tryjob' with. + chroot_path: The absolute path to the chroot. + + Returns: + A list that contains stdout contents of each builder, where stdout is + information (a hashmap) about the tryjob. The hashmap also contains stderr + if there was an error when running a tryjob. + + Raises: + ValueError: Failed to start a builder. + """ + + # Contains the results of each builder. + tests = [] + + # Launch a builders with the change list number obtained from updating the + # packages and append additional changes lists and options obtained from the + # command line. + for builder in builders: + cmd = ['bb', 'add', '-json'] + + if cl_number: + cmd.extend(['-cl', 'crrev.com/c/%d' % cl_number]) + + if extra_change_lists: + for cl in extra_change_lists: + cmd.extend(['-cl', 'crrev.com/c/%d' % cl]) + + if options: + cmd.extend(options) + + cmd.append(builder) + + out = subprocess.check_output(cmd, cwd=chroot_path, encoding='utf-8') + + test_output = json.loads(out) + + tests.append({ + 'launch_time': test_output['createTime'], + 'link': 'http://ci.chromium.org/b/%s' % test_output['id'], + 'buildbucket_id': test_output['id'], 'extra_cls': extra_change_lists, 'options': options, - 'builder': [cur_builder] - } - - tryjob_results.append(new_tryjob) + 'builder': [builder] + }) - AddTryjobLinkToCL(tryjob_results, cl_number, chroot_path) + AddLinksToCL(tests, cl_number, chroot_path) - return tryjob_results + return tests # Testing with CQ @@ -299,7 +362,7 @@ def StartCQDryRun(cl, dependent_cls, chroot_path): for changes in cl_list: cq_dry_run_cmd = [gerrit_abs_path, 'label-cq', str(changes), '1'] - subprocess_helpers.ExecCommandAndCaptureOutput(cq_dry_run_cmd) + subprocess.check_output(cq_dry_run_cmd) def main(): @@ -338,7 +401,7 @@ def main(): 'ebuilds': chroot_file_paths, 'extra_cls': args_output.extra_change_lists, } - if args_output.subparser_name == 'tryjobs': + if args_output.subparser_name in ('tryjobs', 'recipe'): arg_dict['builders'] = args_output.builders arg_dict['tryjob_options'] = args_output.options if UnchangedSinceLastRun(args_output.last_tested, arg_dict): @@ -373,13 +436,20 @@ def main(): print('Change list number: %d' % change_list.cl_number) if args_output.subparser_name == 'tryjobs': - tryjob_results = RunTryJobs(change_list.cl_number, - args_output.extra_change_lists, - args_output.options, args_output.builders, - args_output.chroot_path, args_output.verbose) - print('Tryjobs:') - for tryjob in tryjob_results: - print(tryjob) + tests = RunTryJobs(change_list.cl_number, args_output.extra_change_lists, + args_output.options, args_output.builders, + args_output.chroot_path) + print('Tests:') + for test in tests: + print(test) + elif args_output.subparser_name == 'recipe': + tests = StartRecipeBuilders( + change_list.cl_number, args_output.extra_change_lists, + args_output.options, args_output.builders, args_output.chroot_path) + print('Tests:') + for test in tests: + print(test) + else: StartCQDryRun(change_list.cl_number, args_output.extra_change_lists, args_output.chroot_path) diff --git a/llvm_tools/update_packages_and_run_tests_unittest.py b/llvm_tools/update_packages_and_run_tests_unittest.py index 70ecfffe..25a8f83c 100755 --- a/llvm_tools/update_packages_and_run_tests_unittest.py +++ b/llvm_tools/update_packages_and_run_tests_unittest.py @@ -9,13 +9,13 @@ from __future__ import print_function import json +import subprocess import unittest import unittest.mock as mock import chroot import get_llvm_hash import git -import subprocess_helpers import test_helpers import update_chromeos_llvm_hash import update_packages_and_run_tests @@ -68,112 +68,146 @@ class UpdatePackagesAndRunTryjobsTest(unittest.TestCase): last_tested_file, arg_dict), True) def testGetTryJobCommandWithNoExtraInformation(self): - test_change_list = 1234 + change_list = 1234 - test_builder = 'nocturne' + builder = 'nocturne' - expected_tryjob_cmd_list = [ + expected_cmd = [ 'cros', 'tryjob', '--yes', '--json', '-g', - '%d' % test_change_list, test_builder + '%d' % change_list, builder ] self.assertEqual( - update_packages_and_run_tests.GetTryJobCommand(test_change_list, None, - None, test_builder), - expected_tryjob_cmd_list) + update_packages_and_run_tests.GetTryJobCommand(change_list, None, None, + builder), expected_cmd) def testGetTryJobCommandWithExtraInformation(self): - test_change_list = 4321 - test_extra_cls = [1000, 10] - test_options = ['report_error', 'delete_tryjob'] - test_builder = 'kevin' + change_list = 4321 + extra_cls = [1000, 10] + options = ['option1', 'option2'] + builder = 'kevin' - expected_tryjob_cmd_list = [ + expected_cmd = [ 'cros', 'tryjob', '--yes', '--json', '-g', - '%d' % test_change_list, + '%d' % change_list, '-g', - '%d' % test_extra_cls[0], + '%d' % extra_cls[0], '-g', - '%d' % test_extra_cls[1], - test_builder, - '--%s' % test_options[0], - '--%s' % test_options[1], + '%d' % extra_cls[1], + '--%s' % options[0], + '--%s' % options[1], + builder, ] self.assertEqual( update_packages_and_run_tests.GetTryJobCommand( - test_change_list, test_extra_cls, test_options, test_builder), - expected_tryjob_cmd_list) + change_list, extra_cls, options, builder), expected_cmd) @mock.patch.object( update_packages_and_run_tests, 'GetCurrentTimeInUTC', return_value='2019-09-09') - @mock.patch.object(update_packages_and_run_tests, 'AddTryjobLinkToCL') - @mock.patch.object(subprocess_helpers, 'ChrootRunCommand') - def testSuccessfullySubmittedTryJob( - self, mock_chroot_cmd, mock_add_tryjob_link_to_cl, mock_launch_time): + @mock.patch.object(update_packages_and_run_tests, 'AddLinksToCL') + @mock.patch.object(subprocess, 'check_output') + def testSuccessfullySubmittedTryJob(self, mock_cmd, mock_add_links_to_cl, + mock_launch_time): - expected_tryjob_cmd_list = [ + expected_cmd = [ 'cros', 'tryjob', '--yes', '--json', '-g', '%d' % 900, '-g', - '%d' % 1200, 'builder1', '--some_option' + '%d' % 1200, '--some_option', 'builder1' ] - buildbucket_id = '1234' + bb_id = '1234' url = 'https://some_tryjob_url.com' - tryjob_launch_contents = [{'buildbucket_id': buildbucket_id, 'url': url}] + mock_cmd.return_value = json.dumps([{'buildbucket_id': bb_id, 'url': url}]) - mock_chroot_cmd.return_value = json.dumps(tryjob_launch_contents) - - extra_cls = [1200] - tryjob_options = ['some_option'] - builder_list = ['builder1'] chroot_path = '/some/path/to/chroot' - cl_to_launch_tryjob = 900 - verbose = False + cl = 900 + extra_cls = [1200] + options = ['some_option'] + builders = ['builder1'] - tryjob_results_list = update_packages_and_run_tests.RunTryJobs( - cl_to_launch_tryjob, extra_cls, tryjob_options, builder_list, - chroot_path, verbose) + tests = update_packages_and_run_tests.RunTryJobs(cl, extra_cls, options, + builders, chroot_path) - expected_tryjob_dict = { + expected_tests = [{ 'launch_time': mock_launch_time.return_value, 'link': url, - 'buildbucket_id': int(buildbucket_id), + 'buildbucket_id': int(bb_id), 'extra_cls': extra_cls, - 'options': tryjob_options, - 'builder': builder_list - } + 'options': options, + 'builder': builders + }] - self.assertEqual(tryjob_results_list, [expected_tryjob_dict]) + self.assertEqual(tests, expected_tests) - mock_chroot_cmd.assert_called_once_with( - chroot_path, expected_tryjob_cmd_list, verbose=False) + mock_cmd.assert_called_once_with( + expected_cmd, cwd=chroot_path, encoding='utf-8') - mock_add_tryjob_link_to_cl.assert_called_once() + mock_add_links_to_cl.assert_called_once() - @mock.patch.object( - subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) - def testSuccessfullyAddedTryjobLinkToCL(self, mock_exec_cmd): + @mock.patch.object(update_packages_and_run_tests, 'AddLinksToCL') + @mock.patch.object(subprocess, 'check_output') + def testSuccessfullySubmittedRecipeBuilders(self, mock_cmd, + mock_add_links_to_cl): + + expected_cmd = [ + 'bb', 'add', '-json', '-cl', + 'crrev.com/c/%s' % 900, '-cl', + 'crrev.com/c/%s' % 1200, 'some_option', 'builder1' + ] + + bb_id = '1234' + create_time = '2020-04-18T00:03:53.978767Z' + + mock_cmd.return_value = json.dumps({'id': bb_id, 'createTime': create_time}) + + chroot_path = '/some/path/to/chroot' + cl = 900 + extra_cls = [1200] + options = ['some_option'] + builders = ['builder1'] + + tests = update_packages_and_run_tests.StartRecipeBuilders( + cl, extra_cls, options, builders, chroot_path) + + expected_tests = [{ + 'launch_time': create_time, + 'link': 'http://ci.chromium.org/b/%s' % bb_id, + 'buildbucket_id': bb_id, + 'extra_cls': extra_cls, + 'options': options, + 'builder': builders + }] + + self.assertEqual(tests, expected_tests) + + mock_cmd.assert_called_once_with( + expected_cmd, cwd=chroot_path, encoding='utf-8') + + mock_add_links_to_cl.assert_called_once() + + @mock.patch.object(subprocess, 'check_output', return_value=None) + def testSuccessfullyAddedTestLinkToCL(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 - tryjob_result = [{'link': 'https://some_tryjob_link.com'}] + tests = [{'link': 'https://some_tryjob_link.com'}] - update_packages_and_run_tests.AddTryjobLinkToCL(tryjob_result, - test_cl_number, chroot_path) + update_packages_and_run_tests.AddLinksToCL(tests, test_cl_number, + chroot_path) expected_gerrit_message = [ '%s/chromite/bin/gerrit' % chroot_path, 'message', str(test_cl_number), - 'Started the following tryjobs:\n%s' % tryjob_result[0]['link'] + 'Started the following tests:\n%s' % tests[0]['link'] ] mock_exec_cmd.assert_called_once_with(expected_gerrit_message) @@ -280,8 +314,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): '\nCq-Depend: chromium:1234, chromium:5678') # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testStartCQDryRunNoDeps(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 @@ -299,8 +332,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): mock_exec_cmd.assert_called_once_with(expected_gerrit_message) # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) # test with a single deps cl. def testStartCQDryRunSingleDep(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' @@ -326,8 +358,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): mock.call(expected_gerrit_cmd_2)) # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testStartCQDryRunMultipleDep(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' test_cl_number = 1000 @@ -359,8 +390,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): mock.call(expected_gerrit_cmd_3)) # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) # test with no reviewers. def testAddReviewersNone(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' @@ -372,8 +402,7 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): self.assertTrue(mock_exec_cmd.not_called) # Mock ExecCommandAndCaptureOutput for the gerrit command execution. - @mock.patch.object( - subprocess_helpers, 'ExecCommandAndCaptureOutput', return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) # test with multiple reviewers. def testAddReviewersMultiple(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' -- cgit v1.2.3 From 3b2358092e00ab7904a873b516ac6aac832c2277 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Wed, 22 Apr 2020 14:07:55 -0700 Subject: wrapper: Temporarily disable -Wmax-tokens As reported in crbug.com/1072209, -Wmax-tokens is causing latest chrome fail to build. While we are blocked by Chrome uprevs, we want to update the compiler by disabling the warning, until it's fixed properly on upstream Chrome. BUG=chromium:1072209 TEST=Local testing in CrOS Change-Id: I082dd342a802e80250d0fca7c4b15afb4e972e7e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2161770 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- compiler_wrapper/config.go | 2 ++ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../cros_hardened_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/clang_specific_args.json | 7 +++++++ .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../testdata/cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_noccache_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ 21 files changed, 137 insertions(+) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index fc43a29b..79cccbbc 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -120,6 +120,7 @@ var crosHardenedConfig = &config{ // Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742. // Pass "-fcommon" till the packages are fixed to work with new clang default // "-fno-common", crbug.com/1060413. + // Temporary/Backup solutions to roll compiler to r387436. FIXME(tcwang): Remove after crbug.com/1072209 is fixed. clangFlags: []string{ "-Qunused-arguments", "-grecord-gcc-switches", @@ -133,6 +134,7 @@ var crosHardenedConfig = &config{ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 5b95cdb7..aa1e7e07 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,6 +38,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index aa083d70..c827dcde 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,6 +29,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -131,6 +133,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -182,6 +185,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -284,6 +289,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -386,6 +393,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -437,6 +445,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 257c0a05..49528627 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,6 +78,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -126,6 +128,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -175,6 +178,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,6 +228,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -273,6 +278,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -322,6 +328,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,6 +378,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +428,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index b9edc49d..5ebe0831 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 2d70dfbf..cc287b09 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,6 +30,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,6 +82,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -183,6 +186,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -285,6 +290,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -337,6 +343,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -387,6 +394,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 50f71a6f..dbb47c62 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,6 +39,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,6 +90,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -140,6 +142,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -191,6 +194,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -242,6 +246,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -293,6 +298,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -344,6 +350,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index b690e3ed..6787aab0 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,6 +63,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,6 +116,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,6 +162,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -208,6 +211,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -257,6 +261,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -305,6 +310,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index 26abab87..f165726b 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 61a63a37..939faee5 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index a37725c0..bbabfcc4 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 5b95cdb7..aa1e7e07 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index b9edc49d..5ebe0831 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 26abab87..f165726b 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 61a63a37..939faee5 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index a37725c0..bbabfcc4 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index e9bc3661..58db33a5 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,6 +37,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,6 +95,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -154,6 +156,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index c21d6198..489dccd4 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,6 +27,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -119,6 +121,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,6 +168,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,6 +222,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,6 +282,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -383,6 +390,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,6 +434,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +478,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -512,6 +522,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -558,6 +569,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index 26abab87..f165726b 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index ce35f311..d420c204 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,6 +30,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,6 +77,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -108,6 +110,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -158,6 +161,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -190,6 +194,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index f716dde3..f514fae6 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,6 +97,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +166,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -216,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", -- cgit v1.2.3 From c3671eecda39df9d6bbb6bda9157de5edf118b02 Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Tue, 21 Apr 2020 18:11:36 -0700 Subject: crosperf: add support to run tast benchmarks Crosperf used to only support autotest server/client tests, and was limiting us from running and collecting tast benchmarks. This patch introduces a simple support for crosperf to run tast. Note that currently we do not support passing arguments or running tast with local changes. It basically launches `tast run ` and collects chart json result and parses it. BUG=chromium:1071937 TEST=tested with tast.platform.ReportDiskUsage Change-Id: I1980a48c4ca8e02548e5313d32b8c5ddcf5e3e60 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2160128 Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang Auto-Submit: Zhizhou Yang Reviewed-by: George Burgess --- cros_utils/tabulator.py | 2 +- crosperf/default-telemetry-results.json | 3 ++ crosperf/results_cache.py | 5 ++- crosperf/suite_runner.py | 27 ++++++++++++-- crosperf/suite_runner_unittest.py | 62 ++++++++++++++++++++++++++------- 5 files changed, 82 insertions(+), 17 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 3d5f2aed..2cf4ffd7 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -709,7 +709,7 @@ class KeyAwareComparisonResult(ComparisonResult): 'dropped_percent', '(ms)', '(seconds)', '--ms', '--average_num_missing_tiles', '--experimental_jank', '--experimental_mean_frame', '--experimental_median_frame_time', - '--total_deferred_image_decode_count', '--seconds', 'samples' + '--total_deferred_image_decode_count', '--seconds', 'samples', 'bytes' ] return any([l in key for l in lower_is_better_keys]) diff --git a/crosperf/default-telemetry-results.json b/crosperf/default-telemetry-results.json index c4fe0d44..3dd22f86 100644 --- a/crosperf/default-telemetry-results.json +++ b/crosperf/default-telemetry-results.json @@ -169,5 +169,8 @@ "rendering.desktop@@aquarium_20k$": [ "avg_surface_fps", "exp_avg_surface_fps" + ], + "platform.ReportDiskUsage": [ + "bytes_rootfs_prod__summary" ] } diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index a7fd4169..85c3c6e3 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -268,7 +268,10 @@ class Result(object): return [samples, u'samples'] def GetResultsDir(self): - mo = re.search(r'Results placed in (\S+)', self.out) + if self.suite == 'tast': + mo = re.search(r'Writing results to (\S+)', self.out) + else: + mo = re.search(r'Results placed in (\S+)', self.out) if mo: result = mo.group(1) return result diff --git a/crosperf/suite_runner.py b/crosperf/suite_runner.py index 62a85cc6..17e1ad73 100644 --- a/crosperf/suite_runner.py +++ b/crosperf/suite_runner.py @@ -17,7 +17,7 @@ import time from cros_utils import command_executer TEST_THAT_PATH = '/usr/bin/test_that' -# TODO: Need to check whether Skylab is installed and set up correctly. +TAST_PATH = '/usr/bin/tast' SKYLAB_PATH = '/usr/local/bin/skylab' GS_UTIL = 'src/chromium/depot_tools/gsutil.py' AUTOTEST_DIR = '/mnt/host/source/src/third_party/autotest/files' @@ -78,8 +78,11 @@ class SuiteRunner(object): if label.skylab: ret_tup = self.Skylab_Run(label, benchmark, test_args, profiler_args) else: - ret_tup = self.Test_That_Run(machine_name, label, benchmark, test_args, - profiler_args) + if benchmark.suite == 'tast': + ret_tup = self.Tast_Run(machine_name, label, benchmark) + else: + ret_tup = self.Test_That_Run(machine_name, 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)) @@ -127,6 +130,24 @@ class SuiteRunner(object): return args_list + # TODO(zhizhouy): Currently do not support passing arguments or running + # customized tast tests, as we do not have such requirements. + def Tast_Run(self, machine, label, benchmark): + # Remove existing tast results + command = 'rm -rf /usr/local/autotest/results/*' + self._ce.CrosRunCommand( + command, machine=machine, chromeos_root=label.chromeos_root) + + command = ' '.join( + [TAST_PATH, 'run', '-build=False', machine, benchmark.test_name]) + + if self.log_level != 'verbose': + self.logger.LogOutput('Running test.') + self.logger.LogOutput('CMD: %s' % command) + + return self._ce.ChrootRunCommandWOutput( + label.chromeos_root, command, command_terminator=self._ct) + def Test_That_Run(self, machine, label, benchmark, test_args, profiler_args): """Run the test_that test..""" diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index 73fcb45b..86e1ef19 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -26,8 +26,6 @@ from machine_manager import MockCrosMachine class SuiteRunnerTest(unittest.TestCase): """Class of SuiteRunner test.""" - real_logger = logger.GetLogger() - mock_json = mock.Mock(spec=json) mock_cmd_exec = mock.Mock(spec=command_executer.CommandExecuter) mock_cmd_term = mock.Mock(spec=command_executer.CommandTerminator) @@ -55,12 +53,23 @@ class SuiteRunnerTest(unittest.TestCase): '', # perf_args 'crosperf_Wrapper') # suite + tast_bench = Benchmark( + 'b3_test', # name + 'platform.ReportDiskUsage', # test_name + '', # test_args + 1, # iterations + False, # rm_chroot_tmp + '', # perf_args + 'tast') # suite + def __init__(self, *args, **kwargs): super(SuiteRunnerTest, self).__init__(*args, **kwargs) self.skylab_run_args = [] self.test_that_args = [] + self.tast_args = [] self.call_skylab_run = False self.call_test_that_run = False + self.call_tast_run = False def setUp(self): self.runner = suite_runner.SuiteRunner( @@ -90,8 +99,10 @@ class SuiteRunnerTest(unittest.TestCase): def reset(): self.test_that_args = [] self.skylab_run_args = [] + self.tast_args = [] self.call_test_that_run = False self.call_skylab_run = False + self.call_tast_run = False def FakeSkylabRun(test_label, benchmark, test_args, profiler_args): self.skylab_run_args = [test_label, benchmark, test_args, profiler_args] @@ -106,8 +117,14 @@ class SuiteRunnerTest(unittest.TestCase): self.call_test_that_run = True return 'Ran FakeTestThatRun' + def FakeTastRun(machine, test_label, benchmark): + self.tast_args = [machine, test_label, benchmark] + self.call_tast_run = True + return 'Ran FakeTastRun' + self.runner.Skylab_Run = FakeSkylabRun self.runner.Test_That_Run = FakeTestThatRun + self.runner.Tast_Run = FakeTastRun self.runner.dut_config['enable_aslr'] = False self.runner.dut_config['cooldown_time'] = 0 @@ -158,6 +175,15 @@ class SuiteRunnerTest(unittest.TestCase): 'fake_machine', self.mock_label, self.telemetry_crosperf_bench, '', '' ]) + # Test tast run for tast benchmarks. + reset() + self.runner.Run(cros_machine, self.mock_label, self.tast_bench, '', '') + self.assertTrue(self.call_tast_run) + self.assertFalse(self.call_test_that_run) + self.assertFalse(self.call_skylab_run) + self.assertEqual(self.tast_args, + ['fake_machine', self.mock_label, self.tast_bench]) + def test_gen_test_args(self): test_args = '--iterations=2' perf_args = 'record -a -e cycles' @@ -180,16 +206,29 @@ class SuiteRunnerTest(unittest.TestCase): @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 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 + def test_tast_run(self, mock_chroot_runcmd, mock_cros_runcmd): + 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.Tast_Run('lumpy1.cros', self.mock_label, self.tast_bench) + 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_dict['command_terminator'], self.mock_cmd_term) + @mock.patch.object(command_executer.CommandExecuter, 'CrosRunCommand') + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + @mock.patch.object(logger.Logger, 'LogFatal') + def test_test_that_run(self, mock_log_fatal, mock_chroot_runcmd, + mock_cros_runcmd): + mock_log_fatal.side_effect = SystemExit() + self.runner.logger.LogFatal = mock_log_fatal # Test crosperf_Wrapper benchmarks cannot take perf_args raised_exception = False try: @@ -215,7 +254,6 @@ class SuiteRunnerTest(unittest.TestCase): args_dict = mock_chroot_runcmd.call_args_list[0][1] self.assertEqual(len(args_list), 2) self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term) - self.real_logger.LogMsg = save_log_msg @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput') @mock.patch.object(json, 'loads') -- cgit v1.2.3 From bafb8db2d79ba1a6000bc68c19e4e3dabe28c8fe Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Thu, 23 Apr 2020 11:58:14 -0700 Subject: llvm_tools: Add --cq_trybot option to specify cq trybots using cq The users now can specify one of {llvm,llvm-next,llvm-tot} when using cq to run the tests with this patch. Invalid cq trybots will be denied. BUG=chromium:1072063 TEST=Unittest pass TEST=crrev.com/c/2163157 Change-Id: Ib1f57267a2e37ebe0e71042e8b24cb2281380f3c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2163257 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- llvm_tools/update_packages_and_run_tests.py | 33 ++++++++++++++++++++-- .../update_packages_and_run_tests_unittest.py | 24 ++++++++++++++-- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/llvm_tools/update_packages_and_run_tests.py b/llvm_tools/update_packages_and_run_tests.py index f47b5cda..b54ba651 100755 --- a/llvm_tools/update_packages_and_run_tests.py +++ b/llvm_tools/update_packages_and_run_tests.py @@ -19,6 +19,8 @@ import failure_modes import get_llvm_hash import update_chromeos_llvm_hash +VALID_CQ_TRYBOTS = ['llvm', 'llvm-next', 'llvm-tot'] + def GetCommandLineArgs(): """Parses the command line for the command line arguments. @@ -130,9 +132,17 @@ def GetCommandLineArgs(): help='recipe builders to launch') # Testing with CQ. - subparsers.add_parser('cq') + cq_subparser = subparsers.add_parser('cq') subparser_names.append('cq') + # Add argument for specify a cq trybot to test along with other cq builders + # e.g. llvm, llvm-next or llvm-tot + cq_subparser.add_argument( + '--cq_trybot', + choices=VALID_CQ_TRYBOTS, + help='include the trybot to test together with other cq builders ' + 'available: %(choices)s') + args_output = parser.parse_args() if args_output.subparser_name not in subparser_names: @@ -351,6 +361,20 @@ def GetCQDependString(dependent_cls): return '\nCq-Depend: ' + ', '.join(('chromium:%s' % i) for i in dependent_cls) +def GetCQIncludeTrybotsString(trybot): + """Get Cq-Include-Trybots string, for more llvm testings""" + + if not trybot: + return None + + if trybot not in VALID_CQ_TRYBOTS: + raise ValueError('%s is not a valid llvm trybot' % trybot) + + # Cq-Include-Trybots must start a new paragraph prefixed + # with "Cq-Include-Trybots". + return '\nCq-Include-Trybots:chromeos/cq:cq-%s-orchestrator' % trybot + + def StartCQDryRun(cl, dependent_cls, chroot_path): """Start CQ dry run for the changelist and dependencies.""" @@ -415,7 +439,12 @@ def main(): update_chromeos_llvm_hash.verbose = args_output.verbose extra_commit_msg = None if args_output.subparser_name == 'cq': - extra_commit_msg = GetCQDependString(args_output.extra_change_lists) + cq_depend_msg = GetCQDependString(args_output.extra_change_lists) + if cq_depend_msg: + extra_commit_msg = cq_depend_msg + cq_trybot_msg = GetCQIncludeTrybotsString(args_output.cq_trybot) + if cq_trybot_msg: + extra_commit_msg += cq_trybot_msg change_list = update_chromeos_llvm_hash.UpdatePackages( update_packages, diff --git a/llvm_tools/update_packages_and_run_tests_unittest.py b/llvm_tools/update_packages_and_run_tests_unittest.py index 25a8f83c..a4e92421 100755 --- a/llvm_tools/update_packages_and_run_tests_unittest.py +++ b/llvm_tools/update_packages_and_run_tests_unittest.py @@ -300,9 +300,8 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): test_single_changelist = [1234] test_multiple_changelists = [1234, 5678] - self.assertEqual( - update_packages_and_run_tests.GetCQDependString(test_no_changelists), - None) + self.assertIsNone( + update_packages_and_run_tests.GetCQDependString(test_no_changelists)) self.assertEqual( update_packages_and_run_tests.GetCQDependString(test_single_changelist), @@ -313,6 +312,25 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): test_multiple_changelists), '\nCq-Depend: chromium:1234, chromium:5678') + def testGetCQIncludeTrybotsString(self): + test_no_trybot = None + test_valid_trybot = 'llvm-next' + test_invalid_trybot = 'invalid-name' + + self.assertIsNone( + update_packages_and_run_tests.GetCQIncludeTrybotsString(test_no_trybot)) + + self.assertEqual( + update_packages_and_run_tests.GetCQIncludeTrybotsString( + test_valid_trybot), + '\nCq-Include-Trybots:chromeos/cq:cq-llvm-next-orchestrator') + + with self.assertRaises(ValueError) as context: + update_packages_and_run_tests.GetCQIncludeTrybotsString( + test_invalid_trybot) + + self.assertIn('is not a valid llvm trybot', str(context.exception)) + # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object(subprocess, 'check_output', return_value=None) def testStartCQDryRunNoDeps(self, mock_exec_cmd): -- cgit v1.2.3 From 21a2fc53ef20249592745d526ba4e72ed3f6d55e Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 27 Apr 2020 08:03:12 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.19. Update chromeos-kernel-4_19 from R84-13020.16-1587375753 to R84-13042.0-1587979951 Change-Id: I75b3eb82f85a311a63f0a2b8b4221b542a0448de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2168051 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 98e8b1c9..ade80c24 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -12,6 +12,6 @@ "name": "R84-13020.16-1587375990" }, "chromeos-kernel-4_19": { - "name": "R84-13020.16-1587375753" + "name": "R84-13042.0-1587979951" } } \ No newline at end of file -- cgit v1.2.3 From bc5f404878b73af55db315c1f7ae4e4ee4a3326a Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Apr 2020 02:12:05 -0700 Subject: cr-os: normalize out/ directories The descriptions we're emitting here include the name of the out/ directory that they reside in. Exposing this implementation detail is pretty awkward in general, so let's not do that. :) BUG=chromium:908661 TEST=unittests; ran locally Change-Id: Ib5a1cc66936fb6ab8677f64cd3e07a5e40141154 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2165511 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- cwp/cr-os/fetch_gn_descs.py | 41 ++++++++++++++++++++++++++++++++++------ cwp/cr-os/fetch_gn_descs_test.py | 28 ++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 7 deletions(-) diff --git a/cwp/cr-os/fetch_gn_descs.py b/cwp/cr-os/fetch_gn_descs.py index 5cfda2d2..60d331c5 100755 --- a/cwp/cr-os/fetch_gn_descs.py +++ b/cwp/cr-os/fetch_gn_descs.py @@ -31,6 +31,17 @@ import sys import tempfile +def _find_chromium_root(search_from): + """Finds the chromium root directory from `search_from`.""" + current = search_from + while current != '/': + if os.path.isfile(os.path.join(current, '.gclient')): + return current + current = os.path.dirname(current) + raise ValueError( + "%s doesn't appear to be a Chromium subdirectory" % search_from) + + def _create_gn_args_for(arch): """Creates a `gn args` listing for the given architecture.""" # FIXME(gbiv): is_chromeos_device = True would be nice to support, as well. @@ -90,18 +101,28 @@ def _run_gn_desc(in_dir, gn_args): return result -def _fix_result(gn_desc): +def _fix_result(rename_out, out_dir, chromium_root, gn_desc): """Performs postprocessing on `gn desc` JSON.""" result = {} + rel_out = '//' + os.path.relpath(out_dir, os.path.join(chromium_root, 'src')) + rename_out = rename_out if rename_out.endswith('/') else rename_out + '/' + + def fix_source_file(f): + if not f.startswith(rel_out): + return f + return rename_out + f[len(rel_out) + 1:] + for target, info in gn_desc.items(): sources = info.get('sources') configs = info.get('configs') - if sources and configs: - result[target] = { - 'configs': configs, - 'sources': sources, - } + if not sources or not configs: + continue + + result[target] = { + 'configs': configs, + 'sources': [fix_source_file(f) for f in sources], + } return result @@ -128,6 +149,11 @@ def main(args): required=True, help='Chromium out/ directory for us to use. This directory will ' 'be clobbered by this script.') + parser.add_argument( + '--rename_out', + default='//out', + help='Directory to rename files in --chromium_out_dir to. ' + 'Default: %(default)s') opts = parser.parse_args(args) logging.basicConfig( @@ -136,6 +162,7 @@ def main(args): ) arches = opts.arch + rename_out = opts.rename_out for arch in arches: if arch not in known_arches: parser.error( @@ -143,6 +170,7 @@ def main(args): results_file = os.path.realpath(opts.output) out_dir = os.path.realpath(opts.chromium_out_dir) + chromium_root = _find_chromium_root(out_dir) os.makedirs(out_dir, exist_ok=True) results = {} @@ -150,6 +178,7 @@ def main(args): logging.info('Getting `gn` desc for %s...', arch) results[arch] = _fix_result( + rename_out, out_dir, chromium_root, _run_gn_desc( in_dir=out_dir, gn_args=_create_gn_args_for(arch), diff --git a/cwp/cr-os/fetch_gn_descs_test.py b/cwp/cr-os/fetch_gn_descs_test.py index dafa0597..b6fc0eeb 100755 --- a/cwp/cr-os/fetch_gn_descs_test.py +++ b/cwp/cr-os/fetch_gn_descs_test.py @@ -47,7 +47,33 @@ class Test(unittest.TestCase): '//interesting:b': items['//interesting:b'], } - self.assertDictEqual(fetch_gn_descs._fix_result(items), expected_items) + self.assertDictEqual( + fetch_gn_descs._fix_result('/', '/', '/', items), expected_items) + + def test_fix_result_translates_paths_in_out_dir(self): + items = { + '//interesting:a': { + 'sources': ['//out_dir/foo', '//out_dir'], + 'configs': ['b'], + }, + } + + expected_items = { + '//interesting:a': { + 'sources': ['//out_translated/foo', '//out_translated/'], + 'configs': ['b'], + }, + } + + self.assertDictEqual( + fetch_gn_descs._fix_result( + rename_out='//out_translated', + out_dir='/chromium/src/out_dir', + chromium_root='/chromium', + gn_desc=items, + ), + expected_items, + ) def test_gn_desc_output_parsing_skips_pre_json_warnings(self): gn_desc = io.StringIO('\n'.join(( -- cgit v1.2.3 From 8fb65c1823cc09dd22fde668130f4027bebcf7f9 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Mon, 27 Apr 2020 20:27:12 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.4. Update chromeos-kernel-4_4 from R84-13020.16-1587375315 to R84-13042.0-1587980118 Change-Id: I35dff295e7289993777fefd826208e517fda850e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2169807 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index ade80c24..7460ca87 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,7 +3,7 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R84-13020.16-1587375315" + "name": "R84-13042.0-1587980118" }, "chromeos-kernel-3_18": { "name": "R84-13020.16-1587375187" -- cgit v1.2.3 From 738a6668fc6caebfa6003d81f525d25feea4d5a7 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 28 Apr 2020 02:57:23 -0700 Subject: afdo_metadata: Publish new profiles for kernel 4.14. Update chromeos-kernel-4_14 from R84-13020.16-1587375990 to R84-13042.0-1587980204 Change-Id: I0ebefbfff54c33ffc6cc9ff0fbc0e96e9bfaa705 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2170128 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 7460ca87..f97968ab 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -9,7 +9,7 @@ "name": "R84-13020.16-1587375187" }, "chromeos-kernel-4_14": { - "name": "R84-13020.16-1587375990" + "name": "R84-13042.0-1587980204" }, "chromeos-kernel-4_19": { "name": "R84-13042.0-1587979951" -- cgit v1.2.3 From b999ceb903e3f163818e045d8710d6fe487157e0 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 25 Apr 2020 15:04:21 -0700 Subject: llvm_tools: make an llvm_project module for tests I'd like to reuse these functions in an upcoming revert checker. This refactors them into their own module, so we don't have tests relying on tests. BUG=chromium:1046988 TEST=unittests Change-Id: I8766f03b3ee8b0cf5b0c128df0d0531aee5c0339 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2165512 Reviewed-by: Luis Lozano Tested-by: George Burgess --- llvm_tools/git_llvm_rev_test.py | 54 +++---------------------------------- llvm_tools/llvm_project.py | 59 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 50 deletions(-) create mode 100644 llvm_tools/llvm_project.py diff --git a/llvm_tools/git_llvm_rev_test.py b/llvm_tools/git_llvm_rev_test.py index c7d59b27..1e38f589 100755 --- a/llvm_tools/git_llvm_rev_test.py +++ b/llvm_tools/git_llvm_rev_test.py @@ -8,61 +8,15 @@ from __future__ import print_function -import datetime -import os -import subprocess -import sys import unittest -import get_llvm_hash import git_llvm_rev - - -def get_llvm_checkout() -> str: - my_dir = os.path.dirname(os.path.abspath(__file__)) - return os.path.join(my_dir, 'llvm-project-copy') - - -def ensure_llvm_project_up_to_date(): - checkout = get_llvm_checkout() - if not os.path.isdir(checkout): - print( - 'No llvm-project exists locally; syncing it. This takes a while.', - file=sys.stderr) - actual_checkout = get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools() - assert checkout == actual_checkout, '%s != %s' % (actual_checkout, checkout) - - commit_timestamp = git_llvm_rev.check_output( - ['git', 'log', '-n1', '--format=%ct', 'origin/master'], cwd=checkout) - - commit_time = datetime.datetime.fromtimestamp(int(commit_timestamp.strip())) - now = datetime.datetime.now() - - time_since_last_commit = now - commit_time - - # Arbitrary, but if it's been more than 2d since we've seen a commit, it's - # probably best to bring us up-to-date. - if time_since_last_commit <= datetime.timedelta(days=2): - return - - print( - '%d days have elapsed since the last commit to %s; auto-syncing' % - (time_since_last_commit.days, checkout), - file=sys.stderr) - - result = subprocess.run( - ['git', 'fetch', 'origin'], - cwd=checkout, - check=True, - ) - if result.returncode: - print( - 'Sync failed somehow; hoping that things are fresh enough, then...', - file=sys.stderr) +import llvm_project def get_llvm_config() -> git_llvm_rev.LLVMConfig: - return git_llvm_rev.LLVMConfig(dir=get_llvm_checkout(), remote='origin') + return git_llvm_rev.LLVMConfig( + dir=llvm_project.get_location(), remote='origin') class Test(unittest.TestCase): @@ -172,5 +126,5 @@ class Test(unittest.TestCase): # back to the base commit for. if __name__ == '__main__': - ensure_llvm_project_up_to_date() + llvm_project.ensure_up_to_date() unittest.main() diff --git a/llvm_tools/llvm_project.py b/llvm_tools/llvm_project.py new file mode 100644 index 00000000..c171370c --- /dev/null +++ b/llvm_tools/llvm_project.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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 for manipulating llvm-project-copy. Generally intended for tests.""" + +from __future__ import print_function + +import datetime +import os +import subprocess +import sys + +import get_llvm_hash + + +def get_location() -> str: + """Gets the absolute path for llvm-project-copy.""" + my_dir = os.path.dirname(os.path.abspath(__file__)) + return os.path.join(my_dir, 'llvm-project-copy') + + +def ensure_up_to_date(): + """Ensures that llvm-project-copy is checked out and semi-up-to-date.""" + + checkout = get_location() + if not os.path.isdir(checkout): + print( + 'No llvm-project exists locally; syncing it. This takes a while.', + file=sys.stderr) + actual_checkout = get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools() + assert checkout == actual_checkout, '%s != %s' % (actual_checkout, checkout) + + commit_timestamp = subprocess.check_output( + ['git', 'log', '-n1', '--format=%ct', 'origin/master'], + cwd=checkout, + encoding='utf-8') + + commit_time = datetime.datetime.fromtimestamp(int(commit_timestamp.strip())) + now = datetime.datetime.now() + + time_since_last_commit = now - commit_time + + # Arbitrary, but if it's been more than 2d since we've seen a commit, it's + # probably best to bring us up-to-date. + if time_since_last_commit <= datetime.timedelta(days=2): + return + + print( + '%d days have elapsed since the last commit to %s; auto-syncing' % + (time_since_last_commit.days, checkout), + file=sys.stderr) + + result = subprocess.run(['git', 'fetch', 'origin'], cwd=checkout) + if result.returncode: + print( + 'Sync failed somehow; hoping that things are fresh enough, then...', + file=sys.stderr) -- cgit v1.2.3 From 1324de51897326e383c620027ffd525c7b6c747f Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 25 Apr 2020 15:07:24 -0700 Subject: llvm_tools: add a revert checker This CL adds a revert checker script. The intent is to build on it for later automation, but it's also usable on its own. Please see the new docs for details on usage. BUG=chromium:1046988 TEST=unittests Change-Id: Ibc3ef1d2e3b5a3301366e971cacf53396a6ca2aa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2165513 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- llvm_tools/README.md | 23 ++++ llvm_tools/revert_checker.py | 241 ++++++++++++++++++++++++++++++++++++++ llvm_tools/revert_checker_test.py | 110 +++++++++++++++++ 3 files changed, 374 insertions(+) create mode 100755 llvm_tools/revert_checker.py create mode 100755 llvm_tools/revert_checker_test.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index b0fbea5a..58a7c3d6 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -511,3 +511,26 @@ Usage: It tries to autodetect a lot of things (e.g., sys-devel/llvm's path, the "start"/"end" revisions to set, etc.) For more information, please see the `--help` + +### `revert_checker.py` + +This script reports reverts which happen 'across' a certain LLVM commit. + +To clarify the meaning of 'across' with an example, if we had the following +commit history (where `a -> b` notes that `b` is a direct child of `a`): + +123abc -> 223abc -> 323abc -> 423abc -> 523abc + +And where 423abc is a revert of 223abc, this revert is considered to be 'across' +323abc. More generally, a revert A of a parent commit B is considered to be +'across' a commit C if C is a parent of A and B is a parent of C. + +Usage example: + +``` +./revert_checker.py -C llvm-project-copy 123abc 223abc 323abc +``` + +In the above example, the tool will scan all commits between 123abc and 223abc, +and all commits between 123abc and 323abc for reverts of commits which are +parents of 123abc. diff --git a/llvm_tools/revert_checker.py b/llvm_tools/revert_checker.py new file mode 100755 index 00000000..bb9182b0 --- /dev/null +++ b/llvm_tools/revert_checker.py @@ -0,0 +1,241 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Checks for reverts of commits across a given git commit. + +To clarify the meaning of 'across' with an example, if we had the following +commit history (where `a -> b` notes that `b` is a direct child of `a`): + +123abc -> 223abc -> 323abc -> 423abc -> 523abc + +And where 423abc is a revert of 223abc, this revert is considered to be 'across' +323abc. More generally, a revert A of a parent commit B is considered to be +'across' a commit C if C is a parent of A and B is a parent of C. + +Please note that revert detection in general is really difficult, since merge +conflicts/etc always introduce _some_ amount of fuzziness. This script just +uses a bundle of heuristics, and is bound to ignore / incorrectly flag some +reverts. The hope is that it'll easily catch the vast majority (>90%) of them, +though. +""" + +# pylint: disable=cros-logging-import + +from __future__ import print_function + +import argparse +import collections +import logging +import re +import subprocess +import sys +import typing as t + +# People are creative with their reverts, and heuristics are a bit difficult. +# Like 90% of of reverts have "This reverts commit ${full_sha}". +# Some lack that entirely, while others have many of them specified in ad-hoc +# ways, while others use short SHAs and whatever. +# +# The 90% case is trivial to handle (and 100% free + automatic). The extra 10% +# starts involving human intervention, which is probably not worth it for now. + + +def _try_parse_reverts_from_commit_message(commit_message: str) -> t.List[str]: + if not commit_message: + return [] + + results = re.findall(r'This reverts commit ([a-f0-9]{40})\b', commit_message) + + first_line = commit_message.splitlines()[0] + initial_revert = re.match(r'Revert ([a-f0-9]{6,}) "', first_line) + if initial_revert: + results.append(initial_revert.group(1)) + return results + + +def _stream_stdout(command: t.List[str]) -> t.Generator[str, None, None]: + with subprocess.Popen( + command, stdout=subprocess.PIPE, encoding='utf-8', errors='replace') as p: + yield from p.stdout + + +def _resolve_sha(git_dir: str, sha: str) -> str: + if len(sha) == 40: + return sha + + return subprocess.check_output( + ['git', '-C', git_dir, 'rev-parse', sha], + encoding='utf-8', + stderr=subprocess.DEVNULL, + ).strip() + + +_LogEntry = t.NamedTuple('_LogEntry', [ + ('sha', str), + ('commit_message', t.List[str]), +]) + + +def _log_stream(git_dir: str, root_sha: str, + end_at_sha: str) -> t.Iterable[_LogEntry]: + sep = 50 * '<>' + log_command = [ + 'git', + '-C', + git_dir, + 'log', + '^' + end_at_sha, + root_sha, + '--format=' + sep + '%n%H%n%B%n', + ] + + stdout_stream = iter(_stream_stdout(log_command)) + + # Find the next separator line. If there's nothing to log, it may not exist. + # It might not be the first line if git feels complainy. + found_commit_header = False + for line in stdout_stream: + if line.rstrip() == sep: + found_commit_header = True + break + + while found_commit_header: + # crbug.com/1041148 + # pylint: disable=stop-iteration-return + sha = next(stdout_stream, None) + assert sha is not None, 'git died?' + sha = sha.rstrip() + + commit_message = [] + + found_commit_header = False + for line in stdout_stream: + line = line.rstrip() + if line.rstrip() == sep: + found_commit_header = True + break + commit_message.append(line) + + yield _LogEntry(sha, '\n'.join(commit_message).rstrip()) + + +def _shas_between(git_dir: str, base_ref: str, + head_ref: str) -> t.Iterable[str]: + rev_list = [ + 'git', + '-C', + git_dir, + 'rev-list', + '--first-parent', + '%s..%s' % (base_ref, head_ref), + ] + return (x.strip() for x in _stream_stdout(rev_list)) + + +def _rev_parse(git_dir: str, ref: str) -> str: + result = subprocess.check_output( + ['git', '-C', git_dir, 'rev-parse', ref], + encoding='utf-8', + ).strip() + return t.cast(str, result) + + +Revert = t.NamedTuple('Revert', [ + ('sha', str), + ('reverted_sha', str), +]) + + +def find_common_parent_commit(git_dir: str, ref_a: str, ref_b: str) -> str: + return subprocess.check_output( + ['git', '-C', git_dir, 'merge-base', ref_a, ref_b], + encoding='utf-8', + ).strip() + + +def find_reverts(git_dir: str, across_ref: str, root: str) -> t.List[Revert]: + """Finds reverts across `across_ref` in `git_dir`, starting from `root`.""" + across_sha = _rev_parse(git_dir, across_ref) + root_sha = _rev_parse(git_dir, root) + + common_ancestor = find_common_parent_commit(git_dir, across_sha, root_sha) + if common_ancestor != across_sha: + raise ValueError("%s isn't an ancestor of %s (common ancestor: %s)" % + (across_sha, root_sha, common_ancestor)) + + intermediate_commits = set(_shas_between(git_dir, across_sha, root_sha)) + assert across_ref not in intermediate_commits + + logging.debug('%d commits appear between %s and %s', + len(intermediate_commits), across_sha, root_sha) + + all_reverts = [] + for sha, commit_message in _log_stream(git_dir, root_sha, across_sha): + reverts = _try_parse_reverts_from_commit_message(commit_message) + if not reverts: + continue + + resolved_reverts = sorted(set(_resolve_sha(git_dir, x) for x in reverts)) + for reverted_sha in resolved_reverts: + if reverted_sha in intermediate_commits: + logging.debug('Commit %s reverts %s, which happened after %s', sha, + reverted_sha, across_sha) + continue + + try: + object_type = subprocess.check_output( + ['git', '-C', git_dir, 'cat-file', '-t', reverted_sha], + encoding='utf-8', + stderr=subprocess.DEVNULL, + ).strip() + except subprocess.CalledProcessError: + logging.warning( + 'Failed to resolve reverted object %s (claimed to be reverted ' + 'by sha %s)', reverted_sha, sha) + continue + + if object_type == 'commit': + all_reverts.append(Revert(sha, reverted_sha)) + continue + + logging.error("%s claims to revert %s -- which isn't a commit -- %s", sha, + object_type, reverted_sha) + + return all_reverts + + +def main(args: t.List[str]) -> int: + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + 'base_ref', help='Git ref or sha to check for reverts around.') + parser.add_argument( + '-C', '--git_dir', default='.', help='Git directory to use.') + parser.add_argument( + 'root', nargs='+', help='Root(s) to search for commits from.') + parser.add_argument('--debug', action='store_true') + opts = parser.parse_args(args) + + logging.basicConfig( + format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', + level=logging.DEBUG if opts.debug else logging.INFO, + ) + + # `root`s can have related history, so we want to filter duplicate commits + # out. The overwhelmingly common case is also to have one root, and it's way + # easier to reason about output that comes in an order that's meaningful to + # git. + all_reverts = collections.OrderedDict() + for root in opts.root: + for revert in find_reverts(opts.git_dir, opts.base_ref, root): + all_reverts[revert] = None + + for revert in all_reverts.keys(): + print('%s claims to revert %s' % (revert.sha, revert.reverted_sha)) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/llvm_tools/revert_checker_test.py b/llvm_tools/revert_checker_test.py new file mode 100755 index 00000000..16b3c3f6 --- /dev/null +++ b/llvm_tools/revert_checker_test.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for revert_checker.""" + +from __future__ import print_function + +# pylint: disable=cros-logging-import +import logging +import unittest + +import llvm_project +import revert_checker + +# pylint: disable=protected-access + + +class _SilencingFilter(object): + """Silences all log messages. + + Also collects info about log messages that would've been emitted. + """ + + def __init__(self): + self.messages = [] + + def filter(self, record): + self.messages.append(record.getMessage()) + return 0 + + +class Test(unittest.TestCase): + """Tests for revert_checker.""" + + def silence_logging(self): + root = logging.getLogger() + filt = _SilencingFilter() + root.addFilter(filt) + self.addCleanup(root.removeFilter, filt) + return filt + + def test_known_log_stream(self): + start_sha = 'e241573d5972d34a323fa5c64774c4207340beb3' + end_sha = 'a7a37517751ffb0f5529011b4ba96e67fcb27510' + commits = [ + revert_checker._LogEntry( + 'e241573d5972d34a323fa5c64774c4207340beb3', '\n'.join(( + '[mlir] NFC: remove IntegerValueSet / MutableIntegerSet', + '', + 'Summary:', + '- these are unused and really not needed now given flat ' + 'affine', + ' constraints', + '', + 'Differential Revision: https://reviews.llvm.org/D75792', + ))), + revert_checker._LogEntry( + '97572fa6e9daecd648873496fd11f7d1e25a55f0', + '[NFC] use hasAnyOperatorName and hasAnyOverloadedOperatorName ' + 'functions in clang-tidy matchers', + ), + ] + + logs = list( + revert_checker._log_stream( + llvm_project.get_location(), + root_sha=start_sha, + end_at_sha=end_sha, + )) + self.assertEqual(commits, logs) + + def test_reverted_noncommit_object_is_a_nop(self): + log_filter = self.silence_logging() + # c9944df916e41b1014dff5f6f75d52297b48ecdc mentions reverting a non-commit + # object. It sits between the given base_ref and root. + reverts = revert_checker.find_reverts( + git_dir=llvm_project.get_location(), + across_ref='c9944df916e41b1014dff5f6f75d52297b48ecdc~', + root='c9944df916e41b1014dff5f6f75d52297b48ecdc') + self.assertEqual(reverts, []) + + complaint = ('Failed to resolve reverted object ' + 'edd18355be574122aaa9abf58c15d8c50fb085a1') + self.assertTrue( + any(x.startswith(complaint) for x in log_filter.messages), + log_filter.messages) + + def test_known_reverts_across_previous_llvm_next_rev(self): + # c9944df916e41b1014dff5f6f75d52297b48ecdc mentions reverting a non-commit + # object. It sits between the given base_ref and root. + reverts = revert_checker.find_reverts( + git_dir=llvm_project.get_location(), + across_ref='c47f971694be0159ffddfee8a75ae515eba91439', + root='9f981e9adf9c8d29bb80306daf08d2770263ade6') + self.assertEqual(reverts, [ + revert_checker.Revert( + sha='9f981e9adf9c8d29bb80306daf08d2770263ade6', + reverted_sha='4060016fce3e6a0b926ee9fc59e440a612d3a2ec'), + revert_checker.Revert( + sha='4e0fe038f438ae1679eae9e156e1f248595b2373', + reverted_sha='65b21282c710afe9c275778820c6e3c1cf46734b'), + ]) + + +if __name__ == '__main__': + llvm_project.ensure_up_to_date() + unittest.main() -- cgit v1.2.3 From 6acfe66ddbcd97bfd11d96781506b89dad34c2b2 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sun, 26 Apr 2020 13:34:21 -0700 Subject: llvm_tools: add a nightly revert checker This CL adds a script that uses our new revert checker bits to send nightly emails about newly-discovered reverts in LLVM. It should be directly usable from a crontab. BUG=chromium:1046988 TEST=unittests; a few dry-run emails Change-Id: I361d3e214c5d563e71cc4120b76b78e5b3e63f40 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2165514 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- llvm_tools/README.md | 14 ++ llvm_tools/nightly_revert_checker.py | 215 ++++++++++++++++++++++++++++++ llvm_tools/nightly_revert_checker_test.py | 104 +++++++++++++++ 3 files changed, 333 insertions(+) create mode 100755 llvm_tools/nightly_revert_checker.py create mode 100755 llvm_tools/nightly_revert_checker_test.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 58a7c3d6..9ede2eb5 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -534,3 +534,17 @@ Usage example: In the above example, the tool will scan all commits between 123abc and 223abc, and all commits between 123abc and 323abc for reverts of commits which are parents of 123abc. + +### `nightly_revert_checker.py` + +This is an automated wrapper around `revert_checker.py`. It checks to see if any +new reverts happened across toolchains that we're trying to ship since it was +last run. If so, it sends emails to appropriate groups. + +Usage example: +``` +PYTHONPATH=../ ./nightly_revert_checker.py \ + --state_file state.json \ + --llvm_dir llvm-project-copy \ + --chromeos_dir ../../../../ +``` diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py new file mode 100755 index 00000000..b7b87fad --- /dev/null +++ b/llvm_tools/nightly_revert_checker.py @@ -0,0 +1,215 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Checks for new reverts in LLVM on a nightly basis. + +If any reverts are found that were previously unknown, this fires off an email. +All LLVM SHAs to monitor are autodetected. +""" + +# pylint: disable=cros-logging-import + +from __future__ import print_function + +import argparse +import io +import json +import logging +import os +import pprint +import sys +import typing as t + +import cros_utils.email_sender as email_sender +import revert_checker + +State = t.Any + +# FIXME(gbiv): we probably want to have Android compat here, too. Should be +# easy to nab their testing version automatically with: +# git merge-base m/llvm-toolchain aosp/upstream-master + + +def _parse_llvm_ebuild_for_shas( + ebuild_file: io.TextIOWrapper) -> t.List[t.Tuple[str]]: + + def parse_ebuild_assignment(line: str) -> str: + no_comments = line.split('#')[0] + no_assign = no_comments.split('=', 1)[1].strip() + assert no_assign.startswith('"') and no_assign.endswith('"'), no_assign + return no_assign[1:-1] + + llvm_hash, llvm_next_hash = None, None + for line in ebuild_file: + if line.startswith('LLVM_HASH='): + llvm_hash = parse_ebuild_assignment(line) + if llvm_next_hash: + break + if line.startswith('LLVM_NEXT_HASH'): + llvm_next_hash = parse_ebuild_assignment(line) + if llvm_hash: + break + if not llvm_next_hash or not llvm_hash: + raise ValueError('Failed to detect SHAs for llvm/llvm_next. Got: ' + 'llvm=%s; llvm_next=%s' % (llvm_hash, llvm_next_hash)) + return [('llvm', llvm_hash), ('llvm-next', llvm_next_hash)] + + +def _find_interesting_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: + llvm_dir = os.path.join(chromeos_base, + 'src/third_party/chromiumos-overlay/sys-devel/llvm') + candidate_ebuilds = [ + os.path.join(llvm_dir, x) + for x in os.listdir(llvm_dir) + if '_pre' in x and not os.path.islink(os.path.join(llvm_dir, x)) + ] + + if len(candidate_ebuilds) != 1: + raise ValueError('Expected exactly one llvm ebuild candidate; got %s' % + pprint.pformat(candidate_ebuilds)) + + with open(candidate_ebuilds[0], encoding='utf-8') as f: + return _parse_llvm_ebuild_for_shas(f) + + +_Email = t.NamedTuple('_Email', [ + ('subject', str), + ('body', str), +]) + + +def _generate_revert_email( + friendly_name: str, sha: str, + new_reverts: t.List[revert_checker.Revert]) -> _Email: + email_lines = [ + 'It looks like there may be %s across %s (%s).' % ( + 'a new revert' if len(new_reverts) == 1 else 'new reverts', + friendly_name, + sha, + ), + '', + 'That is:' if len(new_reverts) == 1 else 'These are:', + ] + + for revert in sorted(new_reverts, key=lambda r: r.sha): + email_lines.append( + '\t- %s (appears to revert %s)' % (revert.sha, revert.reverted_sha)) + + email_lines.append('') + email_lines.append('PTAL and consider reverting them locally.') + return _Email( + subject='[revert-checker] new %s discovered across %s' % ( + 'revert' if len(new_reverts) == 1 else 'reverts', + friendly_name, + ), + body='\n'.join(email_lines), + ) + + +def _send_revert_email(email: _Email) -> None: + email_sender.EmailSender().SendX20Email( + subject=email.subject, + identifier='revert-checker', + well_known_recipients=['mage'], + direct_recipients=['gbiv@google.com'], + text_body=email.body) + + +def _write_state(state_file: str, new_state: State) -> None: + try: + tmp_file = state_file + '.new' + with open(tmp_file, 'w', encoding='utf-8') as f: + json.dump(new_state, f, sort_keys=True, indent=2, separators=(',', ': ')) + os.rename(tmp_file, state_file) + except: + try: + os.remove(tmp_file) + except FileNotFoundError: + pass + raise + + +def _read_state(state_file: str) -> State: + try: + with open(state_file) as f: + return json.load(f) + except FileNotFoundError: + logging.info('No state file found at %r; starting with an empty slate', + state_file) + return {} + + +def main(argv: t.List[str]) -> None: + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--state_file', required=True, help='File to store persistent state in.') + parser.add_argument( + '--llvm_dir', required=True, help='Up-to-date LLVM directory to use.') + parser.add_argument( + '--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.') + parser.add_argument( + '--dry_run', + action='store_true', + help='Print email contents, rather than sending them.') + parser.add_argument('--debug', action='store_true') + opts = parser.parse_args(argv) + + logging.basicConfig( + format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', + level=logging.DEBUG if opts.debug else logging.INFO, + ) + + state_file = opts.state_file + dry_run = opts.dry_run + + state = _read_state(state_file) + + interesting_shas = _find_interesting_shas(opts.chromeos_dir) + logging.info('Interesting SHAs were %r', interesting_shas) + + new_state: State = {} + revert_emails_to_send: t.List[t.Tuple[str, t.List[revert_checker + .Revert]]] = [] + for friendly_name, sha in interesting_shas: + logging.info('Finding reverts across %s (%s)', friendly_name, sha) + all_reverts = revert_checker.find_reverts( + opts.llvm_dir, sha, root='origin/master') + logging.info('Detected the following revert(s) across %s:\n%s', + friendly_name, pprint.pformat(all_reverts)) + + new_state[sha] = [r.sha for r in all_reverts] + + if sha not in state: + logging.info('SHA %s is new to me', sha) + existing_reverts = set() + else: + existing_reverts = set(state[sha]) + + new_reverts = [r for r in all_reverts if r.sha not in existing_reverts] + if not new_reverts: + logging.info('...All of which have been reported.') + continue + + revert_emails_to_send.append( + _generate_revert_email(friendly_name, sha, new_reverts)) + + # We want to be as free of obvious side-effects as possible in case something + # above breaks. Hence, send the email as late as possible. + for email in revert_emails_to_send: + if dry_run: + logging.info('Would send email:\nSubject: %s\nBody:\n%s\n', email.subject, + email.body) + else: + logging.info('Sending email with subject %r...', email.subject) + _send_revert_email(email) + logging.info('Email sent.') + + _write_state(state_file, new_state) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py new file mode 100755 index 00000000..81cfbd2c --- /dev/null +++ b/llvm_tools/nightly_revert_checker_test.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for nightly_revert_checker.""" + +from __future__ import print_function + +# pylint: disable=protected-access + +import io +import unittest + +import nightly_revert_checker +import revert_checker + + +class Test(unittest.TestCase): + """Tests for nightly_revert_checker.""" + + def test_email_rendering_works_for_singular_revert(self): + email = nightly_revert_checker._generate_revert_email( + friendly_name='${name}', + sha='${sha}', + new_reverts=[ + revert_checker.Revert( + sha='${revert_sha}', reverted_sha='${reverted_sha}') + ]) + + expected_email = nightly_revert_checker._Email( + subject='[revert-checker] new revert discovered across ${name}', + body='\n'.join(( + 'It looks like there may be a new revert across ${name} (${sha}).', + '', + 'That is:', + '\t- ${revert_sha} (appears to revert ${reverted_sha})', + '', + 'PTAL and consider reverting them locally.', + ))) + + self.assertEqual(email, expected_email) + + def test_email_rendering_works_for_multiple_reverts(self): + email = nightly_revert_checker._generate_revert_email( + friendly_name='${name}', + sha='${sha}', + new_reverts=[ + revert_checker.Revert( + sha='${revert_sha1}', reverted_sha='${reverted_sha1}'), + revert_checker.Revert( + sha='${revert_sha2}', reverted_sha='${reverted_sha2}'), + # Keep this out-of-order to check that we sort based on SHAs + revert_checker.Revert( + sha='${revert_sha0}', reverted_sha='${reverted_sha0}'), + ]) + + expected_email = nightly_revert_checker._Email( + subject='[revert-checker] new reverts discovered across ${name}', + body='\n'.join(( + 'It looks like there may be new reverts across ${name} (${sha}).', + '', + 'These are:', + '\t- ${revert_sha0} (appears to revert ${reverted_sha0})', + '\t- ${revert_sha1} (appears to revert ${reverted_sha1})', + '\t- ${revert_sha2} (appears to revert ${reverted_sha2})', + '', + 'PTAL and consider reverting them locally.', + ))) + + self.assertEqual(email, expected_email) + + def test_llvm_ebuild_parsing_appears_to_function(self): + llvm_ebuild = io.StringIO('\n'.join(( + 'foo', + '#LLVM_HASH="123"', + 'LLVM_HASH="123" # comment', + 'LLVM_NEXT_HASH="456"', + ))) + + shas = nightly_revert_checker._parse_llvm_ebuild_for_shas(llvm_ebuild) + self.assertEqual(shas, [ + ('llvm', '123'), + ('llvm-next', '456'), + ]) + + def test_llvm_ebuild_parsing_fails_if_both_hashes_arent_present(self): + bad_bodies = [ + '', + 'LLVM_HASH="123" # comment', + 'LLVM_NEXT_HASH="123" # comment', + 'LLVM_NEXT_HASH="123" # comment\n#LLVM_HASH="123"', + ] + + for bad in bad_bodies: + with self.assertRaises(ValueError) as e: + nightly_revert_checker._parse_llvm_ebuild_for_shas(io.StringIO(bad)) + + self.assertIn('Failed to detect SHAs', str(e.exception)) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 7b8508f497e3882a6cd3488878d7ee4ba4cf0c3a Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Apr 2020 14:36:05 -0700 Subject: cros_utils: import tiny_render + some (new) tests from google3 Purely plaintext emails are nice, but HTML can be way easier to deal with. `tiny_render` is a super simple way of being able to render text and HTML from the same structure, so we can send out descriptive emails accessible to people with various kinds of email clients. tiny_render was imported with slight modifications from //wireless/android/llvm/monitoring/commits/tiny_render.py . Tests are new. BUG=chromium:1046988 TEST=unittests Change-Id: Ic94064d0125d3e7655498c9c2b8501f1448420d6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2169009 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- cros_utils/tiny_render.py | 181 +++++++++++++++++++++++++++++++++++++++++ cros_utils/tiny_render_test.py | 177 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 358 insertions(+) create mode 100644 cros_utils/tiny_render.py create mode 100755 cros_utils/tiny_render_test.py diff --git a/cros_utils/tiny_render.py b/cros_utils/tiny_render.py new file mode 100644 index 00000000..629e7719 --- /dev/null +++ b/cros_utils/tiny_render.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""A super minimal module that allows rendering of readable text/html. + +Usage should be relatively straightforward. You wrap things you want to write +out in some of the nice types defined here, and then pass the result to one of +render_text_pieces/render_html_pieces. + +In HTML, the types should all nest nicely. In text, eh (nesting anything in +Bold is going to be pretty ugly, probably). + +Lists and tuples may be used to group different renderable elements. + +Example: + +render_text_pieces([ + Bold("Daily to-do list:"), + UnorderedList([ + "Write code", + "Go get lunch", + ["Fix ", Bold("some"), " of the bugs in the aforementioned code"], + [ + "Do one of the following:", + UnorderedList([ + "Nap", + "Round 2 of lunch", + ["Look at ", Link("https://google.com/?q=memes", "memes")], + ]), + ], + "What a rough day; time to go home", + ]), +]) + +Turns into + +**Daily to-do list:** + - Write code + - Go get lunch + - Fix **some** of the bugs in said code + - Do one of the following: + - Nap + - Round 2 of lunch + - Look at memes + - What a rough day; time to go home + +...And similarly in HTML, though with an actual link. + +The rendering functions should never mutate your input. +""" + +from __future__ import print_function + +import collections +import html +import typing as t + +Bold = collections.namedtuple('Bold', ['inner']) +LineBreak = collections.namedtuple('LineBreak', []) +Link = collections.namedtuple('Link', ['href', 'inner']) +UnorderedList = collections.namedtuple('UnorderedList', ['items']) +# Outputs different data depending on whether we're emitting text or HTML. +Switch = collections.namedtuple('Switch', ['text', 'html']) + +line_break = LineBreak() + +# Note that these build up their values in a funky way: they append to a list +# that ends up being fed to `''.join(into)`. This avoids quadratic string +# concatenation behavior. Probably doesn't matter, but I care. + +# Pieces are really a recursive type: +# Union[ +# Bold, +# LineBreak, +# Link, +# List[Piece], +# Tuple[...Piece], +# UnorderedList, +# str, +# ] +# +# It doesn't seem possible to have recursive types, so just go with Any. +Piece = t.Any # pylint: disable=invalid-name + + +def _render_text_pieces(piece: Piece, indent_level: int, + into: t.List[str]) -> None: + """Helper for |render_text_pieces|. Accumulates strs into |into|.""" + if isinstance(piece, LineBreak): + into.append('\n' + indent_level * ' ') + return + + if isinstance(piece, str): + into.append(piece) + return + + if isinstance(piece, Bold): + into.append('**') + _render_text_pieces(piece.inner, indent_level, into) + into.append('**') + return + + if isinstance(piece, Link): + # Don't even try; it's ugly more often than not. + _render_text_pieces(piece.inner, indent_level, into) + return + + if isinstance(piece, UnorderedList): + for p in piece.items: + _render_text_pieces([line_break, '- ', p], indent_level + 2, into) + return + + if isinstance(piece, Switch): + _render_text_pieces(piece.text, indent_level, into) + return + + if isinstance(piece, (list, tuple)): + for p in piece: + _render_text_pieces(p, indent_level, into) + return + + raise ValueError('Unknown piece type: %s' % type(piece)) + + +def render_text_pieces(piece: Piece) -> str: + """Renders the given Pieces into text.""" + into = [] + _render_text_pieces(piece, 0, into) + return ''.join(into) + + +def _render_html_pieces(piece: Piece, into: t.List[str]) -> None: + """Helper for |render_html_pieces|. Accumulates strs into |into|.""" + if piece is line_break: + into.append('
\n') + return + + if isinstance(piece, str): + into.append(html.escape(piece)) + return + + if isinstance(piece, Bold): + into.append('') + _render_html_pieces(piece.inner, into) + into.append('') + return + + if isinstance(piece, Link): + into.append('') + _render_html_pieces(piece.inner, into) + into.append('') + return + + if isinstance(piece, UnorderedList): + into.append('
    \n') + for p in piece.items: + into.append('
  • ') + _render_html_pieces(p, into) + into.append('
  • \n') + into.append('
\n') + return + + if isinstance(piece, Switch): + _render_html_pieces(piece.html, into) + return + + if isinstance(piece, (list, tuple)): + for p in piece: + _render_html_pieces(p, into) + return + + raise ValueError('Unknown piece type: %s' % type(piece)) + + +def render_html_pieces(piece: Piece) -> str: + """Renders the given Pieces into HTML.""" + into = [] + _render_html_pieces(piece, into) + return ''.join(into) diff --git a/cros_utils/tiny_render_test.py b/cros_utils/tiny_render_test.py new file mode 100755 index 00000000..114a1796 --- /dev/null +++ b/cros_utils/tiny_render_test.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for tiny_render.""" + +from __future__ import print_function + +import unittest + +import tiny_render + + +# Admittedly, the HTML generated by this isn't always _beautiful_ to read +# (especially with e.g., ordered lists). Since the intent is for the HTML to be +# shipped alongside the plain-text, the hope is that people won't have to +# subject themselves to reading the HTML often. :) +class Test(unittest.TestCase): + """Tests for tiny_render.""" + + def test_bold(self): + pieces = [ + tiny_render.Bold('hello'), + ', ', + tiny_render.Bold(['world', '!']), + ] + + self.assertEqual( + tiny_render.render_text_pieces(pieces), + '**hello**, **world!**', + ) + + self.assertEqual( + tiny_render.render_html_pieces(pieces), + 'hello, world!', + ) + + def test_line_break(self): + pieces = [ + 'hello', + tiny_render.line_break, + ['world', '!'], + ] + + self.assertEqual( + tiny_render.render_text_pieces(pieces), + 'hello\nworld!', + ) + + self.assertEqual( + tiny_render.render_html_pieces(pieces), + 'hello
\nworld!', + ) + + def test_linkification(self): + pieces = [ + 'hello ', + tiny_render.Link(href='https://google.com', inner='world!'), + ] + + self.assertEqual( + tiny_render.render_text_pieces(pieces), + 'hello world!', + ) + + self.assertEqual( + tiny_render.render_html_pieces(pieces), + 'hello world!', + ) + + def test_unordered_list(self): + pieces = [ + 'hello:', + tiny_render.UnorderedList([ + 'world', + 'w o r l d', + ]), + ] + + self.assertEqual( + tiny_render.render_text_pieces(pieces), + '\n'.join(( + 'hello:', + ' - world', + ' - w o r l d', + )), + ) + + self.assertEqual( + tiny_render.render_html_pieces(pieces), + '\n'.join(( + 'hello:
    ', + '
  • world
  • ', + '
  • w o r l d
  • ', + '
', + '', + )), + ) + + def test_nested_unordered_list(self): + pieces = [ + 'hello:', + tiny_render.UnorderedList([ + 'world', + ['and more:', tiny_render.UnorderedList(['w o r l d'])], + 'world2', + ]) + ] + + self.assertEqual( + tiny_render.render_text_pieces(pieces), + '\n'.join(( + 'hello:', + ' - world', + ' - and more:', + ' - w o r l d', + ' - world2', + )), + ) + + self.assertEqual( + tiny_render.render_html_pieces(pieces), + '\n'.join(( + 'hello:
    ', + '
  • world
  • ', + '
  • and more:
      ', + '
    • w o r l d
    • ', + '
    ', + '
  • ', + '
  • world2
  • ', + '
', + '', + )), + ) + + def test_switch(self): + pieces = ['hello ', tiny_render.Switch(text='text', html='html')] + self.assertEqual(tiny_render.render_text_pieces(pieces), 'hello text') + self.assertEqual(tiny_render.render_html_pieces(pieces), 'hello html') + + def test_golden(self): + pieces = [ + 'hello', + tiny_render.UnorderedList([ + tiny_render.Switch(text='text', html=tiny_render.Bold('html')), + 'the', + tiny_render.Bold('sun'), + ]), + tiny_render.line_break, + ['is', ' out!'], + ] + + self.assertEqual( + tiny_render.render_text_pieces(pieces), '\n'.join(( + 'hello', + ' - text', + ' - the', + ' - **sun**', + 'is out!', + ))) + + self.assertEqual( + tiny_render.render_html_pieces(pieces), '\n'.join(( + 'hello
    ', + '
  • html
  • ', + '
  • the
  • ', + '
  • sun
  • ', + '
', + '
', + 'is out!', + ))) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From de1a447d928f6985bce2f64b148b34b885404eaa Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Apr 2020 15:52:41 -0700 Subject: llvm_tools: use tiny_render in the nightly revert checker Now that we have `tiny_render` imported into `cros_utils`, we can use it. This lets us easily linkify and stylize our emails, and makes comments like tcwang's in Ibc3ef1d2e3b5a3301366e971cacf53396a6ca2aa much easier to address. BUG=chromium:1046988 TEST=unittests; sent an email Change-Id: I538efd2e349a48bd433c826359eb0dd94b422966 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2169010 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- llvm_tools/nightly_revert_checker.py | 59 ++++++++++++++++++------- llvm_tools/nightly_revert_checker_test.py | 71 ++++++++++++++++++++++++------- 2 files changed, 98 insertions(+), 32 deletions(-) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index b7b87fad..24130e0a 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -24,6 +24,8 @@ import sys import typing as t import cros_utils.email_sender as email_sender +import cros_utils.tiny_render as tiny_render +import get_llvm_hash import revert_checker State = t.Any @@ -77,35 +79,46 @@ def _find_interesting_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: _Email = t.NamedTuple('_Email', [ ('subject', str), - ('body', str), + ('body', tiny_render.Piece), ]) def _generate_revert_email( friendly_name: str, sha: str, + prettify_sha: t.Callable[[str], tiny_render.Piece], new_reverts: t.List[revert_checker.Revert]) -> _Email: - email_lines = [ - 'It looks like there may be %s across %s (%s).' % ( + email_pieces = [ + 'It looks like there may be %s across %s (' % ( 'a new revert' if len(new_reverts) == 1 else 'new reverts', friendly_name, - sha, ), - '', + prettify_sha(sha), + ').', + tiny_render.line_break, + tiny_render.line_break, 'That is:' if len(new_reverts) == 1 else 'These are:', ] + revert_listing = [] for revert in sorted(new_reverts, key=lambda r: r.sha): - email_lines.append( - '\t- %s (appears to revert %s)' % (revert.sha, revert.reverted_sha)) - - email_lines.append('') - email_lines.append('PTAL and consider reverting them locally.') + revert_listing.append([ + prettify_sha(revert.sha), + ' (appears to revert ', + prettify_sha(revert.reverted_sha), + ')', + ]) + + email_pieces.append(tiny_render.UnorderedList(items=revert_listing)) + email_pieces += [ + tiny_render.line_break, + 'PTAL and consider reverting them locally.', + ] return _Email( subject='[revert-checker] new %s discovered across %s' % ( 'revert' if len(new_reverts) == 1 else 'reverts', friendly_name, ), - body='\n'.join(email_lines), + body=email_pieces, ) @@ -113,9 +126,11 @@ def _send_revert_email(email: _Email) -> None: email_sender.EmailSender().SendX20Email( subject=email.subject, identifier='revert-checker', - well_known_recipients=['mage'], + well_known_recipients=[], direct_recipients=['gbiv@google.com'], - text_body=email.body) + text_body=tiny_render.render_text_pieces(email.body), + html_body=tiny_render.render_html_pieces(email.body), + ) def _write_state(state_file: str, new_state: State) -> None: @@ -165,19 +180,31 @@ def main(argv: t.List[str]) -> None: state_file = opts.state_file dry_run = opts.dry_run + llvm_dir = opts.llvm_dir state = _read_state(state_file) interesting_shas = _find_interesting_shas(opts.chromeos_dir) logging.info('Interesting SHAs were %r', interesting_shas) + def prettify_sha(sha: str) -> tiny_render.Piece: + rev = get_llvm_hash.GetVersionFrom(llvm_dir, sha) + + # 12 is arbitrary, but should be unambiguous enough. + short_sha = sha[:12] + return tiny_render.Switch( + text='r%s (%s)' % (rev, short_sha), + html=tiny_render.Link( + href='https://reviews.llvm.org/rG' + sha, inner='r' + str(rev)), + ) + new_state: State = {} revert_emails_to_send: t.List[t.Tuple[str, t.List[revert_checker .Revert]]] = [] for friendly_name, sha in interesting_shas: logging.info('Finding reverts across %s (%s)', friendly_name, sha) all_reverts = revert_checker.find_reverts( - opts.llvm_dir, sha, root='origin/master') + llvm_dir, sha, root='origin/master') logging.info('Detected the following revert(s) across %s:\n%s', friendly_name, pprint.pformat(all_reverts)) @@ -195,14 +222,14 @@ def main(argv: t.List[str]) -> None: continue revert_emails_to_send.append( - _generate_revert_email(friendly_name, sha, new_reverts)) + _generate_revert_email(friendly_name, sha, prettify_sha, new_reverts)) # We want to be as free of obvious side-effects as possible in case something # above breaks. Hence, send the email as late as possible. for email in revert_emails_to_send: if dry_run: logging.info('Would send email:\nSubject: %s\nBody:\n%s\n', email.subject, - email.body) + tiny_render.render_text_pieces(email.body)) else: logging.info('Sending email with subject %r...', email.subject) _send_revert_email(email) diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py index 81cfbd2c..dce29343 100755 --- a/llvm_tools/nightly_revert_checker_test.py +++ b/llvm_tools/nightly_revert_checker_test.py @@ -8,22 +8,28 @@ from __future__ import print_function -# pylint: disable=protected-access - import io import unittest +import cros_utils.tiny_render as tiny_render import nightly_revert_checker import revert_checker +# pylint: disable=protected-access + class Test(unittest.TestCase): """Tests for nightly_revert_checker.""" def test_email_rendering_works_for_singular_revert(self): + + def prettify_sha(sha: str) -> tiny_render.Piece: + return 'pretty_' + sha + email = nightly_revert_checker._generate_revert_email( friendly_name='${name}', sha='${sha}', + prettify_sha=prettify_sha, new_reverts=[ revert_checker.Revert( sha='${revert_sha}', reverted_sha='${reverted_sha}') @@ -31,21 +37,34 @@ class Test(unittest.TestCase): expected_email = nightly_revert_checker._Email( subject='[revert-checker] new revert discovered across ${name}', - body='\n'.join(( - 'It looks like there may be a new revert across ${name} (${sha}).', - '', + body=[ + 'It looks like there may be a new revert across ${name} (', + 'pretty_${sha}', + ').', + tiny_render.line_break, + tiny_render.line_break, 'That is:', - '\t- ${revert_sha} (appears to revert ${reverted_sha})', - '', + tiny_render.UnorderedList([[ + 'pretty_${revert_sha}', + ' (appears to revert ', + 'pretty_${reverted_sha}', + ')', + ]]), + tiny_render.line_break, 'PTAL and consider reverting them locally.', - ))) + ]) self.assertEqual(email, expected_email) def test_email_rendering_works_for_multiple_reverts(self): + + def prettify_sha(sha: str) -> tiny_render.Piece: + return 'pretty_' + sha + email = nightly_revert_checker._generate_revert_email( friendly_name='${name}', sha='${sha}', + prettify_sha=prettify_sha, new_reverts=[ revert_checker.Revert( sha='${revert_sha1}', reverted_sha='${reverted_sha1}'), @@ -58,16 +77,36 @@ class Test(unittest.TestCase): expected_email = nightly_revert_checker._Email( subject='[revert-checker] new reverts discovered across ${name}', - body='\n'.join(( - 'It looks like there may be new reverts across ${name} (${sha}).', - '', + body=[ + 'It looks like there may be new reverts across ${name} (', + 'pretty_${sha}', + ').', + tiny_render.line_break, + tiny_render.line_break, 'These are:', - '\t- ${revert_sha0} (appears to revert ${reverted_sha0})', - '\t- ${revert_sha1} (appears to revert ${reverted_sha1})', - '\t- ${revert_sha2} (appears to revert ${reverted_sha2})', - '', + tiny_render.UnorderedList([ + [ + 'pretty_${revert_sha0}', + ' (appears to revert ', + 'pretty_${reverted_sha0}', + ')', + ], + [ + 'pretty_${revert_sha1}', + ' (appears to revert ', + 'pretty_${reverted_sha1}', + ')', + ], + [ + 'pretty_${revert_sha2}', + ' (appears to revert ', + 'pretty_${reverted_sha2}', + ')', + ], + ]), + tiny_render.line_break, 'PTAL and consider reverting them locally.', - ))) + ]) self.assertEqual(email, expected_email) -- cgit v1.2.3 From ded113a1f5e9d2715361d8e2836edd0c48925d15 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 28 Apr 2020 12:57:24 -0700 Subject: llvm_tools: mail the mage from the revert checker I accidentally removed this in an earlier CL. BUG=chromium:1046988 TEST=unittests Change-Id: Iebf0c282383d1e99ddeb0cafa7ffa93f1dc27abc Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2171296 Reviewed-by: Tiancong Wang Tested-by: Tiancong Wang --- llvm_tools/nightly_revert_checker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 24130e0a..c3167ad8 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -126,7 +126,7 @@ def _send_revert_email(email: _Email) -> None: email_sender.EmailSender().SendX20Email( subject=email.subject, identifier='revert-checker', - well_known_recipients=[], + well_known_recipients=['mage'], direct_recipients=['gbiv@google.com'], text_body=tiny_render.render_text_pieces(email.body), html_body=tiny_render.render_html_pieces(email.body), -- cgit v1.2.3 From 16d12146ddf8c2ea77f12dbc43bf6ab55d742d80 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 28 Apr 2020 12:58:35 -0700 Subject: llvm_tools: don't check the same SHA for reverts twice It occurred to me that there are times where llvm-next == llvm-stable. If that's the case, we shouldn't generate two emails with (nearly) identical contents. BUG=chromium:1046988 TEST=unittests Change-Id: Ib19db46daf95e73c64cc958d57c4220fc957bb51 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2171297 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- llvm_tools/nightly_revert_checker.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index c3167ad8..3f5f771d 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -57,7 +57,11 @@ def _parse_llvm_ebuild_for_shas( if not llvm_next_hash or not llvm_hash: raise ValueError('Failed to detect SHAs for llvm/llvm_next. Got: ' 'llvm=%s; llvm_next=%s' % (llvm_hash, llvm_next_hash)) - return [('llvm', llvm_hash), ('llvm-next', llvm_next_hash)] + + results = [('llvm', llvm_hash)] + if llvm_next_hash != llvm_hash: + results.append(('llvm-next', llvm_next_hash)) + return results def _find_interesting_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: -- cgit v1.2.3 From b830979d628d7cdbd3a93dc898173362af228cd7 Mon Sep 17 00:00:00 2001 From: chrome-bot Date: Tue, 28 Apr 2020 14:05:43 -0700 Subject: afdo_metadata: Publish new profiles for kernel 3.18. Update chromeos-kernel-3_18 from R84-13020.16-1587375187 to R84-13042.0-1587980585 Change-Id: Id53f040013456d4db59fa5466511b76054dbadc8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2171497 --- afdo_metadata/kernel_afdo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f97968ab..f4eaa343 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -6,7 +6,7 @@ "name": "R84-13042.0-1587980118" }, "chromeos-kernel-3_18": { - "name": "R84-13020.16-1587375187" + "name": "R84-13042.0-1587980585" }, "chromeos-kernel-4_14": { "name": "R84-13042.0-1587980204" -- cgit v1.2.3 From d94e440824c45b48fbee6396b389279a6967e3d0 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 13 Apr 2020 16:59:27 -0700 Subject: toolchain-utils: Auto abandon old CLs Abandon CLs without any update that are older than 2 weeks. Ignoring days to preserve intentionally since sometimes CLs can be older than several days. BUG=chromium:1067029 TEST=unit tests Change-Id: Ie0f377a32ccf40331221c579401b5aaa2e84cf6c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2147820 Tested-by: Manoj Gupta Reviewed-by: Tiancong Wang --- auto_delete_nightly_test_data.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 429d0b4a..8f156549 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -179,6 +179,29 @@ def CleanChromeOsTmpAndImages(days_to_preserve=1, dry_run=False): return rv +def CleanOldCLs(days_to_preserve='1', dry_run=False): + """Abandon old CLs created by automation tooling.""" + ce = command_executer.GetCommandExecuter() + chromeos_root = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos') + # Find Old CLs. + old_cls_cmd = ( + 'gerrit --raw search "owner:me status:open age:%sd"' % days_to_preserve) + _, cls, _ = ce.ChrootRunCommandWOutput( + chromeos_root, old_cls_cmd, print_to_console=False) + # Convert any whitespaces to spaces. + cls = ' '.join(cls.split()) + if not cls: + return 0 + + abandon_cls_cmd = ('gerrit abandon %s' % cls) + if dry_run: + print('Going to execute: %s' % abandon_cls_cmd) + return 0 + + return ce.ChrootRunCommand( + chromeos_chroot, abandon_cls_cmd, print_to_console=False) + + def Main(argv): """Delete nightly test data directories, tmps and test images.""" options = ProcessArguments(argv) @@ -201,12 +224,15 @@ def Main(argv): os.path.join(NIGHTLY_TESTS_WORKSPACE, dated_dir), options.dry_run) else 1 - -## Finally clean temporaries, images under crostc/chromeos + ## Clean temporaries, images under crostc/chromeos rv2 = CleanChromeOsTmpAndImages( int(options.days_to_preserve), options.dry_run) - return rv + rv2 + # Clean CLs that are not updated in last 2 weeks. + rv3 = CleanOldCLs('14', options.dry_run) + + return rv + rv2 + rv3 + if __name__ == '__main__': retval = Main(sys.argv[1:]) -- cgit v1.2.3 From 6afd39284fbf26dec10613fbc87e37e279772d4a Mon Sep 17 00:00:00 2001 From: Bob Badour Date: Wed, 29 Apr 2020 12:18:39 -0700 Subject: Add METADATA to toolchain-utils: BSD+Apache2=NOTICE Bug: 68860345 Bug: 69058154 Bug: 151953481 Test: no code changes Change-Id: Ib03d91956f44d34444a42dad40b113bde881126f --- METADATA | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 METADATA diff --git a/METADATA b/METADATA new file mode 100644 index 00000000..d97975ca --- /dev/null +++ b/METADATA @@ -0,0 +1,3 @@ +third_party { + license_type: NOTICE +} -- cgit v1.2.3 From 478c61eb1749f3d341fa3e4ff336d6deab7b8020 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 29 Apr 2020 12:07:34 -0700 Subject: Fix a typo s/chromeos_chroot/chromeos_root in AbandonCLs. BUG=chromium:1067029 TEST=unit tests Change-Id: Ie3727aaf3b10e196f2abe4a9d90db2f6766a42a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2173246 Tested-by: Manoj Gupta Reviewed-by: George Burgess --- auto_delete_nightly_test_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 8f156549..4ec5b0fd 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -199,7 +199,7 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): return 0 return ce.ChrootRunCommand( - chromeos_chroot, abandon_cls_cmd, print_to_console=False) + chromeos_root, abandon_cls_cmd, print_to_console=False) def Main(argv): -- cgit v1.2.3 From f1f3f35f4d0b72913a46dac2f0500b0dc92ce3f4 Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Wed, 22 Apr 2020 14:48:27 -0700 Subject: toolchain-utils: Add platform.ReportDiskUsage to toolchain nightly perf tests Adding the tast test platform.ReportDiskUsage when using 'all_toolchain_perf' benchmark set. This will make toolchain nightly test launch this tast test together with other telemetry benchmarks and show image size changes. BUG=chromium:1071937 TEST=Run experiment with all_toolchain_perf Change-Id: If05893e4ad129f29276a14893024641d03ec1b95 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2161773 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang --- crosperf/experiment_factory.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 8839399a..0188fff4 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -289,6 +289,19 @@ class ExperimentFactory(object): run_local, cwp_dso, weight) # Add non-telemetry toolchain-perf benchmarks: + # Tast test platform.ReportDiskUsage for image size. + benchmarks.append( + Benchmark( + 'platform.ReportDiskUsage', + 'platform.ReportDiskUsage', + '', + 1, # This is not a performance benchmark, only run once. + rm_chroot_tmp, + '', + 'tast', # Specify the suite to be 'tast' + show_all_results, + retries)) + # TODO: crbug.com/1057755 Do not enable graphics_WebGLAquarium until # it gets fixed. # -- cgit v1.2.3 From 959acd577eefa5769103bb6f909d7375bbf6656d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 29 Apr 2020 15:10:15 -0700 Subject: llvm_tools: refactor to support multiple SHA sources This refactors code a bit and tweaks our CLI so we can more easily support various sources of 'interesting' SHAs. The intent going forward is to have one program invocation per SHA source (e.g., one Android, one CrOS, etc). BUG=None TEST=Ran the script Change-Id: Ic3c682985ca688aa0e0ac38902d88f8b6dd2a223 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2173674 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- llvm_tools/nightly_revert_checker.py | 49 +++++++++++++++++++++++-------- llvm_tools/nightly_revert_checker_test.py | 7 +++-- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 3f5f771d..0311ccc4 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -64,7 +64,7 @@ def _parse_llvm_ebuild_for_shas( return results -def _find_interesting_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: +def _find_interesting_chromeos_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: llvm_dir = os.path.join(chromeos_base, 'src/third_party/chromiumos-overlay/sys-devel/llvm') candidate_ebuilds = [ @@ -88,7 +88,7 @@ _Email = t.NamedTuple('_Email', [ def _generate_revert_email( - friendly_name: str, sha: str, + repository_name: str, friendly_name: str, sha: str, prettify_sha: t.Callable[[str], tiny_render.Piece], new_reverts: t.List[revert_checker.Revert]) -> _Email: email_pieces = [ @@ -118,7 +118,8 @@ def _generate_revert_email( 'PTAL and consider reverting them locally.', ] return _Email( - subject='[revert-checker] new %s discovered across %s' % ( + subject='[revert-checker/%s] new %s discovered across %s' % ( + repository_name, 'revert' if len(new_reverts) == 1 else 'reverts', friendly_name, ), @@ -126,12 +127,21 @@ def _generate_revert_email( ) -def _send_revert_email(email: _Email) -> None: +_EmailRecipients = t.NamedTuple( + '_EmailRecipients', + [ + ('well_known', t.List[str]), + ('direct', t.List[str]), + ], +) + + +def _send_revert_email(recipients: _EmailRecipients, email: _Email) -> None: email_sender.EmailSender().SendX20Email( subject=email.subject, identifier='revert-checker', - well_known_recipients=['mage'], - direct_recipients=['gbiv@google.com'], + well_known_recipients=recipients.well_known, + direct_recipients=['gbiv@google.com'] + recipients.direct, text_body=tiny_render.render_text_pieces(email.body), html_body=tiny_render.render_html_pieces(email.body), ) @@ -168,13 +178,19 @@ def main(argv: t.List[str]) -> None: '--state_file', required=True, help='File to store persistent state in.') parser.add_argument( '--llvm_dir', required=True, help='Up-to-date LLVM directory to use.') - parser.add_argument( - '--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.') parser.add_argument( '--dry_run', action='store_true', help='Print email contents, rather than sending them.') parser.add_argument('--debug', action='store_true') + + subparsers = parser.add_subparsers(dest='repository') + subparsers.required = True + + chromeos_subparser = subparsers.add_parser('chromeos') + chromeos_subparser.add_argument( + '--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.') + opts = parser.parse_args(argv) logging.basicConfig( @@ -182,15 +198,21 @@ def main(argv: t.List[str]) -> None: level=logging.DEBUG if opts.debug else logging.INFO, ) - state_file = opts.state_file dry_run = opts.dry_run llvm_dir = opts.llvm_dir + repository = opts.repository + state_file = opts.state_file - state = _read_state(state_file) + if repository == 'chromeos': + interesting_shas = _find_interesting_chromeos_shas(opts.chromeos_dir) + recipients = _EmailRecipients(well_known=['mage'], direct=[]) + else: + raise ValueError('Unknown repository %s' % opts.repository) - interesting_shas = _find_interesting_shas(opts.chromeos_dir) logging.info('Interesting SHAs were %r', interesting_shas) + state = _read_state(state_file) + def prettify_sha(sha: str) -> tiny_render.Piece: rev = get_llvm_hash.GetVersionFrom(llvm_dir, sha) @@ -226,7 +248,8 @@ def main(argv: t.List[str]) -> None: continue revert_emails_to_send.append( - _generate_revert_email(friendly_name, sha, prettify_sha, new_reverts)) + _generate_revert_email(repository, friendly_name, sha, prettify_sha, + new_reverts)) # We want to be as free of obvious side-effects as possible in case something # above breaks. Hence, send the email as late as possible. @@ -236,7 +259,7 @@ def main(argv: t.List[str]) -> None: tiny_render.render_text_pieces(email.body)) else: logging.info('Sending email with subject %r...', email.subject) - _send_revert_email(email) + _send_revert_email(recipients, email) logging.info('Email sent.') _write_state(state_file, new_state) diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py index dce29343..2841e2ed 100755 --- a/llvm_tools/nightly_revert_checker_test.py +++ b/llvm_tools/nightly_revert_checker_test.py @@ -27,6 +27,7 @@ class Test(unittest.TestCase): return 'pretty_' + sha email = nightly_revert_checker._generate_revert_email( + repository_name='${repo}', friendly_name='${name}', sha='${sha}', prettify_sha=prettify_sha, @@ -36,7 +37,7 @@ class Test(unittest.TestCase): ]) expected_email = nightly_revert_checker._Email( - subject='[revert-checker] new revert discovered across ${name}', + subject='[revert-checker/${repo}] new revert discovered across ${name}', body=[ 'It looks like there may be a new revert across ${name} (', 'pretty_${sha}', @@ -62,6 +63,7 @@ class Test(unittest.TestCase): return 'pretty_' + sha email = nightly_revert_checker._generate_revert_email( + repository_name='${repo}', friendly_name='${name}', sha='${sha}', prettify_sha=prettify_sha, @@ -76,7 +78,8 @@ class Test(unittest.TestCase): ]) expected_email = nightly_revert_checker._Email( - subject='[revert-checker] new reverts discovered across ${name}', + subject='[revert-checker/${repo}] new reverts discovered across ' + '${name}', body=[ 'It looks like there may be new reverts across ${name} (', 'pretty_${sha}', -- cgit v1.2.3 From 0794a6d5f401b7aecf864daffc8f0b4dd562ea1d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 29 Apr 2020 15:48:37 -0700 Subject: llvm_tools: add Android support to the revert checker BUG=None TEST=Ran; received an email Change-Id: I3db8d2e4a81fbb4e16ab1b212113c675bd0811b7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2173675 Reviewed-by: Pirama Arumuga Nainar Reviewed-by: Tiancong Wang Tested-by: George Burgess --- llvm_tools/nightly_revert_checker.py | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 0311ccc4..5b3e04dc 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -20,6 +20,7 @@ import json import logging import os import pprint +import subprocess import sys import typing as t @@ -30,9 +31,27 @@ import revert_checker State = t.Any -# FIXME(gbiv): we probably want to have Android compat here, too. Should be -# easy to nab their testing version automatically with: -# git merge-base m/llvm-toolchain aosp/upstream-master + +def _find_interesting_android_shas( + android_llvm_toolchain_dir: str) -> t.List[t.Tuple[str]]: + llvm_project = os.path.join(android_llvm_toolchain_dir, + 'toolchain/llvm-project') + + def get_llvm_merge_base(branch: str) -> str: + return subprocess.check_output( + ['git', 'merge-base', branch, 'aosp/upstream-master'], + cwd=llvm_project, + encoding='utf-8', + ).strip() + + master_legacy = get_llvm_merge_base('aosp/master-legacy') + testing_upstream = get_llvm_merge_base('aosp/testing-upstream') + result = [('master-legacy', master_legacy)] + + # If these are the same SHA, there's no point in tracking both. + if master_legacy != testing_upstream: + result.append(('testing-upstream', testing_upstream)) + return result def _parse_llvm_ebuild_for_shas( @@ -191,6 +210,12 @@ def main(argv: t.List[str]) -> None: chromeos_subparser.add_argument( '--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.') + android_subparser = subparsers.add_parser('android') + android_subparser.add_argument( + '--android_llvm_toolchain_dir', + required=True, + help='Up-to-date android-llvm-toolchain directory to use.') + opts = parser.parse_args(argv) logging.basicConfig( @@ -206,6 +231,11 @@ def main(argv: t.List[str]) -> None: if repository == 'chromeos': interesting_shas = _find_interesting_chromeos_shas(opts.chromeos_dir) recipients = _EmailRecipients(well_known=['mage'], direct=[]) + elif repository == 'android': + interesting_shas = _find_interesting_android_shas( + opts.android_llvm_toolchain_dir) + recipients = _EmailRecipients( + well_known=[], direct=['android-llvm-dev@google.com']) else: raise ValueError('Unknown repository %s' % opts.repository) -- cgit v1.2.3 From b247364522f2f5dadac5e5afe44209c851f60264 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 30 Apr 2020 14:10:54 -0700 Subject: llvm_tools: add commit subjects to revert emails I got a piece of feedback that adding subjects inline would likely make revert emails easier to read 'at a glance'. This CL adds those. New email revert lines will look like: - r385979 (appears to revert r383879): Revert "[NFC][ARM] Update test" BUG=None TEST=unittests; looked at a --dry_run email Change-Id: I5fb5ea12fa1d4a6b2601fbd5c244935662dc4270 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2174823 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/nightly_revert_checker.py | 13 +++++++++++-- llvm_tools/nightly_revert_checker_test.py | 20 ++++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 5b3e04dc..2a41f8c7 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -109,6 +109,7 @@ _Email = t.NamedTuple('_Email', [ def _generate_revert_email( repository_name: str, friendly_name: str, sha: str, prettify_sha: t.Callable[[str], tiny_render.Piece], + get_sha_description: t.Callable[[str], tiny_render.Piece], new_reverts: t.List[revert_checker.Revert]) -> _Email: email_pieces = [ 'It looks like there may be %s across %s (' % ( @@ -128,7 +129,8 @@ def _generate_revert_email( prettify_sha(revert.sha), ' (appears to revert ', prettify_sha(revert.reverted_sha), - ')', + '): ', + get_sha_description(revert.sha), ]) email_pieces.append(tiny_render.UnorderedList(items=revert_listing)) @@ -254,6 +256,13 @@ def main(argv: t.List[str]) -> None: href='https://reviews.llvm.org/rG' + sha, inner='r' + str(rev)), ) + def get_sha_description(sha: str) -> tiny_render.Piece: + return subprocess.check_output( + ['git', 'log', '-n1', '--format=%s', sha], + cwd=llvm_dir, + encoding='utf-8', + ).strip() + new_state: State = {} revert_emails_to_send: t.List[t.Tuple[str, t.List[revert_checker .Revert]]] = [] @@ -279,7 +288,7 @@ def main(argv: t.List[str]) -> None: revert_emails_to_send.append( _generate_revert_email(repository, friendly_name, sha, prettify_sha, - new_reverts)) + get_sha_description, new_reverts)) # We want to be as free of obvious side-effects as possible in case something # above breaks. Hence, send the email as late as possible. diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py index 2841e2ed..68338a59 100755 --- a/llvm_tools/nightly_revert_checker_test.py +++ b/llvm_tools/nightly_revert_checker_test.py @@ -26,11 +26,15 @@ class Test(unittest.TestCase): def prettify_sha(sha: str) -> tiny_render.Piece: return 'pretty_' + sha + def get_sha_description(sha: str) -> tiny_render.Piece: + return 'subject_' + sha + email = nightly_revert_checker._generate_revert_email( repository_name='${repo}', friendly_name='${name}', sha='${sha}', prettify_sha=prettify_sha, + get_sha_description=get_sha_description, new_reverts=[ revert_checker.Revert( sha='${revert_sha}', reverted_sha='${reverted_sha}') @@ -49,7 +53,8 @@ class Test(unittest.TestCase): 'pretty_${revert_sha}', ' (appears to revert ', 'pretty_${reverted_sha}', - ')', + '): ', + 'subject_${revert_sha}', ]]), tiny_render.line_break, 'PTAL and consider reverting them locally.', @@ -62,11 +67,15 @@ class Test(unittest.TestCase): def prettify_sha(sha: str) -> tiny_render.Piece: return 'pretty_' + sha + def get_sha_description(sha: str) -> tiny_render.Piece: + return 'subject_' + sha + email = nightly_revert_checker._generate_revert_email( repository_name='${repo}', friendly_name='${name}', sha='${sha}', prettify_sha=prettify_sha, + get_sha_description=get_sha_description, new_reverts=[ revert_checker.Revert( sha='${revert_sha1}', reverted_sha='${reverted_sha1}'), @@ -92,19 +101,22 @@ class Test(unittest.TestCase): 'pretty_${revert_sha0}', ' (appears to revert ', 'pretty_${reverted_sha0}', - ')', + '): ', + 'subject_${revert_sha0}', ], [ 'pretty_${revert_sha1}', ' (appears to revert ', 'pretty_${reverted_sha1}', - ')', + '): ', + 'subject_${revert_sha1}', ], [ 'pretty_${revert_sha2}', ' (appears to revert ', 'pretty_${reverted_sha2}', - ')', + '): ', + 'subject_${revert_sha2}', ], ]), tiny_render.line_break, -- cgit v1.2.3 From 22416832569728600cab98c5bd282c698ef21a7c Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 29 Apr 2020 22:54:51 -0700 Subject: crosperf: fix --help This is a format string; without this, --help raises ValueError: unsupported format character ',' (0x2c) at index 311 BUG=None TEST=crosperf --help Change-Id: I5fbdb996888156f8a1531c2b140c3f734be7edff Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2173547 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- crosperf/settings_factory.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crosperf/settings_factory.py b/crosperf/settings_factory.py index 20ab2ad2..cfc40130 100644 --- a/crosperf/settings_factory.py +++ b/crosperf/settings_factory.py @@ -365,8 +365,8 @@ class GlobalSettings(Settings): ' data.\n' 'With 0 - do not run top.\n' 'NOTE: Running top with interval 1-5 sec has insignificant' - ' performance impact (performance degradation does not exceed 0.3%,' - ' measured on x86_64, ARM32, and ARM64).', + ' performance impact (performance degradation does not exceed' + ' 0.3%%, measured on x86_64, ARM32, and ARM64).', required=False, default=0)) self.AddField( -- cgit v1.2.3 From fbefdc4647a046010844aa2ea2551f15c80ef3aa Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Thu, 30 Apr 2020 15:29:03 -0700 Subject: llvm_tool: cherry-pick multiple patches at once This change will allow cherrypick_cl.py to take in multiple SHAs at once and create local patches accordingly. All these SHAs will be applied to the same starting SHA. The package a patch applies to will be inferred automatically, so users no longer have to specify the package name. If a patch changes files in more than one package, it will be split into smaller patches by package and applied accordingly. The patch information will be added to PATCHES.json of each affected package. BUG=chromium:1057428 TEST=local tests. Change-Id: I8c4d93716b7682b42c8202e8b939ca2175775fdf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2175675 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- llvm_tools/cherrypick_cl.py | 99 ++++++++++++++++------ llvm_tools/git.py | 33 ++------ llvm_tools/git_unittest.py | 94 ++++++++------------ llvm_tools/update_chromeos_llvm_hash.py | 46 ++++------ llvm_tools/update_chromeos_llvm_hash_unittest.py | 69 ++++----------- .../update_packages_and_run_tests_unittest.py | 1 - 6 files changed, 148 insertions(+), 194 deletions(-) diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py index 0641c092..992b04ce 100755 --- a/llvm_tools/cherrypick_cl.py +++ b/llvm_tools/cherrypick_cl.py @@ -25,7 +25,8 @@ import git_llvm_rev def add_cherrypick(patches_json_path: str, patches_dir: str, relative_patches_dir: str, start_version: git_llvm_rev.Rev, - llvm_dir: str, rev: git_llvm_rev.Rev, sha: str): + llvm_dir: str, rev: git_llvm_rev.Rev, sha: str, + package: str): with open(patches_json_path, encoding='utf-8') as f: patches_json = json.load(f) @@ -41,7 +42,14 @@ def add_cherrypick(patches_json_path: str, patches_dir: str, 'Similarly-named patch already exists in PATCHES.json: %r', rel_path) with open(os.path.join(patches_dir, file_name), 'wb') as f: - subprocess.check_call(['git', 'show', sha], stdout=f, cwd=llvm_dir) + cmd = ['git', 'show', sha] + # Only apply the part of the patch that belongs to this package, expect + # LLVM. This is because some packages are built with LLVM ebuild on X86 but + # not on the other architectures. e.g. compiler-rt. Therefore always apply + # the entire patch to LLVM ebuild as a workaround. + if package != 'llvm': + cmd.append(package_to_project(package)) + subprocess.check_call(cmd, stdout=f, cwd=llvm_dir) commit_subject = subprocess.check_output( ['git', 'log', '-n1', '--format=%s', sha], cwd=llvm_dir, encoding='utf-8') @@ -99,6 +107,54 @@ def resolve_llvm_ref(llvm_dir: str, sha: str) -> str: ).strip() +# Get the package name of an upstream project +def project_to_package(project: str) -> str: + if project == 'libunwind': + return 'llvm-libunwind' + return project + + +# Get the upstream project name of a package +def package_to_project(package: str) -> str: + if package == 'llvm-libunwind': + return 'libunwind' + return package + + +def cherry_pick(chroot_path: str, llvm_dir: str, start_rev: str, sha: str, + rev: str): + paths = subprocess.check_output( + ['git', 'show', '--name-only', '--format=', sha], + cwd=llvm_dir, + encoding='utf-8').splitlines() + # Some LLVM projects are built by LLVM ebuild on X86, so always apply the + # patch to LLVM ebuild + packages = {'llvm'} + # Detect if there are more packages to apply the patch to + for path in paths: + package = project_to_package(path.split('/')[0]) + if package in ('compiler-rt', 'libcxx', 'libcxxabi', 'llvm-libunwind'): + packages.add(package) + packages = list(sorted(packages)) + + for package in packages: + # Use full package name to prevent equery from getting confused + symlink = chroot.GetChrootEbuildPaths( + chroot_path, + ['sys-devel/llvm' if package == 'llvm' else 'sys-libs/' + package])[0] + symlink = chroot.ConvertChrootPathsToAbsolutePaths(chroot_path, + [symlink])[0] + symlink_dir = os.path.dirname(symlink) + + patches_json_path = os.path.join(symlink_dir, 'files/PATCHES.json') + relative_patches_dir = 'cherry' if package == 'llvm' else '' + patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) + + logging.info('Cherrypicking %s (%s) into %s', rev, sha, package) + add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, + start_rev, llvm_dir, rev, sha, package) + + def main(): chroot.VerifyOutsideChroot() logging.basicConfig( @@ -111,47 +167,40 @@ def main(): '--chroot_path', default=os.path.join(os.path.expanduser('~'), 'chromiumos'), help='the path to the chroot (default: %(default)s)') - parser.add_argument('--package', help='target package to apply the patch to.') parser.add_argument( '--start_sha', default='llvm-next', help='LLVM SHA that the patch should start applying at. You can specify ' '"llvm" or "llvm-next", as well. Defaults to %(default)s.') parser.add_argument( - '--sha', help='LLVM git SHA. Either this or --sha must be specified.') + '--sha', + required=True, + action='append', + help='The LLVM git SHA to cherry-pick.') args = parser.parse_args() - symlink = chroot.GetChrootEbuildPaths(args.chroot_path, [args.package])[0] - - symlink = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path, - [symlink])[0] - symlink_dir = os.path.dirname(symlink) - - patches_json_path = os.path.join(symlink_dir, 'files/PATCHES.json') - relative_patches_dir = '' - if 'llvm' in args.package: - relative_patches_dir = 'cherry' - patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) - llvm_config = git_llvm_rev.LLVMConfig( remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) + llvm_symlink = chroot.ConvertChrootPathsToAbsolutePaths( + args.chroot_path, + chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm']))[0] start_sha = args.start_sha if start_sha == 'llvm': - start_sha = parse_ebuild_for_assignment(symlink_dir, 'LLVM_HASH') - logging.info('Autodetected llvm hash == %s', start_sha) + start_sha = parse_ebuild_for_assignment( + os.path.dirname(llvm_symlink), 'LLVM_HASH') elif start_sha == 'llvm-next': - start_sha = parse_ebuild_for_assignment(symlink_dir, 'LLVM_NEXT_HASH') - logging.info('Autodetected llvm-next hash == %s', start_sha) + start_sha = parse_ebuild_for_assignment( + os.path.dirname(llvm_symlink), 'LLVM_NEXT_HASH') + logging.info('Base llvm hash == %s', start_sha) start_sha = resolve_llvm_ref(llvm_config.dir, start_sha) start_rev = git_llvm_rev.translate_sha_to_rev(llvm_config, start_sha) - sha = resolve_llvm_ref(llvm_config.dir, args.sha) - rev = git_llvm_rev.translate_sha_to_rev(llvm_config, sha) - logging.info('Will cherrypick %s (%s), with start == %s', rev, sha, start_sha) - add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, - start_rev, llvm_config.dir, rev, sha) + for sha in args.sha: + sha = resolve_llvm_ref(llvm_config.dir, sha) + rev = git_llvm_rev.translate_sha_to_rev(llvm_config, sha) + cherry_pick(args.chroot_path, llvm_config.dir, start_rev, sha, rev) logging.info('Complete.') diff --git a/llvm_tools/git.py b/llvm_tools/git.py index 778d9695..f38d5e72 100755 --- a/llvm_tools/git.py +++ b/llvm_tools/git.py @@ -46,10 +46,9 @@ def CreateBranch(repo, branch): if not os.path.isdir(repo): raise ValueError('Invalid directory path provided: %s' % repo) - subprocess.check_output(['git', '-C', repo, 'reset', 'HEAD', '--hard'], - encoding='utf-8') + subprocess.check_output(['git', '-C', repo, 'reset', 'HEAD', '--hard']) - subprocess.check_output(['repo', 'start', branch], cwd=repo, encoding='utf-8') + subprocess.check_output(['repo', 'start', branch], cwd=repo) def DeleteBranch(repo, branch): @@ -66,14 +65,11 @@ def DeleteBranch(repo, branch): if not os.path.isdir(repo): raise ValueError('Invalid directory path provided: %s' % repo) - subprocess.check_output(['git', '-C', repo, 'checkout', 'cros/master'], - encoding='utf-8') + subprocess.check_output(['git', '-C', repo, 'checkout', 'cros/master']) - subprocess.check_output(['git', '-C', repo, 'reset', 'HEAD', '--hard'], - encoding='utf-8') + subprocess.check_output(['git', '-C', repo, 'reset', 'HEAD', '--hard']) - subprocess.check_output(['git', '-C', repo, 'branch', '-D', branch], - encoding='utf-8') + subprocess.check_output(['git', '-C', repo, 'branch', '-D', branch]) def UploadChanges(repo, branch, commit_messages): @@ -102,28 +98,17 @@ def UploadChanges(repo, branch, commit_messages): f.write('\n'.join(commit_messages)) f.flush() - subprocess.check_output(['git', 'commit', '-F', f.name], - cwd=repo, - encoding='utf-8') + subprocess.check_output(['git', 'commit', '-F', f.name], cwd=repo) # Upload the changes for review. - # Pylint currently doesn't lint things in py3 mode, and py2 didn't allow - # users to specify `encoding`s for Popen. Hence, pylint is "wrong" here. - # pylint: disable=unexpected-keyword-arg - # The CL URL is sent to 'stderr', so need to redirect 'stderr' to 'stdout'. - upload_changes_obj = subprocess.Popen( + out = subprocess.check_output( ['repo', 'upload', '--yes', '--ne', '--no-verify', '--br=%s' % branch], - cwd=repo, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + cwd=repo, encoding='utf-8') - out, _ = upload_changes_obj.communicate() - - if upload_changes_obj.returncode: # Failed to upload changes. - print(out) - raise ValueError('Failed to upload changes for review') + print(out) found_url = re.search( r'https://chromium-review.googlesource.com/c/' diff --git a/llvm_tools/git_unittest.py b/llvm_tools/git_unittest.py index 39316276..47927716 100755 --- a/llvm_tools/git_unittest.py +++ b/llvm_tools/git_unittest.py @@ -10,6 +10,7 @@ from __future__ import print_function import os import subprocess +import tempfile import unittest import unittest.mock as mock @@ -92,82 +93,53 @@ class HelperFunctionsTest(unittest.TestCase): mock_isdir.assert_called_once() @mock.patch.object(os.path, 'isdir', return_value=True) - @mock.patch.object(subprocess, 'check_output', return_value=None) - @mock.patch.object(subprocess, 'Popen') - def testFailedToUploadChangesForReview(self, mock_repo_upload, - mock_command_output, mock_isdir): - - # Simulate the behavior of 'subprocess.Popen()' when uploading the changes - # for review - # - # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. - mock_repo_upload.return_value.communicate.return_value = ( - None, 'Branch does not exist.') - - # Exit code of 1 means failed to upload changes for review. - mock_repo_upload.return_value.returncode = 1 + @mock.patch.object(subprocess, 'check_output') + @mock.patch.object(tempfile, 'NamedTemporaryFile') + def testSuccessfullyUploadedChangesForReview(self, mock_tempfile, + mock_commands, mock_isdir): path_to_repo = '/some/path/to/repo' - branch = 'invalid-branch-name' + branch = 'branch-name' commit_messages = ['Test message'] + mock_tempfile.return_value.__enter__.return_value.name = 'tmp' - # Verify exception is raised when failed to upload the changes for review. - with self.assertRaises(ValueError) as err: - git.UploadChanges(path_to_repo, branch, commit_messages) + # A test CL generated by `repo upload`. + mock_commands.side_effect = [ + None, + ('remote: https://chromium-review.googlesource.' + 'com/c/chromiumos/overlays/chromiumos-overlay/' + '+/193147 Fix stdout') + ] + change_list = git.UploadChanges(path_to_repo, branch, commit_messages) - self.assertEqual(str(err.exception), 'Failed to upload changes for review') + self.assertEqual(change_list.cl_number, 193147) mock_isdir.assert_called_once_with(path_to_repo) - mock_command_output.assert_called_once() - mock_command_output_args = mock_command_output.call_args_list[0][0][0] - expected_mock_command_output_prefix = ['git', 'commit', '-F'] + expected_command = [ + 'git', 'commit', '-F', + mock_tempfile.return_value.__enter__.return_value.name + ] + self.assertEqual(mock_commands.call_args_list[0], + mock.call(expected_command, cwd=path_to_repo)) + + expected_cmd = [ + 'repo', 'upload', '--yes', '--ne', '--no-verify', + '--br=%s' % branch + ] self.assertEqual( - mock_command_output_args[:len(expected_mock_command_output_prefix)], - expected_mock_command_output_prefix) - - mock_repo_upload.assert_called_once() - - @mock.patch.object(os.path, 'isdir', return_value=True) - @mock.patch.object(subprocess, 'check_output', return_value=None) - @mock.patch.object(subprocess, 'Popen') - def testSuccessfullyUploadedChangesForReview(self, mock_repo_upload, - mock_command_output, mock_isdir): - - # A test CL generated by `repo upload`. - repo_upload_contents = ('remote: https://chromium-review.googlesource.' - 'com/c/chromiumos/overlays/chromiumos-overlay/' - '+/193147 Fix stdout') - - # Simulate the behavior of 'subprocess.Popen()' when uploading the changes - # for review - # - # `Popen.communicate()` returns a tuple of `stdout` and `stderr`. - mock_repo_upload.return_value.communicate.return_value = ( - repo_upload_contents, None) - - # Exit code of 0 means successfully uploaded changes for review. - mock_repo_upload.return_value.returncode = 0 - - path_to_repo = '/some/path/to/repo' - branch = 'branch-name' - commit_messages = ['Test message'] - - change_list = git.UploadChanges(path_to_repo, branch, commit_messages) + mock_commands.call_args_list[1], + mock.call( + expected_cmd, + stderr=subprocess.STDOUT, + cwd=path_to_repo, + encoding='utf-8')) self.assertEqual( change_list.url, 'https://chromium-review.googlesource.com/c/chromiumos/overlays/' 'chromiumos-overlay/+/193147') - self.assertEqual(change_list.cl_number, 193147) - - mock_isdir.assert_called_once_with(path_to_repo) - - mock_command_output.assert_called_once() - - mock_repo_upload.assert_called_once() - if __name__ == '__main__': unittest.main() diff --git a/llvm_tools/update_chromeos_llvm_hash.py b/llvm_tools/update_chromeos_llvm_hash.py index f8cb04e4..e28fe690 100755 --- a/llvm_tools/update_chromeos_llvm_hash.py +++ b/llvm_tools/update_chromeos_llvm_hash.py @@ -19,9 +19,9 @@ from enum import Enum import argparse import os import re +import subprocess from failure_modes import FailureModes -from subprocess_helpers import ExecCommandAndCaptureOutput import chroot import get_llvm_hash import git @@ -206,9 +206,7 @@ def UpdateEbuildLLVMHash(ebuild_path, llvm_variant, git_hash, svn_version): parent_dir = os.path.dirname(ebuild_path) # Stage the changes. - stage_changes_cmd = ['git', '-C', parent_dir, 'add', ebuild_path] - - ExecCommandAndCaptureOutput(stage_changes_cmd, verbose=verbose) + subprocess.check_output(['git', '-C', parent_dir, 'add', ebuild_path]) def ReplaceLLVMHash(ebuild_lines, llvm_variant, git_hash, svn_version): @@ -262,12 +260,10 @@ def UprevEbuildSymlink(symlink): if not is_changed: raise ValueError('Failed to uprev the symlink.') - symlink_dirname = os.path.dirname(symlink) - # rename the symlink - cmd = ['git', '-C', symlink_dirname, 'mv', symlink, new_symlink] - - ExecCommandAndCaptureOutput(cmd, verbose=verbose) + subprocess.check_output( + ['git', '-C', + os.path.dirname(symlink), 'mv', symlink, new_symlink]) def UprevEbuildToVersion(symlink, svn_version): @@ -311,23 +307,19 @@ def UprevEbuildToVersion(symlink, svn_version): symlink_dir = os.path.dirname(symlink) # Rename the ebuild - cmd = ['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild] - ExecCommandAndCaptureOutput(cmd, verbose=verbose) + subprocess.check_output(['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild]) # Create a symlink of the renamed ebuild new_symlink = new_ebuild[:-len('.ebuild')] + '-r1.ebuild' - cmd = ['ln', '-s', '-r', new_ebuild, new_symlink] - ExecCommandAndCaptureOutput(cmd, verbose=verbose) + subprocess.check_output(['ln', '-s', '-r', new_ebuild, new_symlink]) if not os.path.islink(new_symlink): raise ValueError('Invalid symlink name: %s' % new_ebuild[:-len('.ebuild')]) - cmd = ['git', '-C', symlink_dir, 'add', new_symlink] - ExecCommandAndCaptureOutput(cmd, verbose=verbose) + subprocess.check_output(['git', '-C', symlink_dir, 'add', new_symlink]) # Remove the old symlink - cmd = ['git', '-C', symlink_dir, 'rm', symlink] - ExecCommandAndCaptureOutput(cmd, verbose=verbose) + subprocess.check_output(['git', '-C', symlink_dir, 'rm', symlink]) def CreatePathDictionaryFromPackages(chroot_path, update_packages): @@ -355,23 +347,19 @@ def CreatePathDictionaryFromPackages(chroot_path, update_packages): return GetEbuildPathsFromSymLinkPaths(symlink_file_paths) -def RemovePatchesFromFilesDir(patches_to_remove): +def RemovePatchesFromFilesDir(patches): """Removes the patches from $FILESDIR of a package. Args: - patches_to_remove: A list where each entry is the absolute path to a patch. + patches: A list of absolute pathes of patches to remove Raises: ValueError: Failed to remove a patch in $FILESDIR. """ - for cur_patch in patches_to_remove: - remove_patch_cmd = [ - 'git', '-C', - os.path.dirname(cur_patch), 'rm', '-f', cur_patch - ] - - ExecCommandAndCaptureOutput(remove_patch_cmd, verbose=verbose) + for patch in patches: + subprocess.check_output( + ['git', '-C', os.path.dirname(patch), 'rm', '-f', patch]) def StagePatchMetadataFileForCommit(patch_metadata_file_path): @@ -390,12 +378,10 @@ def StagePatchMetadataFileForCommit(patch_metadata_file_path): 'Invalid patch metadata file provided: %s' % patch_metadata_file_path) # Cmd to stage the patch metadata file for commit. - stage_patch_file = [ + subprocess.check_output([ 'git', '-C', os.path.dirname(patch_metadata_file_path), 'add', patch_metadata_file_path - ] - - ExecCommandAndCaptureOutput(stage_patch_file, verbose=verbose) + ]) def StagePackagesPatchResultsForCommit(package_info_dict, commit_messages): diff --git a/llvm_tools/update_chromeos_llvm_hash_unittest.py b/llvm_tools/update_chromeos_llvm_hash_unittest.py index 5f86c2b0..205feb0c 100755 --- a/llvm_tools/update_chromeos_llvm_hash_unittest.py +++ b/llvm_tools/update_chromeos_llvm_hash_unittest.py @@ -12,6 +12,7 @@ from collections import namedtuple from datetime import datetime import os import re +import subprocess import unittest import unittest.mock as mock @@ -102,14 +103,8 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(mock_isfile.call_count, 2) - # Simulate 'os.path.isfile' behavior on a valid ebuild path. @mock.patch.object(os.path, 'isfile', return_value=True) - # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the - # ebuild file for commit. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyStageTheEbuildForCommitForLLVMHashUpdate( self, mock_stage_commit_command, mock_isfile): @@ -145,14 +140,8 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_stage_commit_command.assert_called_once() - # Simulate 'os.path.isfile' behavior on a valid ebuild path. @mock.patch.object(os.path, 'isfile', return_value=True) - # Simulate 'ExecCommandAndCaptureOutput()' when successfully staged the - # ebuild file for commit. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyStageTheEbuildForCommitForLLVMNextHashUpdate( self, mock_stage_commit_command, mock_isfile): @@ -251,10 +240,7 @@ class UpdateLLVMHashTest(unittest.TestCase): @mock.patch.object(os.path, 'islink', return_value=True) @mock.patch.object(os.path, 'realpath') - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyUprevEbuildToVersionLLVM(self, mock_command_output, mock_realpath, mock_islink): symlink = '/path/to/llvm/llvm_pre3_p2-r10.ebuild' @@ -282,26 +268,23 @@ class UpdateLLVMHashTest(unittest.TestCase): expected_cmd = ['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild] self.assertEqual(mock_command_output.call_args_list[0], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) expected_cmd = ['ln', '-s', '-r', new_ebuild, new_symlink] self.assertEqual(mock_command_output.call_args_list[1], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) expected_cmd = ['git', '-C', symlink_dir, 'add', new_symlink] self.assertEqual(mock_command_output.call_args_list[2], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) expected_cmd = ['git', '-C', symlink_dir, 'rm', symlink] self.assertEqual(mock_command_output.call_args_list[3], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) @mock.patch.object(os.path, 'islink', return_value=True) @mock.patch.object(os.path, 'realpath') - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyUprevEbuildToVersionNonLLVM(self, mock_command_output, mock_realpath, mock_islink): symlink = '/path/to/compiler-rt/compiler-rt_pre3_p2-r10.ebuild' @@ -325,28 +308,22 @@ class UpdateLLVMHashTest(unittest.TestCase): expected_cmd = ['git', '-C', symlink_dir, 'mv', ebuild, new_ebuild] self.assertEqual(mock_command_output.call_args_list[0], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) expected_cmd = ['ln', '-s', '-r', new_ebuild, new_symlink] self.assertEqual(mock_command_output.call_args_list[1], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) expected_cmd = ['git', '-C', symlink_dir, 'add', new_symlink] self.assertEqual(mock_command_output.call_args_list[2], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) expected_cmd = ['git', '-C', symlink_dir, 'rm', symlink] self.assertEqual(mock_command_output.call_args_list[3], - mock.call(expected_cmd, verbose=False)) + mock.call(expected_cmd)) - # Simulate 'os.path.islink' when a valid symbolic link is passed in. @mock.patch.object(os.path, 'islink', return_value=True) - # Simulate 'RunCommandWOutput' when successfully added the upreved symlink - # for commit. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyUprevEbuildSymlink(self, mock_command_output, mock_islink): symlink_to_uprev = '/symlink/to/package-r1.ebuild' @@ -452,12 +429,7 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_ebuild_paths_from_symlink_paths.assert_called_once_with( [package_symlink_path]) - # Simulate behavior of 'ExecCommandAndCaptureOutput()' when successfully - # removed patches. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyRemovedPatchesFromFilesDir(self, mock_run_cmd): patches_to_remove_list = [ '/abs/path/to/filesdir/cherry/fix_output.patch', @@ -468,8 +440,6 @@ class UpdateLLVMHashTest(unittest.TestCase): self.assertEqual(mock_run_cmd.call_count, 2) - # Simulate behavior of 'os.path.isfile()' when the absolute path to the patch - # metadata file does not exist. @mock.patch.object(os.path, 'isfile', return_value=False) def testInvalidPatchMetadataFileStagedForCommit(self, mock_isfile): patch_metadata_path = '/abs/path/to/filesdir/PATCHES' @@ -486,15 +456,8 @@ class UpdateLLVMHashTest(unittest.TestCase): mock_isfile.assert_called_once() - # Simulate the behavior of 'os.path.isfile()' when the absolute path to the - # patch metadata file exists. @mock.patch.object(os.path, 'isfile', return_value=True) - # Simulate the behavior of 'ExecCommandAndCaptureOutput()' when successfully - # staged the patch metadata file for commit. - @mock.patch.object( - update_chromeos_llvm_hash, - 'ExecCommandAndCaptureOutput', - return_value=None) + @mock.patch.object(subprocess, 'check_output', return_value=None) def testSuccessfullyStagedPatchMetadataFileForCommit(self, mock_run_cmd, _mock_isfile): diff --git a/llvm_tools/update_packages_and_run_tests_unittest.py b/llvm_tools/update_packages_and_run_tests_unittest.py index a4e92421..d852893a 100755 --- a/llvm_tools/update_packages_and_run_tests_unittest.py +++ b/llvm_tools/update_packages_and_run_tests_unittest.py @@ -331,7 +331,6 @@ class UpdatePackagesAndRunTestCQTest(unittest.TestCase): self.assertIn('is not a valid llvm trybot', str(context.exception)) - # Mock ExecCommandAndCaptureOutput for the gerrit command execution. @mock.patch.object(subprocess, 'check_output', return_value=None) def testStartCQDryRunNoDeps(self, mock_exec_cmd): chroot_path = '/abs/path/to/chroot' -- cgit v1.2.3 From 42e215fef37c81fc1904cb0e338bb98089ff5e72 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 1 May 2020 14:15:28 -0700 Subject: toolchain-utils: s/_/-/g on board names in buildbot_test_toolchains.py Some boards are spelled inconsistently, having underscores in some places and dashes in others. This was causing nightly test reporting to fail for one board. This change makes use query with consistent naming by always using dashes in the board name and. BUG=chromium:1077313 TEST=Ran script with --test=True, see new URI, gsutil ls URI gives results. Change-Id: I7fabed1c85009e3b84e3c320aff0c7186db3d001 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2174834 Reviewed-by: Tiancong Wang Commit-Queue: Bob Haarman Tested-by: Bob Haarman --- buildbot_test_toolchains.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 1e8b33ac..026a4ae5 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -266,8 +266,12 @@ class ToolchainComparator(object): """ if self._recipe: print('Using recipe buckets to get latest image.') + # crbug.com/1077313: Some boards are not consistently + # spelled, having underscores in some places and dashes in others. + # The image directories consistenly use dashes, so convert underscores + # to dashes to work around this. trybot_image = buildbot_utils.GetLatestRecipeImage( - self._chromeos_root, '%s-llvm-next-nightly' % self._board) + self._chromeos_root, '%s-llvm-next-nightly' % self._board.replace('_', '-')) else: # Launch tryjob and wait to get image location. buildbucket_id, trybot_image = buildbot_utils.GetTrybotImage( -- cgit v1.2.3 From 97ef4d03ec0a26f2d67e6d9dae7f018e0eb302ea Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Sun, 3 May 2020 14:30:23 -0700 Subject: Replace 'veyron-minnie' with 'veyron_minnie' for vanilla image lookup. The recipe builders use hyphens in the board archives, so when we get the trybot image from the recipe builder archives, it has a hyphen rather than an underscore. We then use the trybot image name to find the corresponding vanilla image. But the vanilla images are in archives that are still using the underscore in the board name (for veyron_minnie). So we need to update the trybot name to use the underscore again before looking for the vanilla image. BUG=chromium:1077618 TEST=None Change-Id: I01057a8546e87af0157514003cd63729853a1552 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2177651 Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- buildbot_test_toolchains.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 026a4ae5..b02fc44d 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -122,6 +122,11 @@ class ToolchainComparator(object): Returns: Latest official image name, e.g. 'daisy-release/R57-9089.0.0'. """ + # For board names with underscores, we need to fix the trybot image name + # to replace the hyphen (for the recipe builder) with the underscore. + # Currently the only such board we use is 'veyron_minnie'. + if trybot_image.find('veyron-minnie') != -1: + trybot_image = trybot_image.replace('veyron-minnie', 'veyron_minnie') # We need to filter out -tryjob in the trybot_image. if self._recipe: trybot = re.sub('-llvm-next-nightly', '-release', trybot_image) @@ -271,7 +276,8 @@ class ToolchainComparator(object): # The image directories consistenly use dashes, so convert underscores # to dashes to work around this. trybot_image = buildbot_utils.GetLatestRecipeImage( - self._chromeos_root, '%s-llvm-next-nightly' % self._board.replace('_', '-')) + self._chromeos_root, + '%s-llvm-next-nightly' % self._board.replace('_', '-')) else: # Launch tryjob and wait to get image location. buildbucket_id, trybot_image = buildbot_utils.GetTrybotImage( -- cgit v1.2.3 From 47c8f96553e22616164ec43b806c0ae75c1bf159 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 4 May 2020 11:58:32 -0700 Subject: toolchain-utils: Update the xbuddy lookup for hyphens in board names. BUG=chromium:1077841 TEST=tested manually with Crosperf & veyron_minnie & it worked. Change-Id: Ied842f9109ea81d751c2fc5d676d547ef5122271 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2180299 Reviewed-by: Bob Haarman Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- crosperf/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crosperf/settings.py b/crosperf/settings.py index 41530d97..75c8d9ec 100644 --- a/crosperf/settings.py +++ b/crosperf/settings.py @@ -75,7 +75,7 @@ class Settings(object): prefix = 'remote' l = logger.GetLogger() if (path_str.find('trybot') < 0 and path_str.find('toolchain') < 0 and - path_str.find(board) < 0): + path_str.find(board) < 0 and path_str.find(board.replace('_', '-'))): xbuddy_path = '%s/%s/%s' % (prefix, board, path_str) else: xbuddy_path = '%s/%s' % (prefix, path_str) -- cgit v1.2.3 From 900d6e7f33499bd70cdac8302917d37f812b7ffc Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 2 May 2020 10:28:55 -0700 Subject: lock_machine: shout when our `swarming` command dies When I tried to run crosperf without proper `swarming.py` authentication, crosperf said the machine I wanted to use wasn't available in skylab. It'd be better if we reported that we couldn't tell if the machine was/wasn't in skylab due to the tool we're using failing. Looks like this script can fail for a number of other reasons, too, so throwing our hands up is likely going to often be our best bet. BUG=None TEST=ran without auth; exception was thrown. ran with; things worked. Change-Id: I4d0e4ec70eddb3a7836686eef819e6175a730756 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2177063 Reviewed-by: Bob Haarman Tested-by: George Burgess --- lock_machine.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lock_machine.py b/lock_machine.py index 8588ebfd..dc494142 100755 --- a/lock_machine.py +++ b/lock_machine.py @@ -386,7 +386,11 @@ class LockManager(object): (swarming, credential, machine.rstrip('.cros'))) - ret_tup = self.ce.RunCommandWOutput(cmd) + exit_code, stdout, stderr = self.ce.RunCommandWOutput(cmd) + if exit_code: + raise ValueError( + 'Querying bots failed (2); stdout: %r; stderr: %r' % (stdout, stderr)) + # The command will return a json output as stdout. If machine not in skylab # stdout will look like this: # { @@ -395,10 +399,7 @@ class LockManager(object): # } # Otherwise there will be a tuple starting with 'items', we simply detect # this keyword for result. - if 'items' not in ret_tup[1]: - return False - else: - return True + return 'items' in stdout def LeaseSkylabMachine(self, machine): """Run command to lease dut from skylab. -- cgit v1.2.3 From bdb74f76914921f50ac50da29499c5bb4f0c7741 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 2 May 2020 10:45:39 -0700 Subject: lock_machine: look up skylab on $PATH Not all cipd installations go into /usr/local/bin/. Chrotomation3 appears to have it on its path: mobiletc-prebuild@chrotomation3:~/$ which skylab /usr/local/bin/skylab So this should be a nop, and should be more flexible for people who want to have their cipd bits elsewhere. BUG=None TEST=ran crosperf Change-Id: If0aae16f123ac23dd015b3bf879c899e06e20901 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2177064 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- lock_machine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lock_machine.py b/lock_machine.py index dc494142..10e6049a 100755 --- a/lock_machine.py +++ b/lock_machine.py @@ -53,7 +53,7 @@ class LockManager(object): machines, using appropriate locking mechanisms for each. """ - SKYLAB_PATH = '/usr/local/bin/skylab' + SKYLAB_PATH = 'skylab' # TODO(zhizhouy): lease time may needs to be dynamically adjusted. For now we # set it long enough to cover the period to finish nightly rotation tests. -- cgit v1.2.3 From b35bdfeea0d235f88592763393dc3a769568dd5c Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 2 May 2020 10:52:07 -0700 Subject: lock_machine: slightly adjust lease duration When trying to lock a skylab machine, I got the following error: ``` Lease duration (1440 minutes) cannot exceed 1 day [1440 minutes] ``` Though our lease duration doesn't _exceed_ one day, it's easy enough to drop it by one minute to make the error go away. BUG=None TEST=Ran crosperf Change-Id: I75c11de1a70e46f75a50c5022f6b4860c0338c1f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2177065 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- lock_machine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lock_machine.py b/lock_machine.py index 10e6049a..776fe545 100755 --- a/lock_machine.py +++ b/lock_machine.py @@ -57,7 +57,7 @@ class LockManager(object): # TODO(zhizhouy): lease time may needs to be dynamically adjusted. For now we # set it long enough to cover the period to finish nightly rotation tests. - LEASE_MINS = 1440 + LEASE_MINS = 1439 SKYLAB_CREDENTIAL = ('/usr/local/google/home/mobiletc-prebuild' '/sheriff_utils/credentials/skylab' -- cgit v1.2.3 From 663dcce7c7b32946bc57e46bae1f1b7370e4fbb2 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 4 May 2020 12:15:18 -0700 Subject: llvm_tools: add logging to the revert checker Somehow this revert checker is dropping reverts on the floor, which is confusing to me. Log the 'last run' state so it's easier to understand what this checker was thinking. BUG=None TEST=Ran the script Change-Id: I586bbbd35f7d414faebda9068c04f552152891de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2180842 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- llvm_tools/nightly_revert_checker.py | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 2a41f8c7..71b5574b 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -244,6 +244,7 @@ def main(argv: t.List[str]) -> None: logging.info('Interesting SHAs were %r', interesting_shas) state = _read_state(state_file) + logging.info('Loaded state\n%s', pprint.pformat(state)) def prettify_sha(sha: str) -> tiny_render.Piece: rev = get_llvm_hash.GetVersionFrom(llvm_dir, sha) -- cgit v1.2.3 From b7cc8cd6bc3b0c9652b817e976cc4f58c96bd34d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 2 May 2020 17:48:41 -0700 Subject: cros_utils: fix a bad format string `'%s' + 'bar' % baz` == `'%s' + ('bar' % baz)`, which raises an exception. OTOH, `'%s' 'bar' % baz` == `('%s' 'bar') % baz`, so do that instead. BUG=None TEST=Unittests Change-Id: I83313e8fcb34d4ca923f3730133eec528ea6f9eb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2177144 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- cros_utils/tabulator.py | 78 ++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 2cf4ffd7..b4092993 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -299,8 +299,8 @@ class SamplesTableGenerator(TableGenerator): all_runs_empty = all(not dict for label in bench_runs for dict in label) if all_runs_empty: cell = Cell() - cell.string_value = 'Benchmark %s contains no result.' + \ - ' Is the benchmark name valid?' % k + cell.string_value = ('Benchmark %s contains no result.' + ' Is the benchmark name valid?' % k) table.append([cell]) else: row = [k] @@ -1150,8 +1150,10 @@ class TableFormatter(object): result_name = column.result.__class__.__name__ format_name = column.fmt.__class__.__name__ - cell.string_value = '%s %s' % (result_name.replace('Result', ''), - format_name.replace('Format', '')) + cell.string_value = '%s %s' % ( + result_name.replace('Result', ''), + format_name.replace('Format', ''), + ) header.append(cell) @@ -1493,39 +1495,41 @@ def GetComplexTable(runs, labels, out_to=TablePrinter.CONSOLE): if __name__ == '__main__': # Run a few small tests here. - runs = [[{ - 'k1': '10', - 'k2': '12', - 'k5': '40', - 'k6': '40', - 'ms_1': '20', - 'k7': 'FAIL', - 'k8': 'PASS', - 'k9': 'PASS', - 'k10': '0' - }, - { - 'k1': '13', - 'k2': '14', - 'k3': '15', - 'ms_1': '10', - 'k8': 'PASS', - 'k9': 'FAIL', - 'k10': '0' - }], - [{ - 'k1': '50', - 'k2': '51', - 'k3': '52', - 'k4': '53', - 'k5': '35', - 'k6': '45', - 'ms_1': '200', - 'ms_2': '20', - 'k7': 'FAIL', - 'k8': 'PASS', - 'k9': 'PASS' - }]] + runs = [ + [{ + 'k1': '10', + 'k2': '12', + 'k5': '40', + 'k6': '40', + 'ms_1': '20', + 'k7': 'FAIL', + 'k8': 'PASS', + 'k9': 'PASS', + 'k10': '0' + }, + { + 'k1': '13', + 'k2': '14', + 'k3': '15', + 'ms_1': '10', + 'k8': 'PASS', + 'k9': 'FAIL', + 'k10': '0' + }], + [{ + 'k1': '50', + 'k2': '51', + 'k3': '52', + 'k4': '53', + 'k5': '35', + 'k6': '45', + 'ms_1': '200', + 'ms_2': '20', + 'k7': 'FAIL', + 'k8': 'PASS', + 'k9': 'PASS' + }], + ] labels = ['vanilla', 'modified'] t = GetComplexTable(runs, labels, TablePrinter.CONSOLE) print(t) -- cgit v1.2.3 From 4ceeb16b9162334c929d7232e5b7a2c96e9189f7 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Thu, 30 Apr 2020 17:38:09 +0000 Subject: Revert "wrapper: Temporarily disable -Wmax-tokens" This reverts commit 3b2358092e00ab7904a873b516ac6aac832c2277. According to crrev.com/c/2171058, the fix in chromium could work. Will wait till the patch submitted in chromium and CrOS uprevs to merge the change into CrOS. Reason for revert: The workaround is not needed anymore. Original change's description: > wrapper: Temporarily disable -Wmax-tokens > > As reported in crbug.com/1072209, -Wmax-tokens is causing latest > chrome fail to build. While we are blocked by Chrome uprevs, we > want to update the compiler by disabling the warning, until it's > fixed properly on upstream Chrome. > > BUG=chromium:1072209 > TEST=Local testing in CrOS > > Change-Id: I082dd342a802e80250d0fca7c4b15afb4e972e7e > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2161770 > Commit-Queue: Tiancong Wang > Tested-by: Tiancong Wang > Reviewed-by: George Burgess Bug: chromium:1072209 Change-Id: I904fb3c4f7d125579667bef675be654a5465fad9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2173949 Tested-by: Tiancong Wang Reviewed-by: Manoj Gupta Commit-Queue: Tiancong Wang --- compiler_wrapper/config.go | 2 -- compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 --------- .../cros_hardened_golden/clang_maincc_target_specific.json | 9 --------- .../testdata/cros_hardened_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 -------- .../testdata/cros_hardened_golden/clang_specific_args.json | 7 ------- .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ------ .../testdata/cros_hardened_golden/clangtidy.json | 8 -------- .../testdata/cros_hardened_golden/force_disable_werror.json | 5 ----- .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ---- .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 --- .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 -------- .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 ----- .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ---- .../testdata/cros_hardened_noccache_golden/bisect.json | 3 --- .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 -------- .../cros_hardened_noccache_golden/force_disable_werror.json | 5 ----- .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ---- 21 files changed, 137 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 79cccbbc..fc43a29b 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -120,7 +120,6 @@ var crosHardenedConfig = &config{ // Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742. // Pass "-fcommon" till the packages are fixed to work with new clang default // "-fno-common", crbug.com/1060413. - // Temporary/Backup solutions to roll compiler to r387436. FIXME(tcwang): Remove after crbug.com/1072209 is fixed. clangFlags: []string{ "-Qunused-arguments", "-grecord-gcc-switches", @@ -134,7 +133,6 @@ var crosHardenedConfig = &config{ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index aa1e7e07..5b95cdb7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,7 +38,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -100,7 +99,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,7 +163,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index c827dcde..aa083d70 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,7 +29,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,7 +80,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,7 +131,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -185,7 +182,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -237,7 +233,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -289,7 +284,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -341,7 +335,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -393,7 +386,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -445,7 +437,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 49528627..257c0a05 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,7 +28,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -78,7 +77,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -128,7 +126,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -178,7 +175,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -228,7 +224,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -278,7 +273,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,7 +322,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -378,7 +371,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -428,7 +420,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 5ebe0831..b9edc49d 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,7 +28,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,7 +80,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,7 +132,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -187,7 +184,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -247,7 +243,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -312,7 +307,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -372,7 +366,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -427,7 +420,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -477,7 +469,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -527,7 +518,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -577,7 +567,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -630,7 +619,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index cc287b09..2d70dfbf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,7 +30,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -82,7 +81,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,7 +132,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -186,7 +183,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -237,7 +233,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -290,7 +285,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -343,7 +337,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -394,7 +387,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index dbb47c62..50f71a6f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,7 +39,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -90,7 +89,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -142,7 +140,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -194,7 +191,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -246,7 +242,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -298,7 +293,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -350,7 +344,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 6787aab0..b690e3ed 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,7 +63,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -116,7 +115,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -162,7 +160,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -211,7 +208,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -261,7 +257,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -310,7 +305,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index f165726b..26abab87 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,7 +43,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -74,7 +73,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -135,7 +133,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -167,7 +164,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -230,7 +226,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -265,7 +260,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -329,7 +323,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -361,7 +354,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 939faee5..61a63a37 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,7 +31,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -84,7 +83,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -123,7 +121,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -180,7 +177,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -219,7 +215,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index bbabfcc4..a37725c0 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,7 +28,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -102,7 +101,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -171,7 +169,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,7 +221,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index aa1e7e07..5b95cdb7 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,7 +38,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -100,7 +99,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,7 +163,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 5ebe0831..b9edc49d 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,7 +28,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,7 +80,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,7 +132,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -187,7 +184,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -247,7 +243,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -312,7 +307,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -372,7 +366,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -427,7 +420,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -477,7 +469,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -527,7 +518,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -577,7 +567,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -630,7 +619,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index f165726b..26abab87 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,7 +43,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -74,7 +73,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -135,7 +133,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -167,7 +164,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -230,7 +226,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -265,7 +260,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -329,7 +323,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -361,7 +354,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 939faee5..61a63a37 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,7 +31,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -84,7 +83,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -123,7 +121,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -180,7 +177,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -219,7 +215,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index bbabfcc4..a37725c0 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,7 +28,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -102,7 +101,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -171,7 +169,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,7 +221,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index 58db33a5..e9bc3661 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,7 +37,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -95,7 +94,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -156,7 +154,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index 489dccd4..c21d6198 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,7 +27,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -74,7 +73,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,7 +119,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -168,7 +165,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -222,7 +218,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -282,7 +277,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -341,7 +335,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -390,7 +383,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -434,7 +426,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -478,7 +469,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -522,7 +512,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -569,7 +558,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index f165726b..26abab87 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,7 +43,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -74,7 +73,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -135,7 +133,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -167,7 +164,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -230,7 +226,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -265,7 +260,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -329,7 +323,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -361,7 +354,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index d420c204..ce35f311 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,7 +30,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,7 +76,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -110,7 +108,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -161,7 +158,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -194,7 +190,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index f514fae6..f716dde3 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,7 +28,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -97,7 +96,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,7 +164,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", @@ -219,7 +216,6 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-Wno-max-tokens", "-fstack-protector-strong", "-fPIE", "-pie", -- cgit v1.2.3 From c3ef8fb837482ad60e05d3c7c0638970bc4d2578 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 5 May 2020 10:22:33 -0700 Subject: githooks: enter the chroot in presubmits In general, running tests is likely best done in a consistent environment. The more pressing concern here is that depot_tools doesn't fully support python3 yet, so things like our `yapf` check always fail outside of the chroot, if they happen to pick up on depot_tools' yapf. BUG=chromium:1030828 TEST=Ran presubmits on files with type annotations. They now work inside or outside of the chroot. Change-Id: If22a3766e01ea26ebc9e78bc4b40d90ad5d49049 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2182163 Reviewed-by: Tiancong Wang Reviewed-by: Manoj Gupta Tested-by: George Burgess --- toolchain_utils_githooks/check-presubmit.py | 62 ++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/toolchain_utils_githooks/check-presubmit.py b/toolchain_utils_githooks/check-presubmit.py index fc6ec9fc..8f204058 100755 --- a/toolchain_utils_githooks/check-presubmit.py +++ b/toolchain_utils_githooks/check-presubmit.py @@ -23,6 +23,7 @@ import subprocess import sys import threading import traceback +import typing as t def run_command_unchecked(command, cwd, env=None): @@ -459,13 +460,69 @@ def try_autofix(all_autofix_commands, toolchain_utils_root): 'some lints may now be fixed') +def find_repo_root(base_dir: str) -> t.Optional[str]: + current = base_dir + while current != '/': + if os.path.isdir(os.path.join(current, '.repo')): + return current + current = os.path.dirname(current) + return None + + +def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: + if os.path.exists('/etc/cros_chroot_version'): + return + + enter_chroot = True + toolchain_utils = detect_toolchain_utils_root() + if find_repo_root(toolchain_utils) is None: + print('Standalone toolchain-utils checkout detected; cannot enter chroot.') + enter_chroot = False + + if not has_executable_on_path('cros_sdk'): + print('No `cros_sdk` detected on $PATH; cannot enter chroot.') + enter_chroot = False + + if not enter_chroot: + print('Giving up on entering the chroot; be warned that some presubmits ' + 'may be broken.') + return + + # We'll be changing ${PWD}, so make everything relative to toolchain-utils, + # which resides at a well-known place inside of the chroot. + chroot_toolchain_utils = '/mnt/host/source/src/third_party/toolchain-utils' + + def rebase_path(path: str) -> str: + return os.path.join(chroot_toolchain_utils, + os.path.relpath(path, toolchain_utils)) + + args = [ + 'cros_sdk', + '--enter', + '--', + rebase_path(__file__), + ] + + if not autofix: + args.append('--no_autofix') + args.extend(rebase_path(x) for x in files) + + print('Attempting to enter the chroot...') + os.execvp(args[0], args) + + def main(argv): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( '--no_autofix', dest='autofix', action='store_false', - help="Don't run any autofix commands") + help="Don't run any autofix commands.") + parser.add_argument( + '--no_enter_chroot', + dest='enter_chroot', + action='store_false', + help="Prevent auto-entering the chroot if we're not already in it.") parser.add_argument('files', nargs='*') opts = parser.parse_args(argv) @@ -473,6 +530,9 @@ def main(argv): if not files: return 0 + if opts.enter_chroot: + maybe_reexec_inside_chroot(opts.autofix, opts.files) + files = [os.path.abspath(f) for f in files] # Note that we extract .__name__s from these, so please name them in a -- cgit v1.2.3 From aebe42390cdd3f92a798b5250e98b240346347cd Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Wed, 6 May 2020 12:33:49 -0700 Subject: llvm_tools: Remove unused verbose args RunTryJobs does not take a verbose arg anymore. Fix modify_a_tryjob.py to not pass it. BUG=None TEST=llvm_bisection works Change-Id: Ief59aa5f8df2ed9364e506df2b066a02167ee6bd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2185710 Reviewed-by: Manoj Gupta Tested-by: Manoj Gupta --- llvm_tools/modify_a_tryjob.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/llvm_tools/modify_a_tryjob.py b/llvm_tools/modify_a_tryjob.py index 0d6b070f..4d41e6b2 100755 --- a/llvm_tools/modify_a_tryjob.py +++ b/llvm_tools/modify_a_tryjob.py @@ -135,7 +135,7 @@ def GetCLAfterUpdatingPackages(packages, git_hash, svn_version, chroot_path, def CreateNewTryjobEntryForBisection(cl, extra_cls, options, builder, - chroot_path, verbose, cl_url, revision): + chroot_path, cl_url, revision): """Submits a tryjob and adds additional information.""" # Get the tryjob results after submitting the tryjob. @@ -150,7 +150,7 @@ def CreateNewTryjobEntryForBisection(cl, extra_cls, options, builder, # } # ] tryjob_results = update_packages_and_run_tests.RunTryJobs( - cl, extra_cls, options, [builder], chroot_path, verbose) + cl, extra_cls, options, [builder], chroot_path) print('\nTryjob:') print(tryjob_results[0]) @@ -173,9 +173,10 @@ def AddTryjob(packages, git_hash, revision, chroot_path, patch_metadata_file, chroot_path, patch_metadata_file, svn_option) - tryjob_dict = CreateNewTryjobEntryForBisection( - change_list.cl_number, extra_cls, options, builder, chroot_path, verbose, - change_list.url, revision) + tryjob_dict = CreateNewTryjobEntryForBisection(change_list.cl_number, + extra_cls, options, builder, + chroot_path, change_list.url, + revision) return tryjob_dict @@ -219,8 +220,8 @@ def PerformTryjobModification(revision, modify_tryjob, status_file, extra_cls, # 'FindTryjobIndex()' returns None if the tryjob was not found. if tryjob_index is None and modify_tryjob != ModifyTryjob.ADD: - raise ValueError( - 'Unable to find tryjob for %d in %s' % (revision, status_file)) + raise ValueError('Unable to find tryjob for %d in %s' % + (revision, status_file)) # Determine the action to take based off of 'modify_tryjob'. if modify_tryjob == ModifyTryjob.REMOVE: @@ -272,8 +273,8 @@ def PerformTryjobModification(revision, modify_tryjob, status_file, extra_cls, else: raise ValueError('Failed to add tryjob to %s' % status_file) else: - raise ValueError( - 'Invalid "modify_tryjob" option provided: %s' % modify_tryjob) + raise ValueError('Invalid "modify_tryjob" option provided: %s' % + modify_tryjob) with open(status_file, 'w') as update_tryjobs: json.dump(bisect_contents, update_tryjobs, indent=4, separators=(',', ': ')) @@ -286,11 +287,12 @@ def main(): args_output = GetCommandLineArgs() - PerformTryjobModification( - args_output.revision, ModifyTryjob( - args_output.modify_tryjob), args_output.status_file, - args_output.extra_change_lists, args_output.options, args_output.builder, - args_output.chroot_path, args_output.verbose) + PerformTryjobModification(args_output.revision, + ModifyTryjob(args_output.modify_tryjob), + args_output.status_file, + args_output.extra_change_lists, args_output.options, + args_output.builder, args_output.chroot_path, + args_output.verbose) if __name__ == '__main__': -- cgit v1.2.3 From 27d9f7954d0ebe64182f21db72afb8779583e1ce Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 12 May 2020 15:18:37 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R84-13080.0-1589189810 Update chromeos-kernel-4_4 to R84-13080.0-1589189726 Update chromeos-kernel-4_14 to R84-13080.0-1589190025 Update chromeos-kernel-4_19 to R84-13080.0-1589189550 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I5c432e1ee0bc9e2aac266b689f5e68916a6f54fd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2197462 Tested-by: Denis Nikitin Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f4eaa343..4f254957 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,15 +3,15 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R84-13042.0-1587980118" + "name": "R84-13080.0-1589189726" }, "chromeos-kernel-3_18": { - "name": "R84-13042.0-1587980585" + "name": "R84-13080.0-1589189810" }, "chromeos-kernel-4_14": { - "name": "R84-13042.0-1587980204" + "name": "R84-13080.0-1589190025" }, "chromeos-kernel-4_19": { - "name": "R84-13042.0-1587979951" + "name": "R84-13080.0-1589189550" } -} \ No newline at end of file +} -- cgit v1.2.3 From e7b6e75fe8307e7bbc6a95f9cbc73a410cd2ab4d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 13 May 2020 13:21:18 -0700 Subject: githooks: ensure pip + scipy are installed Now that we always enter the chroot for presubmits, we might try to run tests in a world where we run `crosperf` tests without `numpy` or `scipy` installed. There's probably a better solution here (this one is kinda bad because presubmits are 'quiet' until we fail, and all of this setup can take up to a minute), but until we find that, stop the bleeding (aka people doing `--no-verify`) BUG=chromium:980719 TEST=Ran crosperf tests with a fresh chroot. Change-Id: I71275f6be0e38bf086b14d35b8bc4bfffcd7ab18 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2199644 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- toolchain_utils_githooks/check-presubmit.py | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/toolchain_utils_githooks/check-presubmit.py b/toolchain_utils_githooks/check-presubmit.py index 8f204058..26373342 100755 --- a/toolchain_utils_githooks/check-presubmit.py +++ b/toolchain_utils_githooks/check-presubmit.py @@ -469,8 +469,12 @@ def find_repo_root(base_dir: str) -> t.Optional[str]: return None +def is_in_chroot() -> bool: + return os.path.exists('/etc/cros_chroot_version') + + def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: - if os.path.exists('/etc/cros_chroot_version'): + if is_in_chroot(): return enter_chroot = True @@ -511,6 +515,25 @@ def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: os.execvp(args[0], args) +# FIXME(crbug.com/980719): we probably want a better way of handling this. For +# now, as a workaround, ensure we have all dependencies installed as a part of +# presubmits. pip and scipy are fast enough to install (they take <1min +# combined on my machine), so hoooopefully users won't get too impatient. +def ensure_scipy_installed() -> None: + if not has_executable_on_path('pip'): + print('Autoinstalling `pip`...') + subprocess.check_call(['sudo', 'emerge', 'dev-python/pip']) + + exit_code = subprocess.call( + ['python3', '-c', 'import scipy'], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + if exit_code != 0: + print('Autoinstalling `scipy`...') + subprocess.check_call(['pip', 'install', '--user', 'scipy']) + + def main(argv): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( @@ -533,6 +556,11 @@ def main(argv): if opts.enter_chroot: maybe_reexec_inside_chroot(opts.autofix, opts.files) + # If you ask for --no_enter_chroot, you're on your own for installing these + # things. + if is_in_chroot(): + ensure_scipy_installed() + files = [os.path.abspath(f) for f in files] # Note that we extract .__name__s from these, so please name them in a -- cgit v1.2.3 From 2147769daea8a3cad93d6c62017e42e1b7461e62 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 12 May 2020 19:39:47 -0700 Subject: toolchain_utils: Make DUT config in nightly crosperf default Remove experiment arguments reducing performance noise from the buildbot_test_toolchains script and make the values default in experiment settings. Add descriptions about default values. BUG=None TEST=Tested on local DUT. Change-Id: I5fa3d5bf36a2ca37da713b42b49c1f2ad4f08c98 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2197549 Tested-by: Denis Nikitin Reviewed-by: Zhizhou Yang --- buildbot_test_toolchains.py | 8 ++----- crosperf/settings_factory.py | 43 ++++++++++++++++++++--------------- crosperf/settings_factory_unittest.py | 8 +++---- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index b02fc44d..e4784a62 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -160,10 +160,6 @@ class ToolchainComparator(object): board: %s remote: %s retries: 1 - cooldown_temp: 40 - cooldown_time: 10 - cpu_freq_pct: 95 - top_interval: 1 """ % (self._board, self._remotes) experiment_tests = """ benchmark: all_toolchain_perf { @@ -231,8 +227,8 @@ class ToolchainComparator(object): crosperf = os.path.join(TOOLCHAIN_DIR, 'crosperf', 'crosperf') noschedv2_opts = '--noschedv2' if self._noschedv2 else '' command = ('{crosperf} --no_email={no_email} --results_dir={r_dir} ' - '--intel_pstate=no_hwp --logging_level=verbose ' - '--json_report=True {noschedv2_opts} {exp_file}').format( + '--logging_level=verbose --json_report=True {noschedv2_opts} ' + '{exp_file}').format( crosperf=crosperf, no_email=not self._test, r_dir=self._reports_dir, diff --git a/crosperf/settings_factory.py b/crosperf/settings_factory.py index cfc40130..16e21a7d 100644 --- a/crosperf/settings_factory.py +++ b/crosperf/settings_factory.py @@ -344,16 +344,16 @@ class GlobalSettings(Settings): TextField( 'intel_pstate', description='Intel Pstate mode.\n' - 'Supported modes: passive, no_hwp.\n' - 'By default kernel works in active HWP mode if HWP is supported' - " by CPU. This corresponds to a default intel_pstate=''", + 'Supported modes: "active", "passive", "no_hwp".\n' + 'Default is "no_hwp" which disables hardware pstates to avoid ' + 'noise in benchmarks.', required=False, - default='')) + default='no_hwp')) self.AddField( BooleanField( 'turbostat', description='Run turbostat process in the background' - ' of a benchmark', + ' of a benchmark. Enabled by default.', required=False, default=True)) self.AddField( @@ -366,9 +366,10 @@ class GlobalSettings(Settings): 'With 0 - do not run top.\n' 'NOTE: Running top with interval 1-5 sec has insignificant' ' performance impact (performance degradation does not exceed' - ' 0.3%%, measured on x86_64, ARM32, and ARM64).', + ' 0.3%%, measured on x86_64, ARM32, and ARM64). ' + 'The default value is 1.', required=False, - default=0)) + default=1)) self.AddField( IntegerField( 'cooldown_temp', @@ -376,14 +377,16 @@ class GlobalSettings(Settings): default=40, description='Wait until CPU temperature goes down below' ' specified temperature in Celsius' - ' prior starting a benchmark.')) + ' prior starting a benchmark. ' + 'By default the value is set to 40 degrees.')) self.AddField( IntegerField( 'cooldown_time', required=False, - default=0, + default=10, description='Wait specified time in minutes allowing' - ' CPU to cool down. Zero value disables cooldown.')) + ' CPU to cool down. Zero value disables cooldown. ' + 'The default value is 10 minutes.')) self.AddField( EnumField( 'governor', @@ -401,7 +404,8 @@ class GlobalSettings(Settings): required=False, description='Setup CPU governor for all cores.\n' 'For more details refer to:\n' - 'https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt')) + 'https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt. ' + 'Default is "performance" governor.')) self.AddField( EnumField( 'cpu_usage', @@ -413,19 +417,22 @@ class GlobalSettings(Settings): ], default='all', required=False, - description='Restrict usage CPUs to decrease CPU interference.\n' - 'all - no restrictions;\n' - 'big-only, little-only - enable only big/little cores,' + description='Restrict usage of CPUs to decrease CPU interference.\n' + '"all" - no restrictions;\n' + '"big-only", "little-only" - enable only big/little cores,' ' applicable only on ARM;\n' - 'exclusive-cores - (for future use)' - ' isolate cores for exclusive use of benchmark processes.')) + '"exclusive-cores" - (for future use)' + ' isolate cores for exclusive use of benchmark processes. ' + 'By default use all CPUs.')) self.AddField( IntegerField( 'cpu_freq_pct', required=False, - default=100, + default=95, description='Setup CPU frequency to a supported value less than' - ' or equal to a percent of max_freq.')) + ' or equal to a percent of max_freq. ' + 'CPU frequency is reduced to 95%% by default to reduce thermal ' + 'throttling.')) class SettingsFactory(object): diff --git a/crosperf/settings_factory_unittest.py b/crosperf/settings_factory_unittest.py index a6339034..f1900955 100755 --- a/crosperf/settings_factory_unittest.py +++ b/crosperf/settings_factory_unittest.py @@ -77,14 +77,14 @@ class GlobalSettingsTest(unittest.TestCase): self.assertEqual(res.GetField('cwp_dso'), '') self.assertEqual(res.GetField('enable_aslr'), False) self.assertEqual(res.GetField('ignore_min_max'), False) - self.assertEqual(res.GetField('intel_pstate'), '') + self.assertEqual(res.GetField('intel_pstate'), 'no_hwp') self.assertEqual(res.GetField('turbostat'), True) - self.assertEqual(res.GetField('top_interval'), 0) - self.assertEqual(res.GetField('cooldown_time'), 0) + self.assertEqual(res.GetField('top_interval'), 1) + self.assertEqual(res.GetField('cooldown_time'), 10) self.assertEqual(res.GetField('cooldown_temp'), 40) self.assertEqual(res.GetField('governor'), 'performance') self.assertEqual(res.GetField('cpu_usage'), 'all') - self.assertEqual(res.GetField('cpu_freq_pct'), 100) + self.assertEqual(res.GetField('cpu_freq_pct'), 95) class SettingsFactoryTest(unittest.TestCase): -- cgit v1.2.3 From e68d197f0665315607f99f193c67009ba66a2e8d Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Thu, 14 May 2020 16:02:38 -0700 Subject: Update tmp cleanup on chrotomation3 Remove "*-llvm-next-nightly" images from chroot /tmp. Updated CleanChromeOsImageFiles which now deletes directories with rmtree. This should fix the problem with cron job auto delete. BUG=None TEST=Tested with --dry_run on chrotomation3. Change-Id: If8458540e009c50dec829f14c47581fdd7be305e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2202728 Tested-by: Denis Nikitin Reviewed-by: Manoj Gupta --- auto_delete_nightly_test_data.py | 54 +++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 4ec5b0fd..e40b95c2 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -15,7 +15,9 @@ import argparse import datetime import os import re +import shutil import sys +import time from cros_utils import command_executer from cros_utils import constants @@ -134,30 +136,33 @@ def CleanChromeOsTmpFiles(chroot_tmp, days_to_preserve, dry_run): def CleanChromeOsImageFiles(chroot_tmp, subdir_suffix, days_to_preserve, dry_run): - rv = 0 - rv2 = 0 - ce = command_executer.GetCommandExecuter() - minutes = 1440 * days_to_preserve # Clean files that were last accessed more than the specified time. - rv2 = 0 - cmd = (r'find {0}/*{1}/* -maxdepth 1 -type d ' - r'-amin +{2} ' - r'-exec bash -c "echo rm -fr {{}}" \; ' - r'-exec bash -c "rm -fr {{}}" \;').format(chroot_tmp, subdir_suffix, - minutes) - if dry_run: - print('Going to execute:\n%s' % cmd) - else: - rv2 = ce.RunCommand(cmd, print_to_console=False) - if rv2 == 0: - print('Successfully cleaned chromeos image autotest directories from ' - '"{0}/*{1}".'.format(chroot_tmp, subdir_suffix)) - else: - print('Some image autotest directories were not removed from ' - '"{0}/*{1}".'.format(chroot_tmp, subdir_suffix)) - - rv += rv2 - return rv + seconds_delta = days_to_preserve * 24 * 3600 + now = time.time() + errors = 0 + + for tmp_dir in os.listdir(chroot_tmp): + # Directory under /tmp + tmp_dir = os.path.join(chroot_tmp, tmp_dir) + if tmp_dir.endswith(subdir_suffix): + # Tmp directory which ends with subdir_suffix. + for subdir in os.listdir(tmp_dir): + # Subdirectories targeted for deletion. + subdir_path = os.path.join(tmp_dir, subdir) + if now - os.path.getatime(subdir_path) > seconds_delta: + if dry_run: + print('Will run:\nshutil.rmtree({})'.format(subdir_path)) + else: + try: + shutil.rmtree(subdir_path) + print('Successfully cleaned chromeos image autotest directories ' + 'from "{}".'.format(subdir_path)) + except OSError: + print('Some image autotest directories were not removed from ' + '"{}".'.format(subdir_path)) + errors += 1 + + return errors def CleanChromeOsTmpAndImages(days_to_preserve=1, dry_run=False): @@ -175,6 +180,9 @@ def CleanChromeOsTmpAndImages(days_to_preserve=1, dry_run=False): # Clean image files in *-pfq directories rv += CleanChromeOsImageFiles(chromeos_chroot_tmp, '-pfq', days_to_preserve, dry_run) + # Clean image files in *-llvm-next-nightly directories + rv += CleanChromeOsImageFiles(chromeos_chroot_tmp, '-llvm-next-nightly', + days_to_preserve, dry_run) return rv -- cgit v1.2.3 From f36b42944a454bc4fdcdb67baddd0282b3318988 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Thu, 23 Apr 2020 16:57:57 -0700 Subject: llvm_tool: add an option to create CLs for cherry-picks. Add an option to create a CL for cherry-picking patches of LLVM projects. BUG=chromium:1057428 TEST=local tests. Change-Id: I769c9de7112e521af0bf1d701aa4ac2959994658 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2163957 Tested-by: Jian Cai Reviewed-by: Manoj Gupta --- llvm_tools/cherrypick_cl.py | 84 +++++++++++++++++++++++++++++++++------------ llvm_tools/chroot.py | 2 +- 2 files changed, 63 insertions(+), 23 deletions(-) diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py index 992b04ce..78330d19 100755 --- a/llvm_tools/cherrypick_cl.py +++ b/llvm_tools/cherrypick_cl.py @@ -20,7 +20,9 @@ import sys import chroot import get_llvm_hash +import git import git_llvm_rev +import update_chromeos_llvm_hash def add_cherrypick(patches_json_path: str, patches_dir: str, @@ -107,22 +109,22 @@ def resolve_llvm_ref(llvm_dir: str, sha: str) -> str: ).strip() -# Get the package name of an upstream project +# Get the package name of an LLVM project def project_to_package(project: str) -> str: if project == 'libunwind': return 'llvm-libunwind' return project -# Get the upstream project name of a package +# Get the LLVM project name of a package def package_to_project(package: str) -> str: if package == 'llvm-libunwind': return 'libunwind' return package -def cherry_pick(chroot_path: str, llvm_dir: str, start_rev: str, sha: str, - rev: str): +# Get the LLVM projects change in the specifed sha +def get_package_names(sha: str, llvm_dir: str) -> list: paths = subprocess.check_output( ['git', 'show', '--name-only', '--format=', sha], cwd=llvm_dir, @@ -136,23 +138,7 @@ def cherry_pick(chroot_path: str, llvm_dir: str, start_rev: str, sha: str, if package in ('compiler-rt', 'libcxx', 'libcxxabi', 'llvm-libunwind'): packages.add(package) packages = list(sorted(packages)) - - for package in packages: - # Use full package name to prevent equery from getting confused - symlink = chroot.GetChrootEbuildPaths( - chroot_path, - ['sys-devel/llvm' if package == 'llvm' else 'sys-libs/' + package])[0] - symlink = chroot.ConvertChrootPathsToAbsolutePaths(chroot_path, - [symlink])[0] - symlink_dir = os.path.dirname(symlink) - - patches_json_path = os.path.join(symlink_dir, 'files/PATCHES.json') - relative_patches_dir = 'cherry' if package == 'llvm' else '' - patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) - - logging.info('Cherrypicking %s (%s) into %s', rev, sha, package) - add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, - start_rev, llvm_dir, rev, sha, package) + return packages def main(): @@ -177,6 +163,11 @@ def main(): required=True, action='append', help='The LLVM git SHA to cherry-pick.') + parser.add_argument( + '--create_cl', + default=False, + action='store_true', + help='Automatically create a CL if specified') args = parser.parse_args() llvm_config = git_llvm_rev.LLVMConfig( @@ -197,12 +188,61 @@ def main(): start_sha = resolve_llvm_ref(llvm_config.dir, start_sha) start_rev = git_llvm_rev.translate_sha_to_rev(llvm_config, start_sha) + if args.create_cl: + branch = 'cherry-pick' + symlink = os.path.dirname( + chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm'])[0]) + symlink = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path, + [symlink])[0] + symlink_dir = os.path.dirname(symlink) + git.CreateBranch(symlink_dir, branch) + symlinks_to_uprev = [] + commit_messages = [ + 'llvm: cherry-pick CLs from upstream\n', + ] + for sha in args.sha: sha = resolve_llvm_ref(llvm_config.dir, sha) rev = git_llvm_rev.translate_sha_to_rev(llvm_config, sha) - cherry_pick(args.chroot_path, llvm_config.dir, start_rev, sha, rev) + # Find out the llvm projects changed in this commit + packages = get_package_names(sha, llvm_config.dir) + # Find out the ebuild symlinks of the corresponding ChromeOS packages + symlinks = chroot.GetChrootEbuildPaths(args.chroot_path, [ + 'sys-devel/llvm' if package == 'llvm' else 'sys-libs/' + package + for package in packages + ]) + symlinks = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path, + symlinks) + + # Create a patch and add its metadata for each package + for package, symlink in zip(packages, symlinks): + symlink_dir = os.path.dirname(symlink) + patches_json_path = os.path.join(symlink_dir, 'files/PATCHES.json') + relative_patches_dir = 'cherry' if package == 'llvm' else '' + patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) + logging.info('Cherrypicking %s (%s) into %s', rev, sha, package) + add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, + start_rev, llvm_config.dir, rev, sha, package) + + if args.create_cl: + symlinks_to_uprev.extend(symlinks) + commit_messages.extend([ + '\n\nreviews.llvm.org/rG%s\n' % sha, + subprocess.check_output(['git', 'log', '-n1', '--oneline', sha], + cwd=llvm_config.dir, + encoding='utf-8') + ]) + logging.info('Complete.') + if args.create_cl: + symlinks_to_uprev = list(sorted(set(symlinks_to_uprev))) + for symlink in symlinks_to_uprev: + update_chromeos_llvm_hash.UprevEbuildSymlink(symlink) + subprocess.check_output(['git', 'add', '--all'], cwd=symlink_dir) + git.UploadChanges(symlink_dir, branch, commit_messages) + git.DeleteBranch(symlink_dir, branch) + if __name__ == '__main__': sys.exit(main()) diff --git a/llvm_tools/chroot.py b/llvm_tools/chroot.py index 1c3eb025..b10ddbac 100755 --- a/llvm_tools/chroot.py +++ b/llvm_tools/chroot.py @@ -49,7 +49,7 @@ def GetChrootEbuildPaths(chromeos_root, packages): chroot_paths = [] # Find the chroot path for each package's ebuild. - for package in sorted(set(packages)): + for package in packages: chroot_path = subprocess.check_output( ['cros_sdk', '--', 'equery', 'w', package], cwd=chromeos_root, -- cgit v1.2.3 From 02ca93bfb8c511b7207fdc3be733b985e11fb9b0 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Thu, 21 May 2020 11:17:03 -0700 Subject: llvm_tool: update README of cherrypick_cl.py Update its README now that we made changes to the script. BUG=chromium:1057428 TEST=none. Change-Id: I62e198892bc9fff2a0f930705f9451d46b50b31d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2212423 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- llvm_tools/README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 9ede2eb5..1c1862d8 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -499,18 +499,20 @@ your `$PATH`, you can also use it as `git llvm-rev`. #### Usage -This script updates sys-devel/llvm with an LLVM cherrypick of your choosing, and -copies the cherrypick into sys-devel/llvm/files/cherry. +This script updates the proper ChromeOS packages with an LLVM cherrypick of your choosing, and +copies the cherrypick into patch folders of the packages. Usage: ``` -./cherrypick_cl.py --sha 174c3eb69f19ff2d6a3eeae31d04afe77e62c021 +./cherrypick_cl.py --chroot_path /abs/path/to/chroot --start_sha llvm +--sha 174c3eb69f19ff2d6a3eeae31d04afe77e62c021 --sha 174c3eb69f19ff2d6a3eeae31d04afe77e62c021 ``` -It tries to autodetect a lot of things (e.g., sys-devel/llvm's path, the -"start"/"end" revisions to set, etc.) For more information, please see the -`--help` +It tries to autodetect a lot of things (e.g., packages changed by each sha, +their ebuild paths, the "start"/"end" revisions to set, etc.) By default the +script creates a local patch. Use --create_cl option to create a CL instead. For +more information, please see the `--help` ### `revert_checker.py` -- cgit v1.2.3 From 52f8ed317b04a65e7d7e76262b92e8f4b1e6838a Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Thu, 21 May 2020 13:52:48 -0700 Subject: crosperf: introduce option "compress_results" for result directory Perf data and report file can occupy large disk space when we copy and store them in the crosperf results directory. This patch introduces a new field for crosperf so that we create a tarball for it to save space. By default compress_result is set to True. BUG=chromium:1079048 TEST=Passed unittest, tested with simple examples. Change-Id: I70db6f3f70dc33bacfccd8833a4327c494b4d6b5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2212432 Reviewed-by: George Burgess Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang --- crosperf/crosperf_unittest.py | 2 +- crosperf/experiment.py | 5 ++-- crosperf/experiment_factory.py | 5 ++-- crosperf/experiment_runner.py | 48 ++++++++++++++++++++-------------- crosperf/experiment_runner_unittest.py | 21 ++++++++++++--- crosperf/results_cache.py | 28 ++++++++++++++------ crosperf/settings_factory.py | 6 +++++ crosperf/settings_factory_unittest.py | 5 ++-- 8 files changed, 81 insertions(+), 39 deletions(-) diff --git a/crosperf/crosperf_unittest.py b/crosperf/crosperf_unittest.py index ffd964a2..9c7d52a1 100755 --- a/crosperf/crosperf_unittest.py +++ b/crosperf/crosperf_unittest.py @@ -68,7 +68,7 @@ class CrosperfTest(unittest.TestCase): settings = crosperf.ConvertOptionsToSettings(options) self.assertIsNotNone(settings) self.assertIsInstance(settings, settings_factory.GlobalSettings) - self.assertEqual(len(settings.fields), 38) + self.assertEqual(len(settings.fields), 39) self.assertTrue(settings.GetField('rerun')) argv = ['crosperf/crosperf.py', 'temp.exp'] options, _ = parser.parse_known_args(argv) diff --git a/crosperf/experiment.py b/crosperf/experiment.py index 45a028ad..6e2efd45 100644 --- a/crosperf/experiment.py +++ b/crosperf/experiment.py @@ -28,8 +28,8 @@ class Experiment(object): def __init__(self, name, remote, working_directory, chromeos_root, cache_conditions, labels, benchmarks, experiment_file, email_to, acquire_timeout, log_dir, log_level, share_cache, - results_directory, locks_directory, cwp_dso, ignore_min_max, - skylab, dut_config): + results_directory, compress_results, locks_directory, cwp_dso, + ignore_min_max, skylab, dut_config): self.name = name self.working_directory = working_directory self.remote = remote @@ -42,6 +42,7 @@ class Experiment(object): self.name + '_results') else: self.results_directory = misc.CanonicalizePath(results_directory) + self.compress_results = compress_results self.log_dir = log_dir self.log_level = log_level self.labels = labels diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 0188fff4..332f0357 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -145,6 +145,7 @@ class ExperimentFactory(object): config.AddConfig('no_email', global_settings.GetField('no_email')) share_cache = global_settings.GetField('share_cache') results_dir = global_settings.GetField('results_dir') + compress_results = global_settings.GetField('compress_results') # Warn user that option use_file_locks is deprecated. use_file_locks = global_settings.GetField('use_file_locks') if use_file_locks: @@ -438,8 +439,8 @@ class ExperimentFactory(object): chromeos_root, cache_conditions, labels, benchmarks, experiment_file.Canonicalize(), email, acquire_timeout, log_dir, log_level, share_cache, - results_dir, locks_dir, cwp_dso, ignore_min_max, - skylab, dut_config) + results_dir, compress_results, locks_dir, cwp_dso, + ignore_min_max, skylab, dut_config) return experiment diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 3e91e09c..e2bd50db 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -273,22 +273,42 @@ class ExperimentRunner(object): has_failure = False all_failed = True + + topstats_file = os.path.join(results_directory, 'topstats.log') + self.l.LogOutput('Storing top5 statistics of each benchmark run into %s.' % + topstats_file) + with open(topstats_file, 'w') as top_fd: + for benchmark_run in experiment.benchmark_runs: + if benchmark_run.result: + # FIXME: Pylint has a bug suggesting the following change, which + # should be fixed in pylint 2.0. Resolve this after pylint >= 2.0. + # Bug: https://github.com/PyCQA/pylint/issues/1984 + # pylint: disable=simplifiable-if-statement + if benchmark_run.result.retval: + has_failure = True + else: + all_failed = False + # Header with benchmark run name. + top_fd.write('%s\n' % str(benchmark_run)) + # Formatted string with top statistics. + top_fd.write(benchmark_run.result.FormatStringTop5()) + top_fd.write('\n\n') + + if all_failed: + return self.ALL_FAILED + self.l.LogOutput('Storing results of each benchmark run.') for benchmark_run in experiment.benchmark_runs: if benchmark_run.result: - if benchmark_run.result.retval: - has_failure = True - else: - all_failed = False benchmark_run_name = ''.join( ch for ch in benchmark_run.name if ch.isalnum()) benchmark_run_path = os.path.join(results_directory, benchmark_run_name) - benchmark_run.result.CopyResultsTo(benchmark_run_path) + if experiment.compress_results: + benchmark_run.result.CompressResultsTo(benchmark_run_path) + else: + benchmark_run.result.CopyResultsTo(benchmark_run_path) benchmark_run.result.CleanUp(benchmark_run.benchmark.rm_chroot_tmp) - if all_failed: - return self.ALL_FAILED - self.l.LogOutput('Storing results report in %s.' % results_directory) results_table_path = os.path.join(results_directory, 'results.html') report = HTMLResultsReport.FromExperiment(experiment).GetReport() @@ -307,18 +327,6 @@ class ExperimentRunner(object): msg_body = "
%s
" % text_report FileUtils().WriteFile(msg_file_path, msg_body) - topstats_file = os.path.join(results_directory, 'topstats.log') - self.l.LogOutput('Storing top5 statistics of each benchmark run into %s.' % - topstats_file) - with open(topstats_file, 'w') as top_fd: - for benchmark_run in experiment.benchmark_runs: - if benchmark_run.result: - # Header with benchmark run name. - top_fd.write('%s\n' % str(benchmark_run)) - # Formatted string with top statistics. - top_fd.write(benchmark_run.result.FormatStringTop5()) - top_fd.write('\n\n') - return self.SUCCEEDED if not has_failure else self.HAS_FAILURE def Run(self): diff --git a/crosperf/experiment_runner_unittest.py b/crosperf/experiment_runner_unittest.py index fb584244..0bbab292 100755 --- a/crosperf/experiment_runner_unittest.py +++ b/crosperf/experiment_runner_unittest.py @@ -406,13 +406,14 @@ class ExperimentRunnerTest(unittest.TestCase): @mock.patch.object(FileUtils, 'WriteFile') @mock.patch.object(HTMLResultsReport, 'FromExperiment') @mock.patch.object(TextResultsReport, 'FromExperiment') + @mock.patch.object(Result, 'CompressResultsTo') @mock.patch.object(Result, 'CopyResultsTo') @mock.patch.object(Result, 'CleanUp') @mock.patch.object(Result, 'FormatStringTop5') @mock.patch('builtins.open', new_callable=mock.mock_open) def test_store_results(self, mock_open, mock_top5, mock_cleanup, mock_copy, - _mock_text_report, mock_report, mock_writefile, - mock_mkdir, mock_rmdir): + mock_compress, _mock_text_report, mock_report, + mock_writefile, mock_mkdir, mock_rmdir): self.mock_logger.Reset() self.exp.results_directory = '/usr/local/crosperf-results' @@ -433,6 +434,7 @@ class ExperimentRunnerTest(unittest.TestCase): er._StoreResults(self.exp) self.assertEqual(mock_cleanup.call_count, 0) self.assertEqual(mock_copy.call_count, 0) + self.assertEqual(mock_compress.call_count, 0) self.assertEqual(mock_report.call_count, 0) self.assertEqual(mock_writefile.call_count, 0) self.assertEqual(mock_mkdir.call_count, 0) @@ -447,6 +449,7 @@ class ExperimentRunnerTest(unittest.TestCase): for r in self.exp.benchmark_runs: r.result = fake_result er._terminated = False + self.exp.compress_results = False er._StoreResults(self.exp) self.assertEqual(mock_cleanup.call_count, 6) mock_cleanup.assert_called_with(bench_run.benchmark.rm_chroot_tmp) @@ -467,11 +470,11 @@ class ExperimentRunnerTest(unittest.TestCase): self.assertEqual(self.mock_logger.LogOutputCount, 5) self.assertEqual(self.mock_logger.output_msgs, [ 'Storing experiment file in /usr/local/crosperf-results.', + 'Storing top5 statistics of each benchmark run into' + ' /usr/local/crosperf-results/topstats.log.', 'Storing results of each benchmark run.', 'Storing results report in /usr/local/crosperf-results.', 'Storing email message body in /usr/local/crosperf-results.', - 'Storing top5 statistics of each benchmark run into' - ' /usr/local/crosperf-results/topstats.log.', ]) self.assertEqual(mock_open.call_count, 1) # Check write to a topstats.log file. @@ -483,6 +486,16 @@ class ExperimentRunnerTest(unittest.TestCase): top5calls = [mock.call()] * 6 self.assertEqual(mock_top5.call_args_list, top5calls) + # Test 3. Test compress_results. + self.exp.compress_results = True + mock_copy.call_count = 0 + mock_compress.call_count = 0 + er._StoreResults(self.exp) + self.assertEqual(mock_copy.call_count, 0) + mock_copy.assert_called_with(bench_path) + self.assertEqual(mock_compress.call_count, 6) + mock_compress.assert_called_with(bench_path) + if __name__ == '__main__': unittest.main() diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index 85c3c6e3..08a5d1bb 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -30,6 +30,7 @@ SCRATCH_DIR = os.path.expanduser('~/cros_scratch') RESULTS_FILE = 'results.txt' MACHINE_FILE = 'machine.txt' AUTOTEST_TARBALL = 'autotest.tbz2' +RESULTS_TARBALL = 'results.tbz2' PERF_RESULTS_FILE = 'perf-results.txt' CACHE_KEYS_FILE = 'cache_keys.txt' @@ -115,6 +116,14 @@ class Result(object): if self.results_file or self.perf_data_files or self.perf_report_files: self._logger.LogOutput('Results files stored in %s.' % dest_dir) + def CompressResultsTo(self, dest_dir): + tarball = os.path.join(self.results_dir, RESULTS_TARBALL) + results_dir = self.FindFilesInResultsDir('-name results').split('\n')[0] + self.CreateTarball(results_dir, tarball) + self.CopyFilesTo(dest_dir, [tarball]) + if results_dir: + self._logger.LogOutput('Results files compressed into %s.' % dest_dir) + def GetNewKeyvals(self, keyvals_dict): # Initialize 'units' dictionary. units_dict = {} @@ -906,6 +915,15 @@ class Result(object): command = 'rm -rf %s' % self.temp_dir self.ce.RunCommand(command) + def CreateTarball(self, results_dir, tarball): + ret = self.ce.RunCommand('cd %s && ' + 'tar ' + '--exclude=var/spool ' + '--exclude=var/log ' + '-cjf %s .' % (results_dir, tarball)) + if ret: + raise RuntimeError("Couldn't compress test output directory.") + def StoreToCacheDir(self, cache_dir, machine_manager, key_list): # Create the dir if it doesn't exist. temp_dir = tempfile.mkdtemp() @@ -927,14 +945,8 @@ class Result(object): if self.results_dir: tarball = os.path.join(temp_dir, AUTOTEST_TARBALL) - command = ('cd %s && ' - 'tar ' - '--exclude=var/spool ' - '--exclude=var/log ' - '-cjf %s .' % (self.results_dir, tarball)) - ret = self.ce.RunCommand(command) - if ret: - raise RuntimeError("Couldn't store autotest output directory.") + self.CreateTarball(self.results_dir, tarball) + # Store machine info. # TODO(asharif): Make machine_manager a singleton, and don't pass it into # this function. diff --git a/crosperf/settings_factory.py b/crosperf/settings_factory.py index 16e21a7d..7033a3e8 100644 --- a/crosperf/settings_factory.py +++ b/crosperf/settings_factory.py @@ -290,6 +290,12 @@ class GlobalSettings(Settings): 'separated by a ",".')) self.AddField( TextField('results_dir', default='', description='The results dir.')) + self.AddField( + BooleanField( + 'compress_results', + default=True, + description='Whether to compress all test results other than ' + 'reports into a tarball to save disk space.')) self.AddField( TextField( 'locks_dir', diff --git a/crosperf/settings_factory_unittest.py b/crosperf/settings_factory_unittest.py index f1900955..bc107110 100755 --- a/crosperf/settings_factory_unittest.py +++ b/crosperf/settings_factory_unittest.py @@ -50,7 +50,7 @@ class GlobalSettingsTest(unittest.TestCase): def test_init(self): res = settings_factory.GlobalSettings('g_settings') self.assertIsNotNone(res) - self.assertEqual(len(res.fields), 38) + self.assertEqual(len(res.fields), 39) self.assertEqual(res.GetField('name'), '') self.assertEqual(res.GetField('board'), '') self.assertEqual(res.GetField('skylab'), False) @@ -73,6 +73,7 @@ class GlobalSettingsTest(unittest.TestCase): self.assertEqual(res.GetField('show_all_results'), False) self.assertEqual(res.GetField('share_cache'), '') self.assertEqual(res.GetField('results_dir'), '') + self.assertEqual(res.GetField('compress_results'), True) self.assertEqual(res.GetField('chrome_src'), '') self.assertEqual(res.GetField('cwp_dso'), '') self.assertEqual(res.GetField('enable_aslr'), False) @@ -107,7 +108,7 @@ class SettingsFactoryTest(unittest.TestCase): g_settings = settings_factory.SettingsFactory().GetSettings( 'global', 'global') self.assertIsInstance(g_settings, settings_factory.GlobalSettings) - self.assertEqual(len(g_settings.fields), 38) + self.assertEqual(len(g_settings.fields), 39) if __name__ == '__main__': -- cgit v1.2.3 From aa3acaecad43e4e497f70a0504bf70b733581d6e Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Tue, 26 May 2020 15:04:15 -0700 Subject: afdo_redaction: Implement a script to remove cold functions in AFDO profiles. Implement a script to keep removing cold functions in AFDO profiles until the target is met. The result will be a smaller profile that can possibly result in smaller binary size. Also support passing the source CWP and benchmark profiles to analyze how many functions are trimmed from the source profiles, etc. The script will be used in experimental AFDO pipeline first, no impact on prod profiles so far. BUG=chromium:1062014 TEST=unittest pass Change-Id: I651ce3f47ee8061557e3f1cdc83fd770e1b2b9ad Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2216445 Reviewed-by: George Burgess Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- afdo_redaction/remove_cold_functions.py | 183 +++++++++++++++++++++++++++ afdo_redaction/remove_cold_functions_test.py | 146 +++++++++++++++++++++ 2 files changed, 329 insertions(+) create mode 100755 afdo_redaction/remove_cold_functions.py create mode 100755 afdo_redaction/remove_cold_functions_test.py diff --git a/afdo_redaction/remove_cold_functions.py b/afdo_redaction/remove_cold_functions.py new file mode 100755 index 00000000..097085db --- /dev/null +++ b/afdo_redaction/remove_cold_functions.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Script to remove cold functions in an textual AFDO profile. + +The script will look through the AFDO profile to find all the function +records. Then it'll start with the functions with lowest sample count and +remove it from the profile, until the total remaining functions in the +profile meets the given number. When there are many functions having the +same sample count, we need to remove all of them in order to meet the +target, so the result profile will always have less than or equal to the +given number of functions. + +The script is intended to be used on production Chrome OS profiles, after +other redaction/trimming scripts. It can be used with given textual CWP +and benchmark profiles, in order to analyze how many removed functions are +from which profile (or both), which can be used an indicator of fairness +during the removal. + +This is part of the effort to stablize the impact of AFDO profile on +Chrome binary size. See crbug.com/1062014 for more context. +""" + +from __future__ import division, print_function + +import argparse +import collections +import re +import sys + +_function_line_re = re.compile(r'^([\w\$\.@]+):(\d+)(?::\d+)?$') +ProfileRecord = collections.namedtuple( + 'ProfileRecord', ['function_count', 'function_body', 'function_name']) + + +def _read_sample_count(line): + m = _function_line_re.match(line) + assert m, 'Failed to interpret function line %s' % line + return m.group(1), int(m.group(2)) + + +def _read_textual_afdo_profile(stream): + """Parses an AFDO profile from a line stream into ProfileRecords.""" + # ProfileRecords are actually nested, due to inlining. For the purpose of + # this script, that doesn't matter. + lines = (line.rstrip() for line in stream) + function_line = None + samples = [] + ret = [] + for line in lines: + if not line: + continue + + if line[0].isspace(): + assert function_line is not None, 'sample exists outside of a function?' + samples.append(line) + continue + + if function_line is not None: + name, count = _read_sample_count(function_line) + body = [function_line] + samples + ret.append( + ProfileRecord( + function_count=count, function_body=body, function_name=name)) + function_line = line + samples = [] + + if function_line is not None: + name, count = _read_sample_count(function_line) + body = [function_line] + samples + ret.append( + ProfileRecord( + function_count=count, function_body=body, function_name=name)) + return ret + + +def write_textual_afdo_profile(stream, records): + for r in records: + print('\n'.join(r.function_body), file=stream) + + +def analyze_functions(records, cwp, benchmark): + cwp_functions = {x.function_name for x in cwp} + benchmark_functions = {x.function_name for x in benchmark} + all_functions = {x.function_name for x in records} + cwp_only_functions = len((all_functions & cwp_functions) - + benchmark_functions) + benchmark_only_functions = len((all_functions & benchmark_functions) - + cwp_functions) + common_functions = len(all_functions & benchmark_functions & cwp_functions) + none_functions = len(all_functions - benchmark_functions - cwp_functions) + + assert not none_functions + return cwp_only_functions, benchmark_only_functions, common_functions + + +def run(input_stream, output_stream, goal, cwp=None, benchmark=None): + records = _read_textual_afdo_profile(input_stream) + num_functions = len(records) + if not num_functions: + return + assert goal, "It's invalid to remove all functions in the profile" + + if cwp and benchmark: + cwp_records = _read_textual_afdo_profile(cwp) + benchmark_records = _read_textual_afdo_profile(benchmark) + cwp_num, benchmark_num, common_num = analyze_functions( + records, cwp_records, benchmark_records) + + records.sort(key=lambda x: (-x.function_count, x.function_name)) + records = records[:goal] + + print( + 'Retained %d/%d (%.1f%%) functions in the profile' % + (len(records), num_functions, 100.0 * len(records) / num_functions), + file=sys.stderr) + write_textual_afdo_profile(output_stream, records) + + if cwp and benchmark: + cwp_num_after, benchmark_num_after, common_num_after = analyze_functions( + records, cwp_records, benchmark_records) + print( + 'Retained %d/%d (%.1f%%) functions only appear in the CWP profile' % + (cwp_num_after, cwp_num, 100.0 * cwp_num_after / cwp_num), + file=sys.stderr) + print( + 'Retained %d/%d (%.1f%%) functions only appear in the benchmark profile' + % (benchmark_num_after, benchmark_num, + 100.0 * benchmark_num_after / benchmark_num), + file=sys.stderr) + print( + 'Retained %d/%d (%.1f%%) functions appear in both CWP and benchmark' + ' profiles' % (common_num_after, common_num, + 100.0 * common_num_after / common_num), + file=sys.stderr) + + +def main(): + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--input', + default='/dev/stdin', + help='File to read from. Defaults to stdin.') + parser.add_argument( + '--output', + default='/dev/stdout', + help='File to write to. Defaults to stdout.') + parser.add_argument( + '--number', + type=int, + required=True, + help='Number of functions to retain in the profile.') + parser.add_argument( + '--cwp', help='Textualized CWP profiles, used for further analysis') + parser.add_argument( + '--benchmark', + help='Textualized benchmark profile, used for further analysis') + args = parser.parse_args() + + if not args.number: + parser.error("It's invalid to remove the number of functions to 0.") + + if (args.cwp and not args.benchmark) or (not args.cwp and args.benchmark): + parser.error('Please specify both --cwp and --benchmark') + + with open(args.input) as stdin: + with open(args.output, 'w') as stdout: + # When user specify textualized cwp and benchmark profiles, perform + # the analysis. Otherwise, just trim the cold functions from profile. + if args.cwp and args.benchmark: + with open(args.cwp) as cwp: + with open(args.benchmark) as benchmark: + run(stdin, stdout, args.number, cwp, benchmark) + else: + run(stdin, stdout, args.number) + + +if __name__ == '__main__': + main() diff --git a/afdo_redaction/remove_cold_functions_test.py b/afdo_redaction/remove_cold_functions_test.py new file mode 100755 index 00000000..14f946b0 --- /dev/null +++ b/afdo_redaction/remove_cold_functions_test.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for remove_cold_functions.""" + +from __future__ import print_function + +import io +from unittest.mock import patch +import unittest + +from afdo_redaction import remove_cold_functions + + +def _construct_profile(indices=None): + real_world_profile_functions = [ + """SomeFunction1:24150:300 + 2: 75 + 3: 23850 + 39: 225 + """, + """SomeFunction2:8925:225 + 0: 225 + 0.2: 150 + 0.1: SomeFunction2:6300 + 3: 6300 + 0.2: SomeFunction2:150 + 3: 75 + """, + """SomeFunction3:7500:75 + 0: 75 + 0.2: 75 + 0.1: SomeFunction3:6600 + 1: 6600 + 0.2: SomeFunction3:75 + 1: 75 + """, + """LargerFunction4:51450:0 + 1: 0 + 3: 0 + 3.1: 7350 + 4: 7350 + 7: 7350 + 8: 7350 + 9: 7350 + 12: 0 + 15: 0 + 13: AnotherFunction5:0 + 3: 0 + 3.1: 0 + 3.2: 0 + 4: 0 + 5: 0 + 6: 0 + 7: 0 + 8: 0 + 9: 0 + """, + """SomeFakeFunction5:7500:75 + 0: 75 + 0.2: 75 + 0.1: SomeFakeFunction5:6600 + 1: 6600 + 0.2: SomeFakeFunction5:75 + 1: 75 + """, + ] + + ret = [] + if not indices: + for x in real_world_profile_functions: + ret += x.strip().splitlines() + return ret + + ret = [] + for i in indices: + ret += real_world_profile_functions[i].strip().splitlines() + return ret + + +def _run_test(input_lines, goal, cwp_file=None, benchmark_file=None): + input_buf = io.StringIO('\n'.join(input_lines)) + output_buf = io.StringIO() + remove_cold_functions.run(input_buf, output_buf, goal, cwp_file, + benchmark_file) + return output_buf.getvalue().splitlines() + + +class Test(unittest.TestCase): + """Test functions in remove_cold_functions.py""" + + def test_empty_profile(self): + self.assertEqual(_run_test([], 0), []) + + def test_remove_all_functions_fail(self): + input_profile_lines = _construct_profile() + with self.assertRaises(Exception) as context: + _run_test(input_profile_lines, 0) + self.assertEqual( + str(context.exception), + "It's invalid to remove all functions in the profile") + + def test_remove_cold_functions_work(self): + input_profile_lines = _construct_profile() + # To make sure the cold functions are removed in order + expected_profile_lines = { + 5: input_profile_lines, + # Entry 4 wins the tie breaker because the name is smaller + # alphabetically. + 4: _construct_profile([0, 1, 3, 4]), + 3: _construct_profile([0, 1, 3]), + 2: _construct_profile([0, 3]), + 1: _construct_profile([3]), + } + + for num in expected_profile_lines: + self.assertCountEqual( + _run_test(input_profile_lines, num), expected_profile_lines[num]) + + def test_analyze_cwp_and_benchmark_work(self): + input_profile_lines = _construct_profile() + cwp_profile = _construct_profile([0, 1, 3, 4]) + benchmark_profile = _construct_profile([1, 2, 3, 4]) + cwp_buf = io.StringIO('\n'.join(cwp_profile)) + benchmark_buf = io.StringIO('\n'.join(benchmark_profile)) + with patch('sys.stderr', new=io.StringIO()) as fake_output: + _run_test(input_profile_lines, 3, cwp_buf, benchmark_buf) + + output = fake_output.getvalue() + self.assertIn('Retained 3/5 (60.0%) functions in the profile', output) + self.assertIn( + 'Retained 1/1 (100.0%) functions only appear in the CWP profile', + output) + self.assertIn( + 'Retained 0/1 (0.0%) functions only appear in the benchmark profile', + output) + self.assertIn( + 'Retained 2/3 (66.7%) functions appear in both CWP and benchmark' + ' profiles', output) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From c5bfbeeb8f3b84258129e5fe423fe47bbb0db4b5 Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Wed, 27 May 2020 20:46:27 -0700 Subject: crosperf: do not pass -p for ssh by default The default value of FLAGS_ssh_port has been changed in an earlier CL:2202616, causing crosperf failures when running ssh. According to CL:2209173, the system will help decide the port to use for ssh, so we don't need to specify it explicitly in our command. BUG=None TEST=tested with lab machines with crosperf Change-Id: Ie40dc1a21452b01cb0643e191110f03e009b7c73 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2218540 Reviewed-by: Manoj Gupta Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang --- cros_utils/command_executer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cros_utils/command_executer.py b/cros_utils/command_executer.py index 002aa754..b9acbe31 100755 --- a/cros_utils/command_executer.py +++ b/cros_utils/command_executer.py @@ -480,8 +480,8 @@ class CommandExecuter(object): command = self.RemoteAccessInitCommand(chromeos_root, cros_machine) ssh_command = ( - 'ssh -p ${FLAGS_ssh_port}' + ' -o StrictHostKeyChecking=no' + - ' -o UserKnownHostsFile=$(mktemp)' + ' -i $TMP_PRIVATE_KEY') + 'ssh -o StrictHostKeyChecking=no' + ' -o UserKnownHostsFile=$(mktemp)' + + ' -i $TMP_PRIVATE_KEY') rsync_prefix = '\nrsync -r -e "%s" ' % ssh_command if dest_cros: command += rsync_prefix + '%s root@%s:%s' % (src, dest_machine, dest) -- cgit v1.2.3 From 4c3b93f5df7fabf3770e41e101d92d8e026c8ead Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Wed, 27 May 2020 20:54:08 -0700 Subject: crosperf: fix compress dir for tast tests Tast results directory has different name from test_that results, causing a bug when compress_results option is on. This CL fixes it. BUG=chromium:1079048 TEST=Tested with tast and test_that benchmarks in crosperf Change-Id: I06e6615c748aeeb2fc4576f4e1bcfdad93526962 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2218541 Reviewed-by: George Burgess Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang --- crosperf/results_cache.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index 08a5d1bb..0dd60ea1 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -118,7 +118,12 @@ class Result(object): def CompressResultsTo(self, dest_dir): tarball = os.path.join(self.results_dir, RESULTS_TARBALL) - results_dir = self.FindFilesInResultsDir('-name results').split('\n')[0] + # Test_that runs hold all output under TEST_NAME_HASHTAG/results/, + # while tast runs hold output under TEST_NAME/. + # Both ensure to be unique. + result_dir_name = self.test_name if self.suite == 'tast' else 'results' + results_dir = self.FindFilesInResultsDir( + '-name %s' % result_dir_name).split('\n')[0] self.CreateTarball(results_dir, tarball) self.CopyFilesTo(dest_dir, [tarball]) if results_dir: -- cgit v1.2.3 From e3eeb6669314ac3b2711aed1e78e215228024e13 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 28 May 2020 09:36:32 -0700 Subject: crosperf: fix a bug where we tar the world in results_cache This consumes potentially tons of disk. Also we'll raise in this situation from now on, since it never seems to be what we want. BUG=chromium:1079048 TEST=Unittests Change-Id: Ie1933b5ff0b939777d7e1d6d35dd5a29039ca07a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2220291 Reviewed-by: Zhizhou Yang Tested-by: George Burgess --- crosperf/results_cache.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index 0dd60ea1..b208ef9b 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -124,6 +124,11 @@ class Result(object): result_dir_name = self.test_name if self.suite == 'tast' else 'results' results_dir = self.FindFilesInResultsDir( '-name %s' % result_dir_name).split('\n')[0] + + if not results_dir: + self._logger.LogOutput( + 'WARNING: No results dir matching %r found' % result_dir_name) + self.CreateTarball(results_dir, tarball) self.CopyFilesTo(dest_dir, [tarball]) if results_dir: @@ -921,6 +926,10 @@ class Result(object): self.ce.RunCommand(command) def CreateTarball(self, results_dir, tarball): + if not results_dir.strip(): + raise ValueError( + 'Refusing to `tar` an empty results_dir: %r' % results_dir) + ret = self.ce.RunCommand('cd %s && ' 'tar ' '--exclude=var/spool ' -- cgit v1.2.3 From 3a4e4a60341a6ddff064f82db0e07a33cb8e98bb Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 28 May 2020 09:43:40 -0700 Subject: results_cache: also `return` instead of `raise`ing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hasty CLs are hasty. What can I say? ¯\_(ツ)_/¯ Zhizhou says we want to 'succeed' in this case with a log message, though. BUG=chromium:1079048 TEST=Unittests Change-Id: I70ea71dae42d7bee069d7311e14059061c5fa0a9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2220215 Reviewed-by: George Burgess Tested-by: George Burgess --- crosperf/results_cache.py | 1 + 1 file changed, 1 insertion(+) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index b208ef9b..b6050b61 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -128,6 +128,7 @@ class Result(object): if not results_dir: self._logger.LogOutput( 'WARNING: No results dir matching %r found' % result_dir_name) + return self.CreateTarball(results_dir, tarball) self.CopyFilesTo(dest_dir, [tarball]) -- cgit v1.2.3 From 5e6744551b328f1dd8fec78491df13e30193fddd Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Tue, 2 Jun 2020 03:52:51 +0000 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R85-13099.14-1591004759 Update chromeos-kernel-4_4 to R85-13099.14-1591004478 Update chromeos-kernel-4_14 to R85-13099.14-1591004258 Update chromeos-kernel-4_19 to R85-13099.7-1590399205 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: Ib09c2089219cc6f1a3d2962bf91605855ed63a1f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2225443 Tested-by: Manoj Gupta Tested-by: Tiancong Wang Auto-Submit: Manoj Gupta Reviewed-by: Tiancong Wang Commit-Queue: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 4f254957..d54f4bfc 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,15 +3,15 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R84-13080.0-1589189726" + "name": "R85-13099.14-1591004478" }, "chromeos-kernel-3_18": { - "name": "R84-13080.0-1589189810" + "name": "R85-13099.14-1591004759" }, "chromeos-kernel-4_14": { - "name": "R84-13080.0-1589190025" + "name": "R85-13099.14-1591004258" }, "chromeos-kernel-4_19": { - "name": "R84-13080.0-1589189550" + "name": "R85-13099.7-1590399205" } } -- cgit v1.2.3 From ecc87506c6ee96549b6fac099884ab08c7371c03 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 28 May 2020 14:44:19 -0700 Subject: compiler_wrapper: add a `static` option If this option is specified, we'll build a fully static binary, rather than having it link with libc. If unspecified, our behavior shouldn't differ from what we have today. BUG=chromium:1087435 TEST=CQ Change-Id: If3939336e4e10d0279501f56ffbed8272a5f546c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2219362 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/build.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler_wrapper/build.py b/compiler_wrapper/build.py index 037b940f..8ae23409 100755 --- a/compiler_wrapper/build.py +++ b/compiler_wrapper/build.py @@ -25,7 +25,19 @@ def parse_args(): parser.add_argument( '--use_llvm_next', required=True, choices=['true', 'false']) parser.add_argument('--output_file', required=True, type=str) - return parser.parse_args() + parser.add_argument( + '--static', + choices=['true', 'false'], + help='If true, produce a static wrapper. Autodetects a good value if ' + 'unspecified.') + args = parser.parse_args() + + if args.static is None: + args.static = 'cros' not in args.config + else: + args.static = args.static == 'true' + + return args def calc_go_args(args, version): @@ -42,7 +54,7 @@ def calc_go_args(args, version): # If the wrapper is intended for Chrome OS, we need to use libc's exec. extra_args = [] - if 'cros' in args.config: + if not args.static: extra_args = ['-tags', 'libc_exec'] return [ -- cgit v1.2.3 From 91c5578c0e8c1bf6aef5151de3b7738f46cee50b Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Mon, 1 Jun 2020 17:48:30 -0700 Subject: pgo_tools: update the merge script to work with recipe and buildbucket Since the scheduled builder for toolchain team has been migrated to recipe and also we are launching builders manually with `bb` command, this CL updates the PGO merging and uploading script to make it work with the change. BUG=chromium:1076624 TEST=Tested with 3 different modes and exception raising. Change-Id: I993d1cbbf7ba66502e6bc6b8d82bd97cfda67b1e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2225841 Tested-by: Zhizhou Yang Reviewed-by: George Burgess --- pgo_tools/merge_profdata_and_upload.py | 246 +++++++++++++++++++++++---------- 1 file changed, 174 insertions(+), 72 deletions(-) diff --git a/pgo_tools/merge_profdata_and_upload.py b/pgo_tools/merge_profdata_and_upload.py index ea95289b..15445c83 100755 --- a/pgo_tools/merge_profdata_and_upload.py +++ b/pgo_tools/merge_profdata_and_upload.py @@ -4,7 +4,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -"""Download profdata from different arches, merge them and upload to gs +"""Download profdata from different arches, merge them and upload to gs. The script is used for updating the PGO profiles for LLVM. The workflow is that the script will download profdata from different PGO builds, merge @@ -22,16 +22,17 @@ Note that hash checking will fail if the llvm hash you provided is not the same as those in artifacts, or llvm hash in different artifacts are not the same. -To only use profiles from PGO generate tryjob, run it with: - ./merge_profdata_and_upload.py --nolatest -t TRYJOB1 -t TRYJOB2 ... -Using of --nolatest will tell the script not to use any results from builders, -and merge only the profdata from the tryjobs you specified. +To only use profiles from buildbucket tasks for PGO generate, run it with: + ./merge_profdata_and_upload.py -b amd64/bb_id1 -b arm/bb_id2 ... +The buildbucket id can be found using `bb ls` command after manually launched +builder finishes. There is a chance that builders only succeeded partially, in this case, you -can run this script to merge both profdata from builder and tryjob: - ./merge_profdata_and_upload.py -l arm -l amd64 -t TRYJOB_FOR_ARM64 +can run this script to merge both profdata from builder scheduled and manually +launched: + ./merge_profdata_and_upload.py -l arm -l amd64 -b arm64/bb_id In this example, the script will merge profdata from arm and amd64 builder, and -profdata from an arm64 tryjob. +profdata from an arm64 buildbucket task. """ from __future__ import print_function @@ -53,52 +54,55 @@ _GS_PREFIX = 'gs://' _LLVMMetadata = collections.namedtuple('_LLVMMetadata', ['head_sha']) -def _get_gs_latest(remote_lastest): - assert remote_lastest.startswith(_GS_PREFIX) - try: - return subprocess.check_output(['gsutil', 'cat', remote_lastest], - encoding='utf-8') - except subprocess.CalledProcessError: - raise RuntimeError('Lastest artifacts not found: %s' % remote_lastest) - - def _fetch_gs_artifact(remote_name, local_name): - assert remote_name.startswith(_GS_PREFIX) + """Fetch single file from remote gs location to local. - print('Fetching %r to %r' % (remote_name, local_name)) + Args: + remote_name: full gs location to the file. + local_name: the name of local file to be copied to. + """ + assert remote_name.startswith(_GS_PREFIX) subprocess.check_call(['gsutil', 'cp', remote_name, local_name]) -def _find_latest_artifacts(arch): - remote_latest = ( - '%schromeos-image-archive/' - '%s-pgo-generate-llvm-next-toolchain/LATEST-master' % (_GS_PREFIX, arch)) - version = _get_gs_latest(remote_latest) - return '%s-pgo-generate-llvm-next-toolchain/%s' % (arch, version) - +def _get_gs_profdata(remote_profdata, arch): + """Fetch and extract profdata from remote gs location. -def _get_gs_profdata(remote_base, base_dir): - remote_profdata_basename = 'llvm_profdata.tar.xz' + Args: + remote_profdata: remote gs location of the profdata tarball. + arch: directory named with arch to saperate each profdata. - remote_profdata = os.path.join(remote_base, remote_profdata_basename) + Returns: + Local location of the extracted profdata. + """ tar = 'llvm_profdata.tar.xz' _fetch_gs_artifact(remote_profdata, tar) - extract_cmd = ['tar', '-xf', tar] + extract_cmd = ['tar', '-xvf', tar] - print('Extracting profdata tarball.\nCMD: %s\n' % extract_cmd) - subprocess.check_call(extract_cmd) - # Return directory to the llvm.profdata extracted. - if '-tryjob/' in base_dir: - prefix = 'b/s/w/ir/cache/cbuild/repository/trybot_archive/' - else: - prefix = 'b/s/w/ir/cache/cbuild/repository/buildbot_archive/' - return os.path.join(prefix, base_dir, 'llvm.profdata') + profdata_name = subprocess.check_output(extract_cmd).strip() + # The output of the `tar` command should only contain one line of the + # extracted profdata name. + if b'.llvm.profdata' not in profdata_name: + raise RuntimeError('No profdata in the tarball: %s' % remote_profdata) + os.mkdir(arch) + profdata_loc = os.path.join(arch, 'llvm.profdata') + os.rename(profdata_name, profdata_loc) + print('Profdata extracted to: %s' % profdata_loc) + return profdata_loc -def _get_gs_metadata(remote_base): + +def _get_gs_metadata(remote_metadata): + """Fetch metadata from remote gs location and read the LLVM head_sha. + + Args: + remote_metadata: remote gs location of the metadata json file. + + Returns: + LLVM head_sha metadata + """ metadata_basename = 'llvm_metadata.json' - _fetch_gs_artifact( - os.path.join(remote_base, metadata_basename), metadata_basename) + _fetch_gs_artifact(remote_metadata, metadata_basename) with open(metadata_basename) as f: result = json.load(f) @@ -106,20 +110,111 @@ def _get_gs_metadata(remote_base): return _LLVMMetadata(head_sha=result['head_sha']) -def _get_gs_artifacts(base_dir): - remote_base = '%schromeos-image-archive/%s' % (_GS_PREFIX, base_dir) - profile_path = _get_gs_profdata(remote_base, base_dir) - metadata = _get_gs_metadata(remote_base) +def _find_latest_artifacts(gs_url, arch): + """Fetch the latest profdata and metadata from a give gs location. + + Args: + gs_url: a gs location containing one or more artifacts to fetch. + arch: the arch profdata collected from. + + Returns: + A tuple of local profdata location and metadata + """ + assert gs_url.startswith(_GS_PREFIX) + try: + # List all artifacts in the gs location and sort by time. + output = subprocess.check_output(['gsutil', 'ls', '-l', gs_url], + encoding='utf-8').strip().split('\n') + lines = sorted(output, key=lambda x: x.split()[1], reverse=True) + except subprocess.CalledProcessError: + raise RuntimeError('Artifacts not found: %s' % gs_url) + + # Use a loop to go through all artifacts to find the latest profdata. + # An example of the output of latest builder bucket: + # pylint: disable=line-too-long + # 5006528 2020-05-31T10:08:48Z gs://chromeos-toolchain-artifacts/llvm-pgo/arm/llvm-11.0_pre387436_p20200403-r7-a8e5dcb072b1f794883ae8125fb08c06db678d56.llvm.profdata.tar.xz + # 56 2020-05-31T10:08:48Z gs://chromeos-toolchain-artifacts/llvm-pgo/arm/llvm-11.0_pre387436_p20200403-r7-a8e5dcb072b1f794883ae8125fb08c06db678d56.llvm_metadata.json + # 5005952 2020-05-24T10:53:34Z gs://chromeos-toolchain-artifacts/llvm-pgo/arm/llvm-11.0_pre387436_p20200403-r5-a8e5dcb072b1f794883ae8125fb08c06db678d56.llvm.profdata.tar.xz + # 56 2020-05-24T10:53:34Z gs://chromeos-toolchain-artifacts/llvm-pgo/arm/llvm-11.0_pre387436_p20200403-r5-a8e5dcb072b1f794883ae8125fb08c06db678d56.llvm_metadata.json + # An example for the lines of buildbucket location: + # 5004260 2020-05-29T09:48:04Z gs://chromeos-image-archive/arm-pgo-generate-llvm-next-toolchain/R85-13254.0.0-1-8879010326583123168/llvm-11.0_pre387436_p20200403-r7-a8e5dcb072b1f794883ae8125fb08c06db678d56.llvm.profdata.tar.xz + # 56 2020-05-29T09:48:04Z gs://chromeos-image-archive/arm-pgo-generate-llvm-next-toolchain/R85-13254.0.0-1-8879010326583123168/llvm-11.0_pre387436_p20200403-r7-a8e5dcb072b1f794883ae8125fb08c06db678d56.llvm_metadata.json + # pylint: enable=line-too-long + profdata_url = '' + for line in lines: + url = line.split()[-1] + if '.llvm.profdata.tar.xz' in url: + profile_path = _get_gs_profdata(url, arch) + profdata_url = url + break + if not profile_path or not profdata_url: + raise RuntimeError('No profdata found from %s' % gs_url) + + metadata_url = profdata_url.replace('.llvm.profdata.tar.xz', + '.llvm_metadata.json') + metadata = _get_gs_metadata(metadata_url) + if not metadata: + raise RuntimeError('No metadata found from %s' % gs_url) return metadata, profile_path +def _fetch_from_latest(arch): + """Fetch artifacts from latest builders. + + Args: + arch: the arch profdata collected from. + + Returns: + A tuple of local profdata location and metadata + """ + print('\nFETCHING LATEST PROFDATA ON %s...' % arch.upper()) + remote_latest = ( + '%schromeos-toolchain-artifacts/llvm-pgo/%s' % (_GS_PREFIX, arch)) + return _find_latest_artifacts(remote_latest, arch) + + +def _fetch_from_buildbucket(arch, bb): + """Fetch artifacts from buildbucket task. + + Args: + arch: the arch profdata collected from. + bb: buildbucket id. + + Returns: + A tuple of local profdata location and metadata + """ + print('\nFETCHING BUILDBUCKET PROFDATA ON %s...' % arch.upper()) + remote_arch = ('%schromeos-image-archive/%s-pgo-generate-llvm-next-toolchain' + % (_GS_PREFIX, arch)) + # List all buckets under {arch}-pgo-generate-llvm-next-toolchain and + # grep with buildbucket id. + remote_bb = subprocess.check_output(['gsutil', 'ls', remote_arch], + encoding='utf-8').strip().split('\n') + for line in remote_bb: + if bb in line: + return _find_latest_artifacts(line, arch) + raise RuntimeError('No matched results found in %s with bb: %s' % (arch, bb)) + + def _merge_profdata(profdata_list, output_name): + """Merge profdata. + + Args: + profdata_list: list of profdata location of each arch. + output_name: name of merged profdata. + """ merge_cmd = [_LLVM_PROFDATA, 'merge', '-output', output_name] + profdata_list - print('Merging PGO profiles.\nCMD: %s\n' % merge_cmd) + print('\nMerging PGO profiles.\nCMD: %s' % merge_cmd) subprocess.check_call(merge_cmd) def _tar_and_upload_profdata(profdata, name_suffix): + """Create a tarball of merged profdata and upload to certain gs location. + + Args: + profdata: location of merged profdata. + name_suffix: usually the LLVM head_sha. + """ tarball = 'llvm-profdata-%s.tar.xz' % name_suffix print('Making profdata tarball: %s' % tarball) subprocess.check_call( @@ -140,12 +235,11 @@ def _tar_and_upload_profdata(profdata, name_suffix): tarball, upload_location, ] - print('Uploading tarball to gs.\nCMD: %s\n' % upload_cmd) + print('\nUploading tarball to gs.\nCMD: %s\n' % upload_cmd) # gsutil prints all status to stderr, oddly enough. gs_output = subprocess.check_output( upload_cmd, stderr=subprocess.STDOUT, encoding='utf-8') - print(gs_output) # gsutil exits successfully even if it uploaded nothing. It prints a summary # of what all it did, though. Successful uploads are just a progress bar, @@ -172,13 +266,12 @@ def main(): 'architecture to download. By default, we merge profdata from arm, ' 'arm64, amd64.') parser.add_argument( - '-t', - '--tryjob', + '-b', + '--buildbucket', default=[], action='append', - help='Extra pgo-generate-llvm-next-toolchain/tryjob results to be used. ' - 'Format should be ' - '{arch}-pgo-generate-llvm-next-toolchain(-tryjob)/{VERSION}.') + help='Extra pgo-generate-llvm-next-toolchain buildbucket results to be ' + 'used. Format should be: {arch}/{bb_id}.') parser.add_argument( '-o', '--output', @@ -190,17 +283,28 @@ def main(): help='The LLVM hash to select for the profiles. Generally autodetected.') args = parser.parse_args() - if not args.all_latest_profiles and not (args.latest or args.tryjob): - sys.exit('Please specify whether to use latest profiles or profiles from ' - 'tryjobs') + if not args.all_latest_profiles and not (args.latest or args.buildbucket): + parser.error('Please specify whether to use latest profiles or ' + 'profiles from buildbucket') - if args.all_latest_profiles and (args.latest or args.tryjob): - sys.exit('--all_latest_profiles cannot be specified together with ' - '--latest or --tryjob.') + if args.all_latest_profiles and (args.latest or args.buildbucket): + parser.error('--all_latest_profiles cannot be specified together ' + 'with --latest or --buildbucket') latest = ['arm', 'arm64', 'amd64'] \ if args.all_latest_profiles else args.latest + all_arch_list = latest.copy() + arch_bb_list = [] + if args.buildbucket: + for arch_bb in args.buildbucket: + arch, bb = arch_bb.split('/') + arch_bb_list.append((arch, bb)) + all_arch_list.append(arch) + + if len(set(all_arch_list)) != len(all_arch_list): + parser.error('Each arch can be only passed once.') + if not distutils.spawn.find_executable(_LLVM_PROFDATA): sys.exit(_LLVM_PROFDATA + ' not found; are you in the chroot?') @@ -212,22 +316,20 @@ def main(): profdata_list = [] heads = set() - def fetch_and_append_artifacts(gs_url): - llvm_metadata, profdata_loc = _get_gs_artifacts(gs_url) + def append_artifacts(fetched_tuple): + llvm_metadata, profdata_loc = fetched_tuple if os.path.getsize(profdata_loc) < 512 * 1024: - raise RuntimeError('The PGO profile in %s (local path: %s) is ' - 'suspiciously small. Something might have gone ' - 'wrong.' % (gs_url, profdata_loc)) - + raise RuntimeError('The PGO profile in local path %s is suspiciously ' + 'small. Something might have gone ' + 'wrong.' % profdata_loc) heads.add(llvm_metadata.head_sha) profdata_list.append(profdata_loc) for arch in latest: - fetch_and_append_artifacts(_find_latest_artifacts(arch)) + append_artifacts(_fetch_from_latest(arch)) - if args.tryjob: - for tryjob in args.tryjob: - fetch_and_append_artifacts(tryjob) + for arch, bb in arch_bb_list: + append_artifacts(_fetch_from_buildbucket(arch, bb)) assert heads, "Didn't fetch anything?" @@ -251,12 +353,12 @@ def main(): die_with_head_complaint( "HEAD %s wasn't found in any fetched artifacts." % llvm_hash) - print('Using LLVM hash: %s' % llvm_hash) + print('\nUsing LLVM hash: %s' % llvm_hash) _merge_profdata(profdata_list, args.output) - print('Merged profdata locates at %s\n' % os.path.abspath(args.output)) + print('Merged profdata locates at %s' % os.path.abspath(args.output)) _tar_and_upload_profdata(args.output, name_suffix=llvm_hash) - print('Merged profdata uploaded successfully.') + print('\nMerged profdata uploaded successfully.') except: success = False raise -- cgit v1.2.3 From ad18d3390cf5da60b7143122d0f3789c91929183 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 2 Jun 2020 23:22:00 -0700 Subject: crosperf: Include PID in topstats Top statistics was showing commands which could combined multiple processes. To include PID in topstats we need to split the commands into separate processes. The process PID is appended to the command name in topstats. The top chrome process is the renderer process running the benchmark. The list size depends on the number of non-chrome processes which we limit to 5. For example with 10 chrome processes in the top with 10 following non-chrome processes the list will show 15 entries. BUG=None TEST=Tested on eve, bob and cheza. Change-Id: Ibf1e61c8cb522aba13cd51a590bb7e24597f66a6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2227626 Reviewed-by: George Burgess Tested-by: Denis Nikitin --- crosperf/experiment_runner.py | 6 +- crosperf/experiment_runner_unittest.py | 18 +++--- crosperf/results_cache.py | 73 +++++++++++++-------- crosperf/results_cache_unittest.py | 113 ++++++++++++++++++++------------- 4 files changed, 129 insertions(+), 81 deletions(-) diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index e2bd50db..21fa3ea0 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -275,8 +275,8 @@ class ExperimentRunner(object): all_failed = True topstats_file = os.path.join(results_directory, 'topstats.log') - self.l.LogOutput('Storing top5 statistics of each benchmark run into %s.' % - topstats_file) + self.l.LogOutput( + 'Storing top statistics of each benchmark run into %s.' % topstats_file) with open(topstats_file, 'w') as top_fd: for benchmark_run in experiment.benchmark_runs: if benchmark_run.result: @@ -291,7 +291,7 @@ class ExperimentRunner(object): # Header with benchmark run name. top_fd.write('%s\n' % str(benchmark_run)) # Formatted string with top statistics. - top_fd.write(benchmark_run.result.FormatStringTop5()) + top_fd.write(benchmark_run.result.FormatStringTopCommands()) top_fd.write('\n\n') if all_failed: diff --git a/crosperf/experiment_runner_unittest.py b/crosperf/experiment_runner_unittest.py index 0bbab292..31d02e71 100755 --- a/crosperf/experiment_runner_unittest.py +++ b/crosperf/experiment_runner_unittest.py @@ -409,11 +409,11 @@ class ExperimentRunnerTest(unittest.TestCase): @mock.patch.object(Result, 'CompressResultsTo') @mock.patch.object(Result, 'CopyResultsTo') @mock.patch.object(Result, 'CleanUp') - @mock.patch.object(Result, 'FormatStringTop5') + @mock.patch.object(Result, 'FormatStringTopCommands') @mock.patch('builtins.open', new_callable=mock.mock_open) - def test_store_results(self, mock_open, mock_top5, mock_cleanup, mock_copy, - mock_compress, _mock_text_report, mock_report, - mock_writefile, mock_mkdir, mock_rmdir): + def test_store_results(self, mock_open, mock_top_commands, mock_cleanup, + mock_copy, mock_compress, _mock_text_report, + mock_report, mock_writefile, mock_mkdir, mock_rmdir): self.mock_logger.Reset() self.exp.results_directory = '/usr/local/crosperf-results' @@ -441,7 +441,7 @@ class ExperimentRunnerTest(unittest.TestCase): self.assertEqual(mock_rmdir.call_count, 0) self.assertEqual(self.mock_logger.LogOutputCount, 0) self.assertEqual(mock_open.call_count, 0) - self.assertEqual(mock_top5.call_count, 0) + self.assertEqual(mock_top_commands.call_count, 0) # Test 2. _terminated is false; everything works properly. fake_result = Result(self.mock_logger, self.exp.labels[0], 'average', @@ -470,7 +470,7 @@ class ExperimentRunnerTest(unittest.TestCase): self.assertEqual(self.mock_logger.LogOutputCount, 5) self.assertEqual(self.mock_logger.output_msgs, [ 'Storing experiment file in /usr/local/crosperf-results.', - 'Storing top5 statistics of each benchmark run into' + 'Storing top statistics of each benchmark run into' ' /usr/local/crosperf-results/topstats.log.', 'Storing results of each benchmark run.', 'Storing results report in /usr/local/crosperf-results.', @@ -482,9 +482,9 @@ class ExperimentRunnerTest(unittest.TestCase): 'w') mock_open().write.assert_called() - # Check top5 calls with no arguments. - top5calls = [mock.call()] * 6 - self.assertEqual(mock_top5.call_args_list, top5calls) + # Check top calls with no arguments. + topcalls = [mock.call()] * 6 + self.assertEqual(mock_top_commands.call_args_list, topcalls) # Test 3. Test compress_results. self.exp.compress_results = True diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index b6050b61..f7b78e39 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -76,22 +76,34 @@ class Result(object): """Get the list of top commands consuming CPU on the machine.""" return self.top_cmds - def FormatStringTop5(self): - """Get formatted top5 string. + def FormatStringTopCommands(self): + """Get formatted string of top commands. - Get the formatted string with top5 commands consuming CPU on DUT machine. + Get the formatted string with top commands consuming CPU on DUT machine. + Number of "non-chrome" processes in the list is limited to 5. """ format_list = [ - 'Top 5 commands with highest CPU usage:', + 'Top commands with highest CPU usage:', # Header. '%20s %9s %6s %s' % ('COMMAND', 'AVG CPU%', 'COUNT', 'HIGHEST 5'), '-' * 50, ] if self.top_cmds: - for topcmd in self.top_cmds[:5]: - print_line = '%20s %9.2f %6s %s' % (topcmd['cmd'], topcmd['cpu_avg'], - topcmd['count'], topcmd['top5']) + # After switching to top processes we have to expand the list since there + # will be a lot of 'chrome' processes (up to 10, sometimes more) in the + # top. + # Let's limit the list size by the number of non-chrome processes. + limit_of_non_chrome_procs = 5 + num_of_non_chrome_procs = 0 + for topcmd in self.top_cmds: + print_line = '%20s %9.2f %6s %s' % ( + topcmd['cmd'], topcmd['cpu_use_avg'], topcmd['count'], + topcmd['top5_cpu_use']) format_list.append(print_line) + if not topcmd['cmd'].startswith('chrome'): + num_of_non_chrome_procs += 1 + if num_of_non_chrome_procs >= limit_of_non_chrome_procs: + break else: format_list.append('[NO DATA FROM THE TOP LOG]') format_list.append('-' * 50) @@ -559,9 +571,9 @@ class Result(object): Returns: List of dictionaries with the following keyvals: 'cmd': command name (string), - 'cpu_avg': average cpu usage (float), + 'cpu_use_avg': average cpu usage (float), 'count': number of occurrences (int), - 'top5': up to 5 highest cpu usages (descending list of floats) + 'top5_cpu_use': up to 5 highest cpu usages (descending list of floats) Example of the top log: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND @@ -612,7 +624,7 @@ class Result(object): process = { # NOTE: One command may be represented by multiple processes. 'cmd': match.group('cmd'), - 'pid': int(match.group('pid')), + 'pid': match.group('pid'), 'cpu_use': float(match.group('cpu_use')), } @@ -634,7 +646,10 @@ class Result(object): # not running. # On 1-core DUT 90% chrome cpu load occurs in 55%, 95% in 33% and 100% in 2% # of snapshots accordingly. - CHROME_HIGH_CPU_LOAD = 90 + # Threshold of "high load" is reduced to 70% (from 90) when we switched to + # topstats per process. From experiment data the rest 20% are distributed + # among other chrome processes. + CHROME_HIGH_CPU_LOAD = 70 # Number of snapshots where chrome is heavily used. high_load_snapshots = 0 # Total CPU use per process in ALL active snapshots. @@ -645,35 +660,41 @@ class Result(object): topcmds = [] for snapshot_processes in snapshots: - # CPU usage per command in one snapshot. - cmd_cpu_use_per_snapshot = collections.defaultdict(float) + # CPU usage per command, per PID in one snapshot. + cmd_cpu_use_per_snapshot = collections.defaultdict(dict) for process in snapshot_processes: cmd = process['cmd'] cpu_use = process['cpu_use'] + pid = process['pid'] + cmd_cpu_use_per_snapshot[cmd][pid] = cpu_use - # Collect CPU usage per command. - cmd_cpu_use_per_snapshot[cmd] += cpu_use + # Chrome processes, pid: cpu_usage. + chrome_processes = cmd_cpu_use_per_snapshot.get('chrome', {}) + chrome_cpu_use_list = chrome_processes.values() - if cmd_cpu_use_per_snapshot.setdefault('chrome', - 0.0) > CHROME_HIGH_CPU_LOAD: - # Combined CPU usage of "chrome" command exceeds "High load" threshold - # which means DUT is busy running a benchmark. + if chrome_cpu_use_list and max( + chrome_cpu_use_list) > CHROME_HIGH_CPU_LOAD: + # CPU usage of any of the "chrome" processes exceeds "High load" + # threshold which means DUT is busy running a benchmark. high_load_snapshots += 1 - for cmd, cpu_use in cmd_cpu_use_per_snapshot.items(): - # Update total CPU usage. - cmd_total_cpu_use[cmd] += cpu_use + for cmd, cpu_use_per_pid in cmd_cpu_use_per_snapshot.items(): + for pid, cpu_use in cpu_use_per_pid.items(): + # Append PID to the name of the command. + cmd_with_pid = cmd + '-' + pid + cmd_total_cpu_use[cmd_with_pid] += cpu_use - # Add cpu_use into command top cpu usages, sorted in descending order. - heapq.heappush(cmd_top5_cpu_use[cmd], round(cpu_use, 1)) + # Add cpu_use into command top cpu usages, sorted in descending + # order. + heapq.heappush(cmd_top5_cpu_use[cmd_with_pid], round(cpu_use, 1)) for consumer, usage in sorted( cmd_total_cpu_use.items(), key=lambda x: x[1], reverse=True): # Iterate through commands by descending order of total CPU usage. topcmd = { 'cmd': consumer, - 'cpu_avg': usage / high_load_snapshots, + 'cpu_use_avg': usage / high_load_snapshots, 'count': len(cmd_top5_cpu_use[consumer]), - 'top5': heapq.nlargest(5, cmd_top5_cpu_use[consumer]), + 'top5_cpu_use': heapq.nlargest(5, cmd_top5_cpu_use[consumer]), } topcmds.append(topcmd) diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index ed6ff95b..2c1996c4 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -223,40 +223,52 @@ TOP_LOG = \ """ TOP_DATA = [ { - 'cmd': 'chrome', - 'cpu_avg': 124.75, + 'cmd': 'chrome-5745', + 'cpu_use_avg': 115.35, 'count': 2, - 'top5': [125.7, 123.8], + 'top5_cpu_use': [122.8, 107.9], }, { - 'cmd': 'irq/cros-ec', - 'cpu_avg': 1.0, + 'cmd': 'chrome-5713', + 'cpu_use_avg': 8.9, 'count': 1, - 'top5': [2.0], + 'top5_cpu_use': [17.8] }, { - 'cmd': 'spi5', - 'cpu_avg': 0.5, + 'cmd': 'irq/cros-ec-912', + 'cpu_use_avg': 1.0, 'count': 1, - 'top5': [1.0], + 'top5_cpu_use': [2.0], }, { - 'cmd': 'sshd', - 'cpu_avg': 0.5, + 'cmd': 'chrome-5205', + 'cpu_use_avg': 0.5, 'count': 1, - 'top5': [1.0], + 'top5_cpu_use': [1.0] }, { - 'cmd': 'rcu_preempt', - 'cpu_avg': 0.5, + 'cmd': 'spi5-121', + 'cpu_use_avg': 0.5, 'count': 1, - 'top5': [1.0], + 'top5_cpu_use': [1.0], }, { - 'cmd': 'kworker/4:2', - 'cpu_avg': 0.5, + 'cmd': 'sshd-4811', + 'cpu_use_avg': 0.5, 'count': 1, - 'top5': [1.0], + 'top5_cpu_use': [1.0], + }, + { + 'cmd': 'rcu_preempt-7', + 'cpu_use_avg': 0.5, + 'count': 1, + 'top5_cpu_use': [1.0], + }, + { + 'cmd': 'kworker/4:2-855', + 'cpu_use_avg': 0.5, + 'count': 1, + 'top5_cpu_use': [1.0], }, ] TOP_OUTPUT = \ @@ -994,69 +1006,84 @@ class ResultTest(unittest.TestCase): mo.assert_has_calls(calls) self.assertEqual(topcalls, []) - def test_format_string_top5_cmds(self): - """Test formatted string with top5 commands.""" + def test_format_string_top_cmds(self): + """Test formatted string with top commands.""" self.result.top_cmds = [ { - 'cmd': 'chrome', - 'cpu_avg': 119.753453465, + 'cmd': 'chrome-111', + 'cpu_use_avg': 119.753453465, 'count': 44444, - 'top5': [222.8, 217.9, 217.8, 191.0, 189.9], + 'top5_cpu_use': [222.8, 217.9, 217.8, 191.0, 189.9], + }, + { + 'cmd': 'chrome-222', + 'cpu_use_avg': 100, + 'count': 33333, + 'top5_cpu_use': [200.0, 195.0, 190.0, 185.0, 180.0], }, { 'cmd': 'irq/230-cros-ec', - 'cpu_avg': 10.000000000000001, + 'cpu_use_avg': 10.000000000000001, 'count': 1000, - 'top5': [11.5, 11.4, 11.3, 11.2, 11.1], + 'top5_cpu_use': [11.5, 11.4, 11.3, 11.2, 11.1], }, { 'cmd': 'powerd', - 'cpu_avg': 2.0, + 'cpu_use_avg': 2.0, 'count': 2, - 'top5': [3.0, 1.0] + 'top5_cpu_use': [3.0, 1.0] }, { - 'cmd': 'cmd1', - 'cpu_avg': 1.0, + 'cmd': 'cmd3', + 'cpu_use_avg': 1.0, 'count': 1, - 'top5': [1.0], + 'top5_cpu_use': [1.0], }, { - 'cmd': 'cmd2', - 'cpu_avg': 1.0, + 'cmd': 'cmd4', + 'cpu_use_avg': 1.0, 'count': 1, - 'top5': [1.0], + 'top5_cpu_use': [1.0], + }, + { + 'cmd': 'cmd5', + 'cpu_use_avg': 1.0, + 'count': 1, + 'top5_cpu_use': [1.0], }, { - 'cmd': 'not_for_print', + 'cmd': 'cmd6_not_for_print', 'cpu_avg': 1.0, 'count': 1, 'top5': [1.0], }, ] - form_str = self.result.FormatStringTop5() + form_str = self.result.FormatStringTopCommands() self.assertEqual( form_str, '\n'.join([ - 'Top 5 commands with highest CPU usage:', + 'Top commands with highest CPU usage:', ' COMMAND AVG CPU% COUNT HIGHEST 5', '-' * 50, - ' chrome 119.75 44444 ' + ' chrome-111 119.75 44444 ' '[222.8, 217.9, 217.8, 191.0, 189.9]', + ' chrome-222 100.00 33333 ' + '[200.0, 195.0, 190.0, 185.0, 180.0]', ' irq/230-cros-ec 10.00 1000 ' '[11.5, 11.4, 11.3, 11.2, 11.1]', ' powerd 2.00 2 [3.0, 1.0]', - ' cmd1 1.00 1 [1.0]', - ' cmd2 1.00 1 [1.0]', + ' cmd3 1.00 1 [1.0]', + ' cmd4 1.00 1 [1.0]', + ' cmd5 1.00 1 [1.0]', '-' * 50, ])) - def test_format_string_top5_calls_no_data(self): - """Test formatted string of top5 with no data.""" + def test_format_string_top_calls_no_data(self): + """Test formatted string of top with no data.""" self.result.top_cmds = [] - form_str = self.result.FormatStringTop5() + form_str = self.result.FormatStringTopCommands() self.assertEqual( form_str, '\n'.join([ - 'Top 5 commands with highest CPU usage:', + 'Top commands with highest CPU usage:', ' COMMAND AVG CPU% COUNT HIGHEST 5', '-' * 50, '[NO DATA FROM THE TOP LOG]', -- cgit v1.2.3 From e8c52b60f97e83f294bcab56987f2d929ca011dc Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 8 Jun 2020 14:31:12 -0700 Subject: afdo_metadata: Publish new kernel profiles Update chromeos-kernel-3_18 to R85-13261.0-1591608892 Update chromeos-kernel-4_4 to R85-13261.0-1591609702 Update chromeos-kernel-4_14 to R85-13261.0-1591609294 Update chromeos-kernel-4_19 to R85-13261.0-1591608770 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: Iffe88879b401d79ea03d4edcf9ebac6849010ed1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2236652 Commit-Queue: Tiancong Wang Commit-Queue: Manoj Gupta Tested-by: Tiancong Wang Reviewed-by: Manoj Gupta --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index d54f4bfc..5c738b3d 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -3,15 +3,15 @@ "name": "R81-12607.58-1578524353" }, "chromeos-kernel-4_4": { - "name": "R85-13099.14-1591004478" + "name": "R85-13261.0-1591609702" }, "chromeos-kernel-3_18": { - "name": "R85-13099.14-1591004759" + "name": "R85-13261.0-1591608892" }, "chromeos-kernel-4_14": { - "name": "R85-13099.14-1591004258" + "name": "R85-13261.0-1591609294" }, "chromeos-kernel-4_19": { - "name": "R85-13099.7-1590399205" + "name": "R85-13261.0-1591608770" } } -- cgit v1.2.3 From deff1db299a82e7f1dd480ccf5844d4afa485916 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 8 Jun 2020 14:39:03 -0700 Subject: afdo_metadata: Remove the entry for 3.14 Since we do not update AFDO profiels for kernel 3.14 anymore, there is no need to keep the entry. BUG=None TEST=None Change-Id: If39a5beabd246a703c3aeb458a27ec450a88dffe Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2236653 Reviewed-by: Tiancong Wang Reviewed-by: Manoj Gupta Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 5c738b3d..f66f7e7f 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,7 +1,4 @@ { - "chromeos-kernel-3_14": { - "name": "R81-12607.58-1578524353" - }, "chromeos-kernel-4_4": { "name": "R85-13261.0-1591609702" }, -- cgit v1.2.3 From ad5bd3e097f1d6ef592bdbc5ee041ad896b6b9aa Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Mon, 1 Jun 2020 15:09:18 -0700 Subject: [compiler-wrapper] Handle double build for clang-tidy For clang-tidy, the equivalent of -Werror is --warnings-as-errors (or -warnings-as-errors). The error message will also have "warnings-as-errors". So, 1. Trigger double-build if "warnings-as-errors" is in *stdout*. Clang-tidy will also fail if clang issues a Werror diagnostic. In this case, we'd get "clang-diagnostic" in stdout. Do a re-build in both these cases. 2. Remove flags containing "-warnings-as-errors" in the rerun. Unlike -Werror/Wno-error, clang-tidy doesn't have a -no-warnings-as-errors to override a prior -warnings-as-errors. Existing double-build processing will disable -Werror flags to Clang. Originally reviewed at https://android-review.googlesource.com/c/platform/external/toolchain-utils/+/1322200. BUG=None TEST=go test Change-Id: I18de245972da81e0ac3600f9098b71cec82e9e96 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2239370 Commit-Queue: Pirama Arumuga Nainar Tested-by: Pirama Arumuga Nainar Reviewed-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 23 ++++++++-- compiler_wrapper/disable_werror_flag_test.go | 69 ++++++++++++++++++++++++++++ compiler_wrapper/testutil_test.go | 21 +++++---- 3 files changed, 99 insertions(+), 14 deletions(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index f68786d4..75f71a0d 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -14,6 +14,8 @@ import ( "syscall" ) +const numWErrorEstimate = 30 + func getNewWarningsDir(env env, cfg *config) (dirName string, ok bool) { if cfg.isAndroidWrapper { if cfg.useLlvmNext { @@ -32,13 +34,17 @@ func getNewWarningsDir(env env, cfg *config) (dirName string, ok bool) { } func disableWerrorFlags(originalArgs []string) []string { - noErrors := []string{"-Wno-error"} + extraArgs := []string{"-Wno-error"} + newArgs := make([]string, 0, len(originalArgs)+numWErrorEstimate) for _, flag := range originalArgs { if strings.HasPrefix(flag, "-Werror=") { - noErrors = append(noErrors, strings.Replace(flag, "-Werror", "-Wno-error", 1)) + extraArgs = append(extraArgs, strings.Replace(flag, "-Werror", "-Wno-error", 1)) + } + if !strings.Contains(flag, "-warnings-as-errors") { + newArgs = append(newArgs, flag) } } - return noErrors + return append(newArgs, extraArgs...) } func isLikelyAConfTest(cfg *config, cmd *command) bool { @@ -75,9 +81,16 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin if err != nil { return 0, err } + // The only way we can do anything useful is if it looks like the failure // was -Werror-related. - if originalExitCode == 0 || !bytes.Contains(originalStderrBuffer.Bytes(), []byte("-Werror")) || isLikelyAConfTest(cfg, originalCmd) { + originalStdoutBufferBytes := originalStdoutBuffer.Bytes() + shouldRetry := originalExitCode != 0 && + !isLikelyAConfTest(cfg, originalCmd) && + (bytes.Contains(originalStderrBuffer.Bytes(), []byte("-Werror")) || + bytes.Contains(originalStdoutBufferBytes, []byte("warnings-as-errors")) || + bytes.Contains(originalStdoutBufferBytes, []byte("clang-diagnostic-"))) + if !shouldRetry { originalStdoutBuffer.WriteTo(env.stdout()) originalStderrBuffer.WriteTo(env.stderr()) return originalExitCode, nil @@ -87,7 +100,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin retryStderrBuffer := &bytes.Buffer{} retryCommand := &command{ Path: originalCmd.Path, - Args: append(originalCmd.Args, disableWerrorFlags(originalCmd.Args)...), + Args: disableWerrorFlags(originalCmd.Args), EnvUpdates: originalCmd.EnvUpdates, } retryExitCode, err := wrapSubprocessErrorWithSourceLoc(retryCommand, diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index 53b0fb52..28e48371 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -449,3 +449,72 @@ func TestChromeOSGetNewWarningsDirOff(t *testing.T) { } }) } + +func TestClangTidyNoDoubleBuild(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + ctx.cfg.isAndroidWrapper = true + ctx.cfg.useLlvmNext = true + ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangTidyAndroid, "--", mainCc))) + if ctx.cmdCount != 1 { + t.Errorf("expected 1 call. Got: %d", ctx.cmdCount) + } + }) +} + +func withAndroidClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { + withTestContext(t, func(ctx *testContext) { + ctx.cfg.isAndroidWrapper = true + ctx.cfg.useLlvmNext = true + ctx.env = []string{"OUT_DIR=/tmp"} + + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + hasArg := func(s string) bool { + for _, e := range cmd.Args { + if strings.Contains(e, s) { + return true + } + } + return false + } + switch ctx.cmdCount { + case 1: + if hasArg("-Werror") { + fmt.Fprint(stdout, "clang-diagnostic-") + return newExitCodeError(1) + } + if hasArg("-warnings-as-errors") { + fmt.Fprint(stdout, "warnings-as-errors") + return newExitCodeError(1) + } + return nil + case 2: + if hasArg("warnings-as-errors") { + return fmt.Errorf("Unexpected arg warnings-as-errors found. All args: %s", cmd.Args) + } + return nil + default: + t.Fatalf("unexpected command: %#v", cmd) + return nil + } + } + work(ctx) + }) +} + +func TestClangTidyDoubleBuildClangTidyError(t *testing.T) { + withAndroidClangTidyTestContext(t, func(ctx *testContext) { + ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangTidyAndroid, "-warnings-as-errors=*", "--", mainCc))) + if ctx.cmdCount != 2 { + t.Errorf("expected 2 calls. Got: %d", ctx.cmdCount) + } + }) +} + +func TestClangTidyDoubleBuildClangError(t *testing.T) { + withAndroidClangTidyTestContext(t, func(ctx *testContext) { + ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangTidyAndroid, "-Werrors=*", "--", mainCc))) + if ctx.cmdCount != 2 { + t.Errorf("expected 2 calls. Got: %d", ctx.cmdCount) + } + }) +} diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 57a68df2..5d8ef920 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -17,15 +17,18 @@ import ( "testing" ) -const mainCc = "main.cc" -const clangAndroid = "./clang" -const clangX86_64 = "./x86_64-cros-linux-gnu-clang" -const gccX86_64 = "./x86_64-cros-linux-gnu-gcc" -const gccX86_64Eabi = "./x86_64-cros-eabi-gcc" -const gccArmV7 = "./armv7m-cros-linux-gnu-gcc" -const gccArmV7Eabi = "./armv7m-cros-eabi-gcc" -const gccArmV8 = "./armv8m-cros-linux-gnu-gcc" -const gccArmV8Eabi = "./armv8m-cros-eabi-gcc" +const ( + mainCc = "main.cc" + clangAndroid = "./clang" + clangTidyAndroid = "./clang-tidy" + clangX86_64 = "./x86_64-cros-linux-gnu-clang" + gccX86_64 = "./x86_64-cros-linux-gnu-gcc" + gccX86_64Eabi = "./x86_64-cros-eabi-gcc" + gccArmV7 = "./armv7m-cros-linux-gnu-gcc" + gccArmV7Eabi = "./armv7m-cros-eabi-gcc" + gccArmV8 = "./armv8m-cros-linux-gnu-gcc" + gccArmV8Eabi = "./armv8m-cros-eabi-gcc" +) type testContext struct { t *testing.T -- cgit v1.2.3 From a87b84fe8c7aa5f497c5785ddc4778344f283e4e Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Tue, 9 Jun 2020 21:33:44 -0700 Subject: [android wrapper] Write warning report to stdout on Android Write the warning report to stdout (surrounded by a tag ). Currently OUT_DIR only gets passed to local compiles, and so remote compiles can't do the double build. Even if they write to /tmp, RBE or Goma won't know to copy them as part of the output. Packaging the warnings reports is a problem as well since the additional build step needs extra surgery in soong (it's not possible to add a dangling, optional build step in Ninja). Writing the reports to stdout conveniently solves both these issues. We can just scrape the reports with a script. Originall reviewed at https://android-review.googlesource.com/c/platform/external/toolchain-utils/+/1328433/2. BUG=None TEST=build master with r391452 and check progress past new errors. Change-Id: I5f1f71faba002836067a82f6aa4b26d5ba8b7b99 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2239371 Commit-Queue: Pirama Arumuga Nainar Tested-by: Pirama Arumuga Nainar Reviewed-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 4 +- compiler_wrapper/disable_werror_flag.go | 69 +++++++++++++++------------- compiler_wrapper/disable_werror_flag_test.go | 34 ++++---------- 3 files changed, 47 insertions(+), 60 deletions(-) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index da9c8660..a7b87dc0 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -127,14 +127,14 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int } rusageLogfileName := getRusageLogFilename(env) bisectStage := getBisectStage(env) - if newWarningsDir, ok := getNewWarningsDir(env, cfg); ok { + if shouldForceDisableWerror(env, cfg) { if rusageLogfileName != "" { return 0, newUserErrorf("GETRUSAGE is meaningless with FORCE_DISABLE_WERROR") } if bisectStage != "" { return 0, newUserErrorf("BISECT_STAGE is meaningless with FORCE_DISABLE_WERROR") } - return doubleBuildWithWNoError(env, cfg, newWarningsDir, compilerCmd) + return doubleBuildWithWNoError(env, cfg, compilerCmd) } if shouldCompileWithFallback(env) { if rusageLogfileName != "" { diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 75f71a0d..1180127c 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -7,30 +7,21 @@ package main import ( "bytes" "encoding/json" + "io" "io/ioutil" "os" - "path" "strings" "syscall" ) const numWErrorEstimate = 30 -func getNewWarningsDir(env env, cfg *config) (dirName string, ok bool) { +func shouldForceDisableWerror(env env, cfg *config) bool { if cfg.isAndroidWrapper { - if cfg.useLlvmNext { - value, _ := env.getenv("OUT_DIR") - if value != "" { - return path.Join(value, "warnings_reports"), true - } - } - } else { - value, _ := env.getenv("FORCE_DISABLE_WERROR") - if value != "" { - return cfg.newWarningsDir, true - } + return cfg.useLlvmNext } - return "", false + value, _ := env.getenv("FORCE_DISABLE_WERROR") + return value != "" } func disableWerrorFlags(originalArgs []string) []string { @@ -62,7 +53,7 @@ func isLikelyAConfTest(cfg *config, cmd *command) bool { return false } -func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, originalCmd *command) (exitCode int, err error) { +func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command) (exitCode int, err error) { originalStdoutBuffer := &bytes.Buffer{} originalStderrBuffer := &bytes.Buffer{} // TODO: This is a bug in the old wrapper that it drops the ccache path @@ -119,6 +110,34 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin retryStdoutBuffer.WriteTo(env.stdout()) retryStderrBuffer.WriteTo(env.stderr()) + lines := []string{} + if originalStderrBuffer.Len() > 0 { + lines = append(lines, originalStderrBuffer.String()) + } + if originalStdoutBuffer.Len() > 0 { + lines = append(lines, originalStdoutBuffer.String()) + } + outputToLog := strings.Join(lines, "\n") + + jsonData := warningsJSONData{ + Cwd: env.getwd(), + Command: append([]string{originalCmd.Path}, originalCmd.Args...), + Stdout: outputToLog, + } + + // Write warning report to stdout for Android. On Android, + // double-build can be requested on remote builds as well, where there + // is no canonical place to write the warnings report. + if cfg.isAndroidWrapper { + stdout := env.stdout() + io.WriteString(stdout, "") + if err := json.NewEncoder(stdout).Encode(jsonData); err != nil { + return 0, wrapErrorwithSourceLocf(err, "error in json.Marshal") + } + io.WriteString(stdout, "") + return retryExitCode, nil + } + // All of the below is basically logging. If we fail at any point, it's // reasonable for that to fail the build. This is all meant for FYI-like // builders in the first place. @@ -129,8 +148,8 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin defer syscall.Umask(oldMask) // Allow root and regular users to write to this without issue. - if err := os.MkdirAll(newWarningsDir, 0777); err != nil { - return 0, wrapErrorwithSourceLocf(err, "error creating warnings directory %s", newWarningsDir) + if err := os.MkdirAll(cfg.newWarningsDir, 0777); err != nil { + return 0, wrapErrorwithSourceLocf(err, "error creating warnings directory %s", cfg.newWarningsDir) } // Have some tag to show that files aren't fully written. It would be sad if @@ -141,7 +160,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin // Coming up with a consistent name for this is difficult (compiler command's // SHA can clash in the case of identically named files in different // directories, or similar); let's use a random one. - tmpFile, err := ioutil.TempFile(newWarningsDir, "warnings_report*.json"+incompleteSuffix) + tmpFile, err := ioutil.TempFile(cfg.newWarningsDir, "warnings_report*.json"+incompleteSuffix) if err != nil { return 0, wrapErrorwithSourceLocf(err, "error creating warnings file") } @@ -150,20 +169,6 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin return 0, wrapErrorwithSourceLocf(err, "error chmoding the file to be world-readable/writeable") } - lines := []string{} - if originalStderrBuffer.Len() > 0 { - lines = append(lines, originalStderrBuffer.String()) - } - if originalStdoutBuffer.Len() > 0 { - lines = append(lines, originalStdoutBuffer.String()) - } - outputToLog := strings.Join(lines, "\n") - - jsonData := warningsJSONData{ - Cwd: env.getwd(), - Command: append([]string{originalCmd.Path}, originalCmd.Args...), - Stdout: outputToLog, - } enc := json.NewEncoder(tmpFile) if err := enc.Encode(jsonData); err != nil { _ = tmpFile.Close() diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index 28e48371..ecc1090b 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -11,7 +11,6 @@ import ( "io" "io/ioutil" "os" - "path" "path/filepath" "strings" "testing" @@ -407,45 +406,28 @@ func TestDoubleBuildWerrorChmodsThingsAppropriately(t *testing.T) { }) } -func TestAndroidGetNewWarningsDir(t *testing.T) { +func TestAndroidDisableWerror(t *testing.T) { withTestContext(t, func(ctx *testContext) { - outDir := "/foo/bar" - expectedDir := path.Join(outDir, "warnings_reports") - - ctx.env = []string{"OUT_DIR=" + outDir} ctx.cfg.isAndroidWrapper = true // Disable werror ON ctx.cfg.useLlvmNext = true - dir, ok := getNewWarningsDir(ctx, ctx.cfg) - if !ok || dir != expectedDir { - t.Errorf("disable Werror not enabled for Android with useLlvmNext (dirName=%q ok=%t), expectedDir=%q", dir, ok, expectedDir) + if !shouldForceDisableWerror(ctx, ctx.cfg) { + t.Errorf("disable Werror not enabled for Android with useLlvmNext") } // Disable werror OFF ctx.cfg.useLlvmNext = false - dir, ok = getNewWarningsDir(ctx, ctx.cfg) - if ok || dir != "" { - t.Errorf("disable Werror incorrectly enabled for Android without useLlvmNext (dirName=%q ok=%t)", dir, ok) + if shouldForceDisableWerror(ctx, ctx.cfg) { + t.Errorf("disable-Werror enabled for Android without useLlvmNext") } }) } -func TestChromeOSGetNewWarningsDirOn(t *testing.T) { - withForceDisableWErrorTestContext(t, func(ctx *testContext) { - dir, ok := getNewWarningsDir(ctx, ctx.cfg) - if !ok || dir != ctx.cfg.newWarningsDir { - t.Errorf("disable Werror not enabled for ChromeOS with FORCE_DISABLE_WERROR set (dirName=%q ok=%t) expectedDir=%q", dir, ok, ctx.cfg.newWarningsDir) - } - - }) -} - -func TestChromeOSGetNewWarningsDirOff(t *testing.T) { +func TestChromeOSNoForceDisableWerror(t *testing.T) { withTestContext(t, func(ctx *testContext) { - dir, ok := getNewWarningsDir(ctx, ctx.cfg) - if ok || dir != "" { - t.Errorf("disable Werror incorrectly enabled for ChromeOS without FORCE_DISABLE_WERROR set (dirName=%q ok=%t)", dir, ok) + if shouldForceDisableWerror(ctx, ctx.cfg) { + t.Errorf("disable Werror enabled for ChromeOS without FORCE_DISABLE_WERROR set") } }) } -- cgit v1.2.3 From 90f20eb35d5fd4bf1f63ca2ce751e60fca8b3143 Mon Sep 17 00:00:00 2001 From: zhizhouy Date: Mon, 15 Jun 2020 13:18:40 -0700 Subject: afdo_metadata: publish the new kernel profiles (6/15) Update chromeos-kernel-3_18 to R85-13280.0-1592213569 Update chromeos-kernel-4_4 to R85-13280.0-1592213800 Update chromeos-kernel-4_14 to R85-13280.0-1592214019 Update chromeos-kernel-4_19 to R85-13280.0-1592214191 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I01a53b0a7bc09eae07c21f134a8ac90cc357eb58 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2246535 Reviewed-by: Tiancong Wang Commit-Queue: Zhizhou Yang Tested-by: Zhizhou Yang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f66f7e7f..a6f289f2 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-4_4": { - "name": "R85-13261.0-1591609702" + "name": "R85-13280.0-1592213800" }, "chromeos-kernel-3_18": { - "name": "R85-13261.0-1591608892" + "name": "R85-13280.0-1592213569" }, "chromeos-kernel-4_14": { - "name": "R85-13261.0-1591609294" + "name": "R85-13280.0-1592214019" }, "chromeos-kernel-4_19": { - "name": "R85-13261.0-1591608770" + "name": "R85-13280.0-1592214191" } } -- cgit v1.2.3 From a6ad382ccc7f60ed9feda06d8fcbab62980c62f8 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 11 Jun 2020 14:27:13 -0700 Subject: wrapper: allow Android to specify their own llvm-flags Given the discussion on https://android-review.googlesource.com/c/platform/external/toolchain-utils/+/1330695, it sounds like our Android friends want to be able to tweak llvm-next flags without going through chromium-review + having to pull their changes back into Android. This CL allows them to make changes to their llvm-next flags entirely locally, and isolates CrOS' llvm-next flags from Android's. BUG=None TEST=Built the wrapper for CrOS and Android. Change-Id: If1bcfe762a4f368db9816557752651edc877f497 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2247003 Reviewed-by: Pirama Arumuga Nainar Reviewed-by: Tiancong Wang Tested-by: George Burgess --- compiler_wrapper/build.py | 17 ++++++++++++++--- compiler_wrapper/config.go | 5 ----- compiler_wrapper/cros_llvm_next_flags.go | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 compiler_wrapper/cros_llvm_next_flags.go diff --git a/compiler_wrapper/build.py b/compiler_wrapper/build.py index 8ae23409..f98b2549 100755 --- a/compiler_wrapper/build.py +++ b/compiler_wrapper/build.py @@ -40,7 +40,7 @@ def parse_args(): return args -def calc_go_args(args, version): +def calc_go_args(args, version, build_dir): ldFlags = [ '-X', 'main.ConfigName=' + args.config, @@ -55,7 +55,17 @@ def calc_go_args(args, version): # If the wrapper is intended for Chrome OS, we need to use libc's exec. extra_args = [] if not args.static: - extra_args = ['-tags', 'libc_exec'] + extra_args += ['-tags', 'libc_exec'] + + if args.config == 'android': + # If android_llvm_next_flags.go DNE, we'll get an obscure "no + # llvmNextFlags" build error; complaining here is clearer. + if not os.path.exists( + os.path.join(build_dir, 'android_llvm_next_flags.go')): + sys.exit('In order to build the Android wrapper, you must have a local ' + 'android_llvm_next_flags.go file; please see ' + 'cros_llvm_next_flags.go.') + extra_args += ['-tags', 'android_llvm_next_flags'] return [ 'go', 'build', '-o', @@ -84,7 +94,8 @@ def main(): version = read_version(build_dir) # Note: Go does not support using absolute package names. # So we run go inside the directory of the the build file. - sys.exit(subprocess.call(calc_go_args(args, version), cwd=build_dir)) + sys.exit( + subprocess.call(calc_go_args(args, version, build_dir), cwd=build_dir)) if __name__ == '__main__': diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index fc43a29b..e82e6b3d 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -93,11 +93,6 @@ func getConfig(configName string, useCCache bool, useLlvmNext bool, version stri return &cfg, nil } -// TODO: Enable test in config_test.go, once we have new llvm-next flags. -var llvmNextFlags = []string{} - -var llvmNextPostFlags = []string{} - // Full hardening. // Temporarily disable function splitting because of chromium:434751. var crosHardenedConfig = &config{ diff --git a/compiler_wrapper/cros_llvm_next_flags.go b/compiler_wrapper/cros_llvm_next_flags.go new file mode 100644 index 00000000..6cd7cd2a --- /dev/null +++ b/compiler_wrapper/cros_llvm_next_flags.go @@ -0,0 +1,18 @@ +// Copyright 2020 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. + +// +build !android_llvm_next_flags + +package main + +// This file defines extra flags for llvm-next testing for Chrome OS. Importantly, these flags don't +// apply to Android's llvm-next wrapper. Android's toolchain-utils copy has a +// `android_llvm_next_flags.go` file downstream that defines its llvm-next arguments. As you can +// probably infer, `android_llvm_next_flags.go` is only compiled if the `android_llvm_next_flags` +// tag is set. + +// TODO: Enable test in config_test.go, once we have new llvm-next flags. +var llvmNextFlags = []string{} + +var llvmNextPostFlags = []string{} -- cgit v1.2.3 From 0c0e1d69337bb8200a65815628b019b19ae20e0d Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Mon, 15 Jun 2020 21:24:14 -0700 Subject: Symlink to android_llvm_next_flags.go in toolchain/llvm_android This is a downstream/Android-only change to symlink to android_llvm_next_flags.go in toolchain/llvm_android. It, as the name suggests, has custom flags for Android's LLVM-next compiler. This file is maintained in the llvm_android project to track configurations for the Android toolchain in one project. Test: compiler_wrapper/build.py for Android and validate that flags are passed correctly. Change-Id: I7a535aa6b39119864024495c33427504cbcb3c64 --- compiler_wrapper/android_llvm_next_flags.go | 1 + 1 file changed, 1 insertion(+) create mode 120000 compiler_wrapper/android_llvm_next_flags.go diff --git a/compiler_wrapper/android_llvm_next_flags.go b/compiler_wrapper/android_llvm_next_flags.go new file mode 120000 index 00000000..0abed7b4 --- /dev/null +++ b/compiler_wrapper/android_llvm_next_flags.go @@ -0,0 +1 @@ +../../../toolchain/llvm_android/android_llvm_next_flags.go \ No newline at end of file -- cgit v1.2.3 From 576a953cb1d88d4bb2743199147b2c1899d5091c Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 18 Jun 2020 18:05:18 -0700 Subject: wrapper: tweak "toolchain doesn't exist" checks in the updater When stderr is connected to a tty, equery will output things if it fails due to being unable to find a package. When it's not, equery will output nothing on failure. BUG=None TEST=./update_compiler_wrapper.sh Change-Id: I7d16d6a531f1f28fc0157873176d41f6881cd04b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2252550 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/update_compiler_wrapper.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler_wrapper/update_compiler_wrapper.sh b/compiler_wrapper/update_compiler_wrapper.sh index 69484308..479b112c 100755 --- a/compiler_wrapper/update_compiler_wrapper.sh +++ b/compiler_wrapper/update_compiler_wrapper.sh @@ -21,20 +21,20 @@ sudo cp ../binary_search_tool/bisect_driver.py /usr/bin echo "/usr/bin/clang_host_wrapper/bisect_driver.py" # Update the target wrappers for GCC in cross-x86_64-cros-linux-gnu/gcc cross-armv7a-cros-linux-gnueabihf/gcc cross-aarch64-cros-linux-gnu/gcc; do - if ! FILES="$(equery f $GCC)"; then - if equery l "${GCC}" 2>&1 | grep -q "No installed packages"; then - echo "no $GCC package found; skipping" >&2 + if ! FILES="$(equery f ${GCC})"; then + if [[ $(equery l "${GCC}" 2>&1 | wc -c) -eq 0 ]]; then + echo "no ${GCC} package found; skipping" >&2 continue fi - # Something went wrong, and the equery above probably diagnosed it. + # Something went wrong, and the equery above probably complained about it. exit 1 fi ./build.py --config=cros.hardened --use_ccache=false --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.noccache sudo mv ./sysroot_wrapper.hardened.noccache "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" - echo "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" + grep sysroot_wrapper.hardened.noccache <<< "${FILES}" ./build.py --config=cros.hardened --use_ccache=true --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.ccache sudo mv ./sysroot_wrapper.hardened.ccache "$(grep sysroot_wrapper.hardened.ccache <<< "${FILES}")" - echo "$(grep sysroot_wrapper.hardened.ccache <<< "${FILES}")" + grep sysroot_wrapper.hardened.ccache <<< "${FILES}" sudo cp ../binary_search_tool/bisect_driver.py "$(grep bisect_driver.py <<< "${FILES}")" - echo "$(grep bisect_driver.py <<< "${FILES}")" + grep bisect_driver.py <<< "${FILES}" done -- cgit v1.2.3 From 2efe72e635474b402b4cd456f51c0bc5989931aa Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 18 Jun 2020 20:37:28 -0700 Subject: wrapper: print android-llvm@ when using the Android wrapper. Otherwise, the wrapper might say: ``` Internal error. Please report to chromeos-toolchain@google.com. ``` to Android developers in some cases. BUG=b:159291805 TEST=`go test` Change-Id: I9a96068f02a2c6ce5e251c8754e267dfb1a30db1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2252553 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 8 ++++++-- compiler_wrapper/compiler_wrapper_test.go | 13 +++++++++++++ compiler_wrapper/config.go | 4 ++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index a7b87dc0..4c3db14a 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -239,9 +239,13 @@ func printCompilerError(writer io.Writer, compilerErr error) { if _, ok := compilerErr.(userError); ok { fmt.Fprintf(writer, "%s\n", compilerErr) } else { + emailAccount := "chromeos-toolchain" + if isAndroidConfig() { + emailAccount = "android-llvm" + } fmt.Fprintf(writer, - "Internal error. Please report to chromeos-toolchain@google.com.\n%s\n", - compilerErr) + "Internal error. Please report to %s@google.com.\n%s\n", + emailAccount, compilerErr) } } diff --git a/compiler_wrapper/compiler_wrapper_test.go b/compiler_wrapper/compiler_wrapper_test.go index a132ec5c..52b92f56 100644 --- a/compiler_wrapper/compiler_wrapper_test.go +++ b/compiler_wrapper/compiler_wrapper_test.go @@ -149,6 +149,19 @@ func TestPrintOtherCompilerError(t *testing.T) { } } +func TestPrintOtherCompilerErrorForAndroidLLVM(t *testing.T) { + buffer := bytes.Buffer{} + + oldConfigName := ConfigName + defer func() { ConfigName = oldConfigName }() + + ConfigName = "android" + printCompilerError(&buffer, errors.New("abcd")) + if buffer.String() != "Internal error. Please report to android-llvm@google.com.\nabcd\n" { + t.Errorf("Unexpected string. Got: %s", buffer.String()) + } +} + func TestCalculateAndroidWrapperPath(t *testing.T) { t.Parallel() diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index e82e6b3d..a122b5a2 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -70,6 +70,10 @@ func getRealConfig() (*config, error) { return config, nil } +func isAndroidConfig() bool { + return ConfigName == "android" +} + func getConfig(configName string, useCCache bool, useLlvmNext bool, version string) (*config, error) { cfg := config{} switch configName { -- cgit v1.2.3 From 83785c35e6d23abd24d30cc5eab36b0561b8eb5b Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 18 Jun 2020 18:10:27 -0700 Subject: wrapper: fork() before exec()ing This CL is a wild guess that tries to work around what appears to be an incredibly rare Go runtime bug (https://github.com/golang/go/issues/24484). As mentioned on the chromium bug, apparently execve is taking a while... somehow, and `pthread_create` fails with `EAGAIN` concurrently. So the intent here is to `fork()` + `exec()`. `fork()` will a) dispose of the thread that's trying to `pthread_create` b) isolate the `exec` in its own process, so the parent's runtime can spin up as many threads as it likes in peace. This slows down an 'ideal' kernel build (aka a build where ccache is a 100% hit rate, so the compiler wrapper's overheads are very pronounced) by ~4% in my measurements. BUG=chromium:1095528 TEST=sdk tryjob; CQ Change-Id: I73e1b238738b74c85def4709c09610f586fb04e5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2252552 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/libc_exec.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/compiler_wrapper/libc_exec.go b/compiler_wrapper/libc_exec.go index f8db9d86..d9867733 100644 --- a/compiler_wrapper/libc_exec.go +++ b/compiler_wrapper/libc_exec.go @@ -7,15 +7,31 @@ package main // #include +// #include // #include // #include // #include +// #include +// #include // // int libc_exec(const char *pathname, char *const argv[], char *const envp[]) { -// if (execve(pathname, argv, envp) != 0) { +// // Since fork() brings us to one thread, we can only use async-signal-safe funcs below. +// pid_t pid = fork(); +// if (pid == 0) { +// execve(pathname, argv, envp); +// fprintf(stderr, "exec failed (errno: %d)\n", errno); +// _exit(1); +// } +// if (pid < 0) { +// return errno; +// } +// +// int wstatus; +// pid_t waited = waitpid(pid, &wstatus, 0); +// if (waited == -1) { // return errno; // } -// return 0; +// exit(WEXITSTATUS(wstatus)); //} import "C" import ( @@ -29,7 +45,7 @@ import ( // Note that this changes the go binary to be a dynamically linked one. // See crbug.com/1000863 for details. // To use this version of exec, please add '-tags libc_exec' when building Go binary. -// Without the tags, libc_exec.go will be used. +// Without the tags, libc_exec.go will not be used. func execCmd(env env, cmd *command) error { freeList := []unsafe.Pointer{} -- cgit v1.2.3 From 647df117bbefdf56743f92e3063f2b9c3f1428b2 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Fri, 19 Jun 2020 14:41:15 -0700 Subject: crosperf: Save cpuinfo and top logs Copy cpuinfo and top logs into results directory. BUG=None TEST=tested on local DUT. Change-Id: Ic868894d681db4a27f78e378945e1e565d4a5cc7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2255007 Reviewed-by: Zhizhou Yang Commit-Queue: Denis Nikitin Tested-by: Denis Nikitin --- crosperf/results_cache.py | 13 +++++++++++++ crosperf/results_cache_unittest.py | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index f7b78e39..b435eee3 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -58,6 +58,7 @@ class Result(object): self.results_file = [] self.turbostat_log_file = '' self.cpustats_log_file = '' + self.cpuinfo_file = '' self.top_log_file = '' self.wait_time_log_file = '' self.chrome_version = '' @@ -125,6 +126,13 @@ class Result(object): self.CopyFilesTo(dest_dir, self.results_file) self.CopyFilesTo(dest_dir, self.perf_data_files) self.CopyFilesTo(dest_dir, self.perf_report_files) + extra_files = [] + if self.top_log_file: + extra_files.append(self.top_log_file) + if self.cpuinfo_file: + extra_files.append(self.cpuinfo_file) + if extra_files: + self.CopyFilesTo(dest_dir, extra_files) if self.results_file or self.perf_data_files or self.perf_report_files: self._logger.LogOutput('Results files stored in %s.' % dest_dir) @@ -349,6 +357,10 @@ class Result(object): """Get cpustats log path string.""" return self.FindFilesInResultsDir('-name cpustats.log').split('\n')[0] + def GetCpuinfoFile(self): + """Get cpustats log path string.""" + return self.FindFilesInResultsDir('-name cpuinfo.log').split('\n')[0] + def GetTopFile(self): """Get cpustats log path string.""" return self.FindFilesInResultsDir('-name top.log').split('\n')[0] @@ -455,6 +467,7 @@ class Result(object): self.perf_report_files = self.GeneratePerfReportFiles() self.turbostat_log_file = self.GetTurbostatFile() self.cpustats_log_file = self.GetCpustatsFile() + self.cpuinfo_file = self.GetCpuinfoFile() self.top_log_file = self.GetTopFile() self.wait_time_log_file = self.GetWaitTimeFile() # TODO(asharif): Do something similar with perf stat. diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index 2c1996c4..812d5ab3 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -445,6 +445,7 @@ class ResultTest(unittest.TestCase): self.callGetTurbostatFile = False self.callGetCpustatsFile = False self.callGetTopFile = False + self.callGetCpuinfoFile = False self.callGetWaitTimeFile = False self.args = None self.callGatherPerfResults = False @@ -878,6 +879,15 @@ class ResultTest(unittest.TestCase): found_no_logs = self.result.GetTopFile() self.assertEqual(found_no_logs, '') + @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput') + def test_get_cpuinfo_file_finds_single_log(self, mock_runcmd): + """Expected behavior when a single cpuinfo file found.""" + self.result.results_dir = '/tmp/test_results' + self.result.ce.RunCommandWOutput = mock_runcmd + mock_runcmd.return_value = (0, 'some/long/path/cpuinfo.log', '') + found_single_log = self.result.GetCpuinfoFile() + self.assertEqual(found_single_log, 'some/long/path/cpuinfo.log') + @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput') def test_get_cpustats_file_finds_single_log(self, mock_runcmd): """Expected behavior when a single log file found.""" @@ -1157,6 +1167,10 @@ class ResultTest(unittest.TestCase): self.callGetTopFile = True return [] + def FakeGetCpuinfoFile(): + self.callGetCpuinfoFile = True + return [] + def FakeGetWaitTimeFile(): self.callGetWaitTimeFile = True return [] @@ -1178,6 +1192,7 @@ class ResultTest(unittest.TestCase): self.callGetTurbostatFile = False self.callGetCpustatsFile = False self.callGetTopFile = False + self.callGetCpuinfoFile = False self.callGetWaitTimeFile = False self.callProcessResults = False @@ -1188,6 +1203,7 @@ class ResultTest(unittest.TestCase): self.result.GetTurbostatFile = FakeGetTurbostatFile self.result.GetCpustatsFile = FakeGetCpustatsFile self.result.GetTopFile = FakeGetTopFile + self.result.GetCpuinfoFile = FakeGetCpuinfoFile self.result.GetWaitTimeFile = FakeGetWaitTimeFile self.result.ProcessResults = FakeProcessResults @@ -1200,6 +1216,7 @@ class ResultTest(unittest.TestCase): self.assertTrue(self.callGetTurbostatFile) self.assertTrue(self.callGetCpustatsFile) self.assertTrue(self.callGetTopFile) + self.assertTrue(self.callGetCpuinfoFile) self.assertTrue(self.callGetWaitTimeFile) self.assertTrue(self.callProcessResults) -- cgit v1.2.3 From 5cbe70b09083d9d496d8dad81187b04620355178 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Tue, 23 Jun 2020 16:09:08 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R85-13295.0-1592818714 Update chromeos-kernel-4_4 to R85-13295.0-1592818619 Update chromeos-kernel-4_14 to R85-13295.0-1592818845 Update chromeos-kernel-4_19 to R85-13295.0-1592818980 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I67a06d70eb03b4d7d43d3ff7716bc13e758f4368 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2261738 Reviewed-by: Tiancong Wang Commit-Queue: Bob Haarman Tested-by: Bob Haarman --- afdo_metadata/kernel_afdo.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index a6f289f2..2529552f 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { - "chromeos-kernel-4_4": { - "name": "R85-13280.0-1592213800" - }, "chromeos-kernel-3_18": { - "name": "R85-13280.0-1592213569" + "name": "R85-13295.0-1592818714" + }, + "chromeos-kernel-4_4": { + "name": "R85-13295.0-1592818619" }, "chromeos-kernel-4_14": { - "name": "R85-13280.0-1592214019" + "name": "R85-13295.0-1592818845" }, "chromeos-kernel-4_19": { - "name": "R85-13280.0-1592214191" + "name": "R85-13295.0-1592818980" } } -- cgit v1.2.3 From 163efaa5f94d595a94b97f87c418c3c2659eb6ef Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 8 Jun 2020 10:58:36 -0700 Subject: wrapper: add support for Tricium clang-tidy This adds a special `WITH_TIDY` mode that's specifically for use with Tricium. Crucially, this has us dump diagnostics as YAML, and stash a fair amount of information about each clang-tidy invocation in the same place where we dump YAML. These bits are intended to be used by the script added in I54ecc88d38faa4bfd502d632d3fd5c74734dabc0. BUG=chromium:1035951 TEST=Ran on all platform2 packages `emerge`able on amd64-generic. Change-Id: I63ef06dc6ddc016ebb6ba0c4a0cea8320fef7415 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2245785 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/clang_tidy_flag.go | 163 +++++++++++++++++++++++++------ compiler_wrapper/clang_tidy_flag_test.go | 60 ++++++++++++ compiler_wrapper/compiler_wrapper.go | 19 +++- compiler_wrapper/config.go | 6 ++ compiler_wrapper/testutil_test.go | 1 + 5 files changed, 215 insertions(+), 34 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index d8bf3cb2..edbbb412 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -5,15 +5,26 @@ package main import ( + "encoding/json" "fmt" + "io/ioutil" + "os" "path/filepath" "strings" ) -func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, useClangTidy bool) { +type useTidyMode int + +const ( + tidyModeNone useTidyMode = iota + tidyModeAll + tidyModeTricium +) + +func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTidyMode) { withTidy, _ := builder.env.getenv("WITH_TIDY") if withTidy == "" { - return "", false + return "", tidyModeNone } srcFileSuffixes := []string{ ".c", @@ -24,48 +35,138 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, useClangTi ".c++", } cSrcFile = "" + srcSuffix := "" lastArg := "" for _, arg := range builder.args { - if hasAtLeastOneSuffix(arg.value, srcFileSuffixes) && lastArg != "-o" { - cSrcFile = arg.value + if lastArg != "-o" { + for _, suffix := range srcFileSuffixes { + if strings.HasSuffix(arg.value, suffix) { + srcSuffix = suffix + cSrcFile = arg.value + break + } + } } lastArg = arg.value } - useClangTidy = cSrcFile != "" - return cSrcFile, useClangTidy -} -func runClangTidy(env env, clangCmd *command, cSrcFile string) error { - defaultTidyChecks := strings.Join([]string{ - "*", - "-bugprone-narrowing-conversions", - "-cppcoreguidelines-*", - "-fuchsia-*", - "-google-readability*", - "-google-runtime-references", - "-hicpp-*", - "-llvm-*", - "-misc-non-private-member-variables-in-classes", - "-misc-unused-parameters", - "-modernize-*", - "-readability-*", - }, ",") + if cSrcFile == "" { + return "", tidyModeNone + } + if withTidy == "tricium" { + // Files generated from protobufs can result in _many_ clang-tidy complaints, and aren't + // worth linting in general. Don't. + if strings.HasSuffix(cSrcFile, ".pb"+srcSuffix) { + mode = tidyModeNone + } else { + mode = tidyModeTricium + } + } else { + mode = tidyModeAll + } + return cSrcFile, mode +} + +func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFlags ...string) (*command, error) { resourceDir, err := getClangResourceDir(env, clangCmd.Path) if err != nil { - return err + return nil, err } clangTidyPath := filepath.Join(filepath.Dir(clangCmd.Path), "clang-tidy") - clangTidyCmd := &command{ - Path: clangTidyPath, - Args: append([]string{ - "-checks=" + defaultTidyChecks, - cSrcFile, - "--", - "-resource-dir=" + resourceDir, - }, clangCmd.Args...), + args := append([]string{}, tidyFlags...) + args = append(args, cSrcFile, "--", "-resource-dir="+resourceDir) + args = append(args, clangCmd.Args...) + return &command{ + Path: clangTidyPath, + Args: args, EnvUpdates: clangCmd.EnvUpdates, + }, nil +} + +func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string) error { + if err := os.MkdirAll(fixesDir, 0777); err != nil { + return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err) + } + + f, err := ioutil.TempFile(fixesDir, "lints-") + if err != nil { + return fmt.Errorf("making tempfile for tidy: %v", err) + } + f.Close() + + // `f` is an 'anchor'; it ensures we won't create a similarly-named file in the future. + // Hence, we can't delete it. + fixesFilePath := f.Name() + ".yaml" + fixesMetadataPath := f.Name() + ".json" + + // FIXME(gbiv): Remove `-checks=*` when testing is complete; we should defer to .clang-tidy + // files, which are both more expressive and more approachable than `-checks=*`. + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks=*", "--export-fixes="+fixesFilePath) + if err != nil { + return fmt.Errorf("calculating tidy invocation: %v", err) + } + + stdstreams := &strings.Builder{} + // Note: We pass nil as stdin as we checked before that the compiler + // was invoked with a source file argument. + exitCode, err := wrapSubprocessErrorWithSourceLoc(clangTidyCmd, + env.run(clangTidyCmd, nil, stdstreams, stdstreams)) + if err != nil { + return err + } + + type metadata struct { + Args []string `json:"args"` + Executable string `json:"executable"` + ExitCode int `json:"exit_code"` + LintTarget string `json:"lint_target"` + Stdstreams string `json:"stdstreams"` + Wd string `json:"wd"` + } + + f, err = os.Create(fixesMetadataPath) + if err != nil { + return fmt.Errorf("creating fixes metadata: %v", err) + } + + meta := &metadata{ + Args: clangTidyCmd.Args, + Executable: clangTidyCmd.Path, + ExitCode: exitCode, + LintTarget: cSrcFile, + Stdstreams: stdstreams.String(), + Wd: env.getwd(), + } + if err := json.NewEncoder(f).Encode(meta); err != nil { + return fmt.Errorf("writing fixes metadata: %v", err) + } + + if err := f.Close(); err != nil { + return fmt.Errorf("finalizing fixes metadata: %v", err) + } + return nil +} + +func runClangTidy(env env, clangCmd *command, cSrcFile string) error { + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks="+ + strings.Join([]string{ + "*", + "-bugprone-narrowing-conversions", + "-cppcoreguidelines-*", + "-fuchsia-*", + "-google-readability*", + "-google-runtime-references", + "-hicpp-*", + "-llvm-*", + "-misc-non-private-member-variables-in-classes", + "-misc-unused-parameters", + "-modernize-*", + "-readability-*", + }, ",")) + if err != nil { + return fmt.Errorf("calculating clang-tidy invocation: %v", err) } // Note: We pass nil as stdin as we checked before that the compiler diff --git a/compiler_wrapper/clang_tidy_flag_test.go b/compiler_wrapper/clang_tidy_flag_test.go index baf5219e..d45d1bdd 100644 --- a/compiler_wrapper/clang_tidy_flag_test.go +++ b/compiler_wrapper/clang_tidy_flag_test.go @@ -273,6 +273,66 @@ func TestPartiallyOmitGomaWithClangTidy(t *testing.T) { }) } +func TestTriciumClangTidyIsProperlyDetectedFromEnv(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + return nil + case 2: + if err := verifyPath(cmd, "usr/bin/clang-tidy"); err != nil { + return err + } + + hasFixesFile := false + for _, arg := range cmd.Args { + if path := strings.TrimPrefix(arg, "--export-fixes="); path != arg { + hasFixesFile = true + if !strings.HasPrefix(path, ctx.cfg.triciumNitsDir+"/") { + t.Errorf("fixes file was %q; expected it to be in %q", path, ctx.cfg.triciumNitsDir) + } + break + } + } + + if !hasFixesFile { + t.Error("no fixes file was provided to a tricium invocation") + } + + return nil + default: + return nil + } + } + cmd := ctx.must(callCompiler(ctx, ctx.cfg, + ctx.newCommand(clangX86_64, mainCc))) + if ctx.cmdCount != 3 { + t.Errorf("expected 3 calls. Got: %d", ctx.cmdCount) + } + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + }) +} + +func TestTriciumClangTidySkipsProtobufFiles(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + cmd := ctx.must(callCompiler(ctx, ctx.cfg, + ctx.newCommand(clangX86_64, mainCc+".pb.cc"))) + if ctx.cmdCount != 1 { + t.Errorf("expected tricium clang-tidy to not execute on a protobuf file") + } + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + }) +} + func withClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { withTestContext(t, func(ctx *testContext) { ctx.env = []string{"WITH_TIDY=1"} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 4c3db14a..14de210a 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -90,16 +90,29 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int return 0, newErrorwithSourceLocf("unsupported compiler: %s", mainBuilder.target.compiler) } } else if mainBuilder.target.compilerType == clangType { - cSrcFile, useClangTidy := processClangTidyFlags(mainBuilder) + cSrcFile, tidyMode := processClangTidyFlags(mainBuilder) err := prepareClangCommand(mainBuilder) if err != nil { return 0, err } allowCCache := true - if useClangTidy { + if tidyMode != tidyModeNone { allowCCache = false clangCmdWithoutGomaAndCCache := mainBuilder.build() - if err := runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile); err != nil { + var err error + switch tidyMode { + case tidyModeTricium: + if cfg.triciumNitsDir == "" { + return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") + } + err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir) + case tidyModeAll: + err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile) + default: + panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode)) + } + + if err != nil { return 0, err } } diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index a122b5a2..3c3668df 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -29,6 +29,8 @@ type config struct { rootRelPath string // Directory to store errors that were prevented with -Wno-error. newWarningsDir string + // Directory to store nits in when using `WITH_TIDY=tricium`. + triciumNitsDir string // Version. Only used for printing via -print-cmd. version string } @@ -137,6 +139,7 @@ var crosHardenedConfig = &config{ "-Wno-implicit-int-float-conversion", }, newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", } // Flags to be added to non-hardened toolchain. @@ -166,6 +169,7 @@ var crosNonHardenedConfig = &config{ "-Wno-implicit-int-float-conversion", }, newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", } // Flags to be added to host toolchain. @@ -200,6 +204,7 @@ var crosHostConfig = &config{ "-Wno-implicit-int-float-conversion", }, newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", } var androidConfig = &config{ @@ -211,4 +216,5 @@ var androidConfig = &config{ clangFlags: []string{}, clangPostFlags: []string{}, newWarningsDir: "", + triciumNitsDir: "", } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 5d8ef920..d23a8434 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -141,6 +141,7 @@ func (ctx *testContext) mustFail(exitCode int) string { func (ctx *testContext) updateConfig(cfg *config) { *ctx.cfg = *cfg ctx.cfg.newWarningsDir = filepath.Join(ctx.tempDir, "fatal_clang_warnings") + ctx.cfg.triciumNitsDir = filepath.Join(ctx.tempDir, "tricium_nits") } func (ctx *testContext) newCommand(path string, args ...string) *command { -- cgit v1.2.3 From 74a6b0951679e53f9bd43170bbddb3455a068792 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Tue, 23 Jun 2020 15:44:05 -0700 Subject: afdo_tools: add update_kernel_afdo script This adds a script, update_kernel_afdo, which automatically updates afdo_metadata/kernel_afdo.json. The changes are then shown with git diff and can be committed with git commit after review. BUG=None TEST=Ran the script, including with some variations to see the failure modes. Change-Id: Ibe473a80a874e32ddcb9c292e1c018fac72e7292 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2261732 Commit-Queue: Bob Haarman Tested-by: Bob Haarman Reviewed-by: Tiancong Wang --- afdo_tools/update_kernel_afdo | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 afdo_tools/update_kernel_afdo diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo new file mode 100755 index 00000000..aac891cb --- /dev/null +++ b/afdo_tools/update_kernel_afdo @@ -0,0 +1,98 @@ +#! /bin/sh + +# Due to crbug.com/1081332, we need to update AFDO metadata +# manually. This script performs a few checks and generates a +# new kernel_afdo.json file, which can then be committed. +# +# USAGE: +# toolchain-utils$ ./afdo_tools/update_kernel_afdo +# +# The script modifies the JSON file and shows the git diff. +# +# If the changes look good, git commit them. Example commit +# message (from crrev.com/c/2197462): +# +# afdo_metadata: Publish the new kernel profiles +# +# Update chromeos-kernel-3_18 to R84-13080.0-1589189810 +# Update chromeos-kernel-4_4 to R84-13080.0-1589189726 +# Update chromeos-kernel-4_14 to R84-13080.0-1589190025 +# Update chromeos-kernel-4_19 to R84-13080.0-1589189550 +# +# BUG=None +# TEST=Verified in kernel-release-afdo-verify-orchestrator. +# + +set -eu + +GS_BASE=gs://chromeos-prebuilt/afdo-job/vetted/kernel +KVERS="3.18 4.4 4.14 4.19" +errs="" +successes=0 + +script_dir=$(dirname "$0") +tc_utils_dir="$script_dir/.." +metadata_dir="$tc_utils_dir/afdo_metadata" +outfile="$metadata_dir/kernel_afdo.json" + +# The most recent Monday, in Unix timestamp format. +if [ $(date +%a) = "Mon" ] +then + expected_time=$(date +%s -d 00:00:00) +else + expected_time=$(date +%s -d "last Monday") +fi + +json="{" +sep="" +for kver in $KVERS +do + latest=$(gsutil ls -l "$GS_BASE/$kver/" | tail -n 2 | head -n 1) + + # Verify that the file has the expected date. + file_time=$(echo "$latest" | awk '{print $2}') + file_time_unix=$(date +%s -d "$file_time") + if [ $file_time_unix -lt $expected_time ] + then + expected=$(env TZ=UTC date +%Y-%m-%dT%H:%M:%SZ -d @$expected_time) + echo "Wrong date for $kver: $file_time is before $expected" >&2 + errs="$errs $kver" + continue + fi + + # Generate JSON. + json_kver=$(echo "$kver" | tr . _) + # b/147370213 (migrating profiles from gcov format) may result in the + # pattern below no longer doing the right thing. + name=$(echo "$latest" | sed 's%.*/\(.*\)\.gcov.*%\1%') + json=$(cat <&2 + exit 2 +fi + +# Write new JSON file. +printf "%s\n}\n" "$json" > "$outfile" + +# Show the changes. +(cd "$tc_utils_dir" && git diff) + +# If no changes were made, say so. +outdir=$(dirname "$outfile") +shortstat=$(cd "$outdir" && git status --short $(basename "$outfile")) +[ -n "$shortstat" ] || echo $(basename "$outfile")" is up to date." + +# If we had any errors, warn about them. +[ -z "$errs" ] || echo "warning: failed to update$errs" >&2 -- cgit v1.2.3 From efb96d1a55f64e72489e219ea65d974e5468a753 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 16:10:06 -0700 Subject: android_merge_from_upstream: fix up naming This replaces `master` with `main` where possible, per the linked bug. It also switches to a more concise way of making sure we're never on the local branch. BUG=chromium:1099035 TEST=Ran the script in android-llvm Change-Id: I0e656057acec857a2c91480cbd822a5bc6778563 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265045 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- android_merge_from_upstream.sh | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/android_merge_from_upstream.sh b/android_merge_from_upstream.sh index cf07d4bf..b63eb6e1 100755 --- a/android_merge_from_upstream.sh +++ b/android_merge_from_upstream.sh @@ -18,11 +18,11 @@ remote_branch="${remote}/upstream-mirror-master" my_dir="$(dirname "$(readlink -m "$0")")" cd "${my_dir}" -ensure_head_is_upstream_master() { - local current_rev master_rev +ensure_head_is_upstream_main() { + local current_rev main_rev current_rev="$(git rev-parse HEAD)" - master_rev="$(git rev-parse ${local_upstream})" - if [[ "${current_rev}" != "${master_rev}" ]]; then + main_rev="$(git rev-parse ${local_upstream})" + if [[ "${current_rev}" != "${main_rev}" ]]; then echo "Please checkout ${local_upstream} and rerun this" >&2 exit fi @@ -42,16 +42,8 @@ ensure_no_local_branch_present() { exit 1 fi - # If we're *on* that branch, deleting it is difficult. - local current_branch - current_branch="$(git branch --show-current)" - if [[ "${current_branch}" == "${local_branch_name}" ]]; then - local rev - rev="$(git rev-parse HEAD)" - # This is fine, since we assume HEAD == upstream-mirror-master anyway - # (e.g., the existing branch was pointless.) - git checkout "${rev}" - fi + # If we're *on* that branch, deleting it is difficult. Always detach. + git checkout --detach || return git branch -D "${local_branch_name}" } @@ -61,7 +53,7 @@ get_merge_commit_list() { git log --oneline "${merge_base}..${remote_branch}" } -ensure_head_is_upstream_master +ensure_head_is_upstream_main ensure_no_local_branch_present echo "Ensuring repository is up-to-date..." -- cgit v1.2.3 From 536aff5f6d015f840bafd6ea70774bbc6b3da6f3 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 16:27:44 -0700 Subject: llvm_tools: fix up naming This replaces `master` with `main` where possible, per the linked bug. Since upstream LLVM has a `master` branch, and there appears to be general support in FOSS for swapping to a different naming convention (`main`), this also makes LLVM's upstream branch name into a constant that we can easily flip if needed. BUG=chromium:1099035 TEST=Unittests Change-Id: I0844cfb4fec00f761e39b0443299daa918fa37ab Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265047 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/README.md | 2 +- llvm_tools/get_llvm_hash.py | 43 ++++++++++++++---------------------- llvm_tools/get_llvm_hash_unittest.py | 5 ++--- llvm_tools/git_llvm_rev.py | 14 +++++++----- llvm_tools/git_llvm_rev_test.py | 28 ++++++++++++----------- llvm_tools/llvm_project.py | 11 ++++++--- llvm_tools/nightly_revert_checker.py | 9 ++++---- 7 files changed, 55 insertions(+), 57 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 1c1862d8..547a3056 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -488,7 +488,7 @@ these synthesized numbers and git SHAs. Usage should be straightforward: 6f635f90929da9545dd696071a829a1a42f84b30 ~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha 6f635f90929da9545dd696071a829a1a42f84b30 r380000 -~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha origin/master +~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha origin/some-branch r387778 ``` diff --git a/llvm_tools/get_llvm_hash.py b/llvm_tools/get_llvm_hash.py index a5b5429e..4200cffe 100755 --- a/llvm_tools/get_llvm_hash.py +++ b/llvm_tools/get_llvm_hash.py @@ -17,7 +17,8 @@ import tempfile from contextlib import contextmanager import git_llvm_rev -from subprocess_helpers import CheckCommand, check_output +from subprocess_helpers import CheckCommand +from subprocess_helpers import check_output _LLVM_GIT_URL = ('https://chromium.googlesource.com/external/github.com/llvm' '/llvm-project') @@ -39,7 +40,7 @@ def GetVersionFrom(src_dir, git_hash): version = git_llvm_rev.translate_sha_to_rev( git_llvm_rev.LLVMConfig(remote='origin', dir=src_dir), git_hash) # Note: branches aren't supported - assert version.branch == 'master', version.branch + assert version.branch == git_llvm_rev.MAIN_BRANCH, version.branch return version.number @@ -59,7 +60,7 @@ def GetGitHashFrom(src_dir, version): return git_llvm_rev.translate_rev_to_sha( git_llvm_rev.LLVMConfig(remote='origin', dir=src_dir), - git_llvm_rev.Rev(branch='master', number=version)) + git_llvm_rev.Rev(branch=git_llvm_rev.MAIN_BRANCH, number=version)) @contextmanager @@ -85,13 +86,10 @@ def CreateTempLLVMRepo(temp_dir): """ abs_path_to_llvm_project_dir = GetAndUpdateLLVMProjectInLLVMTools() - - add_worktree_cmd = [ + CheckCommand([ 'git', '-C', abs_path_to_llvm_project_dir, 'worktree', 'add', '--detach', - temp_dir, 'master' - ] - - CheckCommand(add_worktree_cmd) + temp_dir, git_llvm_rev.MAIN_BRANCH + ]) try: yield temp_dir @@ -117,7 +115,7 @@ def GetAndUpdateLLVMProjectInLLVMTools(): Raises: ValueError: LLVM repo (in 'llvm-project-copy' dir.) has changes or failed to - checkout to master or failed to fetch from chromium mirror of LLVM. + checkout to main or failed to fetch from chromium mirror of LLVM. """ abs_path_to_llvm_tools_dir = os.path.dirname(os.path.abspath(__file__)) @@ -143,15 +141,11 @@ def GetAndUpdateLLVMProjectInLLVMTools(): raise ValueError('LLVM repo in %s has changes, please remove.' % abs_path_to_llvm_project_dir) - checkout_to_master_cmd = [ - 'git', '-C', abs_path_to_llvm_project_dir, 'checkout', 'master' - ] - - CheckCommand(checkout_to_master_cmd) - - update_master_cmd = ['git', '-C', abs_path_to_llvm_project_dir, 'pull'] - - CheckCommand(update_master_cmd) + CheckCommand([ + 'git', '-C', abs_path_to_llvm_project_dir, 'checkout', + git_llvm_rev.MAIN_BRANCH + ]) + CheckCommand(['git', '-C', abs_path_to_llvm_project_dir, 'pull']) return abs_path_to_llvm_project_dir @@ -298,14 +292,9 @@ class LLVMHash(object): def GetTopOfTrunkGitHash(self): """Gets the latest git hash from top of trunk of LLVM.""" - path_to_master_branch = 'refs/heads/master' - - llvm_tot_git_hash_cmd = [ - 'git', 'ls-remote', _LLVM_GIT_URL, path_to_master_branch - ] - - llvm_tot_git_hash = check_output(llvm_tot_git_hash_cmd) - + path_to_main_branch = 'refs/heads/master' + llvm_tot_git_hash = check_output( + ['git', 'ls-remote', _LLVM_GIT_URL, path_to_main_branch]) return llvm_tot_git_hash.rstrip().split()[0] diff --git a/llvm_tools/get_llvm_hash_unittest.py b/llvm_tools/get_llvm_hash_unittest.py index c828f433..2e56aed5 100755 --- a/llvm_tools/get_llvm_hash_unittest.py +++ b/llvm_tools/get_llvm_hash_unittest.py @@ -8,12 +8,11 @@ from __future__ import print_function -import get_llvm_hash import subprocess import unittest import unittest.mock as mock -import test_helpers +import get_llvm_hash from get_llvm_hash import LLVMHash # We grab protected stuff from get_llvm_hash. That's OK. @@ -87,7 +86,7 @@ class TestGetLLVMHash(unittest.TestCase): @mock.patch.object(subprocess, 'check_output') def testSuccessfullyGetGitHashFromToTOfLLVM(self, mock_check_output): - mock_check_output.return_value = 'a123testhash1 path/to/master\n' + mock_check_output.return_value = 'a123testhash1 path/to/main\n' self.assertEqual(LLVMHash().GetTopOfTrunkGitHash(), 'a123testhash1') mock_check_output.assert_called_once() diff --git a/llvm_tools/git_llvm_rev.py b/llvm_tools/git_llvm_rev.py index 8eefcdce..07209f1e 100755 --- a/llvm_tools/git_llvm_rev.py +++ b/llvm_tools/git_llvm_rev.py @@ -18,6 +18,8 @@ import subprocess import sys import typing as t +MAIN_BRANCH = 'master' + # Note that after base_llvm_sha, we reach The Wild West(TM) of commits. # So reasonable input that could break us includes: # @@ -52,9 +54,9 @@ class Rev(t.NamedTuple('Rev', (('branch', str), ('number', int)))): # pairs. # # We support r${commits_since_base_commit} as shorthand for - # (master, r${commits_since_base_commit}). + # (main, r${commits_since_base_commit}). if rev.startswith('r'): - branch_name = 'master' + branch_name = MAIN_BRANCH rev_string = rev[1:] else: match = re.match(r'\((.+), r(\d+)\)', rev) @@ -67,7 +69,7 @@ class Rev(t.NamedTuple('Rev', (('branch', str), ('number', int)))): def __str__(self) -> str: branch_name, number = self - if branch_name == 'master': + if branch_name == MAIN_BRANCH: return 'r%d' % number return '(%s, r%d)' % (branch_name, number) @@ -141,7 +143,7 @@ def translate_sha_to_rev(llvm_config: LLVMConfig, sha_or_ref: str) -> Rev: cwd=llvm_config.dir, ) count = int(result.strip()) - return Rev(branch='master', number=count + base_llvm_revision) + return Rev(branch=MAIN_BRANCH, number=count + base_llvm_revision) # Otherwise, either: # - |merge_base| is |sha| (we have a guaranteed llvm-svn number on |sha|) @@ -150,7 +152,7 @@ def translate_sha_to_rev(llvm_config: LLVMConfig, sha_or_ref: str) -> Rev: merge_base_number = translate_prebase_sha_to_rev_number( llvm_config, merge_base) if merge_base == sha: - return Rev(branch='master', number=merge_base_number) + return Rev(branch=MAIN_BRANCH, number=merge_base_number) distance_from_base = check_output( [ @@ -270,7 +272,7 @@ def translate_rev_to_sha(llvm_config: LLVMConfig, rev: Rev) -> str: """ branch, number = rev - if branch == 'master': + if branch == MAIN_BRANCH: if number < base_llvm_revision: return translate_prebase_rev_to_sha(llvm_config, rev) base_sha = base_llvm_sha diff --git a/llvm_tools/git_llvm_rev_test.py b/llvm_tools/git_llvm_rev_test.py index 1e38f589..775ab1e6 100755 --- a/llvm_tools/git_llvm_rev_test.py +++ b/llvm_tools/git_llvm_rev_test.py @@ -12,6 +12,7 @@ import unittest import git_llvm_rev import llvm_project +from git_llvm_rev import MAIN_BRANCH def get_llvm_config() -> git_llvm_rev.LLVMConfig: @@ -32,17 +33,17 @@ class Test(unittest.TestCase): def test_sha_to_rev_on_base_sha_works(self) -> None: sha = self.rev_to_sha_with_round_trip( git_llvm_rev.Rev( - branch='master', number=git_llvm_rev.base_llvm_revision)) + branch=MAIN_BRANCH, number=git_llvm_rev.base_llvm_revision)) self.assertEqual(sha, git_llvm_rev.base_llvm_sha) def test_sha_to_rev_prior_to_base_rev_works(self) -> None: sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=375000)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375000)) self.assertEqual(sha, '2f6da767f13b8fd81f840c211d405fea32ac9db7') def test_sha_to_rev_after_base_rev_works(self) -> None: sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=375506)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375506)) self.assertEqual(sha, '3bf7fddeb05655d9baed4cc69e13535c677ed1dd') def test_llvm_svn_parsing_runs_ignore_reverts(self) -> None: @@ -51,18 +52,19 @@ class Test(unittest.TestCase): # Commit which performed the revert sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=374895)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374895)) self.assertEqual(sha, '1731fc88d1fa1fa55edd056db73a339b415dd5d6') # Commit that was reverted sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=374841)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374841)) self.assertEqual(sha, '2a1386c81de504b5bda44fbecf3f7b4cdfd748fc') def test_imaginary_revs_raise(self) -> None: with self.assertRaises(ValueError) as r: git_llvm_rev.translate_rev_to_sha( - get_llvm_config(), git_llvm_rev.Rev(branch='master', number=9999999)) + get_llvm_config(), git_llvm_rev.Rev( + branch=MAIN_BRANCH, number=9999999)) self.assertIn('Try updating your tree?', str(r.exception)) @@ -71,15 +73,15 @@ class Test(unittest.TestCase): # properties about it. merge_sha_rev_number = 4496 + git_llvm_rev.base_llvm_revision sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=merge_sha_rev_number)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number)) self.assertEqual(sha, '0f0d0ed1c78f1a80139a1f2133fad5284691a121') sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=merge_sha_rev_number - 1)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number - 1)) self.assertEqual(sha, '6f635f90929da9545dd696071a829a1a42f84b30') sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=merge_sha_rev_number + 1)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number + 1)) self.assertEqual(sha, '199700a5cfeedf227619f966aa3125cef18bc958') # NOTE: The below tests have _zz_ in their name as an optimization. Iterating @@ -101,11 +103,11 @@ class Test(unittest.TestCase): backing_sha = 'c89a3d78f43d81b9cff7b9248772ddf14d21b749' sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=rev_number)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=rev_number)) self.assertEqual(sha, backing_sha) - # Note that this won't round-trip: since this commit is on the master - # branch, we'll pick master for this. That's fine + # Note that this won't round-trip: since this commit is on the main + # branch, we'll pick main for this. That's fine. sha = git_llvm_rev.translate_rev_to_sha( get_llvm_config(), git_llvm_rev.Rev(branch='release/9.x', number=rev_number)) @@ -113,7 +115,7 @@ class Test(unittest.TestCase): def test_zz_branch_revs_work_after_merge_points(self) -> None: # Picking the commit on the 9.x branch after the merge-base for that + - # master. Note that this is where llvm-svn numbers should diverge from + # main. Note that this is where llvm-svn numbers should diverge from # ours, and are therefore untrustworthy. The commit for this *does* have a # different `llvm-svn:` string than we should have. sha = self.rev_to_sha_with_round_trip( diff --git a/llvm_tools/llvm_project.py b/llvm_tools/llvm_project.py index c171370c..7937729f 100644 --- a/llvm_tools/llvm_project.py +++ b/llvm_tools/llvm_project.py @@ -13,6 +13,7 @@ import subprocess import sys import get_llvm_hash +import git_llvm_rev def get_location() -> str: @@ -33,9 +34,13 @@ def ensure_up_to_date(): assert checkout == actual_checkout, '%s != %s' % (actual_checkout, checkout) commit_timestamp = subprocess.check_output( - ['git', 'log', '-n1', '--format=%ct', 'origin/master'], + [ + 'git', 'log', '-n1', '--format=%ct', + 'origin/' + git_llvm_rev.MAIN_BRANCH + ], cwd=checkout, - encoding='utf-8') + encoding='utf-8', + ) commit_time = datetime.datetime.fromtimestamp(int(commit_timestamp.strip())) now = datetime.datetime.now() @@ -52,7 +57,7 @@ def ensure_up_to_date(): (time_since_last_commit.days, checkout), file=sys.stderr) - result = subprocess.run(['git', 'fetch', 'origin'], cwd=checkout) + result = subprocess.run(['git', 'fetch', 'origin'], check=False, cwd=checkout) if result.returncode: print( 'Sync failed somehow; hoping that things are fresh enough, then...', diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 71b5574b..3a23890a 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -27,6 +27,7 @@ import typing as t import cros_utils.email_sender as email_sender import cros_utils.tiny_render as tiny_render import get_llvm_hash +import git_llvm_rev import revert_checker State = t.Any @@ -44,12 +45,12 @@ def _find_interesting_android_shas( encoding='utf-8', ).strip() - master_legacy = get_llvm_merge_base('aosp/master-legacy') + main_legacy = get_llvm_merge_base('aosp/master-legacy') testing_upstream = get_llvm_merge_base('aosp/testing-upstream') - result = [('master-legacy', master_legacy)] + result = [('main-legacy', main_legacy)] # If these are the same SHA, there's no point in tracking both. - if master_legacy != testing_upstream: + if main_legacy != testing_upstream: result.append(('testing-upstream', testing_upstream)) return result @@ -270,7 +271,7 @@ def main(argv: t.List[str]) -> None: for friendly_name, sha in interesting_shas: logging.info('Finding reverts across %s (%s)', friendly_name, sha) all_reverts = revert_checker.find_reverts( - llvm_dir, sha, root='origin/master') + llvm_dir, sha, root='origin/' + git_llvm_rev.MAIN_BRANCH) logging.info('Detected the following revert(s) across %s:\n%s', friendly_name, pprint.pformat(all_reverts)) -- cgit v1.2.3 From ad5e320d98f0101b5c094270d6f26dae981c1460 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 15:45:15 -0700 Subject: debug_info_test: replace whitelist with allowlist This CL tweaks language to better reflect the intent that's meant to be conveyed, per go/chromium-project-code-inclusion . This change is meant to trivially be a local, functional nop; renaming extensions will be a later CL. BUG=chromium:1099035 TEST=CQ+1 Change-Id: Iaee8b96c54660b4ebb4363a230e768c3da3f885a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265049 Reviewed-by: Manoj Gupta Tested-by: George Burgess Commit-Queue: George Burgess --- debug_info_test/allowlist.py | 69 +++++++++++++++++++++++++++++++++ debug_info_test/check_exist.py | 10 ++--- debug_info_test/check_ngcc.py | 6 +-- debug_info_test/ngcc_dso_path.whitelist | 2 +- debug_info_test/whitelist.py | 68 -------------------------------- 5 files changed, 78 insertions(+), 77 deletions(-) create mode 100644 debug_info_test/allowlist.py delete mode 100644 debug_info_test/whitelist.py diff --git a/debug_info_test/allowlist.py b/debug_info_test/allowlist.py new file mode 100644 index 00000000..978b2370 --- /dev/null +++ b/debug_info_test/allowlist.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 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. + +"""Allowlist functions.""" + +from __future__ import print_function + +import glob +import os +import re + + +# Matching a string of length m in an NFA of size n is O(mn^2), but the +# performance also depends largely on the implementation. It appears to be fast +# enough according to the tests. +# +# The performance bottleneck of this script is readelf. Unless this becomes +# slower than readelf, don't waste time here. +def is_allowlisted(list_name, pattern): + """Check whether the given pattern is specified in the allowlist. + + Args: + list_name: name of the allowlist. + pattern: the target string. + + Returns: + True if matched otherwise False. + """ + return pattern and allowlists[list_name].match(pattern) + + +def prepare_allowlist(patterns): + """Join and compile the re patterns. + + Args: + patterns: regex patterns. + + Returns: + A compiled re object. + """ + return re.compile('|'.join(patterns)) + + +# FIXME: s/whitelist/allowlist/ in the file extension. +def load_allowlists(dirname): + """Load allowlists under dirname. + + An allowlist ends with .whitelist. + + Args: + dirname: path to the dir. + + Returns: + A dictionary of 'filename' -> allowlist matcher. + """ + wlist = {} + for fn in glob.glob(os.path.join(dirname, '*.whitelist')): + key = os.path.splitext(os.path.basename(fn))[0] + with open(fn, 'r', encoding='utf-8') as f: + patterns = f.read().splitlines() + patterns = [l for l in patterns if l != ''] + patterns = [l for l in patterns if l[0] != '#'] + wlist[key] = prepare_allowlist(patterns) + return wlist + + +allowlists = load_allowlists(os.path.dirname(__file__)) diff --git a/debug_info_test/check_exist.py b/debug_info_test/check_exist.py index dbb89127..f2cc7c6b 100644 --- a/debug_info_test/check_exist.py +++ b/debug_info_test/check_exist.py @@ -10,7 +10,7 @@ from __future__ import print_function import os import subprocess -from whitelist import is_whitelisted +from allowlist import is_allowlisted def check_debug_info(dso_path, readelf_content): @@ -24,8 +24,8 @@ def check_debug_info(dso_path, readelf_content): True if debug info section exists, otherwise False. """ - # Return True if it is whitelisted - if is_whitelisted('exist_debug_info', dso_path): + # Return True if it is allowlisted + if is_allowlisted('exist_debug_info', dso_path): return True for l in readelf_content: @@ -46,8 +46,8 @@ def check_producer(dso_path, readelf_content): Notice: If no compile unit in DSO, also return True. """ - # Return True if it is whitelisted - if is_whitelisted('exist_producer', dso_path): + # Return True if it is allowlisted + if is_allowlisted('exist_producer', dso_path): return True # Indicate if there is a producer under each cu diff --git a/debug_info_test/check_ngcc.py b/debug_info_test/check_ngcc.py index 501bb988..c86c220a 100644 --- a/debug_info_test/check_ngcc.py +++ b/debug_info_test/check_ngcc.py @@ -7,7 +7,7 @@ from __future__ import print_function -from whitelist import is_whitelisted +from allowlist import is_allowlisted def not_by_gcc(dso_path, producer, comp_path): @@ -21,10 +21,10 @@ def not_by_gcc(dso_path, producer, comp_path): Returns: False if compiled by gcc otherwise True. """ - if is_whitelisted('ngcc_comp_path', comp_path): + if is_allowlisted('ngcc_comp_path', comp_path): return True - if is_whitelisted('ngcc_dso_path', dso_path): + if is_allowlisted('ngcc_dso_path', dso_path): return True return 'GNU C' not in producer diff --git a/debug_info_test/ngcc_dso_path.whitelist b/debug_info_test/ngcc_dso_path.whitelist index 8d63a521..858465e0 100644 --- a/debug_info_test/ngcc_dso_path.whitelist +++ b/debug_info_test/ngcc_dso_path.whitelist @@ -1,5 +1,5 @@ # DSOs specified here are not CrOS packages compiled within CrOS SDK. -# CrOS packages should be whitelisted in *_comp_path.whitelist +# CrOS packages should be allowlisted in *_comp_path.allowlist # modules we don't care: .*/binutils/.* .*/binutils-bin/.* diff --git a/debug_info_test/whitelist.py b/debug_info_test/whitelist.py deleted file mode 100644 index b53387a8..00000000 --- a/debug_info_test/whitelist.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 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. - -"""Whitelist functions.""" - -from __future__ import print_function - -import os -import glob -import re - - -# Matching a string of length m in an NFA of size n is O(mn^2), but the -# performance also depends largely on the implementation. It appears to be fast -# enough according to the tests. -# -# The performance bottleneck of this script is readelf. Unless this becomes -# slower than readelf, don't waste time here. -def is_whitelisted(list_name, pattern): - """Check whether the given pattern is specified in the whitelist. - - Args: - list_name: name of the whitelist. - pattern: the target string. - - Returns: - True if matched otherwise False. - """ - return pattern and whitelists[list_name].match(pattern) - - -def prepare_whitelist(patterns): - """Join and compile the re patterns. - - Args: - patterns: regex patterns. - - Returns: - A compiled re object. - """ - return re.compile('|'.join(patterns)) - - -def load_whitelists(dirname): - """Load whitelists under dirname. - - A whitelist ends with .whitelist. - - Args: - dirname: path to the dir. - - Returns: - A dictionary of 'filename' -> whitelist matcher. - """ - wlist = {} - for fn in glob.glob(os.path.join(dirname, '*.whitelist')): - key = os.path.splitext(os.path.basename(fn))[0] - with open(fn, 'r', encoding='utf-8') as f: - patterns = f.read().splitlines() - patterns = [l for l in patterns if l != ''] - patterns = [l for l in patterns if l[0] != '#'] - wlist[key] = prepare_whitelist(patterns) - return wlist - - -whitelists = load_whitelists(os.path.dirname(__file__)) -- cgit v1.2.3 From 0c1730a05945799cf65aced40063c17ffafe737f Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 17:00:47 -0700 Subject: debug_info_test: fix up naming This replaces 'whitelist' with 'allowlist' in debug_info_test's file names, as a follow up to the previous NFC CL's cleanups. BUG=chromium:1099035 TEST=CQ+1 Change-Id: I0e99fa230a78251a6a555941db6f4758d0cf9367 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265050 Reviewed-by: Tiancong Wang Tested-by: George Burgess Commit-Queue: George Burgess --- debug_info_test/allowlist.py | 5 ++--- debug_info_test/exist_debug_info.allowlist | 13 +++++++++++++ debug_info_test/exist_debug_info.whitelist | 13 ------------- debug_info_test/exist_producer.allowlist | 8 ++++++++ debug_info_test/exist_producer.whitelist | 8 -------- debug_info_test/ngcc_comp_path.allowlist | 24 ++++++++++++++++++++++++ debug_info_test/ngcc_comp_path.whitelist | 24 ------------------------ debug_info_test/ngcc_dso_path.allowlist | 23 +++++++++++++++++++++++ debug_info_test/ngcc_dso_path.whitelist | 23 ----------------------- 9 files changed, 70 insertions(+), 71 deletions(-) create mode 100644 debug_info_test/exist_debug_info.allowlist delete mode 100644 debug_info_test/exist_debug_info.whitelist create mode 100644 debug_info_test/exist_producer.allowlist delete mode 100644 debug_info_test/exist_producer.whitelist create mode 100644 debug_info_test/ngcc_comp_path.allowlist delete mode 100644 debug_info_test/ngcc_comp_path.whitelist create mode 100644 debug_info_test/ngcc_dso_path.allowlist delete mode 100644 debug_info_test/ngcc_dso_path.whitelist diff --git a/debug_info_test/allowlist.py b/debug_info_test/allowlist.py index 978b2370..9cf42af0 100644 --- a/debug_info_test/allowlist.py +++ b/debug_info_test/allowlist.py @@ -43,11 +43,10 @@ def prepare_allowlist(patterns): return re.compile('|'.join(patterns)) -# FIXME: s/whitelist/allowlist/ in the file extension. def load_allowlists(dirname): """Load allowlists under dirname. - An allowlist ends with .whitelist. + An allowlist ends with .allowlist. Args: dirname: path to the dir. @@ -56,7 +55,7 @@ def load_allowlists(dirname): A dictionary of 'filename' -> allowlist matcher. """ wlist = {} - for fn in glob.glob(os.path.join(dirname, '*.whitelist')): + for fn in glob.glob(os.path.join(dirname, '*.allowlist')): key = os.path.splitext(os.path.basename(fn))[0] with open(fn, 'r', encoding='utf-8') as f: patterns = f.read().splitlines() diff --git a/debug_info_test/exist_debug_info.allowlist b/debug_info_test/exist_debug_info.allowlist new file mode 100644 index 00000000..e0076fd6 --- /dev/null +++ b/debug_info_test/exist_debug_info.allowlist @@ -0,0 +1,13 @@ +# To hide existing failures that some DSOs may have no debug info. +.*/usr/bin/memdiskfind\.debug +.*/usr/bin/isohybrid\.debug +.*/usr/bin/gethostip\.debug +.*/usr/lib.*/libevent-.*\.so.*\.debug +.*/usr/lib.*/libcares\.so.*\.debug +.*/usr/lib64/libdcerpc-samr\.so.*\.debug +.*/usr/lib64/libGLESv2\.so.*\.debug +.*/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/.*/x_ignore_nofocus\.so\.debug +.*/lib.*/libiptc\.so.*\.debug +.*/autotest/.*\.debug +.*/opt/intel/fw_parser\.debug +# todos: diff --git a/debug_info_test/exist_debug_info.whitelist b/debug_info_test/exist_debug_info.whitelist deleted file mode 100644 index e0076fd6..00000000 --- a/debug_info_test/exist_debug_info.whitelist +++ /dev/null @@ -1,13 +0,0 @@ -# To hide existing failures that some DSOs may have no debug info. -.*/usr/bin/memdiskfind\.debug -.*/usr/bin/isohybrid\.debug -.*/usr/bin/gethostip\.debug -.*/usr/lib.*/libevent-.*\.so.*\.debug -.*/usr/lib.*/libcares\.so.*\.debug -.*/usr/lib64/libdcerpc-samr\.so.*\.debug -.*/usr/lib64/libGLESv2\.so.*\.debug -.*/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/.*/x_ignore_nofocus\.so\.debug -.*/lib.*/libiptc\.so.*\.debug -.*/autotest/.*\.debug -.*/opt/intel/fw_parser\.debug -# todos: diff --git a/debug_info_test/exist_producer.allowlist b/debug_info_test/exist_producer.allowlist new file mode 100644 index 00000000..ee75de72 --- /dev/null +++ b/debug_info_test/exist_producer.allowlist @@ -0,0 +1,8 @@ +# To hide existing failures that producer not in certain compiler units. +.*/opt/google/chrome/libosmesa\.so\.debug +.*/opt/google/chrome/chrome-sandbox\.debug +.*/opt/google/chrome/chrome\.debug +.*/opt/google/chrome/libosmesa\.so\.debug +.*/opt/google/chrome/nacl_helper\.debug +.*/usr/local/chromedriver/chromedriver\.debug +# todos: diff --git a/debug_info_test/exist_producer.whitelist b/debug_info_test/exist_producer.whitelist deleted file mode 100644 index ee75de72..00000000 --- a/debug_info_test/exist_producer.whitelist +++ /dev/null @@ -1,8 +0,0 @@ -# To hide existing failures that producer not in certain compiler units. -.*/opt/google/chrome/libosmesa\.so\.debug -.*/opt/google/chrome/chrome-sandbox\.debug -.*/opt/google/chrome/chrome\.debug -.*/opt/google/chrome/libosmesa\.so\.debug -.*/opt/google/chrome/nacl_helper\.debug -.*/usr/local/chromedriver/chromedriver\.debug -# todos: diff --git a/debug_info_test/ngcc_comp_path.allowlist b/debug_info_test/ngcc_comp_path.allowlist new file mode 100644 index 00000000..45c5b4a2 --- /dev/null +++ b/debug_info_test/ngcc_comp_path.allowlist @@ -0,0 +1,24 @@ +# CrOS packages are compiled in /tmp/$board/portage/${CATEGORY}/${P}. +# They can be matched by .*/portage/${CATEGORY}/${PN}-.* +.*/portage/chromeos-base/ec-utils-.* +.*/portage/dev-libs/elfutils-.* +.*/portage/dev-libs/libusb-.* +.*/portage/dev-util/perf-.* +.*/portage/media-libs/arc-cros-gralloc-.* +.*/portage/media-video/yavta-.* +.*/portage/sys-apps/cavium-n3fips-driver-.* +.*/portage/sys-apps/cavium-n3fips-tools-.* +.*/portage/sys-apps/busybox-.* +.*/portage/sys-apps/snaggletooth-drivers-.* +.*/portage/sys-boot/syslinux-.* +.*/portage/sys-kernel/chromeos-kernel-.* +.*/portage/sys-kernel/fzm-kmod.* +.*/portage/sys-kernel/kernel-.* +.*/portage/sys-kernel/.*-kernel.* +.*/portage/sys-kernel/ti-uio-module-drv-.* +.*/portage/sys-libs/gcc-libs-.* +# glibc and libgcc are built in different ways. +# and libstdc++. +.*/glibc-.*/ +.*/libgcc/.* +.*/libstdc\+\+-.* diff --git a/debug_info_test/ngcc_comp_path.whitelist b/debug_info_test/ngcc_comp_path.whitelist deleted file mode 100644 index 45c5b4a2..00000000 --- a/debug_info_test/ngcc_comp_path.whitelist +++ /dev/null @@ -1,24 +0,0 @@ -# CrOS packages are compiled in /tmp/$board/portage/${CATEGORY}/${P}. -# They can be matched by .*/portage/${CATEGORY}/${PN}-.* -.*/portage/chromeos-base/ec-utils-.* -.*/portage/dev-libs/elfutils-.* -.*/portage/dev-libs/libusb-.* -.*/portage/dev-util/perf-.* -.*/portage/media-libs/arc-cros-gralloc-.* -.*/portage/media-video/yavta-.* -.*/portage/sys-apps/cavium-n3fips-driver-.* -.*/portage/sys-apps/cavium-n3fips-tools-.* -.*/portage/sys-apps/busybox-.* -.*/portage/sys-apps/snaggletooth-drivers-.* -.*/portage/sys-boot/syslinux-.* -.*/portage/sys-kernel/chromeos-kernel-.* -.*/portage/sys-kernel/fzm-kmod.* -.*/portage/sys-kernel/kernel-.* -.*/portage/sys-kernel/.*-kernel.* -.*/portage/sys-kernel/ti-uio-module-drv-.* -.*/portage/sys-libs/gcc-libs-.* -# glibc and libgcc are built in different ways. -# and libstdc++. -.*/glibc-.*/ -.*/libgcc/.* -.*/libstdc\+\+-.* diff --git a/debug_info_test/ngcc_dso_path.allowlist b/debug_info_test/ngcc_dso_path.allowlist new file mode 100644 index 00000000..858465e0 --- /dev/null +++ b/debug_info_test/ngcc_dso_path.allowlist @@ -0,0 +1,23 @@ +# DSOs specified here are not CrOS packages compiled within CrOS SDK. +# CrOS packages should be allowlisted in *_comp_path.allowlist +# modules we don't care: +.*/binutils/.* +.*/binutils-bin/.* +.*/boot/u-boot\.debug +.*/boot/vmlinux\.debug +.*/uboot/u-boot\.debug +.*/firmware/u-boot\.debug +.*/libpepflashplayer\.so\.debug +.*/opt/punybench/bin/.* +.*/opt/scribe/grpc/_cython/cygrpc\.so\.debug +.*/telemetry_dep/.* +.*/unixbench/.* +.*/usr/bin/core_collector32\.debug +.*/usr/bin/kubelet\.debug +.*/usr/lib/libatomic.so.*\.debug +.*/usr/lib/librk_aiq\.so\.debug +.*/usr/local/build/autotest/client/site_tests/factory_Leds/src/ec_ctl\.debug +.*/opt/google/containers/android/.* +.*/libmali\.so.*\.debug +.*/pyelftools/examples/sample_exe64\.elf\.debug +# todos: diff --git a/debug_info_test/ngcc_dso_path.whitelist b/debug_info_test/ngcc_dso_path.whitelist deleted file mode 100644 index 858465e0..00000000 --- a/debug_info_test/ngcc_dso_path.whitelist +++ /dev/null @@ -1,23 +0,0 @@ -# DSOs specified here are not CrOS packages compiled within CrOS SDK. -# CrOS packages should be allowlisted in *_comp_path.allowlist -# modules we don't care: -.*/binutils/.* -.*/binutils-bin/.* -.*/boot/u-boot\.debug -.*/boot/vmlinux\.debug -.*/uboot/u-boot\.debug -.*/firmware/u-boot\.debug -.*/libpepflashplayer\.so\.debug -.*/opt/punybench/bin/.* -.*/opt/scribe/grpc/_cython/cygrpc\.so\.debug -.*/telemetry_dep/.* -.*/unixbench/.* -.*/usr/bin/core_collector32\.debug -.*/usr/bin/kubelet\.debug -.*/usr/lib/libatomic.so.*\.debug -.*/usr/lib/librk_aiq\.so\.debug -.*/usr/local/build/autotest/client/site_tests/factory_Leds/src/ec_ctl\.debug -.*/opt/google/containers/android/.* -.*/libmali\.so.*\.debug -.*/pyelftools/examples/sample_exe64\.elf\.debug -# todos: -- cgit v1.2.3 From dc996b9cd333b330ca79985a93f9a71995676a71 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 17 Jun 2020 15:27:24 -0700 Subject: compiler_wrapper: redirect clang crash dignoses Redirect all diagnoses of clang crashes to a dedicated directory using fcrash-diagnostics-dir so we can upload these files to the cloud. The flag was added to clangPostFlags to overwite redirection done on package level. BUG=chromium:1056904 TEST=None Change-Id: I78bfc77d7f3af8556b4308f2e71407d627627747 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2251038 Reviewed-by: Manoj Gupta Commit-Queue: Jian Cai Tested-by: Jian Cai --- compiler_wrapper/config.go | 3 +++ compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 + .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_path.json | 12 ++++++++++++ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 +++++++ .../testdata/cros_clang_host_golden/clangtidy.json | 8 ++++++++ .../cros_clang_host_golden/force_disable_werror.json | 5 +++++ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../cros_hardened_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/clang_specific_args.json | 7 +++++++ .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../testdata/cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_noccache_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_nonhardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_nonhardened_golden/clang_path.json | 12 ++++++++++++ .../cros_nonhardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_nonhardened_golden/clang_specific_args.json | 7 +++++++ .../clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++++++ .../cros_nonhardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_nonhardened_golden/gcc_clang_syntax.json | 4 ++++ 40 files changed, 271 insertions(+) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 3c3668df..b11c6808 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -134,6 +134,7 @@ var crosHardenedConfig = &config{ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -164,6 +165,7 @@ var crosNonHardenedConfig = &config{ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -199,6 +201,7 @@ var crosHostConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index 606fecda..f7a83659 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -36,6 +36,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -84,6 +85,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -135,6 +137,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 7f45584a..fc20522c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -62,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -97,6 +99,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -132,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -167,6 +171,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -202,6 +207,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -237,6 +243,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -272,6 +279,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -307,6 +315,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index afb0329e..38905dbe 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index 05b0ff96..d9b5978a 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -60,6 +61,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -94,6 +96,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -128,6 +131,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -162,6 +166,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -196,6 +201,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -230,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -264,6 +271,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -298,6 +306,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index f7924a06..6c3d029f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -100,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -137,6 +140,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -181,6 +185,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -230,6 +235,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -279,6 +285,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -318,6 +325,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -352,6 +360,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -386,6 +395,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -420,6 +430,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -457,6 +468,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 11ebc821..899b77fe 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -65,6 +66,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -102,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -139,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -175,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -213,6 +218,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -251,6 +257,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -287,6 +294,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 7a724c88..e1408c4e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -37,6 +37,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -72,6 +73,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion" @@ -108,6 +110,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion" @@ -144,6 +147,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -180,6 +184,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -216,6 +221,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -252,6 +258,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index b4cd44c2..5e05d227 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -42,6 +42,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -114,6 +116,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -135,6 +138,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -188,6 +192,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -212,6 +217,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -266,6 +272,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -287,6 +294,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 66e58dc9..3a77e21d 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -29,6 +29,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -66,6 +67,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -89,6 +91,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", @@ -130,6 +133,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -153,6 +157,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 5b95cdb7..45c36e87 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,6 +38,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index aa083d70..b4e0f9ce 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,6 +29,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -131,6 +133,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -182,6 +185,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -284,6 +289,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -386,6 +393,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -437,6 +445,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 257c0a05..09e6d846 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,6 +78,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -126,6 +128,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -175,6 +178,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,6 +228,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -273,6 +278,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -322,6 +328,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,6 +378,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +428,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index b9edc49d..4146d2cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 2d70dfbf..a1d62535 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,6 +30,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,6 +82,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -183,6 +186,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -285,6 +290,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -337,6 +343,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -387,6 +394,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 50f71a6f..48bb8288 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,6 +39,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,6 +90,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -140,6 +142,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -191,6 +194,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -242,6 +246,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -293,6 +298,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -344,6 +350,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index b690e3ed..e925a784 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,6 +63,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,6 +116,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,6 +162,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -208,6 +211,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -257,6 +261,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -305,6 +310,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index 26abab87..b8b786db 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 61a63a37..0ee22133 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index a37725c0..d571c02e 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 5b95cdb7..45c36e87 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index b9edc49d..4146d2cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 26abab87..b8b786db 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 61a63a37..0ee22133 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index a37725c0..d571c02e 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index e9bc3661..dfe8c0c0 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,6 +37,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,6 +95,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -154,6 +156,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index c21d6198..c8a0e101 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,6 +27,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -119,6 +121,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,6 +168,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,6 +222,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,6 +282,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -383,6 +390,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,6 +434,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +478,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -512,6 +522,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -558,6 +569,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index 26abab87..b8b786db 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index ce35f311..9700b128 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,6 +30,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,6 +77,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -108,6 +110,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -158,6 +161,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -190,6 +194,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index f716dde3..3b31be3c 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,6 +97,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +166,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -216,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index ce83cd72..4002d2f7 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -34,6 +34,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -86,6 +87,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -141,6 +143,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index db5bea28..3946b2b1 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -25,6 +25,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -67,6 +68,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -109,6 +111,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -151,6 +154,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -194,6 +198,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -236,6 +241,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -279,6 +285,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -322,6 +329,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -364,6 +372,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 8b5d7088..d0e8c521 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -24,6 +24,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -64,6 +65,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -104,6 +106,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -144,6 +147,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -185,6 +189,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -225,6 +230,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -266,6 +272,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -307,6 +314,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -347,6 +355,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index 418f9d62..b224b952 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -24,6 +24,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -67,6 +68,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -110,6 +112,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -153,6 +156,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -203,6 +207,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -258,6 +263,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -308,6 +314,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -353,6 +360,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -393,6 +401,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -433,6 +442,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -473,6 +483,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -516,6 +527,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 54a3268c..609bec35 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -26,6 +26,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -69,6 +70,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -112,6 +114,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -155,6 +158,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -197,6 +201,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -241,6 +246,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -285,6 +291,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -327,6 +334,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index 4a30d74e..e84e1491 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -35,6 +35,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -76,6 +77,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", @@ -118,6 +120,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", @@ -160,6 +163,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -202,6 +206,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -244,6 +249,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -286,6 +292,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 8b5c8b90..9c90d35b 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -55,6 +55,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -98,6 +99,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -134,6 +136,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -175,6 +178,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-stack-protector", "-D__KERNEL__", "main.cc", @@ -218,6 +222,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", @@ -261,6 +266,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index cf30514c..c340e895 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -39,6 +39,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -60,6 +61,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -111,6 +113,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -133,6 +136,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -186,6 +190,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -211,6 +216,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -265,6 +271,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -287,6 +294,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 7aad322f..2ddb3514 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -27,6 +27,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -70,6 +71,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -99,6 +101,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -146,6 +149,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -175,6 +179,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index 76d81fa9..d21d2179 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -24,6 +24,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -84,6 +85,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -139,6 +141,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -182,6 +185,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", -- cgit v1.2.3 From 8078daaf7a0370d85546210425bbde7b507cfebf Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 26 Jun 2020 10:36:37 -0700 Subject: cros_utils: clean up unused file/code As an effort to fix up naming in crbug.com/1099035, we can just remove the unused code and variable in these two files. BUG=chromium:1099035 TEST=buildbot_utils_unittest.py pass after the removal. Change-Id: Id4c12aeab9bf44b67e58b11c4297ceafe441421d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2270723 Reviewed-by: Manoj Gupta Reviewed-by: Caroline Tice Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- cros_utils/buildbot_json.py | 1534 --------------------------------- cros_utils/buildbot_utils_unittest.py | 12 - 2 files changed, 1546 deletions(-) delete mode 100755 cros_utils/buildbot_json.py diff --git a/cros_utils/buildbot_json.py b/cros_utils/buildbot_json.py deleted file mode 100755 index 08a8ae05..00000000 --- a/cros_utils/buildbot_json.py +++ /dev/null @@ -1,1534 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# Copyright 2019 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. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# NOTE: This file is NOT under GPL. See above. - -"""Queries buildbot through the json interface. -""" - -from __future__ import print_function - -__author__ = 'maruel@chromium.org' -__version__ = '1.2' - -import code -import datetime -import functools -import json - -# Pylint recommends we use "from chromite.lib import cros_logging as logging". -# Chromite specific policy message, we want to keep using the standard logging. -# pylint: disable=cros-logging-import -import logging - -# pylint: disable=deprecated-module -import optparse - -import time -import sys -import urllib.error -import urllib.parse -import urllib.request - -try: - from natsort import natsorted -except ImportError: - # natsorted is a simple helper to sort "naturally", e.g. "vm40" is sorted - # after "vm7". Defaults to normal sorting. - natsorted = sorted - -# These values are buildbot constants used for Build and BuildStep. -# This line was copied from master/buildbot/status/builder.py. -SUCCESS, WARNINGS, FAILURE, SKIPPED, EXCEPTION, RETRY = list(range(6)) - -## Generic node caching code. - - -class Node(object): - """Root class for all nodes in the graph. - - Provides base functionality for any node in the graph, independent if it has - children or not or if its content can be addressed through an url or needs to - be fetched as part of another node. - - self.printable_attributes is only used for self documentation and for str() - implementation. - """ - printable_attributes = [] - - def __init__(self, parent, url): - self.printable_attributes = self.printable_attributes[:] - if url: - self.printable_attributes.append('url') - url = url.rstrip('/') - if parent is not None: - self.printable_attributes.append('parent') - self.url = url - self.parent = parent - - def __str__(self): - return self.to_string() - - def __repr__(self): - """Embeds key if present.""" - key = getattr(self, 'key', None) - if key is not None: - return '<%s key=%s>' % (self.__class__.__name__, key) - cached_keys = getattr(self, 'cached_keys', None) - if cached_keys is not None: - return '<%s keys=%s>' % (self.__class__.__name__, cached_keys) - return super(Node, self).__repr__() - - def to_string(self, maximum=100): - out = ['%s:' % self.__class__.__name__] - assert not 'printable_attributes' in self.printable_attributes - - def limit(txt): - txt = str(txt) - if maximum > 0: - if len(txt) > maximum + 2: - txt = txt[:maximum] + '...' - return txt - - for k in sorted(self.printable_attributes): - if k == 'parent': - # Avoid infinite recursion. - continue - out.append(limit(' %s: %r' % (k, getattr(self, k)))) - return '\n'.join(out) - - def refresh(self): - """Refreshes the data.""" - self.discard() - return self.cache() - - def cache(self): # pragma: no cover - """Caches the data.""" - raise NotImplementedError() - - def discard(self): # pragma: no cover - """Discards cached data. - - Pretty much everything is temporary except completed Build. - """ - raise NotImplementedError() - - -class AddressableBaseDataNode(Node): # pylint: disable=W0223 - """A node that contains a dictionary of data that can be fetched with an url. - - The node is directly addressable. It also often can be fetched by the parent. - """ - printable_attributes = Node.printable_attributes + ['data'] - - def __init__(self, parent, url, data): - super(AddressableBaseDataNode, self).__init__(parent, url) - self._data = data - - @property - def cached_data(self): - return self._data - - @property - def data(self): - self.cache() - return self._data - - def cache(self): - if self._data is None: - self._data = self._readall() - return True - return False - - def discard(self): - self._data = None - - def read(self, suburl): - assert self.url, self.__class__.__name__ - url = self.url - if suburl: - url = '%s/%s' % (self.url, suburl) - return self.parent.read(url) - - def _readall(self): - return self.read('') - - -class AddressableDataNode(AddressableBaseDataNode): # pylint: disable=W0223 - """Automatically encodes the url.""" - - def __init__(self, parent, url, data): - super(AddressableDataNode, self).__init__(parent, urllib.parse.quote(url), - data) - - -class NonAddressableDataNode(Node): # pylint: disable=W0223 - """A node that cannot be addressed by an unique url. - - The data comes directly from the parent. - """ - - def __init__(self, parent, subkey): - super(NonAddressableDataNode, self).__init__(parent, None) - self.subkey = subkey - - @property - def cached_data(self): - if self.parent.cached_data is None: - return None - return self.parent.cached_data[self.subkey] - - @property - def data(self): - return self.parent.data[self.subkey] - - def cache(self): - self.parent.cache() - - def discard(self): # pragma: no cover - """Avoid invalid state when parent recreate the object.""" - raise AttributeError('Call parent discard() instead') - - -class VirtualNodeList(Node): - """Base class for every node that has children. - - Adds partial supports for keys and iterator functionality. 'key' can be a - string or a int. Not to be used directly. - """ - printable_attributes = Node.printable_attributes + ['keys'] - - def __init__(self, parent, url): - super(VirtualNodeList, self).__init__(parent, url) - # Keeps the keys independently when ordering is needed. - self._is_cached = False - self._has_keys_cached = False - - def __contains__(self, key): - """Enables 'if i in obj:'.""" - return key in self.keys - - def __iter__(self): - """Enables 'for i in obj:'. It returns children.""" - self.cache_keys() - for key in self.keys: - yield self[key] - - def __len__(self): - """Enables 'len(obj)' to get the number of childs.""" - return len(self.keys) - - def discard(self): - """Discards data. - - The default behavior is to not invalidate cached keys. The only place where - keys need to be invalidated is with Builds. - """ - self._is_cached = False - self._has_keys_cached = False - - @property - def cached_children(self): # pragma: no cover - """Returns an iterator over the children that are cached.""" - raise NotImplementedError() - - @property - def cached_keys(self): # pragma: no cover - raise NotImplementedError() - - @property - def keys(self): # pragma: no cover - """Returns the keys for every children.""" - raise NotImplementedError() - - def __getitem__(self, key): # pragma: no cover - """Returns a child, without fetching its data. - - The children could be invalid since no verification is done. - """ - raise NotImplementedError() - - def cache(self): # pragma: no cover - """Cache all the children.""" - raise NotImplementedError() - - def cache_keys(self): # pragma: no cover - """Cache all children's keys.""" - raise NotImplementedError() - - -class NodeList(VirtualNodeList): # pylint: disable=W0223 - """Adds a cache of the keys.""" - - def __init__(self, parent, url): - super(NodeList, self).__init__(parent, url) - self._keys = [] - - @property - def cached_keys(self): - return self._keys - - @property - def keys(self): - self.cache_keys() - return self._keys - - -class NonAddressableNodeList(VirtualNodeList): # pylint: disable=W0223 - """A node that contains children but retrieves all its data from its parent. - - I.e. there's no url to get directly this data. - """ - # Child class object for children of this instance. For example, BuildSteps - # has BuildStep children. - _child_cls = None - - def __init__(self, parent, subkey): - super(NonAddressableNodeList, self).__init__(parent, None) - self.subkey = subkey - assert (not isinstance(self._child_cls, NonAddressableDataNode) and - issubclass(self._child_cls, NonAddressableDataNode)), ( - self._child_cls.__name__) - - @property - def cached_children(self): - if self.parent.cached_data is not None: - for i in range(len(self.parent.cached_data[self.subkey])): - yield self[i] - - @property - def cached_data(self): - if self.parent.cached_data is None: - return None - return self.parent.data.get(self.subkey, None) - - @property - def cached_keys(self): - if self.parent.cached_data is None: - return None - return list(range(len(self.parent.data.get(self.subkey, [])))) - - @property - def data(self): - return self.parent.data[self.subkey] - - def cache(self): - self.parent.cache() - - def cache_keys(self): - self.parent.cache() - - def discard(self): # pragma: no cover - """Do not call. - - Avoid infinite recursion by having the caller calls the parent's - discard() explicitely. - """ - raise AttributeError('Call parent discard() instead') - - def __iter__(self): - """Enables 'for i in obj:'. It returns children.""" - if self.data: - for i in range(len(self.data)): - yield self[i] - - def __getitem__(self, key): - """Doesn't cache the value, it's not needed. - - TODO(maruel): Cache? - """ - if isinstance(key, int) and key < 0: - key = len(self.data) + key - # pylint: disable=E1102 - return self._child_cls(self, key) - - -class AddressableNodeList(NodeList): - """A node that has children that can be addressed with an url.""" - - # Child class object for children of this instance. For example, Builders has - # Builder children and Builds has Build children. - _child_cls = None - - def __init__(self, parent, url): - super(AddressableNodeList, self).__init__(parent, url) - self._cache = {} - assert (not isinstance(self._child_cls, AddressableDataNode) and - issubclass(self._child_cls, AddressableDataNode)), ( - self._child_cls.__name__) - - @property - def cached_children(self): - for item in self._cache.values(): - if item.cached_data is not None: - yield item - - @property - def cached_keys(self): - return list(self._cache.keys()) - - def __getitem__(self, key): - """Enables 'obj[i]'.""" - if self._has_keys_cached and not key in self._keys: - raise KeyError(key) - - if not key in self._cache: - # Create an empty object. - self._create_obj(key, None) - return self._cache[key] - - def cache(self): - if not self._is_cached: - data = self._readall() - for key in sorted(data): - self._create_obj(key, data[key]) - self._is_cached = True - self._has_keys_cached = True - - def cache_partial(self, children): - """Caches a partial number of children. - - This method is more efficient since it does a single request for all the - children instead of one request per children. - - It only grab objects not already cached. - """ - # pylint: disable=W0212 - if not self._is_cached: - to_fetch = [ - child for child in children - if not (child in self._cache and self._cache[child].cached_data) - ] - if to_fetch: - # Similar to cache(). The only reason to sort is to simplify testing. - params = '&'.join( - 'select=%s' % urllib.parse.quote(str(v)) for v in sorted(to_fetch)) - data = self.read('?' + params) - for key in sorted(data): - self._create_obj(key, data[key]) - - def cache_keys(self): - """Implement to speed up enumeration. Defaults to call cache().""" - if not self._has_keys_cached: - self.cache() - assert self._has_keys_cached - - def discard(self): - """Discards temporary children.""" - super(AddressableNodeList, self).discard() - for v in self._cache.values(): - v.discard() - - def read(self, suburl): - assert self.url, self.__class__.__name__ - url = self.url - if suburl: - url = '%s/%s' % (self.url, suburl) - return self.parent.read(url) - - def _create_obj(self, key, data): - """Creates an object of type self._child_cls.""" - # pylint: disable=E1102 - obj = self._child_cls(self, key, data) - # obj.key and key may be different. - # No need to overide cached data with None. - if data is not None or obj.key not in self._cache: - self._cache[obj.key] = obj - if obj.key not in self._keys: - self._keys.append(obj.key) - - def _readall(self): - return self.read('') - - -class SubViewNodeList(VirtualNodeList): # pylint: disable=W0223 - """A node that shows a subset of children that comes from another structure. - - The node is not addressable. - - E.g. the keys are retrieved from parent but the actual data comes from - virtual_parent. - """ - - def __init__(self, parent, virtual_parent, subkey): - super(SubViewNodeList, self).__init__(parent, None) - self.subkey = subkey - self.virtual_parent = virtual_parent - assert isinstance(self.parent, AddressableDataNode) - assert isinstance(self.virtual_parent, NodeList) - - @property - def cached_children(self): - if self.parent.cached_data is not None: - for item in self.keys: - if item in self.virtual_parent.keys: - child = self[item] - if child.cached_data is not None: - yield child - - @property - def cached_keys(self): - return (self.parent.cached_data or {}).get(self.subkey, []) - - @property - def keys(self): - self.cache_keys() - return self.parent.data.get(self.subkey, []) - - def cache(self): - """Batch request for each child in a single read request.""" - if not self._is_cached: - self.virtual_parent.cache_partial(self.keys) - self._is_cached = True - - def cache_keys(self): - if not self._has_keys_cached: - self.parent.cache() - self._has_keys_cached = True - - def discard(self): - if self.parent.cached_data is not None: - for child in self.virtual_parent.cached_children: - if child.key in self.keys: - child.discard() - self.parent.discard() - super(SubViewNodeList, self).discard() - - def __getitem__(self, key): - """Makes sure the key is in our key but grab it from the virtual parent.""" - return self.virtual_parent[key] - - def __iter__(self): - self.cache() - return super(SubViewNodeList, self).__iter__() - - -# Buildbot-specific code - - -class Slave(AddressableDataNode): - """Buildbot slave class.""" - printable_attributes = AddressableDataNode.printable_attributes + [ - 'name', - 'key', - 'connected', - 'version', - ] - - def __init__(self, parent, name, data): - super(Slave, self).__init__(parent, name, data) - self.name = name - self.key = self.name - # TODO(maruel): Add SlaveBuilders and a 'builders' property. - # TODO(maruel): Add a 'running_builds' property. - - @property - def connected(self): - return self.data.get('connected', False) - - @property - def version(self): - return self.data.get('version') - - -class Slaves(AddressableNodeList): - """Buildbot slaves.""" - _child_cls = Slave - printable_attributes = AddressableNodeList.printable_attributes + ['names'] - - def __init__(self, parent): - super(Slaves, self).__init__(parent, 'slaves') - - @property - def names(self): - return self.keys - - -class BuilderSlaves(SubViewNodeList): - """Similar to Slaves but only list slaves connected to a specific builder.""" - printable_attributes = SubViewNodeList.printable_attributes + ['names'] - - def __init__(self, parent): - super(BuilderSlaves, self).__init__(parent, parent.parent.parent.slaves, - 'slaves') - - @property - def names(self): - return self.keys - - -class BuildStep(NonAddressableDataNode): - """Class for a buildbot build step.""" - printable_attributes = NonAddressableDataNode.printable_attributes + [ - 'name', - 'number', - 'start_time', - 'end_time', - 'duration', - 'is_started', - 'is_finished', - 'is_running', - 'result', - 'simplified_result', - ] - - def __init__(self, parent, number): - """Pre-loaded, since the data is retrieved via the Build object.""" - assert isinstance(number, int) - super(BuildStep, self).__init__(parent, number) - self.number = number - - @property - def start_time(self): - if self.data.get('times'): - return int(round(self.data['times'][0])) - - @property - def end_time(self): - times = self.data.get('times') - if times and len(times) == 2 and times[1]: - return int(round(times[1])) - - @property - def duration(self): - if self.start_time: - return (self.end_time or int(round(time.time()))) - self.start_time - - @property - def name(self): - return self.data['name'] - - @property - def is_started(self): - return self.data.get('isStarted', False) - - @property - def is_finished(self): - return self.data.get('isFinished', False) - - @property - def is_running(self): - return self.is_started and not self.is_finished - - @property - def result(self): - result = self.data.get('results') - if result is None: - # results may be 0, in that case with filter=1, the value won't be - # present. - if self.data.get('isFinished'): - result = self.data.get('results', 0) - while isinstance(result, list): - result = result[0] - return result - - @property - def simplified_result(self): - """Returns a simplified 3 state value, True, False or None.""" - result = self.result - if result in (SUCCESS, WARNINGS): - return True - elif result in (FAILURE, EXCEPTION, RETRY): - return False - assert result in (None, SKIPPED), (result, self.data) - return None - - -class BuildSteps(NonAddressableNodeList): - """Duplicates keys to support lookup by both step number and step name.""" - printable_attributes = NonAddressableNodeList.printable_attributes + [ - 'failed', - ] - _child_cls = BuildStep - - def __init__(self, parent): - """Pre-loaded, since the data is retrieved via the Build object.""" - super(BuildSteps, self).__init__(parent, 'steps') - - @property - def keys(self): - """Returns the steps name in order.""" - return [i['name'] for i in self.data or []] - - @property - def failed(self): - """Shortcuts that lists the step names of steps that failed.""" - return [step.name for step in self if step.simplified_result is False] - - def __getitem__(self, key): - """Accept step name in addition to index number.""" - if isinstance(key, str): - # It's a string, try to find the corresponding index. - for i, step in enumerate(self.data): - if step['name'] == key: - key = i - break - else: - raise KeyError(key) - return super(BuildSteps, self).__getitem__(key) - - -class Build(AddressableDataNode): - """Buildbot build info.""" - printable_attributes = AddressableDataNode.printable_attributes + [ - 'key', - 'number', - 'steps', - 'blame', - 'reason', - 'revision', - 'result', - 'simplified_result', - 'start_time', - 'end_time', - 'duration', - 'slave', - 'properties', - 'completed', - ] - - def __init__(self, parent, key, data): - super(Build, self).__init__(parent, str(key), data) - self.number = int(key) - self.key = self.number - self.steps = BuildSteps(self) - - @property - def blame(self): - return self.data.get('blame', []) - - @property - def builder(self): - """Returns the Builder object. - - Goes up the hierarchy to find the Buildbot.builders[builder] instance. - """ - return self.parent.parent.parent.parent.builders[self.data['builderName']] - - @property - def start_time(self): - if self.data.get('times'): - return int(round(self.data['times'][0])) - - @property - def end_time(self): - times = self.data.get('times') - if times and len(times) == 2 and times[1]: - return int(round(times[1])) - - @property - def duration(self): - if self.start_time: - return (self.end_time or int(round(time.time()))) - self.start_time - - @property - def eta(self): - return self.data.get('eta', 0) - - @property - def completed(self): - return self.data.get('currentStep') is None - - @property - def properties(self): - return self.data.get('properties', []) - - @property - def reason(self): - return self.data.get('reason') - - @property - def result(self): - result = self.data.get('results') - while isinstance(result, list): - result = result[0] - if result is None and self.steps: - # results may be 0, in that case with filter=1, the value won't be - # present. - result = self.steps[-1].result - return result - - @property - def revision(self): - return self.data.get('sourceStamp', {}).get('revision') - - @property - def simplified_result(self): - """Returns a simplified 3 state value, True, False or None.""" - result = self.result - if result in (SUCCESS, WARNINGS, SKIPPED): - return True - elif result in (FAILURE, EXCEPTION, RETRY): - return False - assert result is None, (result, self.data) - return None - - @property - def slave(self): - """Returns the Slave object. - - Goes up the hierarchy to find the Buildbot.slaves[slave] instance. - """ - return self.parent.parent.parent.parent.slaves[self.data['slave']] - - def discard(self): - """Completed Build isn't discarded.""" - if self._data and self.result is None: - assert not self.steps or not self.steps[-1].data.get('isFinished') - self._data = None - - -class CurrentBuilds(SubViewNodeList): - """Lists of the current builds.""" - - def __init__(self, parent): - super(CurrentBuilds, self).__init__(parent, parent.builds, 'currentBuilds') - - -class PendingBuilds(AddressableDataNode): - """List of the pending builds.""" - - def __init__(self, parent): - super(PendingBuilds, self).__init__(parent, 'pendingBuilds', None) - - -class Builds(AddressableNodeList): - """Supports iteration. - - Recommends using .cache() to speed up if a significant number of builds are - iterated over. - """ - _child_cls = Build - - def __init__(self, parent): - super(Builds, self).__init__(parent, 'builds') - - def __getitem__(self, key): - """Support for negative reference and enable retrieving non-cached builds. - - e.g. -1 is the last build, -2 is the previous build before the last one. - """ - key = int(key) - if key < 0: - # Convert negative to positive build number. - self.cache_keys() - # Since the negative value can be outside of the cache keys range, use the - # highest key value and calculate from it. - key = max(self._keys) + key + 1 - - if key not in self._cache: - # Create an empty object. - self._create_obj(key, None) - return self._cache[key] - - def __iter__(self): - """Returns cached Build objects in reversed order. - - The most recent build is returned first and then in reverse chronological - order, up to the oldest cached build by the server. Older builds can be - accessed but will trigger significantly more I/O so they are not included by - default in the iteration. - - To access the older builds, use self.iterall() instead. - """ - self.cache() - return reversed(list(self._cache.values())) - - def iterall(self): - """Returns Build objects in decreasing order unbounded up to build 0. - - The most recent build is returned first and then in reverse chronological - order. Older builds can be accessed and will trigger significantly more I/O - so use this carefully. - """ - # Only cache keys here. - self.cache_keys() - if self._keys: - for i in range(max(self._keys), -1, -1): - yield self[i] - - def cache_keys(self): - """Grabs the keys (build numbers) from the builder.""" - if not self._has_keys_cached: - for i in self.parent.data.get('cachedBuilds', []): - i = int(i) - self._cache.setdefault(i, Build(self, i, None)) - if i not in self._keys: - self._keys.append(i) - self._has_keys_cached = True - - def discard(self): - super(Builds, self).discard() - # Can't keep keys. - self._has_keys_cached = False - - def _readall(self): - return self.read('_all') - - -class Builder(AddressableDataNode): - """Builder status.""" - printable_attributes = AddressableDataNode.printable_attributes + [ - 'name', - 'key', - 'builds', - 'slaves', - 'pending_builds', - 'current_builds', - ] - - def __init__(self, parent, name, data): - super(Builder, self).__init__(parent, name, data) - self.name = name - self.key = name - self.builds = Builds(self) - self.slaves = BuilderSlaves(self) - self.current_builds = CurrentBuilds(self) - self.pending_builds = PendingBuilds(self) - - def discard(self): - super(Builder, self).discard() - self.builds.discard() - self.slaves.discard() - self.current_builds.discard() - - -class Builders(AddressableNodeList): - """Root list of builders.""" - _child_cls = Builder - - def __init__(self, parent): - super(Builders, self).__init__(parent, 'builders') - - -class Buildbot(AddressableBaseDataNode): - """This object should be recreated on a master restart as it caches data.""" - # Throttle fetches to not kill the server. - auto_throttle = None - printable_attributes = AddressableDataNode.printable_attributes + [ - 'slaves', - 'builders', - 'last_fetch', - ] - - def __init__(self, url): - super(Buildbot, self).__init__(None, url.rstrip('/') + '/json', None) - self._builders = Builders(self) - self._slaves = Slaves(self) - self.last_fetch = None - - @property - def builders(self): - return self._builders - - @property - def slaves(self): - return self._slaves - - def discard(self): - """Discards information about Builders and Slaves.""" - super(Buildbot, self).discard() - self._builders.discard() - self._slaves.discard() - - def read(self, suburl): - if self.auto_throttle: - if self.last_fetch: - delta = datetime.datetime.utcnow() - self.last_fetch - remaining = (datetime.timedelta(seconds=self.auto_throttle) - delta) - if remaining > datetime.timedelta(seconds=0): - logging.debug('Sleeping for %ss', remaining) - time.sleep(remaining.seconds) - self.last_fetch = datetime.datetime.utcnow() - url = '%s/%s' % (self.url, suburl) - if '?' in url: - url += '&filter=1' - else: - url += '?filter=1' - logging.info('read(%s)', suburl) - channel = urllib.request.urlopen(url) - data = channel.read() - try: - return json.loads(data) - except ValueError: - if channel.getcode() >= 400: - # Convert it into an HTTPError for easier processing. - raise urllib.error.HTTPError(url, channel.getcode(), - '%s:\n%s' % (url, data), channel.headers, - None) - raise - - def _readall(self): - return self.read('project') - - -# Controller code - - -def usage(more): - - def hook(fn): - fn.func_usage_more = more - return fn - - return hook - - -def need_buildbot(fn): - """Post-parse args to create a buildbot object.""" - - @functools.wraps(fn) - def hook(parser, args, *extra_args, **kwargs): - old_parse_args = parser.parse_args - - def new_parse_args(args): - options, args = old_parse_args(args) - if len(args) < 1: - parser.error('Need to pass the root url of the buildbot') - url = args.pop(0) - if not url.startswith('http'): - url = 'http://' + url - buildbot = Buildbot(url) - buildbot.auto_throttle = options.throttle - return options, args, buildbot - - parser.parse_args = new_parse_args - # Call the original function with the modified parser. - return fn(parser, args, *extra_args, **kwargs) - - hook.func_usage_more = '[options] ' - return hook - - -@need_buildbot -def CMDpending(parser, args): - """Lists pending jobs.""" - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.builders: - options.builders = buildbot.builders.keys - for builder in options.builders: - builder = buildbot.builders[builder] - pending_builds = builder.data.get('pendingBuilds', 0) - if not pending_builds: - continue - print('Builder %s: %d' % (builder.name, pending_builds)) - if not options.quiet: - for pending in builder.pending_builds.data: - if 'revision' in pending['source']: - print(' revision: %s' % pending['source']['revision']) - for change in pending['source']['changes']: - print(' change:') - print(' comment: %r' % change['comments'][:50]) - print(' who: %s' % change['who']) - return 0 - - -@usage('[options] [commands] ...') -@need_buildbot -def CMDrun(parser, args): - """Runs commands passed as parameters. - - When passing commands on the command line, each command will be run as if it - was on its own line. - """ - parser.add_option('-f', '--file', help='Read script from file') - parser.add_option( - '-i', dest='use_stdin', action='store_true', help='Read script on stdin') - # Variable 'buildbot' is not used directly. - # pylint: disable=W0612 - options, args, _ = parser.parse_args(args) - if (bool(args) + bool(options.use_stdin) + bool(options.file)) != 1: - parser.error('Need to pass only one of: , -f or -i') - if options.use_stdin: - cmds = sys.stdin.read() - elif options.file: - cmds = open(options.file).read() - else: - cmds = '\n'.join(args) - compiled = compile(cmds, '', 'exec') - # pylint: disable=eval-used - eval(compiled, globals(), locals()) - return 0 - - -@need_buildbot -def CMDinteractive(parser, args): - """Runs an interactive shell to run queries.""" - _, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - prompt = ('Buildbot interactive console for "%s".\n' - "Hint: Start with typing: 'buildbot.printable_attributes' or " - "'print str(buildbot)' to explore.") % buildbot.url[:-len('/json')] - local_vars = {'buildbot': buildbot, 'b': buildbot} - code.interact(prompt, None, local_vars) - - -@need_buildbot -def CMDidle(parser, args): - """Lists idle slaves.""" - return find_idle_busy_slaves(parser, args, True) - - -@need_buildbot -def CMDbusy(parser, args): - """Lists idle slaves.""" - return find_idle_busy_slaves(parser, args, False) - - -@need_buildbot -def CMDdisconnected(parser, args): - """Lists disconnected slaves.""" - _, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - for slave in buildbot.slaves: - if not slave.connected: - print(slave.name) - return 0 - - -def find_idle_busy_slaves(parser, args, show_idle): - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '-s', - '--slave', - dest='slaves', - action='append', - default=[], - help='Slaves to filter on') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.builders: - options.builders = buildbot.builders.keys - for builder in options.builders: - builder = buildbot.builders[builder] - if options.slaves: - # Only the subset of slaves connected to the builder. - slaves = list(set(options.slaves).intersection(set(builder.slaves.names))) - if not slaves: - continue - else: - slaves = builder.slaves.names - busy_slaves = [build.slave.name for build in builder.current_builds] - if show_idle: - slaves = natsorted(set(slaves) - set(busy_slaves)) - else: - slaves = natsorted(set(slaves) & set(busy_slaves)) - if options.quiet: - for slave in slaves: - print(slave) - else: - if slaves: - print('Builder %s: %s' % (builder.name, ', '.join(slaves))) - return 0 - - -def last_failure(buildbot, - builders=None, - slaves=None, - steps=None, - no_cache=False): - """Returns Build object with last failure with the specific filters.""" - builders = builders or buildbot.builders.keys - for builder in builders: - builder = buildbot.builders[builder] - if slaves: - # Only the subset of slaves connected to the builder. - builder_slaves = list(set(slaves).intersection(set(builder.slaves.names))) - if not builder_slaves: - continue - else: - builder_slaves = builder.slaves.names - - if not no_cache and len(builder.slaves) > 2: - # Unless you just want the last few builds, it's often faster to - # fetch the whole thing at once, at the cost of a small hickup on - # the buildbot. - # TODO(maruel): Cache only N last builds or all builds since - # datetime. - builder.builds.cache() - - found = [] - for build in builder.builds: - if build.slave.name not in builder_slaves or build.slave.name in found: - continue - # Only add the slave for the first completed build but still look for - # incomplete builds. - if build.completed: - found.append(build.slave.name) - - if steps: - if any(build.steps[step].simplified_result is False for step in steps): - yield build - elif build.simplified_result is False: - yield build - - if len(found) == len(builder_slaves): - # Found all the slaves, quit. - break - - -@need_buildbot -def CMDlast_failure(parser, args): - """Lists all slaves that failed on that step on their last build. - - Examples: - To find all slaves where their last build was a compile failure, - run with --step compile - """ - parser.add_option( - '-S', - '--step', - dest='steps', - action='append', - default=[], - help='List all slaves that failed on that step on their last build') - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '-s', - '--slave', - dest='slaves', - action='append', - default=[], - help='Slaves to filter on') - parser.add_option( - '-n', - '--no_cache', - action='store_true', - help="Don't load all builds at once") - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - print_builders = not options.quiet and len(options.builders) != 1 - last_builder = None - for build in last_failure( - buildbot, - builders=options.builders, - slaves=options.slaves, - steps=options.steps, - no_cache=options.no_cache): - - if print_builders and last_builder != build.builder: - print(build.builder.name) - last_builder = build.builder - - if options.quiet: - if options.slaves: - print('%s: %s' % (build.builder.name, build.slave.name)) - else: - print(build.slave.name) - else: - out = '%d on %s: blame:%s' % (build.number, build.slave.name, ', '.join( - build.blame)) - if print_builders: - out = ' ' + out - print(out) - - if len(options.steps) != 1: - for step in build.steps: - if step.simplified_result is False: - # Assume the first line is the text name anyway. - summary = ', '.join(step.data['text'][1:])[:40] - out = ' %s: "%s"' % (step.data['name'], summary) - if print_builders: - out = ' ' + out - print(out) - return 0 - - -@need_buildbot -def CMDcurrent(parser, args): - """Lists current jobs.""" - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '--blame', action='store_true', help='Only print the blame list') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.builders: - options.builders = buildbot.builders.keys - - if options.blame: - blame = set() - for builder in options.builders: - for build in buildbot.builders[builder].current_builds: - if build.blame: - for blamed in build.blame: - blame.add(blamed) - print('\n'.join(blame)) - return 0 - - for builder in options.builders: - builder = buildbot.builders[builder] - if not options.quiet and builder.current_builds: - print(builder.name) - for build in builder.current_builds: - if options.quiet: - print(build.slave.name) - else: - out = '%4d: slave=%10s' % (build.number, build.slave.name) - out += ' duration=%5d' % (build.duration or 0) - if build.eta: - out += ' eta=%5.0f' % build.eta - else: - out += ' ' - if build.blame: - out += ' blame=' + ', '.join(build.blame) - print(out) - - return 0 - - -@need_buildbot -def CMDbuilds(parser, args): - """Lists all builds. - - Examples: - To find all builds on a single slave, run with -b bar -s foo. - """ - parser.add_option( - '-r', '--result', type='int', help='Build result to filter on') - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '-s', - '--slave', - dest='slaves', - action='append', - default=[], - help='Slaves to filter on') - parser.add_option( - '-n', - '--no_cache', - action='store_true', - help="Don't load all builds at once") - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - builders = options.builders or buildbot.builders.keys - for builder in builders: - builder = buildbot.builders[builder] - for build in builder.builds: - if not options.slaves or build.slave.name in options.slaves: - if options.quiet: - out = '' - if options.builders: - out += '%s/' % builder.name - if len(options.slaves) != 1: - out += '%s/' % build.slave.name - out += '%d revision:%s result:%s blame:%s' % ( - build.number, build.revision, build.result, ','.join(build.blame)) - print(out) - else: - print(build) - return 0 - - -@need_buildbot -def CMDcount(parser, args): - """Count the number of builds that occured during a specific period.""" - parser.add_option( - '-o', '--over', type='int', help='Number of seconds to look for') - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.over: - parser.error( - 'Specify the number of seconds, e.g. --over 86400 for the last 24 ' - 'hours') - builders = options.builders or buildbot.builders.keys - counts = {} - since = time.time() - options.over - for builder in builders: - builder = buildbot.builders[builder] - counts[builder.name] = 0 - if not options.quiet: - print(builder.name) - for build in builder.builds.iterall(): - try: - start_time = build.start_time - except urllib.error.HTTPError: - # The build was probably trimmed. - print( - 'Failed to fetch build %s/%d' % (builder.name, build.number), - file=sys.stderr) - continue - if start_time >= since: - counts[builder.name] += 1 - else: - break - if not options.quiet: - print('.. %d' % counts[builder.name]) - - align_name = max(len(b) for b in counts) - align_number = max(len(str(c)) for c in counts.values()) - for builder in sorted(counts): - print('%*s: %*d' % (align_name, builder, align_number, counts[builder])) - print('Total: %d' % sum(counts.values())) - return 0 - - -def gen_parser(): - """Returns an OptionParser instance with default options. - - It should be then processed with gen_usage() before being used. - """ - parser = optparse.OptionParser(version=__version__) - # Remove description formatting - parser.format_description = lambda x: parser.description - # Add common parsing. - old_parser_args = parser.parse_args - - def Parse(*args, **kwargs): - options, args = old_parser_args(*args, **kwargs) - if options.verbose >= 2: - logging.basicConfig(level=logging.DEBUG) - elif options.verbose: - logging.basicConfig(level=logging.INFO) - else: - logging.basicConfig(level=logging.WARNING) - return options, args - - parser.parse_args = Parse - - parser.add_option( - '-v', - '--verbose', - action='count', - help='Use multiple times to increase logging leve') - parser.add_option( - '-q', - '--quiet', - action='store_true', - help='Reduces the output to be parsed by scripts, independent of -v') - parser.add_option( - '--throttle', - type='float', - help='Minimum delay to sleep between requests') - return parser - - -# Generic subcommand handling code - - -def Command(name): - return getattr(sys.modules[__name__], 'CMD' + name, None) - - -@usage('') -def CMDhelp(parser, args): - """Print list of commands or use 'help '.""" - _, args = parser.parse_args(args) - if len(args) == 1: - return main(args + ['--help']) - parser.print_help() - return 0 - - -def gen_usage(parser, command): - """Modifies an OptionParser object with the command's documentation. - - The documentation is taken from the function's docstring. - """ - obj = Command(command) - more = getattr(obj, 'func_usage_more') - # OptParser.description prefer nicely non-formatted strings. - parser.description = obj.__doc__ + '\n' - parser.set_usage('usage: %%prog %s %s' % (command, more)) - - -def main(args=None): - # Do it late so all commands are listed. - # pylint: disable=E1101 - CMDhelp.__doc__ += '\n\nCommands are:\n' + '\n'.join( - ' %-12s %s' % (fn[3:], Command(fn[3:]).__doc__.split('\n', 1)[0]) - for fn in dir(sys.modules[__name__]) - if fn.startswith('CMD')) - - parser = gen_parser() - if args is None: - args = sys.argv[1:] - if args: - command = Command(args[0]) - if command: - # "fix" the usage and the description now that we know the subcommand. - gen_usage(parser, args[0]) - return command(parser, args[1:]) - - # Not a known command. Default to help. - gen_usage(parser, 'help') - return CMDhelp(parser, args) - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/cros_utils/buildbot_utils_unittest.py b/cros_utils/buildbot_utils_unittest.py index afbdfaef..c615c95f 100755 --- a/cros_utils/buildbot_utils_unittest.py +++ b/cros_utils/buildbot_utils_unittest.py @@ -21,18 +21,6 @@ from cros_utils import command_executer class TrybotTest(unittest.TestCase): """Test for CommandExecuter class.""" - old_tryjob_out = ( - 'Verifying patches...\n' - 'Submitting tryjob...\n' - 'Successfully sent PUT request to [buildbucket_bucket:master.chromiumos.t' - 'ryserver] with [config:success-build] [buildbucket_id:895272114382368817' - '6].\n' - 'Tryjob submitted!\n' - 'To view your tryjobs, visit:\n' - ' http://cros-goldeneye/chromeos/healthmonitoring/buildDetails?buildbuck' - 'etId=8952721143823688176\n' - ' https://uberchromegw.corp.google.com/i/chromiumos.tryserver/waterfall?' - 'committer=laszio@chromium.org&builder=etc\n') tryjob_out = ( '[{"buildbucket_id": "8952721143823688176", "build_config": ' '"cave-llvm-toolchain-tryjob", "url": ' -- cgit v1.2.3 From fab4f3c2a2954caa1363aa96b7c5587afb1dd070 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 26 Jun 2020 10:50:48 -0700 Subject: cros_util: fix up naming Since these two scripts are tracking upstream Chrome OS repos, fixing naming is a bit harder. This patch creates a variable to hold the name of the main branch, so it's easier to fix these files in case any future name fixing on upstream. Also run `yapf` during presubmit. BUG=chromium:1099035 TEST=None Change-Id: Ic72a213dadf12b382a76fe50d48cde6fcecc3b25 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2270728 Reviewed-by: Caroline Tice Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- cros_utils/manifest_versions.py | 12 ++++++++---- cros_utils/misc.py | 7 +++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/cros_utils/manifest_versions.py b/cros_utils/manifest_versions.py index 115c6046..4838de3c 100644 --- a/cros_utils/manifest_versions.py +++ b/cros_utils/manifest_versions.py @@ -19,6 +19,8 @@ import time from cros_utils import command_executer from cros_utils import logger +MANIFEST_VERSION_MAIN_BRANCH = 'master' + def IsCrosVersion(version): match = re.search(r'(\d+\.\d+\.\d+\.\d+)', version) @@ -72,7 +74,8 @@ class ManifestVersions(object): commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', 'git checkout -f $(git rev-list' + - ' --max-count=1 --before={0} origin/master)'.format(my_time) + ' --max-count=1 --before={0} origin/{1})'.format( + my_time, MANIFEST_VERSION_MAIN_BRANCH) ] ret = self.ce.RunCommands(commands) if ret: @@ -106,7 +109,7 @@ class ManifestVersions(object): version = pp[-2] + '.' + small commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', - 'git checkout master' + 'git checkout {0}'.format(MANIFEST_VERSION_MAIN_BRANCH) ] self.ce.RunCommands(commands) return version @@ -120,7 +123,8 @@ class ManifestVersions(object): commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', 'git checkout -f $(git rev-list' + - ' --max-count=1 --before={0} origin/master)'.format(my_time) + ' --max-count=1 --before={0} origin/{1})'.format( + my_time, MANIFEST_VERSION_MAIN_BRANCH) ] ret = self.ce.RunCommands(commands) if ret: @@ -133,7 +137,7 @@ class ManifestVersions(object): version = pp[-2] + '.' + small commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', - 'git checkout master' + 'git checkout {0}'.format(MANIFEST_VERSION_MAIN_BRANCH) ] self.ce.RunCommands(commands) return version diff --git a/cros_utils/misc.py b/cros_utils/misc.py index b4beb60c..d8b47d19 100644 --- a/cros_utils/misc.py +++ b/cros_utils/misc.py @@ -24,6 +24,8 @@ CHROMEOS_SCRIPTS_DIR = '/mnt/host/source/src/scripts' TOOLCHAIN_UTILS_PATH = ('/mnt/host/source/src/third_party/toolchain-utils/' 'cros_utils/toolchain_utils.sh') +CROS_MAIN_BRANCH = 'cros/master' + def GetChromeOSVersionFromLSBVersion(lsb_version): """Get Chromeos version from Lsb version.""" @@ -444,8 +446,9 @@ def DeleteChromeOsTree(chromeos_root, dry_run=False): cmd1, print_to_console=True) == 0 -def ApplyGerritPatches(chromeos_root, gerrit_patch_string, - branch='cros/master'): +def ApplyGerritPatches(chromeos_root, + gerrit_patch_string, + branch=CROS_MAIN_BRANCH): """Apply gerrit patches on a chromeos tree. Args: -- cgit v1.2.3 From f226ba1cf809c308f0375356352fa5723e86b369 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 29 Jun 2020 14:30:38 -0700 Subject: Update owners file Reflect current members of toolchain team. BUG=None TEST=None Change-Id: If6582da1f4352e3fdff415870d86a28c4fe92853 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274096 Reviewed-by: Bob Haarman Tested-by: Manoj Gupta --- OWNERS.toolchain | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS.toolchain b/OWNERS.toolchain index f7d6e3f6..48ecc260 100644 --- a/OWNERS.toolchain +++ b/OWNERS.toolchain @@ -1,10 +1,10 @@ cmtice@chromium.org denik@chromium.org gbiv@chromium.org +inglorion@chromium.org jiancai@chromium.org llozano@chromium.org manojgupta@chromium.org -tbosch@chromium.org tcwang@chromium.org zhizhouy@chromium.org -- cgit v1.2.3 From cab42647a2c57f405010deffe3b6c83a33e46d45 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 29 Jun 2020 14:25:40 -0700 Subject: Update AFDO kernel profiles. (Weekly sheriff "workaround".) BUG=None TEST=None Change-Id: I7b4ca0213a28bde81ad83e9aab1ae8bf1dc5925e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274717 Reviewed-by: Tiancong Wang Reviewed-by: Bob Haarman Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 2529552f..566d89e6 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R85-13295.0-1592818714" + "name": "R86-13308.0-1593423468" }, "chromeos-kernel-4_4": { - "name": "R85-13295.0-1592818619" + "name": "R86-13308.0-1593423371" }, "chromeos-kernel-4_14": { - "name": "R85-13295.0-1592818845" + "name": "R86-13308.0-1593423143" }, "chromeos-kernel-4_19": { - "name": "R85-13295.0-1592818980" + "name": "R86-13308.0-1593423563" } } -- cgit v1.2.3 From d6f4dfa85362baa904f328bfbafa50765315ac0e Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 29 Jun 2020 15:42:02 -0700 Subject: presubmits: add types to check-presubmit.py. Since presubmits handle py3 gracefully now && we're starting to add types in many places, it seems worth it to add these for better understandability in the future. No functional change is intended. BUG=chromium:1100659 TEST=Ran the presubmits. Change-Id: If4134b4d10b0f3692a52803e12c8e503b4574be5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274727 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- toolchain_utils_githooks/check-presubmit.py | 74 ++++++++++++++++++----------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/toolchain_utils_githooks/check-presubmit.py b/toolchain_utils_githooks/check-presubmit.py index 26373342..10eb6e36 100755 --- a/toolchain_utils_githooks/check-presubmit.py +++ b/toolchain_utils_githooks/check-presubmit.py @@ -7,11 +7,7 @@ """Runs presubmit checks against a bundle of files.""" -# To keep `cros lint` happy -from __future__ import division, print_function - import argparse -import collections import datetime import multiprocessing import multiprocessing.pool @@ -26,7 +22,9 @@ import traceback import typing as t -def run_command_unchecked(command, cwd, env=None): +def run_command_unchecked(command: t.List[str], + cwd: str, + env: t.Dict[str, str] = None) -> t.Tuple[int, str]: """Runs a command in the given dir, returning its exit code and stdio.""" p = subprocess.Popen( command, @@ -42,12 +40,12 @@ def run_command_unchecked(command, cwd, env=None): return exit_code, stdout.decode('utf-8', 'replace') -def has_executable_on_path(exe): +def has_executable_on_path(exe: str) -> bool: """Returns whether we have `exe` somewhere on our $PATH""" return shutil.which(exe) is not None -def escape_command(command): +def escape_command(command: t.Iterable[str]) -> str: """Returns a human-readable and copy-pastable shell command. Only intended for use in output to users. shell=True is strongly discouraged. @@ -55,18 +53,18 @@ def escape_command(command): return ' '.join(shlex.quote(x) for x in command) -def remove_deleted_files(files): +def remove_deleted_files(files: t.Iterable[str]) -> t.List[str]: return [f for f in files if os.path.exists(f)] -def is_file_executable(file_path): +def is_file_executable(file_path: str) -> bool: return os.access(file_path, os.X_OK) # As noted in our docs, some of our Python code depends on modules that sit in # toolchain-utils/. Add that to PYTHONPATH to ensure that things like `cros # lint` are kept happy. -def env_with_pythonpath(toolchain_utils_root): +def env_with_pythonpath(toolchain_utils_root: str) -> t.Dict[str, str]: env = dict(os.environ) if 'PYTHONPATH' in env: env['PYTHONPATH'] += ':' + toolchain_utils_root @@ -86,12 +84,22 @@ def env_with_pythonpath(toolchain_utils_root): # least ${number_of_concurrently_running_checkers}+1 threads are present # in the pool. In order words, blocking on results from the provided # threadpool is OK. -CheckResult = collections.namedtuple('CheckResult', - ('ok', 'output', 'autofix_commands')) +CheckResult = t.NamedTuple( + 'CheckResult', + ( + ('ok', bool), + ('output', str), + ('autofix_commands', t.List[t.List[str]]), + ), +) + +def get_check_result_or_catch( + task: multiprocessing.pool.ApplyResult) -> CheckResult: + """Returns the result of task(); if that raises, returns a CheckResult. -def get_check_result_or_catch(task): - """Returns the result of task(); if that raises, returns a CheckResult.""" + The task is expected to return a CheckResult on get(). + """ try: return task.get() except Exception: @@ -103,7 +111,8 @@ def get_check_result_or_catch(task): ) -def check_yapf(toolchain_utils_root, python_files): +def check_yapf(toolchain_utils_root: str, + python_files: t.Iterable[str]) -> CheckResult: """Subchecker of check_py_format. Checks python file formats with yapf""" command = ['yapf', '-d'] + python_files exit_code, stdout_and_stderr = run_command_unchecked( @@ -146,7 +155,7 @@ def check_yapf(toolchain_utils_root, python_files): ) -def check_python_file_headers(python_files): +def check_python_file_headers(python_files: t.Iterable[str]) -> CheckResult: """Subchecker of check_py_format. Checks python #!s""" add_hashbang = [] remove_hashbang = [] @@ -188,7 +197,9 @@ def check_python_file_headers(python_files): ) -def check_py_format(toolchain_utils_root, thread_pool, files): +def check_py_format(toolchain_utils_root: str, + thread_pool: multiprocessing.pool.ThreadPool, + files: t.Iterable[str]) -> CheckResult: """Runs yapf on files to check for style bugs. Also checks for #!s.""" yapf = 'yapf' if not has_executable_on_path(yapf): @@ -217,7 +228,9 @@ def check_py_format(toolchain_utils_root, thread_pool, files): return [(name, get_check_result_or_catch(task)) for name, task in tasks] -def check_cros_lint(toolchain_utils_root, thread_pool, files): +def check_cros_lint( + toolchain_utils_root: str, thread_pool: multiprocessing.pool.ThreadPool, + files: t.Iterable[str]) -> t.Union[t.List[CheckResult], CheckResult]: """Runs `cros lint`""" fixed_env = env_with_pythonpath(toolchain_utils_root) @@ -225,7 +238,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): # We have to support users who don't have a chroot. So we either run `cros # lint` (if it's been made available to us), or we try a mix of # pylint+golint. - def try_run_cros_lint(cros_binary): + def try_run_cros_lint(cros_binary: str) -> t.Optional[CheckResult]: exit_code, output = run_command_unchecked( [cros_binary, 'lint', '--py3', '--'] + files, toolchain_utils_root, @@ -254,7 +267,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): tasks = [] - def check_result_from_command(command): + def check_result_from_command(command: t.List[str]) -> CheckResult: exit_code, output = run_command_unchecked( command, toolchain_utils_root, env=fixed_env) return CheckResult( @@ -266,7 +279,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): python_files = [f for f in remove_deleted_files(files) if f.endswith('.py')] if python_files: - def run_pylint(): + def run_pylint() -> CheckResult: # pylint is required. Fail hard if it DNE. return check_result_from_command(['pylint'] + python_files) @@ -275,7 +288,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): go_files = [f for f in remove_deleted_files(files) if f.endswith('.go')] if go_files: - def run_golint(): + def run_golint() -> CheckResult: if has_executable_on_path('golint'): return check_result_from_command(['golint', '-set_exit_status'] + go_files) @@ -362,7 +375,9 @@ def check_go_format(toolchain_utils_root, _thread_pool, files): ) -def check_tests(toolchain_utils_root, _thread_pool, files): +def check_tests(toolchain_utils_root: str, + _thread_pool: multiprocessing.pool.ThreadPool, + files: t.List[str]) -> CheckResult: """Runs tests.""" exit_code, stdout_and_stderr = run_command_unchecked( [os.path.join(toolchain_utils_root, 'run_tests_for.py'), '--'] + files, @@ -374,15 +389,17 @@ def check_tests(toolchain_utils_root, _thread_pool, files): ) -def detect_toolchain_utils_root(): +def detect_toolchain_utils_root() -> str: return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -def process_check_result(check_name, check_results, start_time): +def process_check_result( + check_name: str, check_results: t.Union[t.List[CheckResult], CheckResult], + start_time: datetime.datetime) -> t.Tuple[bool, t.List[t.List[str]]]: """Prints human-readable output for the given check_results.""" indent = ' ' - def indent_block(text): + def indent_block(text: str) -> str: return indent + text.replace('\n', '\n' + indent) if isinstance(check_results, CheckResult): @@ -426,7 +443,8 @@ def process_check_result(check_name, check_results, start_time): return ok, autofix_commands -def try_autofix(all_autofix_commands, toolchain_utils_root): +def try_autofix(all_autofix_commands: t.List[t.List[str]], + toolchain_utils_root: str) -> None: """Tries to run all given autofix commands, if appropriate.""" if not all_autofix_commands: return @@ -534,7 +552,7 @@ def ensure_scipy_installed() -> None: subprocess.check_call(['pip', 'install', '--user', 'scipy']) -def main(argv): +def main(argv: t.List[str]) -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( '--no_autofix', -- cgit v1.2.3 From edc59f7812ca3aa1b5e304d2db7ee4cc44d26482 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 29 Jun 2020 16:01:58 -0700 Subject: presubmits: respect CHROMEOS_ROOT_DIRECTORY when entering the chroot BUG=chromium:1100659 TEST=Ran presubmits inside of the CrOS tree, and outside with CHROMEOS_ROOT_DIRECTORY set. Change-Id: I119d13f8f7b6b0f8a1c94750fe5e90be5ad952be Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274728 Reviewed-by: Manoj Gupta Reviewed-by: Caroline Tice Tested-by: George Burgess --- toolchain_utils_githooks/check-presubmit.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/toolchain_utils_githooks/check-presubmit.py b/toolchain_utils_githooks/check-presubmit.py index 10eb6e36..274a75f4 100755 --- a/toolchain_utils_githooks/check-presubmit.py +++ b/toolchain_utils_githooks/check-presubmit.py @@ -228,6 +228,10 @@ def check_py_format(toolchain_utils_root: str, return [(name, get_check_result_or_catch(task)) for name, task in tasks] +def find_chromeos_root_directory() -> t.Optional[str]: + return os.getenv('CHROMEOS_ROOT_DIRECTORY') + + def check_cros_lint( toolchain_utils_root: str, thread_pool: multiprocessing.pool.ThreadPool, files: t.Iterable[str]) -> t.Union[t.List[CheckResult], CheckResult]: @@ -259,7 +263,7 @@ def check_cros_lint( if cros_lint is not None: return cros_lint - cros_root = os.getenv('CHROMEOS_ROOT_DIRECTORY') + cros_root = find_chromeos_root_directory() if cros_root: cros_lint = try_run_cros_lint(os.path.join(cros_root, 'chromite/bin/cros')) if cros_lint is not None: @@ -496,10 +500,16 @@ def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: return enter_chroot = True + chdir_to = None toolchain_utils = detect_toolchain_utils_root() if find_repo_root(toolchain_utils) is None: - print('Standalone toolchain-utils checkout detected; cannot enter chroot.') - enter_chroot = False + chromeos_root_dir = find_chromeos_root_directory() + if chromeos_root_dir is None: + print('Standalone toolchain-utils checkout detected; cannot enter ' + 'chroot.') + enter_chroot = False + else: + chdir_to = chromeos_root_dir if not has_executable_on_path('cros_sdk'): print('No `cros_sdk` detected on $PATH; cannot enter chroot.') @@ -529,7 +539,11 @@ def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: args.append('--no_autofix') args.extend(rebase_path(x) for x in files) - print('Attempting to enter the chroot...') + if chdir_to is None: + print('Attempting to enter the chroot...') + else: + print(f'Attempting to enter the chroot for tree at {chdir_to}...') + os.chdir(chdir_to) os.execvp(args[0], args) -- cgit v1.2.3 From 8caccf6a0f744db9ff24daf10fc30d37615c9089 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Thu, 9 Jul 2020 09:33:39 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R86-13308.0-1594028349 Update chromeos-kernel-4_4 to R86-13308.0-1594028015 Update chromeos-kernel-4_14 to R86-13308.0-1594028311 Update chromeos-kernel-4_19 to R86-13310.6-1594027984 BUG=None TEST=None Change-Id: Ia9c0386c41248346eda403eddf93539c9fd4e743 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2289901 Tested-by: Denis Nikitin Auto-Submit: Denis Nikitin Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 566d89e6..79929733 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13308.0-1593423468" + "name": "R86-13308.0-1594028349" }, "chromeos-kernel-4_4": { - "name": "R86-13308.0-1593423371" + "name": "R86-13308.0-1594028015" }, "chromeos-kernel-4_14": { - "name": "R86-13308.0-1593423143" + "name": "R86-13308.0-1594028311" }, "chromeos-kernel-4_19": { - "name": "R86-13308.0-1593423563" + "name": "R86-13310.6-1594027984" } } -- cgit v1.2.3 From 6cfbb3d75dbd5383419814804f4d94b699537b50 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 13 Jul 2020 16:05:18 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R86-13310.3-1594633089 Update chromeos-kernel-4_4 to R86-13333.0-1594632882 Update chromeos-kernel-4_14 to R86-13308.0-1594632874 Update chromeos-kernel-4_19 to R86-13329.0-1594633362 BUG=chromium:1081332 TEST=None. Change-Id: Icd1f2478c1e8b7d7d03d9fabc2808bc81ded81d7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2296122 Reviewed-by: Tiancong Wang Commit-Queue: Jian Cai Tested-by: Jian Cai --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 79929733..dbb5ca7e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13308.0-1594028349" + "name": "R86-13310.3-1594633089" }, "chromeos-kernel-4_4": { - "name": "R86-13308.0-1594028015" + "name": "R86-13333.0-1594632882" }, "chromeos-kernel-4_14": { - "name": "R86-13308.0-1594028311" + "name": "R86-13308.0-1594632874" }, "chromeos-kernel-4_19": { - "name": "R86-13310.6-1594027984" + "name": "R86-13329.0-1594633362" } } -- cgit v1.2.3 From 94fd622c652b7aa46f2ca24d3a0efe93c7fde040 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Thu, 9 Jul 2020 17:14:53 -0700 Subject: compiler_wrapper: remove -grecord-gcc-switches -grecord-gcc-switches causes the compiler and compiler flags to be stored in the produced debug information. This causes Goma builds to be non-deterministic, because the compiler path differs depending on whether the compiler was run locally or on Goma. This, in turn, causes cache pollution and needless work. Since we are not in fact using the information stored by -grecord-gcc-switches, this change disables it. We can re-enable it when we want to start using the information, provided we come up with another way to avoid the issues described earlier. BUG=chromium:1103065 TEST=Build an object file in chromeos-chrome and check that info is absent Change-Id: Ib8022a3a1baf2e4b5d3d9d1453deb67f539baff4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2290624 Commit-Queue: Bob Haarman Tested-by: Bob Haarman Reviewed-by: George Burgess Reviewed-by: Tiancong Wang --- compiler_wrapper/config.go | 6 ++++-- compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 --------- .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 - .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 --------- .../testdata/cros_clang_host_golden/clang_path.json | 12 ------------ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 -------- .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 ------- .../testdata/cros_clang_host_golden/clangtidy.json | 8 -------- .../cros_clang_host_golden/force_disable_werror.json | 5 ----- compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 --------- .../cros_hardened_golden/clang_maincc_target_specific.json | 9 --------- .../testdata/cros_hardened_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 -------- .../testdata/cros_hardened_golden/clang_specific_args.json | 7 ------- .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ------ .../testdata/cros_hardened_golden/clangtidy.json | 8 -------- .../testdata/cros_hardened_golden/force_disable_werror.json | 5 ----- .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ---- .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 --- .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 -------- .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 ----- .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ---- .../testdata/cros_hardened_noccache_golden/bisect.json | 3 --- .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 -------- .../cros_hardened_noccache_golden/force_disable_werror.json | 5 ----- .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ---- 30 files changed, 4 insertions(+), 199 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index b11c6808..0fc7336f 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -121,9 +121,10 @@ var crosHardenedConfig = &config{ // Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742. // Pass "-fcommon" till the packages are fixed to work with new clang default // "-fno-common", crbug.com/1060413. + // crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache; + // removed that flag for now. clangFlags: []string{ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -188,9 +189,10 @@ var crosHostConfig = &config{ // Temporarily add no-unknown-warning-option to deal with old clang versions. // Pass "-fcommon" till the packages are fixed to work with new clang default // "-fno-common", crbug.com/1060413. + // crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache; + // removed that flag for now. clangFlags: []string{ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index f7a83659..ebc55d49 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -25,7 +25,6 @@ "/tmp/sysroot_bisect", "/tmp/stable/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -74,7 +73,6 @@ "someBisectDir", "/tmp/stable/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -126,7 +124,6 @@ "someBisectDir", "/tmp/stable/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index fc20522c..786be389 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -16,7 +16,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -52,7 +51,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -88,7 +86,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -124,7 +121,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -160,7 +156,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -196,7 +191,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -232,7 +226,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -268,7 +261,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -304,7 +296,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 38905dbe..813f9c3f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -15,7 +15,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index d9b5978a..11bb939c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -15,7 +15,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -50,7 +49,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -85,7 +83,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -120,7 +117,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -155,7 +151,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -190,7 +185,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -225,7 +219,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -260,7 +253,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -295,7 +287,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 6c3d029f..04f1a730 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -15,7 +15,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -53,7 +52,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -91,7 +89,6 @@ "path": "/tmp/stable/clang++", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -129,7 +126,6 @@ "path": "somepath/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -174,7 +170,6 @@ "path": "/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -224,7 +219,6 @@ "path": "/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -274,7 +268,6 @@ "path": "/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -314,7 +307,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -349,7 +341,6 @@ "path": "/tmp/stable/a/b/c/d/e/f/g/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -384,7 +375,6 @@ "path": "/tmp/stable/a/b/c/d/e/f/g/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -419,7 +409,6 @@ "path": "/tmp/stable/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -457,7 +446,6 @@ "path": "/tmp/stable/pathenv/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 899b77fe..6ba5c97a 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -17,7 +17,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -55,7 +54,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -93,7 +91,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -131,7 +128,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -168,7 +164,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -207,7 +202,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -246,7 +240,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -283,7 +276,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index e1408c4e..2af36665 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -26,7 +26,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -62,7 +61,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -99,7 +97,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -136,7 +133,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -173,7 +169,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -210,7 +205,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -247,7 +241,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 5e05d227..28022243 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -31,7 +31,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -53,7 +52,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -105,7 +103,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -127,7 +124,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -181,7 +177,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -206,7 +201,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -261,7 +255,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -283,7 +276,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 3a77e21d..2cb74e98 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -18,7 +18,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -56,7 +55,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -80,7 +78,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -122,7 +119,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -146,7 +142,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 45c36e87..36624783 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -27,7 +27,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -89,7 +88,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -154,7 +152,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index b4e0f9ce..e7eab203 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -18,7 +18,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -70,7 +69,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -122,7 +120,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -174,7 +171,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -226,7 +222,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -278,7 +273,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -330,7 +324,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -382,7 +375,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -434,7 +426,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 09e6d846..786d3326 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -17,7 +17,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -67,7 +66,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -117,7 +115,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -167,7 +164,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -217,7 +213,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -267,7 +262,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -317,7 +311,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -367,7 +360,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -417,7 +409,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 4146d2cf..1fe980a7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -17,7 +17,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -70,7 +69,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -123,7 +121,6 @@ "../../usr/bin/clang++", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -176,7 +173,6 @@ "somepath/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -236,7 +232,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -301,7 +296,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -361,7 +355,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -416,7 +409,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -466,7 +458,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -516,7 +507,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -566,7 +556,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -619,7 +608,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index a1d62535..0a94e86c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -19,7 +19,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -71,7 +70,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -123,7 +121,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -175,7 +172,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -226,7 +222,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -279,7 +274,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -332,7 +326,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -383,7 +376,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 48bb8288..5add66fb 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -28,7 +28,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -79,7 +78,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -131,7 +129,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -183,7 +180,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -235,7 +231,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -287,7 +282,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -339,7 +333,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index e925a784..f30920d6 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -52,7 +52,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -105,7 +104,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -151,7 +149,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -200,7 +197,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -250,7 +246,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7a-cros-linux-gnueabihf", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -299,7 +294,6 @@ "args": [ "../../usr/bin/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index b8b786db..eae5c3d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -32,7 +32,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -124,7 +122,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -156,7 +153,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -219,7 +215,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -254,7 +249,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -318,7 +312,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -350,7 +343,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 0ee22133..d415fb78 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -20,7 +20,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -73,7 +72,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -112,7 +110,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -169,7 +166,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -208,7 +204,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index d571c02e..576f4b69 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -17,7 +17,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -91,7 +90,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -160,7 +158,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -213,7 +210,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 45c36e87..36624783 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -27,7 +27,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -89,7 +88,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -154,7 +152,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 4146d2cf..1fe980a7 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -17,7 +17,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -70,7 +69,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -123,7 +121,6 @@ "../../usr/bin/clang++", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -176,7 +173,6 @@ "somepath/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -236,7 +232,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -301,7 +296,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -361,7 +355,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -416,7 +409,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -466,7 +458,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -516,7 +507,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -566,7 +556,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -619,7 +608,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b8b786db..eae5c3d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -32,7 +32,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -124,7 +122,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -156,7 +153,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -219,7 +215,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -254,7 +249,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -318,7 +312,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -350,7 +343,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 0ee22133..d415fb78 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -20,7 +20,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -73,7 +72,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -112,7 +110,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -169,7 +166,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -208,7 +204,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index d571c02e..576f4b69 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -17,7 +17,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -91,7 +90,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -160,7 +158,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -213,7 +210,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index dfe8c0c0..f31bbe96 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -26,7 +26,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -84,7 +83,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -145,7 +143,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index c8a0e101..b2cdeb46 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -16,7 +16,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -110,7 +108,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -157,7 +154,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -211,7 +207,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -271,7 +266,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -330,7 +324,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -379,7 +372,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -423,7 +415,6 @@ "args": [ "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -467,7 +458,6 @@ "args": [ "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -511,7 +501,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -558,7 +547,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index b8b786db..eae5c3d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -32,7 +32,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -124,7 +122,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -156,7 +153,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -219,7 +215,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -254,7 +249,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -318,7 +312,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -350,7 +343,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 9700b128..d01ceac3 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -19,7 +19,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -66,7 +65,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -99,7 +97,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -150,7 +147,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -183,7 +179,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index 3b31be3c..e9f5e64a 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -17,7 +17,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -86,7 +85,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -155,7 +153,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -208,7 +205,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", -- cgit v1.2.3 From 916add28cdd83fddfb7f0a1c274b25b9547c2ebb Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Fri, 17 Jul 2020 16:38:54 -0700 Subject: compiler_wrapper: rename update_compiler_wrapper.sh Rename the script to install_compiler_wrapper.sh to avoid confusion with chromiumos-overlay/sys-devel/llvm/files/update_compiler_wrapper.sh. BUG=None. Test=None. Change-Id: I39bbc3dc4a63fa480c394f2e92c1723033cdc321 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2304726 Tested-by: Jian Cai Reviewed-by: Bob Haarman --- compiler_wrapper/README.md | 22 +++++++++------ compiler_wrapper/install_compiler_wrapper.sh | 40 ++++++++++++++++++++++++++++ compiler_wrapper/update_compiler_wrapper.sh | 40 ---------------------------- 3 files changed, 54 insertions(+), 48 deletions(-) create mode 100755 compiler_wrapper/install_compiler_wrapper.sh delete mode 100755 compiler_wrapper/update_compiler_wrapper.sh diff --git a/compiler_wrapper/README.md b/compiler_wrapper/README.md index 794e1635..e64f01b6 100644 --- a/compiler_wrapper/README.md +++ b/compiler_wrapper/README.md @@ -12,25 +12,31 @@ package, including the build script, and then build from there without a dependency on toolchain-utils itself. -## Update Chrome OS +## Update source files Copy over sources and `build.py` to Chrome OS: ``` -(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update_compiler_wrapper.sh +(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update\_compiler\_wrapper.sh ``` `build.py` is called by these ebuilds: -- third_party/chromiumos-overlay/sys-devel/llvm/llvm-9.0_pre361749_p20190714.ebuild -- third_party/chromiumos-overlay/sys-devel/gcc/gcc-*.ebuild +- third_party/chromiumos-overlay/sys-devel/llvm/llvm-11.0\_pre394483\_p20200618-r3.ebuild +- third_party/chromiumos-overlay/sys-devel/gcc/gcc-\*.ebuild +## Update compiler wrappers +``` +(chroot) /mnt/host/source/src/third|_party/toolchain-utils/compiler\_wrapper/install\_compiler\_wrapper.sh +``` Generated wrappers are stored here: - Sysroot wrapper with ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.ccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.ccache` - Sysroot wrapper without ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.noccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.noccache` - Clang host wrapper: - `/usr/bin/clang_host_wrapper` + `/usr/bin/clang\_host\_wrapper` - Gcc host wrapper: - `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host_wrapper` + `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host\_wrapper` + + diff --git a/compiler_wrapper/install_compiler_wrapper.sh b/compiler_wrapper/install_compiler_wrapper.sh new file mode 100755 index 00000000..479b112c --- /dev/null +++ b/compiler_wrapper/install_compiler_wrapper.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# +# Copyright 2020 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. + +# This script rebuilds and installs compiler wrappers + +if [[ ! -e /etc/cros_chroot_version ]]; then + echo "Please run this script inside chroot" + exit 1 +fi +set -e +cd "$(dirname "$(readlink -m "$0")")" +echo "Updated files:" +# Update the host wrapper +./build.py --config=cros.host --use_ccache=false --use_llvm_next=false --output_file=./clang_host_wrapper +sudo mv ./clang_host_wrapper /usr/bin/clang_host_wrapper +echo "/usr/bin/clang_host_wrapper" +sudo cp ../binary_search_tool/bisect_driver.py /usr/bin +echo "/usr/bin/clang_host_wrapper/bisect_driver.py" +# Update the target wrappers +for GCC in cross-x86_64-cros-linux-gnu/gcc cross-armv7a-cros-linux-gnueabihf/gcc cross-aarch64-cros-linux-gnu/gcc; do + if ! FILES="$(equery f ${GCC})"; then + if [[ $(equery l "${GCC}" 2>&1 | wc -c) -eq 0 ]]; then + echo "no ${GCC} package found; skipping" >&2 + continue + fi + # Something went wrong, and the equery above probably complained about it. + exit 1 + fi + ./build.py --config=cros.hardened --use_ccache=false --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.noccache + sudo mv ./sysroot_wrapper.hardened.noccache "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" + grep sysroot_wrapper.hardened.noccache <<< "${FILES}" + ./build.py --config=cros.hardened --use_ccache=true --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.ccache + sudo mv ./sysroot_wrapper.hardened.ccache "$(grep sysroot_wrapper.hardened.ccache <<< "${FILES}")" + grep sysroot_wrapper.hardened.ccache <<< "${FILES}" + sudo cp ../binary_search_tool/bisect_driver.py "$(grep bisect_driver.py <<< "${FILES}")" + grep bisect_driver.py <<< "${FILES}" +done diff --git a/compiler_wrapper/update_compiler_wrapper.sh b/compiler_wrapper/update_compiler_wrapper.sh deleted file mode 100755 index 479b112c..00000000 --- a/compiler_wrapper/update_compiler_wrapper.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# -# Copyright 2020 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. - -# This script rebuilds and installs compiler wrappers - -if [[ ! -e /etc/cros_chroot_version ]]; then - echo "Please run this script inside chroot" - exit 1 -fi -set -e -cd "$(dirname "$(readlink -m "$0")")" -echo "Updated files:" -# Update the host wrapper -./build.py --config=cros.host --use_ccache=false --use_llvm_next=false --output_file=./clang_host_wrapper -sudo mv ./clang_host_wrapper /usr/bin/clang_host_wrapper -echo "/usr/bin/clang_host_wrapper" -sudo cp ../binary_search_tool/bisect_driver.py /usr/bin -echo "/usr/bin/clang_host_wrapper/bisect_driver.py" -# Update the target wrappers -for GCC in cross-x86_64-cros-linux-gnu/gcc cross-armv7a-cros-linux-gnueabihf/gcc cross-aarch64-cros-linux-gnu/gcc; do - if ! FILES="$(equery f ${GCC})"; then - if [[ $(equery l "${GCC}" 2>&1 | wc -c) -eq 0 ]]; then - echo "no ${GCC} package found; skipping" >&2 - continue - fi - # Something went wrong, and the equery above probably complained about it. - exit 1 - fi - ./build.py --config=cros.hardened --use_ccache=false --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.noccache - sudo mv ./sysroot_wrapper.hardened.noccache "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" - grep sysroot_wrapper.hardened.noccache <<< "${FILES}" - ./build.py --config=cros.hardened --use_ccache=true --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.ccache - sudo mv ./sysroot_wrapper.hardened.ccache "$(grep sysroot_wrapper.hardened.ccache <<< "${FILES}")" - grep sysroot_wrapper.hardened.ccache <<< "${FILES}" - sudo cp ../binary_search_tool/bisect_driver.py "$(grep bisect_driver.py <<< "${FILES}")" - grep bisect_driver.py <<< "${FILES}" -done -- cgit v1.2.3 From 7b9d2ba0c68bd53dc38085c961005d2b406a7718 Mon Sep 17 00:00:00 2001 From: Allen Webb Date: Thu, 16 Jul 2020 10:53:04 -0500 Subject: Put reference filters on 'git ls-remote'. This saves time and bandwidth expecially as the number of references scale up with uploaded CLs. BUG=None TEST=CQ passes Change-Id: Idf0e9eea97bc533ec21f29cfd8267a260f7322ef Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2302949 Reviewed-by: Tiancong Wang Commit-Queue: Allen Webb Tested-by: Allen Webb --- cros_utils/misc.py | 3 ++- setup_chromeos.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cros_utils/misc.py b/cros_utils/misc.py index d8b47d19..93d1b3b6 100644 --- a/cros_utils/misc.py +++ b/cros_utils/misc.py @@ -31,7 +31,8 @@ def GetChromeOSVersionFromLSBVersion(lsb_version): """Get Chromeos version from Lsb version.""" ce = command_executer.GetCommandExecuter() command = ('git ls-remote ' - 'https://chromium.googlesource.com/chromiumos/manifest.git') + 'https://chromium.googlesource.com/chromiumos/manifest.git ' + 'refs/heads/release-R*') ret, out, _ = ce.RunCommandWOutput(command, print_to_console=False) assert ret == 0, 'Command %s failed' % command lower = [] diff --git a/setup_chromeos.py b/setup_chromeos.py index 63206492..07c7530d 100755 --- a/setup_chromeos.py +++ b/setup_chromeos.py @@ -244,7 +244,7 @@ Default is 'latest_lkgm'.""") return cmd_executer.RunCommand( 'git ls-remote ' 'https://chrome-internal.googlesource.com/chrome/src-internal.git ' - '> /dev/null') + 'refs/HEAD > /dev/null') if __name__ == '__main__': -- cgit v1.2.3 From 6c2e5c4448ade8e7764d3ebfb8a168441f59cf92 Mon Sep 17 00:00:00 2001 From: Luis Lozano Date: Tue, 21 Jul 2020 16:14:38 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13310.18-1595237847 Update chromeos-kernel-4_4 to R86-13333.0-1595237618 Update chromeos-kernel-4_14 to R86-13310.18-1595237997 Update chromeos-kernel-4_19 to R86-13329.0-1595238172 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I6171e28a5beff90a66b70bacc415679a48c23371 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2311358 Commit-Queue: Luis Lozano Commit-Queue: Tiancong Wang Tested-by: Luis Lozano Auto-Submit: Luis Lozano Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index dbb5ca7e..6d775d58 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13310.3-1594633089" + "name": "R86-13310.18-1595237847" }, "chromeos-kernel-4_4": { - "name": "R86-13333.0-1594632882" + "name": "R86-13333.0-1595237618" }, "chromeos-kernel-4_14": { - "name": "R86-13308.0-1594632874" + "name": "R86-13310.18-1595237997" }, "chromeos-kernel-4_19": { - "name": "R86-13329.0-1594633362" + "name": "R86-13329.0-1595238172" } } -- cgit v1.2.3 From cb46500d29085ee65b524981f0fbf4af3badc0bb Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 20 Jul 2020 16:53:39 -0700 Subject: compiler_wrapper: add -clang-tidy-flag support This CL adds support for specifying compiler flags that're meant to be passed only to clang-tidy. This allows for easier local experimentation with clang-tidy by users. BUG=chromium:982944 TEST=`WITH_TIDY=1 emerge-amd64-generic biod` with custom cflags; cq+1 on crrev.com/c/2308774 Change-Id: I654559d14a78ade4920fe37757fb5b249a997290 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2309152 Reviewed-by: Caroline Tice Tested-by: George Burgess --- compiler_wrapper/clang_tidy_flag.go | 30 ++++++++---- compiler_wrapper/clang_tidy_flag_test.go | 53 +++++++++++++++++++++ compiler_wrapper/compiler_wrapper.go | 80 ++++++++++++++++---------------- 3 files changed, 115 insertions(+), 48 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index edbbb412..2d97ddd3 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -21,10 +21,20 @@ const ( tidyModeTricium ) -func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTidyMode) { +func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, clangTidyFlags []string, mode useTidyMode) { + builder.transformArgs(func(arg builderArg) string { + const prefix = "-clang-tidy-flag=" + if !strings.HasPrefix(arg.value, prefix) { + return arg.value + } + + clangTidyFlags = append(clangTidyFlags, arg.value[len(prefix):]) + return "" + }) + withTidy, _ := builder.env.getenv("WITH_TIDY") if withTidy == "" { - return "", tidyModeNone + return "", clangTidyFlags, tidyModeNone } srcFileSuffixes := []string{ ".c", @@ -51,7 +61,7 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTi } if cSrcFile == "" { - return "", tidyModeNone + return "", clangTidyFlags, tidyModeNone } if withTidy == "tricium" { @@ -65,7 +75,7 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTi } else { mode = tidyModeAll } - return cSrcFile, mode + return cSrcFile, clangTidyFlags, mode } func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFlags ...string) (*command, error) { @@ -85,7 +95,7 @@ func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFl }, nil } -func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string) error { +func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string) error { if err := os.MkdirAll(fixesDir, 0777); err != nil { return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err) } @@ -103,7 +113,8 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin // FIXME(gbiv): Remove `-checks=*` when testing is complete; we should defer to .clang-tidy // files, which are both more expressive and more approachable than `-checks=*`. - clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks=*", "--export-fixes="+fixesFilePath) + extraTidyFlags = append(extraTidyFlags, "-checks=*", "--export-fixes="+fixesFilePath) + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, extraTidyFlags...) if err != nil { return fmt.Errorf("calculating tidy invocation: %v", err) } @@ -149,9 +160,9 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin return nil } -func runClangTidy(env env, clangCmd *command, cSrcFile string) error { - clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks="+ - strings.Join([]string{ +func runClangTidy(env env, clangCmd *command, cSrcFile string, extraTidyFlags []string) error { + extraTidyFlags = append(extraTidyFlags, + "-checks="+strings.Join([]string{ "*", "-bugprone-narrowing-conversions", "-cppcoreguidelines-*", @@ -165,6 +176,7 @@ func runClangTidy(env env, clangCmd *command, cSrcFile string) error { "-modernize-*", "-readability-*", }, ",")) + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, extraTidyFlags...) if err != nil { return fmt.Errorf("calculating clang-tidy invocation: %v", err) } diff --git a/compiler_wrapper/clang_tidy_flag_test.go b/compiler_wrapper/clang_tidy_flag_test.go index d45d1bdd..54159cdc 100644 --- a/compiler_wrapper/clang_tidy_flag_test.go +++ b/compiler_wrapper/clang_tidy_flag_test.go @@ -333,6 +333,59 @@ func TestTriciumClangTidySkipsProtobufFiles(t *testing.T) { }) } +func testClangTidyFiltersClangTidySpecificFlagsWithPresetEnv(t *testing.T, ctx *testContext) { + addedFlag := "--some_clang_tidy=flag" + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } else if err := verifyArgCount(cmd, 0, addedFlag); err != nil { + t.Error(err) + } + return nil + case 2: + if err := verifyPath(cmd, "usr/bin/clang-tidy"); err != nil { + t.Error(err) + } else if verifyArgCount(cmd, 1, addedFlag); err != nil { + t.Error(err) + } + return nil + default: + return nil + } + } + cmd := ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, mainCc, "-clang-tidy-flag="+addedFlag))) + if ctx.cmdCount != 3 { + t.Errorf("expected 3 calls. Got: %d", ctx.cmdCount) + } + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } +} + +func TestClangTidyFiltersClangTidySpecificFlagsForTricium(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + testClangTidyFiltersClangTidySpecificFlagsWithPresetEnv(t, ctx) + }) +} + +func TestClangTidyFiltersClangTidySpecificFlags(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + testClangTidyFiltersClangTidySpecificFlagsWithPresetEnv(t, ctx) + }) +} + +func TestClangTidyFlagsAreFilteredFromGccInvocations(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + cmd := ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, mainCc, "-clang-tidy-flag=--foo"))) + if err := verifyArgCount(cmd, 0, ".*--foo.*"); err != nil { + t.Error(err) + } + }) +} + func withClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { withTestContext(t, func(ctx *testContext) { ctx.env = []string{"WITH_TIDY=1"} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 14de210a..a5d35a2c 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -89,53 +89,55 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int default: return 0, newErrorwithSourceLocf("unsupported compiler: %s", mainBuilder.target.compiler) } - } else if mainBuilder.target.compilerType == clangType { - cSrcFile, tidyMode := processClangTidyFlags(mainBuilder) - err := prepareClangCommand(mainBuilder) - if err != nil { - return 0, err - } - allowCCache := true - if tidyMode != tidyModeNone { - allowCCache = false - clangCmdWithoutGomaAndCCache := mainBuilder.build() - var err error - switch tidyMode { - case tidyModeTricium: - if cfg.triciumNitsDir == "" { - return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") - } - err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir) - case tidyModeAll: - err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile) - default: - panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode)) - } - + } else { + cSrcFile, tidyFlags, tidyMode := processClangTidyFlags(mainBuilder) + if mainBuilder.target.compilerType == clangType { + err := prepareClangCommand(mainBuilder) if err != nil { return 0, err } - } - if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil { - return 0, err - } - compilerCmd = mainBuilder.build() - } else { - if clangSyntax { - allowCCache := false - clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone()) - if err != nil { + allowCCache := true + if tidyMode != tidyModeNone { + allowCCache = false + clangCmdWithoutGomaAndCCache := mainBuilder.build() + var err error + switch tidyMode { + case tidyModeTricium: + if cfg.triciumNitsDir == "" { + return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") + } + err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags) + case tidyModeAll: + err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile, tidyFlags) + default: + panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode)) + } + + if err != nil { + return 0, err + } + } + if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil { return 0, err } - gccCmd, err := calcGccCommand(mainBuilder) + compilerCmd = mainBuilder.build() + } else { + if clangSyntax { + allowCCache := false + clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone()) + if err != nil { + return 0, err + } + gccCmd, err := calcGccCommand(mainBuilder) + if err != nil { + return 0, err + } + return checkClangSyntax(env, clangCmd, gccCmd) + } + compilerCmd, err = calcGccCommand(mainBuilder) if err != nil { return 0, err } - return checkClangSyntax(env, clangCmd, gccCmd) - } - compilerCmd, err = calcGccCommand(mainBuilder) - if err != nil { - return 0, err } } rusageLogfileName := getRusageLogFilename(env) -- cgit v1.2.3 From 120da3fec7feb6e2f85c0443406cbf753b16b448 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 22 Jul 2020 15:48:59 -0700 Subject: rust_tools: add a monitor for upstream gentoo commits + rust releases Apparently it's useful to watch upstream Gentoo's patches to dev-lang/rust, and it'd be nice in general if we were pinged for new Rust stable releases. This CL adds a tool to handle the alerting of all of that for us. BUG=None TEST=Ran in a few different ways with `--skip_email` Change-Id: Ie972872d597870c715266f88df50812b55e30c75 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2314745 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_watch.py | 351 ++++++++++++++++++++++++++++++++++++++++++ rust_tools/rust_watch_test.py | 202 ++++++++++++++++++++++++ 2 files changed, 553 insertions(+) create mode 100755 rust_tools/rust_watch.py create mode 100755 rust_tools/rust_watch_test.py diff --git a/rust_tools/rust_watch.py b/rust_tools/rust_watch.py new file mode 100755 index 00000000..b9ad7b82 --- /dev/null +++ b/rust_tools/rust_watch.py @@ -0,0 +1,351 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Checks for various upstream events with the Rust toolchain. + +Sends an email if something interesting (probably) happened. +""" + +# pylint: disable=cros-logging-import + +import argparse +import itertools +import json +import logging +import pathlib +import re +import shutil +import subprocess +import sys +import time +from typing import Any, Dict, Iterable, List, Optional, Tuple, NamedTuple + +from cros_utils import email_sender +from cros_utils import tiny_render + + +def gentoo_sha_to_link(sha: str) -> str: + """Gets a URL to a webpage that shows the Gentoo commit at `sha`.""" + return f'https://gitweb.gentoo.org/repo/gentoo.git/commit?id={sha}' + + +def send_email(subject: str, body: List[tiny_render.Piece]) -> None: + """Sends an email with the given title and body to... whoever cares.""" + email_sender.EmailSender().SendX20Email( + subject=subject, + identifier='rust-watch', + well_known_recipients=['cros-team'], + text_body=tiny_render.render_text_pieces(body), + html_body=tiny_render.render_html_pieces(body), + ) + + +class RustReleaseVersion(NamedTuple): + """Represents a version of Rust's stable compiler.""" + major: int + minor: int + patch: int + + @staticmethod + def from_string(version_string: str) -> 'RustReleaseVersion': + m = re.match(r'(\d+)\.(\d+)\.(\d+)', version_string) + if not m: + raise ValueError(f"{version_string!r} isn't a valid version string") + return RustReleaseVersion(*[int(x) for x in m.groups()]) + + def __str__(self) -> str: + return f'{self.major}.{self.minor}.{self.patch}' + + def to_json(self) -> str: + return str(self) + + @staticmethod + def from_json(s: str) -> 'RustReleaseVersion': + return RustReleaseVersion.from_string(s) + + +class State(NamedTuple): + """State that we keep around from run to run.""" + # The last Rust release tag that we've seen. + last_seen_release: RustReleaseVersion + + # We track Gentoo's upstream Rust ebuild. This is the last SHA we've seen + # that updates it. + last_gentoo_sha: str + + def to_json(self) -> Dict[str, Any]: + return { + 'last_seen_release': self.last_seen_release.to_json(), + 'last_gentoo_sha': self.last_gentoo_sha, + } + + @staticmethod + def from_json(s: Dict[str, Any]) -> 'State': + return State( + last_seen_release=RustReleaseVersion.from_json(s['last_seen_release']), + last_gentoo_sha=s['last_gentoo_sha'], + ) + + +def parse_release_tags(lines: Iterable[str]) -> Iterable[RustReleaseVersion]: + """Parses `git ls-remote --tags` output into Rust stable release versions.""" + refs_tags = 'refs/tags/' + for line in lines: + _sha, tag = line.split(None, 1) + tag = tag.strip() + # Each tag has an associated 'refs/tags/name^{}', which is the actual + # object that the tag points to. That's irrelevant to us. + if tag.endswith('^{}'): + continue + + if not tag.startswith(refs_tags): + continue + + short_tag = tag[len(refs_tags):] + # There are a few old versioning schemes. Ignore them. + if short_tag.startswith('0.') or short_tag.startswith('release-'): + continue + yield RustReleaseVersion.from_string(short_tag) + + +def fetch_most_recent_release() -> RustReleaseVersion: + """Fetches the most recent stable `rustc` version.""" + result = subprocess.run( + ['git', 'ls-remote', '--tags', 'https://github.com/rust-lang/rust'], + check=True, + stdin=None, + capture_output=True, + encoding='utf-8', + ) + tag_lines = result.stdout.strip().splitlines() + return max(parse_release_tags(tag_lines)) + + +class GitCommit(NamedTuple): + """Represents a single git commit.""" + sha: str + subject: str + + +def update_git_repo(git_dir: pathlib.Path) -> None: + """Updates the repo at `git_dir`, retrying a few times on failure.""" + for i in itertools.count(start=1): + result = subprocess.run( + ['git', 'fetch', 'origin'], + check=False, + cwd=str(git_dir), + stdin=None, + ) + + if not result.returncode: + break + + if i == 5: + # 5 attempts is too many. Something else may be wrong. + result.check_returncode() + + sleep_time = 60 * i + logging.error("Failed updating gentoo's repo; will try again in %ds...", + sleep_time) + time.sleep(sleep_time) + + +def get_new_gentoo_commits(git_dir: pathlib.Path, + most_recent_sha: str) -> List[GitCommit]: + """Gets commits to dev-lang/rust since `most_recent_sha`. + + Older commits come earlier in the returned list. + """ + commits = subprocess.run( + [ + 'git', + 'log', + '--format=%H %s', + f'{most_recent_sha}..origin/master', + '--', + 'dev-lang/rust', + ], + capture_output=True, + check=False, + cwd=str(git_dir), + encoding='utf-8', + ) + + if commits.returncode: + logging.error('Error getting new gentoo commits; stderr:\n%s', + commits.stderr) + commits.check_returncode() + + results = [] + for line in commits.stdout.strip().splitlines(): + sha, subject = line.strip().split(None, 1) + results.append(GitCommit(sha=sha, subject=subject)) + + # `git log` outputs things in newest -> oldest order. + results.reverse() + return results + + +def setup_gentoo_git_repo(git_dir: pathlib.Path) -> str: + """Sets up a gentoo git repo at the given directory. Returns HEAD.""" + subprocess.run( + [ + 'git', 'clone', 'https://anongit.gentoo.org/git/repo/gentoo.git', + str(git_dir) + ], + stdin=None, + check=True, + ) + + head_rev = subprocess.run( + ['git', 'rev-parse', 'HEAD'], + cwd=str(git_dir), + check=True, + stdin=None, + capture_output=True, + encoding='utf-8', + ) + return head_rev.stdout.strip() + + +def read_state(state_file: pathlib.Path) -> State: + """Reads state from the given file.""" + with state_file.open(encoding='utf-8') as f: + return State.from_json(json.load(f)) + + +def atomically_write_state(state_file: pathlib.Path, state: State) -> None: + """Writes state to the given file.""" + temp_file = pathlib.Path(str(state_file) + '.new') + with temp_file.open('w', encoding='utf-8') as f: + json.dump(state.to_json(), f) + temp_file.rename(state_file) + + +def maybe_compose_email(old_state: State, newest_release: RustReleaseVersion, + new_gentoo_commits: List[GitCommit] + ) -> Optional[Tuple[str, List[tiny_render.Piece]]]: + """Creates an email given our new state, if doing so is appropriate.""" + subject_pieces = [] + body_pieces = [] + + if newest_release > old_state.last_seen_release: + subject_pieces.append('new rustc release detected') + body_pieces.append(f'Rustc tag for v{newest_release} was found.') + + if new_gentoo_commits: + # Separate the sections a bit for prettier output. + if body_pieces: + body_pieces += [tiny_render.line_break, tiny_render.line_break] + + if len(new_gentoo_commits) == 1: + subject_pieces.append('new rust ebuild commit detected') + body_pieces.append('commit:') + else: + subject_pieces.append('new rust ebuild commits detected') + body_pieces.append('commits (newest first):') + + commit_lines = [] + for commit in new_gentoo_commits: + commit_lines.append([ + tiny_render.Link( + gentoo_sha_to_link(commit.sha), + commit.sha[:12], + ), + f': {commit.subject}', + ]) + + body_pieces.append(tiny_render.UnorderedList(commit_lines)) + + if not subject_pieces: + return None + + subject = '[rust-watch] ' + '; '.join(subject_pieces) + return subject, body_pieces + + +def main(argv: List[str]) -> None: + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--state_dir', required=True, help='Directory to store state in.') + parser.add_argument( + '--skip_email', action='store_true', help="Don't send an email.") + parser.add_argument( + '--skip_state_update', + action='store_true', + help="Don't update the state file. Doesn't apply to initial setup.") + opts = parser.parse_args(argv) + + state_dir = pathlib.Path(opts.state_dir) + state_file = state_dir / 'state.json' + gentoo_subdir = state_dir / 'upstream-gentoo' + if not state_file.exists(): + logging.info("state_dir isn't fully set up; doing that now.") + + # Could be in a partially set-up state. + if state_dir.exists(): + logging.info('incomplete state_dir detected; removing.') + shutil.rmtree(str(state_dir)) + + state_dir.mkdir(parents=True) + most_recent_release = fetch_most_recent_release() + most_recent_gentoo_commit = setup_gentoo_git_repo(gentoo_subdir) + atomically_write_state( + state_file, + State( + last_seen_release=most_recent_release, + last_gentoo_sha=most_recent_gentoo_commit, + ), + ) + # Running through this _should_ be a nop, but do it anyway. Should make any + # bugs more obvious on the first run of the script. + + prior_state = read_state(state_file) + logging.info('Last state was %r', prior_state) + + most_recent_release = fetch_most_recent_release() + logging.info('Most recent Rust release is %s', most_recent_release) + + logging.info('Fetching new commits from Gentoo') + update_git_repo(gentoo_subdir) + new_commits = get_new_gentoo_commits(gentoo_subdir, + prior_state.last_gentoo_sha) + logging.info('New commits: %r', new_commits) + + maybe_email = maybe_compose_email(prior_state, most_recent_release, + new_commits) + + if maybe_email is None: + logging.info('No updates to send') + else: + title, body = maybe_email + if opts.skip_email: + logging.info('Skipping sending email with title %r and contents\n%s', + title, tiny_render.render_html_pieces(body)) + else: + logging.info('Sending email') + send_email(title, body) + + if opts.skip_state_update: + logging.info('Skipping state update, as requested') + return + + newest_sha = ( + new_commits[-1].sha if new_commits else prior_state.last_gentoo_sha) + atomically_write_state( + state_file, + State( + last_seen_release=most_recent_release, + last_gentoo_sha=newest_sha, + ), + ) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/rust_tools/rust_watch_test.py b/rust_tools/rust_watch_test.py new file mode 100755 index 00000000..97d111fc --- /dev/null +++ b/rust_tools/rust_watch_test.py @@ -0,0 +1,202 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for rust_watch.py.""" + +# pylint: disable=cros-logging-import + +import logging +import pathlib +import subprocess +import time +import unittest +import unittest.mock + +import rust_watch +from cros_utils import tiny_render + + +class Test(unittest.TestCase): + """Tests.""" + + def _silence_logs(self): + """Silences all log output until the end of the current test.""" + + def should_log(_record): + return 0 + + logger = logging.root + logger.addFilter(should_log) + self.addCleanup(logger.removeFilter, should_log) + + def test_release_version_parsing(self): + self.assertEqual( + rust_watch.RustReleaseVersion.from_string('1.2.3'), + rust_watch.RustReleaseVersion(1, 2, 3), + ) + + def test_release_version_json_round_trips(self): + ver = rust_watch.RustReleaseVersion(1, 2, 3) + self.assertEqual( + rust_watch.RustReleaseVersion.from_json(ver.to_json()), ver) + + def test_state_json_round_trips(self): + state = rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 2, 3), + last_gentoo_sha='abc123', + ) + + self.assertEqual(rust_watch.State.from_json(state.to_json()), state) + + @unittest.mock.patch.object(subprocess, 'run') + @unittest.mock.patch.object(time, 'sleep') + def test_update_git_repo_tries_again_on_failure(self, sleep_mock, run_mock): + self._silence_logs() + + oh_no_error = ValueError('oh no') + + def check_returncode(): + raise oh_no_error + + run_call_count = 0 + + def run_sideeffect(*_args, **_kwargs): + nonlocal run_call_count + run_call_count += 1 + result = unittest.mock.Mock() + result.returncode = 1 + result.check_returncode = check_returncode + return result + + run_mock.side_effect = run_sideeffect + + with self.assertRaises(ValueError) as raised: + rust_watch.update_git_repo(pathlib.Path('/does/not/exist/at/all')) + + self.assertIs(raised.exception, oh_no_error) + self.assertEqual(run_call_count, 5) + + sleep_timings = [unittest.mock.call(60 * i) for i in range(1, 5)] + self.assertEqual(sleep_mock.mock_calls, sleep_timings) + + @unittest.mock.patch.object(subprocess, 'run') + def test_get_new_gentoo_commits_functions(self, run_mock): + returned = unittest.mock.Mock() + returned.returncode = 0 + returned.stdout = '\n'.join(( + 'abc123 newer commit', + 'abcdef and an older commit', + )) + run_mock.return_value = returned + results = rust_watch.get_new_gentoo_commits( + pathlib.Path('/does/not/exist/at/all'), 'defabc') + self.assertEqual(results, [ + rust_watch.GitCommit('abcdef', 'and an older commit'), + rust_watch.GitCommit('abc123', 'newer commit'), + ]) + + def test_compose_email_on_a_new_release(self): + new_release = rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 1, 0), + new_gentoo_commits=[], + ) + + self.assertEqual(new_release, ('[rust-watch] new rustc release detected', + ['Rustc tag for v1.1.0 was found.'])) + + def test_compose_email_on_a_new_gentoo_commit(self): + sha_a = 'a' * 40 + new_commit = rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 0, 0), + new_gentoo_commits=[ + rust_watch.GitCommit( + sha=sha_a, + subject='summary_a', + ), + ], + ) + + self.assertEqual(new_commit, + ('[rust-watch] new rust ebuild commit detected', [ + 'commit:', + tiny_render.UnorderedList([ + [ + tiny_render.Link( + rust_watch.gentoo_sha_to_link(sha_a), + sha_a[:12], + ), + ': summary_a', + ], + ]) + ])) + + def test_compose_email_on_multiple_events(self): + sha_a = 'a' * 40 + new_commit_and_release = rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 1, 0), + new_gentoo_commits=[ + rust_watch.GitCommit( + sha=sha_a, + subject='summary_a', + ), + ], + ) + + self.assertEqual( + new_commit_and_release, + ('[rust-watch] new rustc release detected; new rust ebuild commit ' + 'detected', [ + 'Rustc tag for v1.1.0 was found.', + tiny_render.line_break, + tiny_render.line_break, + 'commit:', + tiny_render.UnorderedList([ + [ + tiny_render.Link( + rust_watch.gentoo_sha_to_link(sha_a), + sha_a[:12], + ), + ': summary_a', + ], + ]), + ])) + + def test_compose_email_composes_nothing_when_no_new_updates_exist(self): + self.assertIsNone( + rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 0, 0), + new_gentoo_commits=[], + )) + + self.assertIsNone( + rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 1, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 0, 0), + new_gentoo_commits=[], + )) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From e8ef27352c43229116188d2df87e5b236713cb3e Mon Sep 17 00:00:00 2001 From: inglorion Date: Fri, 17 Jul 2020 17:17:14 -0700 Subject: compiler_wrapper: Updated instructions for updating the wrapper This change adds some more details on how to test and commit changes to the compiler wrapper. BUG=None TEST=Followed the steps locally to verify that they work. Change-Id: I5a3d644e92fd94ed3792a59a30f39db08053390d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2305371 Commit-Queue: Bob Haarman Tested-by: Bob Haarman Reviewed-by: George Burgess Reviewed-by: Jian Cai --- compiler_wrapper/README.md | 69 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/compiler_wrapper/README.md b/compiler_wrapper/README.md index e64f01b6..e55bb669 100644 --- a/compiler_wrapper/README.md +++ b/compiler_wrapper/README.md @@ -12,31 +12,72 @@ package, including the build script, and then build from there without a dependency on toolchain-utils itself. -## Update source files +## Testing Inside the Chroot -Copy over sources and `build.py` to Chrome OS: +To test updates to the wrapper locally: + +Run `install_compiler_wrapper.sh` to install the new wrapper in the chroot: ``` -(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update\_compiler\_wrapper.sh +(chroot) ~/trunk/src/third_party/toolchain-utils/compiler_wrapper/install_compiler_wrapper.sh ``` -`build.py` is called by these ebuilds: +Then perform the tests, e.g. build with the new compiler. + + +## Updating the Wrapper for Chrome OS + +To update the wrapper for everyone, the new wrapper configuration must be copied +into chromiumos-overlay, and new revisions of the gcc and llvm ebuilds must be +created. + +Copy over sources and `build.py` to chromiumos-overlay: +``` +(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update_compiler_wrapper.sh +``` -- third_party/chromiumos-overlay/sys-devel/llvm/llvm-11.0\_pre394483\_p20200618-r3.ebuild -- third_party/chromiumos-overlay/sys-devel/gcc/gcc-\*.ebuild +Rename chromiumos-overlay/sys-devel/llvm/llvm-${VERSION}.ebuild to the next +revision number. For example, if the current version is +11.0_pre394483_p20200618-r2: +``` +(chroot) cd ~/trunk/src/third_party/chromiumos-overlay +(chroot) git mv llvm-11.0_pre394483_p20200618-r2.ebuild llvm-11.0_pre394483_p20200618-r3.ebuild +``` -## Update compiler wrappers +Rename chromiumos-overlay/sys-devel/gcc/gcc-${VERSION}.ebuild to the next +revision number. For example, if the current version is 4.9.2-r254: +``` +(chroot) cd ~/trunk/src/third_party/chromiumos-overlay +(chroot) git mv sys-devel/gcc/gcc-4.9.2-r254.ebuild sys-devel/gcc/gcc-4.9.2-r255.ebuild ``` -(chroot) /mnt/host/source/src/third|_party/toolchain-utils/compiler\_wrapper/install\_compiler\_wrapper.sh + +Edit the new ebuild file and change the number at the end to match the new revision: ``` +-# If you need to force a cros_workon uprev, change this number (you can use next +-# uprev): 254 ++# If you need to force a cros_workon uprev, change this number (you can use next ++# uprev): 255 +``` + +Commit those changes together with the changes made by +`update_compiler_wrapper.sh`. + +The changes can then be reviewed and submitted through the normal process. + + +## Paths + +`build.py` is called by these ebuilds: + +- third_party/chromiumos-overlay/sys-devel/llvm/llvm-*.ebuild +- third_party/chromiumos-overlay/sys-devel/gcc/gcc-*.ebuild + Generated wrappers are stored here: - Sysroot wrapper with ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.ccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.ccache` - Sysroot wrapper without ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.noccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.noccache` - Clang host wrapper: - `/usr/bin/clang\_host\_wrapper` + `/usr/bin/clang_host_wrapper` - Gcc host wrapper: - `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host\_wrapper` - - + `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host_wrapper` -- cgit v1.2.3 From 4f29d442786192cced1564f4bbee43fdaa53908e Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Jul 2020 11:31:25 -0700 Subject: llvm_tools: remove future import Now that we're guaranteed to be on py3, this isn't needed. Mostly doing this to test a crbug feature. Fixed: 1109998 BUG=chromium:1109998 TEST=None Change-Id: I1f5d0c9c7c1297e9281be07ced4127e42546b3c8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321109 Tested-by: George Burgess Reviewed-by: Denis Nikitin --- llvm_tools/git_llvm_rev_test.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/llvm_tools/git_llvm_rev_test.py b/llvm_tools/git_llvm_rev_test.py index 775ab1e6..74280c5d 100755 --- a/llvm_tools/git_llvm_rev_test.py +++ b/llvm_tools/git_llvm_rev_test.py @@ -6,8 +6,6 @@ """Tests for git_llvm_rev.""" -from __future__ import print_function - import unittest import git_llvm_rev @@ -63,8 +61,8 @@ class Test(unittest.TestCase): def test_imaginary_revs_raise(self) -> None: with self.assertRaises(ValueError) as r: git_llvm_rev.translate_rev_to_sha( - get_llvm_config(), git_llvm_rev.Rev( - branch=MAIN_BRANCH, number=9999999)) + get_llvm_config(), + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=9999999)) self.assertIn('Try updating your tree?', str(r.exception)) -- cgit v1.2.3 From 92596836d539e53bb14e659cbaec5206d74f0c56 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 27 Jul 2020 15:33:05 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R86-13310.26-1595842968 Update chromeos-kernel-4_4 to R86-13352.0-1595842406 Update chromeos-kernel-4_14 to R86-13310.26-1595842760 Update chromeos-kernel-4_19 to R86-13354.0-1595842495 BUG=None TEST=None Change-Id: I329100ceb860288c95d6abbf71270eda774f126f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321277 Tested-by: Tiancong Wang Reviewed-by: Tiancong Wang Commit-Queue: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 6d775d58..62fe5c67 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13310.18-1595237847" + "name": "R86-13310.26-1595842968" }, "chromeos-kernel-4_4": { - "name": "R86-13333.0-1595237618" + "name": "R86-13352.0-1595842406" }, "chromeos-kernel-4_14": { - "name": "R86-13310.18-1595237997" + "name": "R86-13310.26-1595842760" }, "chromeos-kernel-4_19": { - "name": "R86-13329.0-1595238172" + "name": "R86-13354.0-1595842495" } } -- cgit v1.2.3 From d81dc939e7a1778b1e93f16f022c8634f509c9a8 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 27 Jul 2020 15:27:27 -0700 Subject: afdo_tools: Update script to sort profiles by timestamp Our update_kernel_afdo tries to get all the profiles with gsutil. However, the command gives results by sorting the profile name, so the last profile is not necessarily the newest. A counter example is: R86-13310.3-1594633089.gcov.xz appears after R86-13310.18-1595237847.gcov.xz So this patch sorts the results of gsutil by the timestamp and grep all the master profiles (otherwise we might get some beta/stable profiles). BUG=None TEST=Tool can be used to generate kernel_afdo.json CL Change-Id: I9c9f6ee2ab446f5e07ea577e11f0c3d562bff5e3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321122 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- afdo_tools/update_kernel_afdo | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index aac891cb..64e5e477 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash # Due to crbug.com/1081332, we need to update AFDO metadata # manually. This script performs a few checks and generates a @@ -24,6 +24,7 @@ # set -eu +set -o pipefail GS_BASE=gs://chromeos-prebuilt/afdo-job/vetted/kernel KVERS="3.18 4.4 4.14 4.19" @@ -43,11 +44,17 @@ else expected_time=$(date +%s -d "last Monday") fi +# Get the current master branch number (using beta + 1) +beta=$(git ls-remote -h https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay | sed -n -e "s/^.*release-R\([0-9][0-9]*\).*$/\1/p" | sort -g | tail -1) +master="$(($beta + 1))" + json="{" sep="" for kver in $KVERS do - latest=$(gsutil ls -l "$GS_BASE/$kver/" | tail -n 2 | head -n 1) + # Sort the gs output by timestamp (default ordering is by name, so + # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) + latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | grep "R${master}" | tail -1) # Verify that the file has the expected date. file_time=$(echo "$latest" | awk '{print $2}') -- cgit v1.2.3 From 0869ed00c33f5ca17553cb84c75f82dfed280c18 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 27 Jul 2020 16:27:32 -0700 Subject: llvm_tools: check for uncommited changes before cherry-picks Exit when uncommited changes in chromiumos-overlay repo is detected. BUG=chromium:1057428 TEST=local tests. Change-Id: I6dacfb67028036b415672c8fba622b49c4ae8b76 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321560 Tested-by: Jian Cai Reviewed-by: George Burgess Reviewed-by: Luis Lozano --- llvm_tools/cherrypick_cl.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py index 78330d19..9e306725 100755 --- a/llvm_tools/cherrypick_cl.py +++ b/llvm_tools/cherrypick_cl.py @@ -170,32 +170,34 @@ def main(): help='Automatically create a CL if specified') args = parser.parse_args() - llvm_config = git_llvm_rev.LLVMConfig( - remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) - llvm_symlink = chroot.ConvertChrootPathsToAbsolutePaths( args.chroot_path, chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm']))[0] + llvm_symlink_dir = os.path.dirname(llvm_symlink) + + git_status = subprocess.check_output(['git', 'status', '-s'], + cwd=llvm_symlink_dir, + encoding='utf-8') + if git_status: + raise ValueError('Uncommited changes detected in %s' % + os.path.dirname(os.path.dirname(llvm_symlink_dir))) + start_sha = args.start_sha if start_sha == 'llvm': - start_sha = parse_ebuild_for_assignment( - os.path.dirname(llvm_symlink), 'LLVM_HASH') + start_sha = parse_ebuild_for_assignment(llvm_symlink_dir, 'LLVM_HASH') elif start_sha == 'llvm-next': - start_sha = parse_ebuild_for_assignment( - os.path.dirname(llvm_symlink), 'LLVM_NEXT_HASH') + start_sha = parse_ebuild_for_assignment(llvm_symlink_dir, 'LLVM_NEXT_HASH') logging.info('Base llvm hash == %s', start_sha) + llvm_config = git_llvm_rev.LLVMConfig( + remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) + start_sha = resolve_llvm_ref(llvm_config.dir, start_sha) start_rev = git_llvm_rev.translate_sha_to_rev(llvm_config, start_sha) if args.create_cl: branch = 'cherry-pick' - symlink = os.path.dirname( - chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm'])[0]) - symlink = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path, - [symlink])[0] - symlink_dir = os.path.dirname(symlink) - git.CreateBranch(symlink_dir, branch) + git.CreateBranch(llvm_symlink_dir, branch) symlinks_to_uprev = [] commit_messages = [ 'llvm: cherry-pick CLs from upstream\n', @@ -221,9 +223,9 @@ def main(): relative_patches_dir = 'cherry' if package == 'llvm' else '' patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) logging.info('Cherrypicking %s (%s) into %s', rev, sha, package) + add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, start_rev, llvm_config.dir, rev, sha, package) - if args.create_cl: symlinks_to_uprev.extend(symlinks) commit_messages.extend([ @@ -240,8 +242,8 @@ def main(): for symlink in symlinks_to_uprev: update_chromeos_llvm_hash.UprevEbuildSymlink(symlink) subprocess.check_output(['git', 'add', '--all'], cwd=symlink_dir) - git.UploadChanges(symlink_dir, branch, commit_messages) - git.DeleteBranch(symlink_dir, branch) + git.UploadChanges(llvm_symlink_dir, branch, commit_messages) + git.DeleteBranch(llvm_symlink_dir, branch) if __name__ == '__main__': -- cgit v1.2.3 From e1db85555d7b3e7eb8ed5e43ac7debd65215027d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Jul 2020 16:47:53 -0700 Subject: llvm_tools: clarify that syncing all of llvm is only done once There was some confusion about the intended frequency of LLVM syncs. Adding a bit to the "syncing" message should hopefully clear that up. BUG=None TEST=None Change-Id: I2454267602d9eaab79073882b172d61b3cb98daa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321565 Reviewed-by: Luis Lozano Tested-by: Luis Lozano --- llvm_tools/get_llvm_hash.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm_tools/get_llvm_hash.py b/llvm_tools/get_llvm_hash.py index 4200cffe..4c479962 100755 --- a/llvm_tools/get_llvm_hash.py +++ b/llvm_tools/get_llvm_hash.py @@ -125,7 +125,8 @@ def GetAndUpdateLLVMProjectInLLVMTools(): if not os.path.isdir(abs_path_to_llvm_project_dir): print( - 'Checking out LLVM from scratch. This could take a while...', + 'Checking out LLVM from scratch. This could take a while...\n' + '(This should only need to be done once, though.)', file=sys.stderr) os.mkdir(abs_path_to_llvm_project_dir) -- cgit v1.2.3 From d1a9a25c3b25e5eb3623c2ca1f5428673ca2ee37 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 29 Jul 2020 18:03:33 -0700 Subject: compiler_wrapper: add -fexperimental-new-pass-manager LLVM is currently build with DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=ON on Chrome OS. This is however not reflected in clang crash diagnoses. Adding -fexperimental-new-pass-manager to help with reproducibility on 4c. BUG=chromium:1111103 TEST=CQ tests. Change-Id: Ie01431dff397e982469e29c9132e21374354762d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2327414 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/config.go | 3 +++ compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 + .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_path.json | 12 ++++++++++++ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 +++++++ .../testdata/cros_clang_host_golden/clangtidy.json | 8 ++++++++ .../cros_clang_host_golden/force_disable_werror.json | 5 +++++ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../cros_hardened_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/clang_specific_args.json | 7 +++++++ .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../testdata/cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_noccache_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_nonhardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_nonhardened_golden/clang_path.json | 12 ++++++++++++ .../cros_nonhardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_nonhardened_golden/clang_specific_args.json | 7 +++++++ .../clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++++++ .../cros_nonhardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_nonhardened_golden/gcc_clang_syntax.json | 4 ++++ 40 files changed, 271 insertions(+) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 0fc7336f..546a0e11 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -136,6 +136,7 @@ var crosHardenedConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -167,6 +168,7 @@ var crosNonHardenedConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -204,6 +206,7 @@ var crosHostConfig = &config{ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index ebc55d49..c40faf67 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -36,6 +36,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -84,6 +85,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -135,6 +137,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ], diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 786be389..2870f96f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -27,6 +27,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -62,6 +63,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -97,6 +99,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -132,6 +135,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -167,6 +171,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -202,6 +207,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -237,6 +243,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -272,6 +279,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -307,6 +315,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 813f9c3f..3bae0706 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -26,6 +26,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index 11bb939c..b8048024 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -26,6 +26,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -60,6 +61,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -94,6 +96,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -128,6 +131,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -162,6 +166,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -196,6 +201,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -230,6 +236,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -264,6 +271,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -298,6 +306,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 04f1a730..8eb8d5a4 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -26,6 +26,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -100,6 +102,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -137,6 +140,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -181,6 +185,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -230,6 +235,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -279,6 +285,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -318,6 +325,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -352,6 +360,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -386,6 +395,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -420,6 +430,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -457,6 +468,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 6ba5c97a..8dc90e25 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -28,6 +28,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -65,6 +66,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -102,6 +104,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -139,6 +142,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -175,6 +179,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -213,6 +218,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -251,6 +257,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -287,6 +294,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 2af36665..02e3cec6 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -37,6 +37,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -72,6 +73,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion" @@ -108,6 +110,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion" @@ -144,6 +147,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -180,6 +184,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -216,6 +221,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -252,6 +258,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 28022243..44c58f84 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -42,6 +42,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -114,6 +116,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -135,6 +138,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -188,6 +192,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -212,6 +217,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -266,6 +272,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -287,6 +294,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 2cb74e98..fb854019 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -29,6 +29,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -66,6 +67,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -89,6 +91,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", @@ -130,6 +133,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -153,6 +157,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 36624783..2302669a 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index e7eab203..49ac5646 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,6 +29,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -131,6 +133,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -182,6 +185,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -284,6 +289,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -386,6 +393,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -437,6 +445,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 786d3326..6fc2b8e7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -126,6 +128,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -175,6 +178,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,6 +228,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -273,6 +278,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -322,6 +328,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,6 +378,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +428,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 1fe980a7..6ba05ab1 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 0a94e86c..a9bd08c4 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,6 +30,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,6 +82,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -183,6 +186,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -285,6 +290,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -337,6 +343,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -387,6 +394,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 5add66fb..0535df12 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,6 +39,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,6 +90,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -140,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -191,6 +194,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -242,6 +246,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -293,6 +298,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -344,6 +350,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index f30920d6..306873c9 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,6 +116,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,6 +162,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -208,6 +211,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -257,6 +261,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -305,6 +310,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index eae5c3d9..59642459 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index d415fb78..23cb8f59 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 576f4b69..9cf7ab2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 36624783..2302669a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 1fe980a7..6ba05ab1 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index eae5c3d9..59642459 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index d415fb78..23cb8f59 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 576f4b69..9cf7ab2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index f31bbe96..48b28521 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,6 +37,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,6 +95,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -154,6 +156,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index b2cdeb46..e5c37c89 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -119,6 +121,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,6 +168,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,6 +222,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,6 +282,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -383,6 +390,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,6 +434,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +478,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -512,6 +522,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -558,6 +569,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index eae5c3d9..59642459 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index d01ceac3..9510bfc3 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,6 +30,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,6 +77,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -108,6 +110,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -158,6 +161,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -190,6 +194,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index e9f5e64a..723c03c6 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,6 +97,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +166,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -216,6 +219,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 4002d2f7..06f5420c 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -35,6 +35,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -88,6 +89,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -144,6 +146,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index 3946b2b1..bf851e46 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -69,6 +70,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -112,6 +114,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -155,6 +158,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", @@ -199,6 +203,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -242,6 +247,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", @@ -286,6 +292,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", @@ -330,6 +337,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -373,6 +381,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index d0e8c521..06abf6e4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -25,6 +25,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -66,6 +67,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -107,6 +109,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -148,6 +151,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -190,6 +194,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -231,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -273,6 +279,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -315,6 +322,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -356,6 +364,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index b224b952..ce071110 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -25,6 +25,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -69,6 +70,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -113,6 +115,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -157,6 +160,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -208,6 +212,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -264,6 +269,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -315,6 +321,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -361,6 +368,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -402,6 +410,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -443,6 +452,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -484,6 +494,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -528,6 +539,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 609bec35..3a29fb7f 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -71,6 +72,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -115,6 +117,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -159,6 +162,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -202,6 +206,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -247,6 +252,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -292,6 +298,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -335,6 +342,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index e84e1491..dc5b53a1 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -36,6 +36,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -78,6 +79,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", @@ -121,6 +123,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -207,6 +211,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -250,6 +255,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -293,6 +299,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 9c90d35b..a2ac55b4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -56,6 +56,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -100,6 +101,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -137,6 +139,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -179,6 +182,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-stack-protector", "-D__KERNEL__", "main.cc", @@ -223,6 +227,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", @@ -267,6 +272,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index c340e895..2e73f74e 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -40,6 +40,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -62,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -114,6 +116,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -137,6 +140,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -191,6 +195,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -217,6 +222,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -272,6 +278,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -295,6 +302,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 2ddb3514..e4bc550c 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -72,6 +73,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -102,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -150,6 +153,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -180,6 +184,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index d21d2179..a3cabd88 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -25,6 +25,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -86,6 +87,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -142,6 +144,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -186,6 +189,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", -- cgit v1.2.3 From f30ddd44636b4767889080bbf914cbea5f322258 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Wed, 29 Jul 2020 16:05:07 -0700 Subject: default_remotes: Update toolchain DUT names BUG=b:153872557 TEST=None Change-Id: Ibc9f16d253ee9bd113fc654846462e647dc0594c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2327953 Tested-by: Tiancong Wang Reviewed-by: George Burgess Commit-Queue: George Burgess Auto-Submit: Tiancong Wang --- crosperf/default_remotes | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/crosperf/default_remotes b/crosperf/default_remotes index 7b59c2af..cc7f33ef 100644 --- a/crosperf/default_remotes +++ b/crosperf/default_remotes @@ -1,8 +1,9 @@ -elm : chromeos2-row9-rack8-host19.cros chromeos2-row9-rack8-host21.cros -bob : chromeos2-row9-rack7-host1.cros chromeos2-row9-rack7-host3.cros -chell : chromeos2-row9-rack8-host3.cros chromeos2-row9-rack8-host5.cros -kefka : chromeos2-row9-rack9-host21.cros chromeos2-row9-rack8-host1.cros -lulu : chromeos2-row9-rack8-host9.cros chromeos2-row9-rack8-host7.cros -nautilus : chromeos2-row9-rack7-host11.cros chromeos2-row9-rack7-host9.cros -snappy : chromeos2-row9-rack7-host5.cros chromeos2-row9-rack7-host7.cros -veyron_minnie : chromeos2-row9-rack8-host15.cros chromeos2-row9-rack8-host17.cros +bob : chromeos2-row10-rack9-host1.cros chromeos2-row10-rack9-host3.cros +coral : chromeos2-row9-rack9-host9.cros chromeos2-row9-rack9-host11.cros chromeos2-row9-rack9-host13.cros +elm : chromeos2-row10-rack9-host19.cros chromeos2-row10-rack9-host21.cros +chell : chromeos2-row9-rack9-host1.cros chromeos2-row9-rack9-host3.cros +kefka : chromeos2-row9-rack9-host21.cros chromeos2-row10-rack9-host13.cros +lulu : chromeos2-row9-rack9-host5.cros chromeos2-row9-rack9-host7.cros +nautilus : chromeos2-row10-rack9-host9.cros chromeos2-row10-rack9-host11.cros +snappy : chromeos2-row10-rack9-host5.cros chromeos2-row10-rack9-host7.cros +veyron_minnie : chromeos2-row10-rack9-host15.cros chromeos2-row10-rack9-host17.cros -- cgit v1.2.3 From 9726f506eb43c95e3abc8df3253d42291c9d5d7b Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Tue, 28 Jul 2020 15:02:33 -0700 Subject: llvm_tools: add a tool to bisect clang crashes Add a tool that downloads clang crash diagnoses from chrome-toolchain-artifacts/clang-crash-dignoses and send them to 4c server for bisection. BUG=chromium:1056904 TEST=local tests Change-Id: I75081259705c236a20173fc591d080c6b0504cc5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2325008 Tested-by: Jian Cai Reviewed-by: George Burgess --- llvm_tools/README.md | 18 +++++ llvm_tools/bisect_clang_crashes.py | 109 ++++++++++++++++++++++++++++ llvm_tools/bisect_clang_crashes_unittest.py | 92 +++++++++++++++++++++++ 3 files changed, 219 insertions(+) create mode 100755 llvm_tools/bisect_clang_crashes.py create mode 100755 llvm_tools/bisect_clang_crashes_unittest.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 547a3056..9c4a9c08 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -550,3 +550,21 @@ PYTHONPATH=../ ./nightly_revert_checker.py \ --llvm_dir llvm-project-copy \ --chromeos_dir ../../../../ ``` + +### `bisect_clang_crashes.py` + +This script downloads clang crash diagnoses from +gs://chrome-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for +bisectiton. + +Usage example: + +``` +$ ./bisect_clang_crashes.py --4c 4c-cli --state_file ./output/state.json +``` + +The above command downloads the artifacts of clang crash diagnoses and send them +to 4c server for bisection. The summary of submitted jobs will be saved in +output/state.json under the current path. The output directory will be created +automatically if it does not exist yet. To get more information of the submitted +jobs, please refer to go/4c-cli. diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py new file mode 100755 index 00000000..e7ce96e4 --- /dev/null +++ b/llvm_tools/bisect_clang_crashes.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Fetches and submits the artifacts from Chrome OS toolchain's crash bucket. +""" + +# pylint: disable=cros-logging-import + +import argparse +import glob +import json +import logging +import os +import os.path +import shutil +import subprocess +import sys + +import chroot + + +def get_artifacts(pattern): + results = subprocess.check_output(['gsutil', 'ls', pattern], + stderr=subprocess.STDOUT, + encoding='utf-8') + return [l.strip() for l in results.splitlines()] + + +def get_crash_reproducers(working_dir): + results = [] + for src in [ + f for f in glob.glob('%s/*.c*' % working_dir) + if f.split('.')[-1] in ['c', 'cc', 'cpp'] + ]: + script = '.'.join(src.split('.')[:-1]) + '.sh' + if not os.path.exists(script): + logging.warning('could not find the matching script of %s', src) + else: + results.append((src, script)) + return results + + +def main(argv): + chroot.VerifyOutsideChroot() + logging.basicConfig( + format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', + level=logging.INFO, + ) + cur_dir = os.path.dirname(os.path.abspath(__file__)) + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--4c', dest='forcey', required=True, help='Path to a 4c client binary') + parser.add_argument( + '--state_file', + default=os.path.join(cur_dir, 'chromeos-state.json'), + help='The path to the state file.') + parser.add_argument( + '--nocleanup', + action='store_false', + dest='cleanup', + help='Keep temporary files created after the script finishes.') + opts = parser.parse_args(argv) + + state_file = os.path.abspath(opts.state_file) + os.makedirs(os.path.dirname(state_file), exist_ok=True) + temporary_directory = '/tmp/bisect_clang_crashes' + os.makedirs(temporary_directory, exist_ok=True) + urls = get_artifacts('gs://chromeos-toolchain-artifacts/clang-crash-diagnoses' + '/**/*clang_crash_diagnoses.tar.xz') + visited = {} + if os.path.exists(state_file): + buildbucket_ids = {url.split('/')[-2] for url in urls} + with open(state_file, encoding='utf-8') as f: + data = json.load(f) + visited = {k: v for k, v in data.items() if k in buildbucket_ids} + for url in urls: + splits = url.split('/') + buildbucket_id = splits[-2] + # Skip the builds that has been processed + if buildbucket_id in visited: + continue + visited[buildbucket_id] = '%s' % url + dest_dir = os.path.join(temporary_directory, buildbucket_id) + dest_file = os.path.join(dest_dir, splits[-1]) + subprocess.check_output(['gsutil', 'cp', url, dest_file]) + subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) + + for src, script in get_crash_reproducers(dest_dir): + subprocess.check_output( + [ + opts.forcey, 'reduce', '-wait=false', '-note', + '%s:%s' % (url, src), '-sh_file', script, '-src_file', src + ], + encoding='utf-8', + ) + + tmp_state_file = state_file + '.tmp' + with open(tmp_state_file, 'w', encoding='utf-8') as f: + json.dump(visited, f, indent=2) + os.rename(tmp_state_file, state_file) + if opts.cleanup: + shutil.rmtree(temporary_directory) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/llvm_tools/bisect_clang_crashes_unittest.py b/llvm_tools/bisect_clang_crashes_unittest.py new file mode 100755 index 00000000..66923ffc --- /dev/null +++ b/llvm_tools/bisect_clang_crashes_unittest.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for bisect_clang_crashes.""" + +# pylint: disable=cros-logging-import +import glob +import logging +import os.path +import subprocess +import unittest +import unittest.mock as mock + +import bisect_clang_crashes + + +class Test(unittest.TestCase): + """Tests for bisect_clang_crashes.""" + + class _SilencingFilter(object): + """Silences all log messages. + + Also collects info about log messages that would've been emitted. + """ + + def __init__(self): + self.messages = [] + + def filter(self, record): + self.messages.append(record.getMessage()) + return 0 + + @mock.patch.object(subprocess, 'check_output') + def test_get_artifacts(self, mock_gsutil_ls): + pattern = 'gs://chromeos-toolchain-artifacts/clang-crash-diagnoses/' \ + '**/*clang_crash_diagnoses.tar.xz' + mock_gsutil_ls.return_value = 'artifact1\nartifact2\nartifact3' + results = bisect_clang_crashes.get_artifacts(pattern) + self.assertEqual(results, ['artifact1', 'artifact2', 'artifact3']) + mock_gsutil_ls.assert_called_once_with(['gsutil', 'ls', pattern], + stderr=subprocess.STDOUT, + encoding='utf-8') + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(glob, 'glob') + def test_get_crash_reproducers_succeed(self, mock_file_search, + mock_file_check): + working_dir = 'SomeDirectory' + mock_file_search.return_value = ['a.c', 'b.cpp', 'c.cc'] + mock_file_check.side_effect = [True, True, True] + results = bisect_clang_crashes.get_crash_reproducers(working_dir) + mock_file_search.assert_called_once_with('%s/*.c*' % working_dir) + self.assertEqual(mock_file_check.call_count, 3) + self.assertEqual(mock_file_check.call_args_list[0], mock.call('a.sh')) + self.assertEqual(mock_file_check.call_args_list[1], mock.call('b.sh')) + self.assertEqual(mock_file_check.call_args_list[2], mock.call('c.sh')) + self.assertEqual(results, [('a.c', 'a.sh'), ('b.cpp', 'b.sh'), + ('c.cc', 'c.sh')]) + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(glob, 'glob') + def test_get_crash_reproducers_no_matching_script(self, mock_file_search, + mock_file_check): + + def silence_logging(): + root = logging.getLogger() + filt = self._SilencingFilter() + root.addFilter(filt) + self.addCleanup(root.removeFilter, filt) + return filt + + log_filter = silence_logging() + working_dir = 'SomeDirectory' + mock_file_search.return_value = ['a.c', 'b.cpp', 'c.cc'] + mock_file_check.side_effect = [True, False, True] + results = bisect_clang_crashes.get_crash_reproducers(working_dir) + mock_file_search.assert_called_once_with('%s/*.c*' % working_dir) + self.assertEqual(mock_file_check.call_count, 3) + self.assertEqual(mock_file_check.call_args_list[0], mock.call('a.sh')) + self.assertEqual(mock_file_check.call_args_list[1], mock.call('b.sh')) + self.assertEqual(mock_file_check.call_args_list[2], mock.call('c.sh')) + self.assertEqual(results, [('a.c', 'a.sh'), ('c.cc', 'c.sh')]) + self.assertTrue( + any('could not find the matching script of b.cpp' in x + for x in log_filter.messages), log_filter.messages) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 9f9902361b91ce750a073b4b85476701aafb165e Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 3 Aug 2020 17:00:42 -0700 Subject: afdo_metadata: Publish the new kernel profiles. Update chromeos-kernel-3_18 to R86-13371.0-1596447357 Update chromeos-kernel-4_4 to R86-13371.0-1596447182 Update chromeos-kernel_4_14 to R86-13371.0-1596447453 Update chromeeos-kernel-4_19 to R86-13374.0-1596447620 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I902516a74b1b2a308a4e92aca79d31c0b9148eb8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2335787 Reviewed-by: Tiancong Wang Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 62fe5c67..c72952d2 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13310.26-1595842968" + "name": "R86-13371.0-1596447357" }, "chromeos-kernel-4_4": { - "name": "R86-13352.0-1595842406" + "name": "R86-13371.0-1596447182" }, "chromeos-kernel-4_14": { - "name": "R86-13310.26-1595842760" + "name": "R86-13371.0-1596447453" }, "chromeos-kernel-4_19": { - "name": "R86-13354.0-1595842495" + "name": "R86-13374.0-1596447620" } } -- cgit v1.2.3 From 811b580723a9c10f57ceca934c9f0b3a847baa3c Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 6 Aug 2020 08:14:34 -0700 Subject: Update cleanup script to get chrome temp files too. BUG=None TEST=Tested updated script on chrotomation3 Change-Id: Ic7c684e2a6fcb52596cbdc9f308e0ca1fbb6f05b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2340400 Commit-Queue: Caroline Tice Tested-by: Caroline Tice Reviewed-by: George Burgess --- auto_delete_nightly_test_data.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index e40b95c2..0cda051f 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -209,6 +209,25 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): return ce.ChrootRunCommand( chromeos_root, abandon_cls_cmd, print_to_console=False) +def CleanChromeTelemetryTmpFiles(dry_run): + rv = 0 + ce = command_executer.GetCommandExecuter() + tmp_dir = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos', '.cache', + 'distfiles', 'target', 'chrome-src-internal', 'src', + 'tmp'); + cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' + if dry_run: + print(f'Going to execute:\n{shlex.quote(cmd)}') + else: + rv = ce.RunCommand(cmd, print_to_console=False) + if rv == 0: + print(f'Successfully cleaned chrome tree tmp directory ' + '"{shlex.quote(tmp_dir)}".' + else: + print(f'Some directories were not removed under chrome tree ' + 'tmp directory -"{shlex.quote(tmp_dir)}".') + return rv + def Main(argv): """Delete nightly test data directories, tmps and test images.""" @@ -239,7 +258,10 @@ def Main(argv): # Clean CLs that are not updated in last 2 weeks. rv3 = CleanOldCLs('14', options.dry_run) - return rv + rv2 + rv3 + # Clean telemetry temporaries from chrome source tree inside chroot. + rv4 = CleanChromeTelemetryTmpFiles(options.dry_run) + + return rv + rv2 + rv3 + rv4 if __name__ == '__main__': -- cgit v1.2.3 From 2953a41a804820ea859e484fd8e28aa7e9ea9de8 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 6 Aug 2020 11:11:52 -0700 Subject: Update cleanup script to get chrome temp files too. Final patch didn't get uploaded last time; here it is. BUG=None TEST=Tested updaed script on chrotomation3. Change-Id: I8abccb8c5ed98b7086dc03bc05bd3d75ae8b6734 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2341096 Reviewed-by: George Burgess Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- auto_delete_nightly_test_data.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 0cda051f..03d59b28 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -16,6 +16,7 @@ import datetime import os import re import shutil +import shlex import sys import time @@ -217,15 +218,15 @@ def CleanChromeTelemetryTmpFiles(dry_run): 'tmp'); cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' if dry_run: - print(f'Going to execute:\n{shlex.quote(cmd)}') + print(f'Going to execute:\n{cmd}') else: rv = ce.RunCommand(cmd, print_to_console=False) if rv == 0: print(f'Successfully cleaned chrome tree tmp directory ' - '"{shlex.quote(tmp_dir)}".' + f'{tmp_dir!r} .') else: print(f'Some directories were not removed under chrome tree ' - 'tmp directory -"{shlex.quote(tmp_dir)}".') + f'tmp directory {tmp_dir!r}.') return rv -- cgit v1.2.3 From 0a377f4bba0a15d994624bf078b8120ac7cdf5ce Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 5 Aug 2020 15:03:36 -0700 Subject: compiler_wrapper: dump tricium clang-tidy crash information This CL has us dump extra info when we observe a crash while using `WITH_TIDY=tricium`. In particular: - We'll now try to generate a -E'ed source file, and stash that in a subdirectory of our general crash_diagnostics directory. - Our JSON object that represents clang-tidy output has metadata about the aforementioned crash file, if it was generated. BUG=chromium:1113442 TEST=`go test`; ran locally with a crashy clang-tidy Change-Id: I577e5ec8e990af3b7cf1d8a9fea347582d5b227b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2343974 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/clang_tidy_flag.go | 70 +++++++++++++++++++++++++------- compiler_wrapper/clang_tidy_flag_test.go | 57 ++++++++++++++++++++++++++ compiler_wrapper/compiler_wrapper.go | 2 +- compiler_wrapper/config.go | 33 +++++++++------ compiler_wrapper/testutil_test.go | 1 + 5 files changed, 134 insertions(+), 29 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index 2d97ddd3..01387fd6 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -9,12 +9,15 @@ import ( "fmt" "io/ioutil" "os" + "path" "path/filepath" "strings" ) type useTidyMode int +const clangTidyCrashSubstring = "PLEASE submit a bug report" + const ( tidyModeNone useTidyMode = iota tidyModeAll @@ -95,7 +98,7 @@ func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFl }, nil } -func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string) error { +func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string, crashArtifactsDir string) error { if err := os.MkdirAll(fixesDir, 0777); err != nil { return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err) } @@ -128,13 +131,58 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin return err } + type crashOutput struct { + CrashReproducerPath string `json:"crash_reproducer_path"` + Stdstreams string `json:"stdstreams"` + } + type metadata struct { - Args []string `json:"args"` - Executable string `json:"executable"` - ExitCode int `json:"exit_code"` - LintTarget string `json:"lint_target"` - Stdstreams string `json:"stdstreams"` - Wd string `json:"wd"` + Args []string `json:"args"` + CrashOutput *crashOutput `json:"crash_output"` + Executable string `json:"executable"` + ExitCode int `json:"exit_code"` + LintTarget string `json:"lint_target"` + Stdstreams string `json:"stdstreams"` + Wd string `json:"wd"` + } + + meta := &metadata{ + Args: clangTidyCmd.Args, + CrashOutput: nil, + Executable: clangTidyCmd.Path, + ExitCode: exitCode, + LintTarget: cSrcFile, + Stdstreams: stdstreams.String(), + Wd: env.getwd(), + } + + // Sometimes, clang-tidy crashes. Unfortunately, these don't get funnelled through the + // standard clang crash machinery. :(. Try to work with our own. + if crashArtifactsDir != "" && strings.Contains(meta.Stdstreams, clangTidyCrashSubstring) { + tidyCrashArtifacts := path.Join(crashArtifactsDir, "clang-tidy") + if err := os.MkdirAll(tidyCrashArtifacts, 0777); err != nil { + return fmt.Errorf("creating crash artifacts directory at %q: %v", tidyCrashArtifacts, err) + } + + f, err := ioutil.TempFile(tidyCrashArtifacts, "crash-") + if err != nil { + return fmt.Errorf("making tempfile for crash output: %v", err) + } + f.Close() + + reproCmd := &command{} + *reproCmd = *clangCmd + reproCmd.Args = append(reproCmd.Args, "-E", "-o", f.Name()) + + reproOut := &strings.Builder{} + _, err = wrapSubprocessErrorWithSourceLoc(reproCmd, env.run(reproCmd, nil, reproOut, reproOut)) + if err != nil { + return fmt.Errorf("attempting to produce a clang-tidy crash reproducer: %v", err) + } + meta.CrashOutput = &crashOutput{ + CrashReproducerPath: f.Name(), + Stdstreams: reproOut.String(), + } } f, err = os.Create(fixesMetadataPath) @@ -142,14 +190,6 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin return fmt.Errorf("creating fixes metadata: %v", err) } - meta := &metadata{ - Args: clangTidyCmd.Args, - Executable: clangTidyCmd.Path, - ExitCode: exitCode, - LintTarget: cSrcFile, - Stdstreams: stdstreams.String(), - Wd: env.getwd(), - } if err := json.NewEncoder(f).Encode(meta); err != nil { return fmt.Errorf("writing fixes metadata: %v", err) } diff --git a/compiler_wrapper/clang_tidy_flag_test.go b/compiler_wrapper/clang_tidy_flag_test.go index 54159cdc..4293bb21 100644 --- a/compiler_wrapper/clang_tidy_flag_test.go +++ b/compiler_wrapper/clang_tidy_flag_test.go @@ -386,6 +386,63 @@ func TestClangTidyFlagsAreFilteredFromGccInvocations(t *testing.T) { }) } +func TestTriciumReportsClangTidyCrashesGracefully(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + return nil + case 2: + if err := verifyPath(cmd, "usr/bin/clang-tidy"); err != nil { + return err + } + + if _, err := io.WriteString(stdout, clangTidyCrashSubstring); err != nil { + return err + } + return nil + case 3: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + + args := cmd.Args + if len(args) < 3 { + t.Errorf("insufficient number of args provided; got %d; want at least 3", len(args)) + return nil + } + + lastArgs := args[len(args)-3:] + eArg, oArg, outFileArg := lastArgs[0], lastArgs[1], lastArgs[2] + if eArg != "-E" { + t.Errorf("got eArg=%q; wanted -E", eArg) + } + + if oArg != "-o" { + t.Errorf("got oArg=%q; wanted -o", oArg) + } + + wantPrefix := path.Join(ctx.cfg.crashArtifactsDir, "clang-tidy") + if !strings.HasPrefix(outFileArg, wantPrefix) { + t.Errorf("got out file %q; wanted one starting with %q", outFileArg, wantPrefix) + } + + return nil + default: + return nil + } + } + ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, mainCc))) + if ctx.cmdCount != 4 { + t.Errorf("expected 3 calls. Got: %d", ctx.cmdCount) + } + }) +} + func withClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { withTestContext(t, func(ctx *testContext) { ctx.env = []string{"WITH_TIDY=1"} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index a5d35a2c..da712a33 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -106,7 +106,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int if cfg.triciumNitsDir == "" { return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") } - err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags) + err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags, cfg.crashArtifactsDir) case tidyModeAll: err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile, tidyFlags) default: diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 546a0e11..e87c7baa 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -31,6 +31,8 @@ type config struct { newWarningsDir string // Directory to store nits in when using `WITH_TIDY=tricium`. triciumNitsDir string + // Directory to store crash artifacts in. + crashArtifactsDir string // Version. Only used for printing via -print-cmd. version string } @@ -143,6 +145,8 @@ var crosHardenedConfig = &config{ }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", + // FIXME(gbiv): apply -fcrash-diagnostics-dir based on this. + crashArtifactsDir: "/tmp/clang_crash_diagnostics", } // Flags to be added to non-hardened toolchain. @@ -173,8 +177,9 @@ var crosNonHardenedConfig = &config{ clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", }, - newWarningsDir: "/tmp/fatal_clang_warnings", - triciumNitsDir: "/tmp/linting_output/clang-tidy", + newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", + crashArtifactsDir: "/tmp/clang_crash_diagnostics", } // Flags to be added to host toolchain. @@ -211,18 +216,20 @@ var crosHostConfig = &config{ clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", }, - newWarningsDir: "/tmp/fatal_clang_warnings", - triciumNitsDir: "/tmp/linting_output/clang-tidy", + newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", + crashArtifactsDir: "/tmp/clang_crash_diagnostics", } var androidConfig = &config{ - isHostWrapper: false, - isAndroidWrapper: true, - rootRelPath: "./", - commonFlags: []string{}, - gccFlags: []string{}, - clangFlags: []string{}, - clangPostFlags: []string{}, - newWarningsDir: "", - triciumNitsDir: "", + isHostWrapper: false, + isAndroidWrapper: true, + rootRelPath: "./", + commonFlags: []string{}, + gccFlags: []string{}, + clangFlags: []string{}, + clangPostFlags: []string{}, + newWarningsDir: "", + triciumNitsDir: "", + crashArtifactsDir: "", } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index d23a8434..21b7169d 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -142,6 +142,7 @@ func (ctx *testContext) updateConfig(cfg *config) { *ctx.cfg = *cfg ctx.cfg.newWarningsDir = filepath.Join(ctx.tempDir, "fatal_clang_warnings") ctx.cfg.triciumNitsDir = filepath.Join(ctx.tempDir, "tricium_nits") + ctx.cfg.crashArtifactsDir = filepath.Join(ctx.tempDir, "clang_crash_diagnostics") } func (ctx *testContext) newCommand(path string, args ...string) *command { -- cgit v1.2.3 From 1713d258a4eaa8a52a7216971bf4b40b36b27aee Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 7 Aug 2020 19:17:52 -0700 Subject: compiler_wrapper: use crashArtifactsDir to apply clang opts Since we now have crashArtifactsDir as a more abstract concept, it seems good to apply '-fcrash-diagnostics-dir=' based on that, rather than having it as an explicit clang flag. BUG=chromium:1113442 TEST=FIXME Change-Id: I147779d7cf8806b3bc712c2998446158e87ec967 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2343975 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 3 +++ compiler_wrapper/config.go | 4 ---- .../testdata/cros_clang_host_golden/bisect.json | 6 +++--- .../clang_ftrapv_maincc_target_specific.json | 18 ++++++++-------- .../cros_clang_host_golden/clang_host_wrapper.json | 2 +- .../clang_maincc_target_specific.json | 18 ++++++++-------- .../cros_clang_host_golden/clang_path.json | 24 +++++++++++----------- .../clang_sanitizer_args.json | 16 +++++++-------- .../clang_specific_args.json | 14 ++++++------- .../testdata/cros_clang_host_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../testdata/cros_hardened_golden/bisect.json | 6 +++--- .../clang_ftrapv_maincc_target_specific.json | 18 ++++++++-------- .../clang_maincc_target_specific.json | 18 ++++++++-------- .../testdata/cros_hardened_golden/clang_path.json | 24 +++++++++++----------- .../cros_hardened_golden/clang_sanitizer_args.json | 16 +++++++-------- .../cros_hardened_golden/clang_specific_args.json | 14 ++++++------- .../clang_sysroot_wrapper_common.json | 12 +++++------ .../testdata/cros_hardened_golden/clangtidy.json | 16 +++++++-------- .../cros_hardened_golden/force_disable_werror.json | 10 ++++----- .../cros_hardened_golden/gcc_clang_syntax.json | 8 ++++---- .../cros_hardened_llvmnext_golden/bisect.json | 6 +++--- .../cros_hardened_llvmnext_golden/clang_path.json | 24 +++++++++++----------- .../cros_hardened_llvmnext_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../gcc_clang_syntax.json | 8 ++++---- .../cros_hardened_noccache_golden/bisect.json | 6 +++--- .../cros_hardened_noccache_golden/clang_path.json | 24 +++++++++++----------- .../cros_hardened_noccache_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../gcc_clang_syntax.json | 8 ++++---- .../testdata/cros_nonhardened_golden/bisect.json | 6 +++--- .../clang_ftrapv_maincc_target_specific.json | 18 ++++++++-------- .../clang_maincc_target_specific.json | 18 ++++++++-------- .../cros_nonhardened_golden/clang_path.json | 24 +++++++++++----------- .../clang_sanitizer_args.json | 16 +++++++-------- .../clang_specific_args.json | 14 ++++++------- .../clang_sysroot_wrapper_common.json | 12 +++++------ .../cros_nonhardened_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../cros_nonhardened_golden/gcc_clang_syntax.json | 8 ++++---- 41 files changed, 271 insertions(+), 272 deletions(-) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index da712a33..aa52dfdc 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -182,6 +182,9 @@ func prepareClangCommand(builder *commandBuilder) (err error) { processSysrootFlag(builder) } builder.addPreUserArgs(builder.cfg.clangFlags...) + if builder.cfg.crashArtifactsDir != "" { + builder.addPreUserArgs("-fcrash-diagnostics-dir=" + builder.cfg.crashArtifactsDir) + } builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) return processClangFlags(builder) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index e87c7baa..10a69679 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -137,7 +137,6 @@ var crosHardenedConfig = &config{ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ @@ -145,7 +144,6 @@ var crosHardenedConfig = &config{ }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", - // FIXME(gbiv): apply -fcrash-diagnostics-dir based on this. crashArtifactsDir: "/tmp/clang_crash_diagnostics", } @@ -171,7 +169,6 @@ var crosNonHardenedConfig = &config{ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ @@ -210,7 +207,6 @@ var crosHostConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index c40faf67..cc55bc4f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -35,8 +35,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -84,8 +84,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -136,8 +136,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 2870f96f..5a59277c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -26,8 +26,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -62,8 +62,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -98,8 +98,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -134,8 +134,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -170,8 +170,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -206,8 +206,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -242,8 +242,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -278,8 +278,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -314,8 +314,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 3bae0706..44b2fb91 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -25,8 +25,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index b8048024..0b951f3e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -25,8 +25,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -60,8 +60,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -95,8 +95,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -130,8 +130,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -165,8 +165,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -200,8 +200,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -235,8 +235,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -270,8 +270,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -305,8 +305,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 8eb8d5a4..69fb4410 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -25,8 +25,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,8 +63,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -101,8 +101,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -139,8 +139,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -184,8 +184,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -234,8 +234,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -284,8 +284,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -324,8 +324,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -359,8 +359,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -394,8 +394,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -429,8 +429,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -467,8 +467,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 8dc90e25..93e566fe 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -27,8 +27,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -65,8 +65,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -103,8 +103,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -141,8 +141,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -178,8 +178,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -217,8 +217,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -256,8 +256,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -293,8 +293,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 02e3cec6..06030a09 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -36,8 +36,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -72,8 +72,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion" @@ -109,8 +109,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion" @@ -146,8 +146,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -183,8 +183,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -220,8 +220,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -257,8 +257,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 44c58f84..c4f86b01 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -41,8 +41,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,8 +63,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -115,8 +115,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -137,8 +137,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -191,8 +191,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -216,8 +216,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -271,8 +271,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -293,8 +293,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index fb854019..272b4220 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -28,8 +28,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -66,8 +66,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -90,8 +90,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", @@ -132,8 +132,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -156,8 +156,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 2302669a..97f5b1cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -37,8 +37,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,8 +99,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,8 +164,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index 49ac5646..7d5a38cb 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -28,8 +28,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,8 +80,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,8 +132,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,8 +184,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -236,8 +236,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -288,8 +288,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -340,8 +340,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -392,8 +392,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -444,8 +444,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 6fc2b8e7..c7b278ae 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,8 +77,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -127,8 +127,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,8 +177,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -227,8 +227,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,8 +277,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -327,8 +327,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -377,8 +377,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -427,8 +427,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 6ba05ab1..1e0e5480 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,8 +80,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,8 +133,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -186,8 +186,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -246,8 +246,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -311,8 +311,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,8 +371,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,8 +426,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -476,8 +476,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -526,8 +526,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -576,8 +576,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -629,8 +629,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index a9bd08c4..c47b0bb8 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -29,8 +29,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,8 +81,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,8 +133,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -185,8 +185,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -236,8 +236,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -289,8 +289,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -342,8 +342,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -393,8 +393,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 0535df12..859597d7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -38,8 +38,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,8 +89,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -141,8 +141,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -193,8 +193,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -245,8 +245,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -297,8 +297,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -349,8 +349,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 306873c9..5f3e3a65 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -62,8 +62,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,8 +115,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -161,8 +161,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -210,8 +210,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -260,8 +260,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -309,8 +309,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index 59642459..b526ec7c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -42,8 +42,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,8 +134,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,8 +166,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -229,8 +229,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -264,8 +264,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,8 +328,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -360,8 +360,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 23cb8f59..f4bbf664 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -30,8 +30,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,8 +83,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -122,8 +122,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -179,8 +179,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,8 +218,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 9cf7ab2f..024ac23a 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,8 +101,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -170,8 +170,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -223,8 +223,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 2302669a..97f5b1cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -37,8 +37,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,8 +99,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,8 +164,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 6ba05ab1..1e0e5480 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,8 +80,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,8 +133,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -186,8 +186,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -246,8 +246,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -311,8 +311,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,8 +371,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,8 +426,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -476,8 +476,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -526,8 +526,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -576,8 +576,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -629,8 +629,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 59642459..b526ec7c 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -42,8 +42,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,8 +134,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,8 +166,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -229,8 +229,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -264,8 +264,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,8 +328,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -360,8 +360,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 23cb8f59..f4bbf664 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -30,8 +30,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,8 +83,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -122,8 +122,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -179,8 +179,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,8 +218,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 9cf7ab2f..024ac23a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,8 +101,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -170,8 +170,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -223,8 +223,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index 48b28521..dfbbbfe2 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -36,8 +36,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,8 +94,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -155,8 +155,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index e5c37c89..8637b8ea 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -26,8 +26,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -120,8 +120,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -167,8 +167,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,8 +221,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -281,8 +281,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -340,8 +340,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -389,8 +389,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -433,8 +433,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -477,8 +477,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -521,8 +521,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -568,8 +568,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index 59642459..b526ec7c 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -42,8 +42,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,8 +134,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,8 +166,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -229,8 +229,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -264,8 +264,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,8 +328,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -360,8 +360,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 9510bfc3..a84e7baf 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -29,8 +29,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,8 +76,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -109,8 +109,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,8 +160,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -193,8 +193,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index 723c03c6..b18c608e 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,8 +96,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,8 +165,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,8 +218,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 06f5420c..bd3696c4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -34,8 +34,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -88,8 +88,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -145,8 +145,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index bf851e46..c81f6332 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -25,8 +25,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -69,8 +69,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -113,8 +113,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -157,8 +157,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -202,8 +202,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -246,8 +246,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -291,8 +291,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -336,8 +336,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -380,8 +380,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 06abf6e4..6b7b80f2 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -24,8 +24,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -66,8 +66,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -108,8 +108,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -150,8 +150,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -193,8 +193,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -235,8 +235,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -278,8 +278,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -321,8 +321,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -363,8 +363,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index ce071110..b237e784 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -24,8 +24,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -69,8 +69,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -114,8 +114,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -159,8 +159,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -211,8 +211,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -268,8 +268,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -320,8 +320,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -367,8 +367,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -409,8 +409,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -451,8 +451,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -493,8 +493,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -538,8 +538,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 3a29fb7f..7e2f61ee 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -26,8 +26,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -71,8 +71,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -116,8 +116,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -161,8 +161,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -205,8 +205,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -251,8 +251,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -297,8 +297,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -341,8 +341,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index dc5b53a1..b82782ea 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -35,8 +35,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -78,8 +78,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", @@ -122,8 +122,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", @@ -166,8 +166,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -210,8 +210,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -254,8 +254,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -298,8 +298,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index a2ac55b4..82b0efd4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -55,8 +55,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -100,8 +100,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -138,8 +138,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -181,8 +181,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-stack-protector", "-D__KERNEL__", "main.cc", @@ -226,8 +226,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", @@ -271,8 +271,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index 2e73f74e..5ea4c766 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -39,8 +39,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -62,8 +62,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -115,8 +115,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -139,8 +139,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -194,8 +194,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -221,8 +221,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -277,8 +277,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -301,8 +301,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index e4bc550c..9e979d63 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -27,8 +27,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -72,8 +72,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -103,8 +103,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -152,8 +152,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -183,8 +183,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index a3cabd88..ca16f412 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -24,8 +24,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -86,8 +86,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -143,8 +143,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -188,8 +188,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", -- cgit v1.2.3 From 3dac9faa8373733a66905243cd6925b050635a38 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 31 Jul 2020 16:33:00 -0700 Subject: rust_tools: Add a tool to automatically generate a Rust uprev This is the first pass to add a tool to convert rust upgrade process into a program that can generate CLs autoamatically. The tool is resumable, so when patches fail to apply, the user can fix the patch, resume the tool until no problems exist. The current tool only supports uprev from the earlier Rust ebuild in chroot and will need future passes to add more features. BUG=chromium:1112551 TEST=unittest;generated a CL locally Change-Id: I77fccd14c69548824a8b235d756357aee0c42ef2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2339593 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: Bob Haarman Reviewed-by: George Burgess --- rust_tools/rust_uprev.py | 422 ++++++++++++++++++++++++++++++++++++++++++ rust_tools/rust_uprev_test.py | 308 ++++++++++++++++++++++++++++++ 2 files changed, 730 insertions(+) create mode 100755 rust_tools/rust_uprev.py create mode 100755 rust_tools/rust_uprev_test.py diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py new file mode 100755 index 00000000..f8c03331 --- /dev/null +++ b/rust_tools/rust_uprev.py @@ -0,0 +1,422 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tool to automatically generate a new Rust uprev CL. + +This tool is intended to automatically generate a CL to uprev Rust to a +newer version in Chrome OS. It's based on +src/third_party/chromiumos-overlay/dev-lang/rust/UPGRADE.md. When using +the tool, the progress can be saved to a JSON file, so the user can resume +the process after a failing step is fixed. Example usage: + +1. (inside chroot) $ ./rust_tools/rust_uprev.py --rust_version 1.45.0 \ + --state_file /tmp/state-file.json +2. Step "compile rust" failed due to the patches can't apply to new version +3. Manually fix the patches +4. Execute the command in step 1 again. +5. Iterate 1-4 for each failed step until the tool passes. + +See `--help` for all available options. +""" + +# pylint: disable=cros-logging-import + +import argparse +import pathlib +import json +import logging +import os +import re +import shutil +import subprocess +import sys +import tempfile +from typing import Any, Callable, Dict, List, NamedTuple, Optional, T, Tuple + +from llvm_tools import chroot, git + + +def get_command_output(command: List[str]) -> str: + return subprocess.check_output(command, encoding='utf-8').strip() + + +class RustVersion(NamedTuple): + """NamedTuple represents a Rust version""" + major: int + minor: int + patch: int + + def __str__(self): + return f'{self.major}.{self.minor}.{self.patch}' + + @staticmethod + def parse_from_ebuild(ebuild_name: str) -> 'RustVersion': + input_re = re.compile(r'^rust-' + r'(?P\d+)\.' + r'(?P\d+)\.' + r'(?P\d+)' + r'\.ebuild$') + m = input_re.match(ebuild_name) + assert m, f'failed to parse {ebuild_name!r}' + return RustVersion( + int(m.group('major')), int(m.group('minor')), int(m.group('patch'))) + + @staticmethod + def parse(x: str) -> 'RustVersion': + input_re = re.compile(r'^(?:rust-)?' + r'(?P\d+)\.' + r'(?P\d+)\.' + r'(?P\d+)' + r'(?:.ebuild)?$') + m = input_re.match(x) + assert m, f'failed to parse {x!r}' + return RustVersion( + int(m.group('major')), int(m.group('minor')), int(m.group('patch'))) + + +def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: + # Find stage0 date, rustc and cargo + stage0_file = get_command_output([ + 'curl', '-f', 'https://raw.githubusercontent.com/rust-lang/rust/' + f'{new_version}/src/stage0.txt' + ]) + regexp = re.compile(r'date:\s*(?P\d+-\d+-\d+)\s+' + r'rustc:\s*(?P\d+\.\d+\.\d+)\s+' + r'cargo:\s*(?P\d+\.\d+\.\d+)') + m = regexp.search(stage0_file) + assert m, 'failed to parse stage0.txt file' + stage0_date, stage0_rustc, stage0_cargo = m.groups() + logging.info('Found stage0 file has date: %s, rustc: %s, cargo: %s', + stage0_date, stage0_rustc, stage0_cargo) + return stage0_date, stage0_rustc, stage0_cargo + + +def prepare_uprev_from_json(json_input: Any + ) -> Tuple[str, RustVersion, RustVersion]: + a, b, c = json_input + return a, RustVersion(*b), RustVersion(*c) + + +def prepare_uprev(rust_version: RustVersion, + reset: bool) -> Tuple[str, RustVersion, RustVersion]: + ebuild_path = get_command_output(['equery', 'w', 'rust']) + rust_path, ebuild_name = os.path.split(ebuild_path) + if reset: + subprocess.check_call(['git', 'reset', '--hard'], cwd=rust_path) + ebuild_path = get_command_output(['equery', 'w', 'rust']) + _, ebuild_name = os.path.split(ebuild_path) + + current_version = RustVersion.parse(ebuild_name) + if rust_version <= current_version: + logging.info('Requested version %s is not newer than existing version %s.', + rust_version, current_version) + return '', None, None + + logging.info('Current Rust version is %s', current_version) + other_ebuilds = [ + x for x in os.listdir(rust_path) if '.ebuild' in x and x != ebuild_name + ] + if len(other_ebuilds) != 1: + raise Exception('Expect exactly 1 previous version ebuild, ' + f'but actually found {other_ebuilds}') + # TODO(tcwang): Only support uprev from the older ebuild; need support to + # pick either version of the Rust to uprev from + old_version = RustVersion.parse(other_ebuilds[0]) + # Prepare a repo branch for uprev + branch_name = f'rust-to-{rust_version}' + git.CreateBranch(rust_path, branch_name) + logging.info('Create a new repo branch %s', branch_name) + return rust_path, current_version, old_version + + +def copy_patches(rust_path: str, old_version: RustVersion, + current_version: RustVersion, + new_version: RustVersion) -> None: + patch_path = os.path.join(rust_path, 'files') + for f in os.listdir(patch_path): + if f'rust-{current_version}' not in f: + continue + logging.info('Rename patch %s to new version', f) + new_name = f.replace(str(current_version), str(new_version)) + shutil.copyfile( + os.path.join(patch_path, f), + os.path.join(patch_path, new_name), + ) + + subprocess.check_call(['git', 'add', f'files/rust-{new_version}-*.patch'], + cwd=rust_path) + + subprocess.check_call(['git', 'rm', f'files/rust-{old_version}-*.patch'], + cwd=rust_path) + + +def rename_ebuild(rust_path: str, old_version: RustVersion, + current_version: RustVersion, + new_version: RustVersion) -> str: + shutil.copyfile( + os.path.join(rust_path, f'rust-{current_version}.ebuild'), + os.path.join(rust_path, f'rust-{new_version}.ebuild')) + subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], + cwd=rust_path) + subprocess.check_call(['git', 'rm', f'rust-{old_version}.ebuild'], + cwd=rust_path) + return os.path.join(rust_path, f'rust-{new_version}.ebuild') + + +def update_ebuild(ebuild_file: str, stage0_info: Tuple[str, str, str]) -> None: + stage0_date, stage0_rustc, stage0_cargo = stage0_info + with open(ebuild_file, encoding='utf-8') as f: + contents = f.read() + # Update STAGE0_DATE in the ebuild + stage0_date_re = re.compile(r'STAGE0_DATE="(\d+-\d+-\d+)"') + if not stage0_date_re.search(contents): + raise RuntimeError('STAGE0_DATE not found in rust ebuild') + new_contents = stage0_date_re.sub(f'STAGE0_DATE="{stage0_date}"', contents) + + # Update STAGE0_VERSION in the ebuild + stage0_rustc_re = re.compile(r'STAGE0_VERSION="[^"]*"') + if not stage0_rustc_re.search(new_contents): + raise RuntimeError('STAGE0_VERSION not found in rust ebuild') + new_contents = stage0_rustc_re.sub(f'STAGE0_VERSION="{stage0_rustc}"', + new_contents) + + # Update STAGE0_VERSION_CARGO in the ebuild + stage0_cargo_re = re.compile(r'STAGE0_VERSION_CARGO="[^"]*"') + if not stage0_cargo_re.search(new_contents): + raise RuntimeError('STAGE0_VERSION_CARGO not found in rust ebuild') + new_contents = stage0_cargo_re.sub(f'STAGE0_VERSION_CARGO="{stage0_cargo}"', + new_contents) + with open(ebuild_file, 'w', encoding='utf-8') as f: + f.write(new_contents) + logging.info( + 'Rust ebuild file has STAGE0_DATE, STAGE0_VERSION, STAGE0_VERSION_CARGO ' + 'updated to %s, %s, %s respectively', stage0_date, stage0_rustc, + stage0_cargo) + return ebuild_file + + +def flip_mirror_in_ebuild(ebuild_file: str, add: bool) -> None: + restrict_re = re.compile( + r'(?PRESTRICT=")(?P"[^"]*"|.*)(?P")') + with open(ebuild_file, encoding='utf-8') as f: + contents = f.read() + m = restrict_re.search(contents) + assert m, 'failed to find RESTRICT variable in Rust ebuild' + values = m.group('values') + if add: + if 'mirror' in values: + return + values += ' mirror' + else: + if 'mirror' not in values: + return + values = values.replace(' mirror', '') + new_contents = restrict_re.sub(r'\g%s\g' % values, contents) + with open(ebuild_file, 'w', encoding='utf-8') as f: + f.write(new_contents) + + +def rust_ebuild_command(command: str, sudo: bool = False) -> None: + ebuild_path_inchroot = get_command_output(['equery', 'w', 'rust']) + cmd = ['ebuild', ebuild_path_inchroot, command] + if sudo: + cmd = ['sudo'] + cmd + subprocess.check_call(cmd, stderr=subprocess.STDOUT) + + +def update_manifest(ebuild_file: str) -> None: + logging.info('Added "mirror" to RESTRICT to Rust ebuild') + flip_mirror_in_ebuild(ebuild_file, add=True) + rust_ebuild_command('manifest') + logging.info('Removed "mirror" to RESTRICT from Rust ebuild') + flip_mirror_in_ebuild(ebuild_file, add=False) + + +def upgrade_rust_packages(ebuild_file: str, old_version: RustVersion, + current_version: RustVersion, + new_version: RustVersion) -> None: + package_file = os.path.join( + os.path.dirname(ebuild_file), + '../../profiles/targets/chromeos/package.provided') + with open(package_file, encoding='utf-8') as f: + contents = f.read() + old_str = f'dev-lang/rust-{old_version}' + current_str = f'dev-lang/rust-{current_version}' + new_str = f'dev-lang/rust-{new_version}' + if old_str not in contents or current_str not in contents: + raise Exception(f'Expect {old_str} and {current_str} to be in ' + 'profiles/targets/chromeos/package.provided') + # Replace the two strings (old_str, current_str) with (current_str, new_str), + # so they are still ordered by rust versions + new_contents = contents.replace(current_str, + new_str).replace(old_str, current_str) + with open(package_file, 'w', encoding='utf-8') as f: + f.write(new_contents) + logging.info('package.provided has been updated from %s, %s to %s, %s', + old_str, current_str, current_str, new_str) + + +def update_virtual_rust(ebuild_file: str, old_version: RustVersion, + new_version: RustVersion) -> None: + virtual_rust_dir = os.path.join( + os.path.dirname(ebuild_file), '../../virtual/rust') + assert os.path.exists(virtual_rust_dir) + subprocess.check_call( + ['git', 'mv', f'rust-{old_version}.ebuild', f'rust-{new_version}.ebuild'], + cwd=virtual_rust_dir) + + +def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: + tarfile_name = f'rustc-{rust_version}-src.tar.gz' + rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' + logging.info('Downloading Rust from %s', rust_src) + gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' + + local_file = os.path.join(tempdir, tarfile_name) + subprocess.check_call(['curl', '-f', '-o', local_file, rust_src]) + # Since we are using `-n` to skip an item if it already exists, there's no + # need to check if the file exists on GS bucket or not. + subprocess.check_call( + ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsutil_location]) + + +def perform_step(state_file: pathlib.Path, + tmp_state_file: pathlib.Path, + completed_steps: Dict[str, Any], + step_name: str, + step_fn: Callable[[], T], + result_from_json: Optional[Callable[[Any], T]] = None, + result_to_json: Optional[Callable[[T], Any]] = None) -> T: + if step_name in completed_steps: + logging.info('Skipping previously completed step %s', step_name) + if result_from_json: + return result_from_json(completed_steps[step_name]) + return completed_steps[step_name] + + logging.info('Running step %s', step_name) + val = step_fn() + logging.info('Step %s complete', step_name) + if result_to_json: + completed_steps[step_name] = result_to_json(val) + else: + completed_steps[step_name] = val + + with tmp_state_file.open('w', encoding='utf-8') as f: + json.dump(completed_steps, f, indent=4) + tmp_state_file.rename(state_file) + return val + + +def main(): + if not chroot.InChroot(): + raise RuntimeError('This script must be executed inside chroot') + + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to upgrade to, in the form a.b.c', + ) + parser.add_argument( + '--state_file', + required=True, + help='A state file to hold previous completed steps. If the file ' + 'exists, it needs to be used together with --continue or --restart. ' + 'If not exist (do not use --continue in this case), we will create a ' + 'file for you.', + ) + parser.add_argument( + '--skip_compile', + action='store_true', + help='Skip compiling rust to test the tool. Only for testing', + ) + parser.add_argument( + '--restart', + action='store_true', + help='Restart from the first step. Ignore the completed steps in ' + 'the state file', + ) + parser.add_argument( + '--continue', + dest='cont', + action='store_true', + help='Continue the steps from the state file', + ) + + args = parser.parse_args() + + rust_version = args.rust_version + state_file = pathlib.Path(args.state_file) + tmp_state_file = pathlib.Path(args.state_file + '.tmp') + + if args.cont and args.restart: + parser.error('Please select either --continue or --restart') + + if os.path.exists(state_file): + if not args.cont and not args.restart: + parser.error('State file exists, so you should either --continue ' + 'or --restart') + if args.cont and not os.path.exists(state_file): + parser.error('Indicate --continue but the state file does not exist') + + if args.restart and os.path.exists(state_file): + os.remove(state_file) + + try: + with state_file.open(encoding='utf-8') as f: + completed_steps = json.load(f) + except FileNotFoundError: + completed_steps = {} + + def run_step( + step_name: str, + step_fn: Callable[[], T], + result_from_json: Optional[Callable[[Any], T]] = None, + result_to_json: Optional[Callable[[T], Any]] = None, + ) -> T: + return perform_step(state_file, tmp_state_file, completed_steps, step_name, + step_fn, result_from_json, result_to_json) + + stage0_info = run_step( + 'parse stage0 file', lambda: parse_stage0_file(rust_version)) + rust_path, current_version, old_version = run_step( + 'prepare uprev', + lambda: prepare_uprev(rust_version, args.restart), + result_from_json=prepare_uprev_from_json, + ) + if current_version is None: + return + + current_version = RustVersion(*current_version) + old_version = RustVersion(*old_version) + + run_step( + 'copy patches', lambda: copy_patches(rust_path, old_version, + current_version, rust_version)) + ebuild_file = run_step( + 'rename ebuild', lambda: rename_ebuild(rust_path, old_version, + current_version, rust_version)) + run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) + with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: + run_step('upload_to_localmirror', lambda: upload_to_localmirror( + tempdir, rust_version)) + run_step('update manifest', lambda: update_manifest(ebuild_file)) + if not args.skip_compile: + run_step('compile rust', lambda: rust_ebuild_command('compile')) + run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) + run_step( + 'upgrade rust packages', lambda: upgrade_rust_packages( + ebuild_file, old_version, current_version, rust_version)) + run_step('upgrade virtual/rust', lambda: update_virtual_rust( + ebuild_file, old_version, rust_version)) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py new file mode 100755 index 00000000..28b23bfa --- /dev/null +++ b/rust_tools/rust_uprev_test.py @@ -0,0 +1,308 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for rust_uprev.py""" + +# pylint: disable=cros-logging-import +import os +import shutil +import subprocess +import unittest +from unittest import mock + +import rust_uprev +from llvm_tools import git + + +class RustVersionTest(unittest.TestCase): + """Tests for RustVersion class""" + + def test_str(self): + obj = rust_uprev.RustVersion(major=1, minor=2, patch=3) + self.assertEqual(str(obj), '1.2.3') + + def test_parse_version_only(self): + expected = rust_uprev.RustVersion(major=1, minor=2, patch=3) + actual = rust_uprev.RustVersion.parse('1.2.3') + self.assertEqual(expected, actual) + + def test_parse_ebuild_name(self): + expected = rust_uprev.RustVersion(major=1, minor=2, patch=3) + actual = rust_uprev.RustVersion.parse_from_ebuild('rust-1.2.3.ebuild') + self.assertEqual(expected, actual) + + def test_parse_fail(self): + with self.assertRaises(AssertionError) as context: + rust_uprev.RustVersion.parse('invalid-rust-1.2.3') + self.assertEqual("failed to parse 'invalid-rust-1.2.3'", + str(context.exception)) + + +class PrepareUprevTest(unittest.TestCase): + """Tests for prepare_uprev step in rust_uprev""" + mock_equery = '/path/to/rust/rust-1.2.3.ebuild' + mock_lsdir = ['rust-1.1.1.ebuild', 'rust-1.2.3.ebuild', 'an-unrelated-file'] + + @mock.patch.object(subprocess, 'check_call') + @mock.patch.object(git, 'CreateBranch') + @mock.patch.object(rust_uprev, 'get_command_output') + @mock.patch.object(os, 'listdir') + def test_success(self, mock_ls, mock_command, mock_git, mock_reset): + mock_ls.return_value = self.mock_lsdir + mock_command.return_value = self.mock_equery + input_version = rust_uprev.RustVersion(1, 3, 5) + expected = ('/path/to/rust', rust_uprev.RustVersion(1, 2, 3), + rust_uprev.RustVersion(1, 1, 1)) + actual = rust_uprev.prepare_uprev(input_version, True) + self.assertEqual(expected, actual) + mock_reset.assert_called_once_with(['git', 'reset', '--hard'], + cwd='/path/to/rust') + mock_git.assert_called_once_with('/path/to/rust', 'rust-to-1.3.5') + + @mock.patch.object(git, 'CreateBranch') + @mock.patch.object( + rust_uprev, + 'get_command_output', + return_value='/path/to/rust/rust-1.2.3.ebuild') + @mock.patch.object(os, 'listdir') + def test_current_version_larger_failure(self, mock_ls, mock_command, + mock_git): + mock_command.return_value = self.mock_equery + input_version = rust_uprev.RustVersion(1, 1, 1) + rust_path, current, old = rust_uprev.prepare_uprev(input_version, False) + self.assertEqual(rust_path, '') + self.assertIsNone(current) + self.assertIsNone(old) + mock_ls.assert_not_called() + mock_git.assert_not_called() + + @mock.patch.object(git, 'CreateBranch') + @mock.patch.object(rust_uprev, 'get_command_output') + @mock.patch.object(os, 'listdir') + def test_more_than_two_ebuilds_fail(self, mock_ls, mock_command, mock_git): + mock_command.return_value = self.mock_equery + mock_ls.return_value = self.mock_lsdir + ['rust-1.0.0.ebuild'] + input_version = rust_uprev.RustVersion(1, 3, 5) + with self.assertRaises(Exception) as context: + rust_uprev.prepare_uprev(input_version, False) + self.assertIn('Expect exactly 1 previous version ebuild', + str(context.exception)) + mock_git.assert_not_called() + + def test_prepare_uprev_from_json(self): + json_result = [ + '/path/to/rust', + [1, 44, 0], + [1, 43, 0], + ] + expected = ('/path/to/rust', rust_uprev.RustVersion(1, 44, 0), + rust_uprev.RustVersion(1, 43, 0)) + actual = rust_uprev.prepare_uprev_from_json(json_result) + self.assertEqual(expected, actual) + + +class UpdateEbuildTest(unittest.TestCase): + """Tests for update_ebuild step in rust_uprev""" + ebuild_file_before = """ + STAGE0_DATE="2019-01-01" + STAGE0_VERSION="any.random.(number)" + STAGE0_VERSION_CARGO="0.0.0" + """ + ebuild_file_after = """ + STAGE0_DATE="2020-01-01" + STAGE0_VERSION="1.1.1" + STAGE0_VERSION_CARGO="0.1.0" + """ + + def test_success(self): + mock_open = mock.mock_open(read_data=self.ebuild_file_before) + ebuild_file = '/path/to/rust/rust-1.3.5.ebuild' + with mock.patch('builtins.open', mock_open): + rust_uprev.update_ebuild(ebuild_file, ('2020-01-01', '1.1.1', '0.1.0')) + mock_open.return_value.__enter__().write.assert_called_once_with( + self.ebuild_file_after) + + def test_fail_when_ebuild_misses_a_variable(self): + ebuild_file = 'STAGE0_DATE="2019-01-01"' + mock_open = mock.mock_open(read_data=ebuild_file) + ebuild_file = '/path/to/rust/rust-1.3.5.ebuild' + with mock.patch('builtins.open', mock_open): + with self.assertRaises(RuntimeError) as context: + rust_uprev.update_ebuild(ebuild_file, ('2020-01-01', '1.1.1', '0.1.0')) + self.assertEqual('STAGE0_VERSION not found in rust ebuild', + str(context.exception)) + + +class UpdateManifestTest(unittest.TestCase): + """Tests for update_manifest step in rust_uprev""" + + # pylint: disable=protected-access + def _run_test_flip_mirror(self, before, after, add, expect_write): + mock_open = mock.mock_open(read_data=f'RESTRICT="{before}"') + with mock.patch('builtins.open', mock_open): + rust_uprev.flip_mirror_in_ebuild('', add=add) + if expect_write: + mock_open.return_value.__enter__().write.assert_called_once_with( + f'RESTRICT="{after}"') + + def test_add_mirror_in_ebuild(self): + self._run_test_flip_mirror( + before='variable1 variable2', + after='variable1 variable2 mirror', + add=True, + expect_write=True) + + def test_remove_mirror_in_ebuild(self): + self._run_test_flip_mirror( + before='variable1 variable2 mirror', + after='variable1 variable2', + add=False, + expect_write=True) + + def test_add_mirror_when_exists(self): + self._run_test_flip_mirror( + before='variable1 variable2 mirror', + after='variable1 variable2 mirror', + add=True, + expect_write=False) + + def test_remove_mirror_when_not_exists(self): + self._run_test_flip_mirror( + before='variable1 variable2', + after='variable1 variable2', + add=False, + expect_write=False) + + @mock.patch.object(rust_uprev, 'flip_mirror_in_ebuild') + @mock.patch.object(rust_uprev, 'rust_ebuild_command') + def test_update_manifest(self, mock_run, mock_flip): + ebuild_file = '/path/to/rust/rust-1.1.1.ebuild' + rust_uprev.update_manifest(ebuild_file) + mock_run.assert_called_once_with('manifest') + mock_flip.assert_has_calls( + [mock.call(ebuild_file, add=True), + mock.call(ebuild_file, add=False)]) + + +class RustUprevOtherTests(unittest.TestCase): + """Tests for other steps in rust_uprev""" + + def setUp(self): + self.rust_path = '/path/to/rust' + self.old_version = rust_uprev.RustVersion(1, 1, 0) + self.current_version = rust_uprev.RustVersion(1, 2, 3) + self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.ebuild_file = os.path.join(self.rust_path, + 'rust-{self.new_version}.ebuild') + + @mock.patch.object(rust_uprev, 'get_command_output') + def test_parse_stage0_file(self, mock_get): + stage0_file = """ + unrelated stuff before + date: 2020-01-01 + rustc: 1.1.1 + cargo: 0.1.0 + unrelated stuff after + """ + mock_get.return_value = stage0_file + expected = '2020-01-01', '1.1.1', '0.1.0' + rust_version = rust_uprev.RustVersion(1, 2, 3) + actual = rust_uprev.parse_stage0_file(rust_version) + self.assertEqual(expected, actual) + mock_get.assert_called_once_with([ + 'curl', '-f', 'https://raw.githubusercontent.com/rust-lang/rust/' + f'{rust_version}/src/stage0.txt' + ]) + + @mock.patch.object(shutil, 'copyfile') + @mock.patch.object(os, 'listdir') + @mock.patch.object(subprocess, 'check_call') + def test_copy_patches(self, mock_call, mock_ls, mock_copy): + mock_ls.return_value = [ + f'rust-{self.old_version}-patch-1.patch', + f'rust-{self.old_version}-patch-2-old.patch', + f'rust-{self.current_version}-patch-1.patch', + f'rust-{self.current_version}-patch-2-new.patch' + ] + rust_uprev.copy_patches(self.rust_path, self.old_version, + self.current_version, self.new_version) + mock_copy.assert_has_calls([ + mock.call( + os.path.join(self.rust_path, 'files', + f'rust-{self.current_version}-patch-1.patch'), + os.path.join(self.rust_path, 'files', + f'rust-{self.new_version}-patch-1.patch'), + ), + mock.call( + os.path.join(self.rust_path, 'files', + f'rust-{self.current_version}-patch-2-new.patch'), + os.path.join(self.rust_path, 'files', + f'rust-{self.new_version}-patch-2-new.patch')) + ]) + mock_call.assert_has_calls([ + mock.call(['git', 'add', f'files/rust-{self.new_version}-*.patch'], + cwd=self.rust_path), + mock.call(['git', 'rm', f'files/rust-{self.old_version}-*.patch'], + cwd=self.rust_path) + ]) + + @mock.patch.object(shutil, 'copyfile') + @mock.patch.object(subprocess, 'check_call') + def test_rename_ebuild(self, mock_call, mock_copy): + rust_uprev.rename_ebuild(self.rust_path, self.old_version, + self.current_version, self.new_version) + mock_copy.assert_called_once_with( + os.path.join(self.rust_path, f'rust-{self.current_version}.ebuild'), + os.path.join(self.rust_path, f'rust-{self.new_version}.ebuild')) + mock_call.assert_has_calls([ + mock.call(['git', 'add', f'rust-{self.new_version}.ebuild'], + cwd=self.rust_path), + mock.call(['git', 'rm', f'rust-{self.old_version}.ebuild'], + cwd=self.rust_path) + ]) + + def test_upgrade_rust_packages(self): + package_before = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}') + package_after = (f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + mock_open = mock.mock_open(read_data=package_before) + with mock.patch('builtins.open', mock_open): + rust_uprev.upgrade_rust_packages(self.ebuild_file, self.old_version, + self.current_version, self.new_version) + mock_open.return_value.__enter__().write.assert_called_once_with( + package_after) + + @mock.patch.object(os.path, 'exists', return_value=True) + @mock.patch.object(subprocess, 'check_call') + def test_update_virtual_rust(self, mock_call, _): + rust_uprev.update_virtual_rust(self.ebuild_file, self.old_version, + self.new_version) + mock_call.assert_called_once_with([ + 'git', 'mv', f'rust-{self.old_version}.ebuild', + f'rust-{self.new_version}.ebuild' + ], + cwd=os.path.join(self.rust_path, + '../../virtual/rust')) + + @mock.patch.object(subprocess, 'check_call') + def test_upload_to_localmirror(self, mock_call): + tempdir = '/tmp/any/dir' + rust_uprev.upload_to_localmirror(tempdir, self.new_version) + + tarfile_name = f'rustc-{self.new_version}-src.tar.gz' + rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' + gsurl = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' + local_file = os.path.join(tempdir, tarfile_name) + mock_call.assert_has_calls([ + mock.call(['curl', '-f', '-o', local_file, rust_src]), + mock.call( + ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsurl]) + ]) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 0b767f9b8019ee1b38bc9a85152c788a1ce089f3 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 10 Aug 2020 11:01:57 -0700 Subject: pgo_tools: Add a monitor for LLVM PGO profile freshness This CL lands a monitor that'll poke our mage if we have no recent LLVM PGO profiles sitting in our bucket. The intent is to run it every few days on chrotomation3, just like the other monitoring infra we have. BUG=chromium:978741 TEST=unittests; ran with a very low days value, and verified the email Change-Id: Ie7a7d44d58c260dd4f17f0759c9fc84bbf8f120d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2346840 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- pgo_tools/monitor_pgo_profiles.py | 150 +++++++++++++++++++++++++++++ pgo_tools/monitor_pgo_profiles_unittest.py | 100 +++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100755 pgo_tools/monitor_pgo_profiles.py create mode 100755 pgo_tools/monitor_pgo_profiles_unittest.py diff --git a/pgo_tools/monitor_pgo_profiles.py b/pgo_tools/monitor_pgo_profiles.py new file mode 100755 index 00000000..86701675 --- /dev/null +++ b/pgo_tools/monitor_pgo_profiles.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python3 +# Copyright 2020 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. + +"""Emails the mage if PGO profile generation hasn't succeeded recently.""" + +# pylint: disable=cros-logging-import + +import argparse +import datetime +import sys +import subprocess +import logging +from typing import List, NamedTuple, Optional, Tuple + +from cros_utils import email_sender +from cros_utils import tiny_render + +PGO_BUILDBOT_LINK = ('https://ci.chromium.org/p/chromeos/builders/toolchain/' + 'pgo-generate-llvm-next-orchestrator') + + +class ProfdataInfo(NamedTuple): + """Data about an llvm profdata in our gs:// bucket.""" + date: datetime.datetime + location: str + + +def parse_date(date: str) -> datetime.datetime: + time_format = '%Y-%m-%dT%H:%M:%SZ' + if not date.endswith('Z'): + time_format += '%z' + return datetime.datetime.strptime(date, time_format) + + +def fetch_most_recent_profdata(arch: str) -> ProfdataInfo: + result = subprocess.run( + [ + 'gsutil', + 'ls', + '-l', + f'gs://chromeos-toolchain-artifacts/llvm-pgo/{arch}/' + '*.profdata.tar.xz', + ], + check=True, + stdout=subprocess.PIPE, + encoding='utf-8', + ) + + # Each line will be a profdata; the last one is a summary, so drop it. + infos = [] + for rec in result.stdout.strip().splitlines()[:-1]: + _size, date, url = rec.strip().split() + infos.append(ProfdataInfo(date=parse_date(date), location=url)) + return max(infos) + + +def compose_complaint_email( + out_of_date_profiles: List[Tuple[datetime.datetime, ProfdataInfo]] +) -> Optional[Tuple[str, tiny_render.Piece]]: + if not out_of_date_profiles: + return None + + if len(out_of_date_profiles) == 1: + subject = '1 llvm profile is out of date' + body = ['out-of-date profile:'] + else: + subject = f'{len(out_of_date_profiles)} llvm profiles are out of date' + body = ['out-of-date profiles:'] + + out_of_date_items = [] + for arch, profdata_info in out_of_date_profiles: + out_of_date_items.append( + f'{arch} (most recent profile was from {profdata_info.date} at ' + f'{profdata_info.location!r})') + + body += [ + tiny_render.UnorderedList(out_of_date_items), + tiny_render.line_break, + tiny_render.line_break, + 'PTAL to see if the llvm-pgo-generate bots are functioning normally. ' + 'Their status can be found at ', + tiny_render.Link(href=PGO_BUILDBOT_LINK, inner=PGO_BUILDBOT_LINK), + '.', + ] + return subject, body + + +def main() -> None: + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--dry_run', + action='store_true', + help="Don't actually send an email", + ) + parser.add_argument( + '--max_age_days', + # These builders run ~weekly. If we fail to generate two in a row, + # something's probably wrong. + default=15, + type=int, + help='How old to let profiles get before complaining, in days', + ) + args = parser.parse_args() + + now = datetime.datetime.now() + logging.info('Start time is %r', now) + + max_age = datetime.timedelta(days=args.max_age_days) + out_of_date_profiles = [] + for arch in ('arm', 'arm64', 'amd64'): + logging.info('Fetching most recent profdata for %r', arch) + most_recent = fetch_most_recent_profdata(arch) + logging.info('Most recent profdata for %r is %r', arch, most_recent) + + age = now - most_recent.date + if age >= max_age: + out_of_date_profiles.append((arch, most_recent)) + + email = compose_complaint_email(out_of_date_profiles) + if not email: + logging.info('No email to send; quit') + return + + subject, body = email + + identifier = 'llvm-pgo-monitor' + subject = f'[{identifier}] {subject}' + + logging.info('Sending email with title %r', subject) + if args.dry_run: + logging.info('Dry run specified\nSubject: %s\nBody:\n%s', subject, + tiny_render.render_text_pieces(body)) + else: + email_sender.EmailSender().SendX20Email( + subject=subject, + identifier=identifier, + well_known_recipients=['mage'], + direct_recipients=['gbiv@google.com'], + text_body=tiny_render.render_text_pieces(body), + html_body=tiny_render.render_html_pieces(body), + ) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/pgo_tools/monitor_pgo_profiles_unittest.py b/pgo_tools/monitor_pgo_profiles_unittest.py new file mode 100755 index 00000000..b4e085ec --- /dev/null +++ b/pgo_tools/monitor_pgo_profiles_unittest.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +# Copyright 2020 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. + +"""Tests for monitor_pgo_profiles.""" + +import datetime +import subprocess +import unittest +import unittest.mock + +import monitor_pgo_profiles +from cros_utils import tiny_render + + +class Test(unittest.TestCase): + """Tests for monitor_pgo_profiles.""" + + def test_compose_complaint_email_with_zero_out_of_date(self): + self.assertIsNone(monitor_pgo_profiles.compose_complaint_email([])) + + def test_compose_complaint_email_with_one_out_of_date(self): + profdata_info = monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 1, 2, 3, 4, 5), + location='gs://somewhere', + ) + result = monitor_pgo_profiles.compose_complaint_email([ + ('some_arch', profdata_info), + ]) + self.assertEqual(result, ('1 llvm profile is out of date', [ + 'out-of-date profile:', + tiny_render.UnorderedList([ + f'some_arch (most recent profile was from {profdata_info.date} at ' + f'{profdata_info.location!r})' + ]), + tiny_render.line_break, + tiny_render.line_break, + 'PTAL to see if the llvm-pgo-generate bots are functioning normally. ' + 'Their status can be found at ', + tiny_render.Link( + href=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + inner=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + ), + '.', + ])) + + def test_compose_complaint_email_with_two_out_of_date(self): + profdata_info_1 = monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 1, 2, 3, 4, 5), + location='gs://somewhere', + ) + profdata_info_2 = monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 3, 2, 1, 4, 5), + location='gs://somewhere-else', + ) + result = monitor_pgo_profiles.compose_complaint_email([ + ('some_arch', profdata_info_1), + ('some_other_arch', profdata_info_2), + ]) + self.assertEqual(result, ('2 llvm profiles are out of date', [ + 'out-of-date profiles:', + tiny_render.UnorderedList([ + f'some_arch (most recent profile was from {profdata_info_1.date} ' + f'at {profdata_info_1.location!r})', + f'some_other_arch (most recent profile was from ' + f'{profdata_info_2.date} at {profdata_info_2.location!r})' + ]), + tiny_render.line_break, + tiny_render.line_break, + 'PTAL to see if the llvm-pgo-generate bots are functioning normally. ' + 'Their status can be found at ', + tiny_render.Link( + href=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + inner=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + ), + '.', + ])) + + @unittest.mock.patch.object(subprocess, 'run') + def test_fetching_profdata_functions(self, subprocess_run_mock): + ls_return_value = unittest.mock.MagicMock() + ls_return_value.stdout = '\n'.join(( + ' 1234 2020-06-26T05:26:40Z gs://bar', + ' 44 2020-06-23T05:26:40Z gs://foo', + ' 1234 2020-06-25T05:26:40Z gs://zzz', + )) + subprocess_run_mock.return_value = ls_return_value + + most_recent = monitor_pgo_profiles.fetch_most_recent_profdata('arm') + self.assertEqual( + most_recent, + monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 6, 26, 5, 26, 40), + location='gs://bar', + )) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 59defebaee972ff84cea962fe1d880ca31e0a8f8 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Tue, 11 Aug 2020 13:20:26 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13371.0-1597051939 Update chromeos-kernel-4_4 to R86-13380.0-1597052123 Update chromeos-kernel-4_14 to R86-13380.0-1597052364 Update chromeos-kernel-4_19 to R86-13380.0-1597052000 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I6f0ec7e7780511720199f752c807854cc71cad50 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2350439 Commit-Queue: Manoj Gupta Tested-by: Manoj Gupta Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index c72952d2..66507a3b 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1596447357" + "name": "R86-13371.0-1597051939" }, "chromeos-kernel-4_4": { - "name": "R86-13371.0-1596447182" + "name": "R86-13380.0-1597052123" }, "chromeos-kernel-4_14": { - "name": "R86-13371.0-1596447453" + "name": "R86-13380.0-1597052364" }, "chromeos-kernel-4_19": { - "name": "R86-13374.0-1596447620" + "name": "R86-13380.0-1597052000" } } -- cgit v1.2.3 From 7c7161d3c1c5882461f2f7b59d2df223bf6fbefe Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Tue, 11 Aug 2020 15:16:41 -0700 Subject: rust_tools: Refactor to create and remove Rust versions independently With this change, a user can run `./rust_uprev.py create` or `./rust_uprev.py remove` to create a new Rust uprev or remove old Rust version independently. Both supports using a state file to save the progress. BUG=chromium:1112551 TEST=unittest;generated a CL locally Change-Id: I8aa629cb56fb6fb79a50c08e11304d0c88515e7f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2350441 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- rust_tools/rust_uprev.py | 371 ++++++++++++++++++++++++------------------ rust_tools/rust_uprev_test.py | 215 +++++++++++++----------- 2 files changed, 325 insertions(+), 261 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index f8c03331..50f85eb9 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -7,18 +7,25 @@ """Tool to automatically generate a new Rust uprev CL. This tool is intended to automatically generate a CL to uprev Rust to a -newer version in Chrome OS. It's based on +newer version in Chrome OS, including creating a new Rust version or +removing an old version. It's based on src/third_party/chromiumos-overlay/dev-lang/rust/UPGRADE.md. When using the tool, the progress can be saved to a JSON file, so the user can resume -the process after a failing step is fixed. Example usage: +the process after a failing step is fixed. Example usage to create a new +version: -1. (inside chroot) $ ./rust_tools/rust_uprev.py --rust_version 1.45.0 \ - --state_file /tmp/state-file.json +1. (inside chroot) $ ./rust_tools/rust_uprev.py + --state_file /tmp/state-file.json + create --rust_version 1.45.0 2. Step "compile rust" failed due to the patches can't apply to new version 3. Manually fix the patches 4. Execute the command in step 1 again. 5. Iterate 1-4 for each failed step until the tool passes. +Replace `create --rust_version 1.45.0` with `remove --rust_version 1.43.0` +if you want to remove all 1.43.0 related stuff in the same CL. Remember to +use a different state file if you choose to run different subcommands. + See `--help` for all available options. """ @@ -36,7 +43,8 @@ import sys import tempfile from typing import Any, Callable, Dict, List, NamedTuple, Optional, T, Tuple -from llvm_tools import chroot, git +from llvm_tools import chroot +RUST_PATH = '/mnt/host/source/src/third_party/chromiumos-overlay/dev-lang/rust' def get_command_output(command: List[str]) -> str: @@ -77,6 +85,84 @@ class RustVersion(NamedTuple): int(m.group('major')), int(m.group('minor')), int(m.group('patch'))) +def parse_commandline_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--state_file', + required=True, + help='A state file to hold previous completed steps. If the file ' + 'exists, it needs to be used together with --continue or --restart. ' + 'If not exist (do not use --continue in this case), we will create a ' + 'file for you.', + ) + parser.add_argument( + '--restart', + action='store_true', + help='Restart from the first step. Ignore the completed steps in ' + 'the state file', + ) + parser.add_argument( + '--continue', + dest='cont', + action='store_true', + help='Continue the steps from the state file', + ) + + subparsers = parser.add_subparsers(dest='subparser_name') + subparser_names = [] + + create_parser = subparsers.add_parser('create') + subparser_names.append('create') + create_parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to upgrade to, in the form a.b.c', + ) + create_parser.add_argument( + '--template', + type=RustVersion.parse, + default=None, + help='A template to use for creating a Rust uprev from, in the form ' + 'a.b.c The ebuild has to exist in the chroot. If not specified, the ' + 'tool will use the current Rust version in the chroot as template.', + ) + create_parser.add_argument( + '--skip_compile', + action='store_true', + help='Skip compiling rust to test the tool. Only for testing', + ) + + subparser_names.append('remove') + remove_parser = subparsers.add_parser('remove') + remove_parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to upgrade to, in the form a.b.c', + ) + + args = parser.parse_args() + if args.subparser_name not in subparser_names: + parser.error('one of %s must be specified' % subparser_names) + + if args.cont and args.restart: + parser.error('Please select either --continue or --restart') + + if os.path.exists(args.state_file): + if not args.cont and not args.restart: + parser.error('State file exists, so you should either --continue ' + 'or --restart') + if args.cont and not os.path.exists(args.state_file): + parser.error('Indicate --continue but the state file does not exist') + + if args.restart and os.path.exists(args.state_file): + os.remove(args.state_file) + + return args + + def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: # Find stage0 date, rustc and cargo stage0_file = get_command_output([ @@ -94,76 +180,55 @@ def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: return stage0_date, stage0_rustc, stage0_cargo -def prepare_uprev_from_json(json_input: Any - ) -> Tuple[str, RustVersion, RustVersion]: - a, b, c = json_input - return a, RustVersion(*b), RustVersion(*c) +def prepare_uprev_from_json(json_input: Any) -> RustVersion: + return RustVersion(*json_input) def prepare_uprev(rust_version: RustVersion, - reset: bool) -> Tuple[str, RustVersion, RustVersion]: - ebuild_path = get_command_output(['equery', 'w', 'rust']) - rust_path, ebuild_name = os.path.split(ebuild_path) - if reset: - subprocess.check_call(['git', 'reset', '--hard'], cwd=rust_path) + template: Optional[RustVersion]) -> RustVersion: + if template is None: ebuild_path = get_command_output(['equery', 'w', 'rust']) - _, ebuild_name = os.path.split(ebuild_path) - - current_version = RustVersion.parse(ebuild_name) - if rust_version <= current_version: - logging.info('Requested version %s is not newer than existing version %s.', - rust_version, current_version) - return '', None, None - - logging.info('Current Rust version is %s', current_version) - other_ebuilds = [ - x for x in os.listdir(rust_path) if '.ebuild' in x and x != ebuild_name - ] - if len(other_ebuilds) != 1: - raise Exception('Expect exactly 1 previous version ebuild, ' - f'but actually found {other_ebuilds}') - # TODO(tcwang): Only support uprev from the older ebuild; need support to - # pick either version of the Rust to uprev from - old_version = RustVersion.parse(other_ebuilds[0]) - # Prepare a repo branch for uprev - branch_name = f'rust-to-{rust_version}' - git.CreateBranch(rust_path, branch_name) - logging.info('Create a new repo branch %s', branch_name) - return rust_path, current_version, old_version - - -def copy_patches(rust_path: str, old_version: RustVersion, - current_version: RustVersion, + ebuild_name = os.path.basename(ebuild_path) + template_version = RustVersion.parse(ebuild_name) + else: + if not os.path.exists(os.path.join(RUST_PATH, f'rust-{template}.ebuild')): + raise ValueError(f'Template ebuild file {template} does not exist') + template_version = template + if rust_version <= template_version: + logging.info( + 'Requested version %s is not newer than the template version %s.', + rust_version, template_version) + return None + + logging.info('Template Rust version is %s', template_version) + return template_version + + +def copy_patches(template_version: RustVersion, new_version: RustVersion) -> None: - patch_path = os.path.join(rust_path, 'files') + patch_path = os.path.join(RUST_PATH, 'files') for f in os.listdir(patch_path): - if f'rust-{current_version}' not in f: + if f'rust-{template_version}' not in f: continue logging.info('Rename patch %s to new version', f) - new_name = f.replace(str(current_version), str(new_version)) + new_name = f.replace(str(template_version), str(new_version)) shutil.copyfile( os.path.join(patch_path, f), os.path.join(patch_path, new_name), ) subprocess.check_call(['git', 'add', f'files/rust-{new_version}-*.patch'], - cwd=rust_path) - - subprocess.check_call(['git', 'rm', f'files/rust-{old_version}-*.patch'], - cwd=rust_path) + cwd=RUST_PATH) -def rename_ebuild(rust_path: str, old_version: RustVersion, - current_version: RustVersion, +def create_ebuild(template_version: RustVersion, new_version: RustVersion) -> str: shutil.copyfile( - os.path.join(rust_path, f'rust-{current_version}.ebuild'), - os.path.join(rust_path, f'rust-{new_version}.ebuild')) + os.path.join(RUST_PATH, f'rust-{template_version}.ebuild'), + os.path.join(RUST_PATH, f'rust-{new_version}.ebuild')) subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], - cwd=rust_path) - subprocess.check_call(['git', 'rm', f'rust-{old_version}.ebuild'], - cwd=rust_path) - return os.path.join(rust_path, f'rust-{new_version}.ebuild') + cwd=RUST_PATH) + return os.path.join(RUST_PATH, f'rust-{new_version}.ebuild') def update_ebuild(ebuild_file: str, stage0_info: Tuple[str, str, str]) -> None: @@ -235,38 +300,39 @@ def update_manifest(ebuild_file: str) -> None: flip_mirror_in_ebuild(ebuild_file, add=False) -def upgrade_rust_packages(ebuild_file: str, old_version: RustVersion, - current_version: RustVersion, - new_version: RustVersion) -> None: +def update_rust_packages(rust_version: RustVersion, add: bool) -> None: package_file = os.path.join( - os.path.dirname(ebuild_file), - '../../profiles/targets/chromeos/package.provided') + RUST_PATH, '../../profiles/targets/chromeos/package.provided') with open(package_file, encoding='utf-8') as f: contents = f.read() - old_str = f'dev-lang/rust-{old_version}' - current_str = f'dev-lang/rust-{current_version}' - new_str = f'dev-lang/rust-{new_version}' - if old_str not in contents or current_str not in contents: - raise Exception(f'Expect {old_str} and {current_str} to be in ' - 'profiles/targets/chromeos/package.provided') - # Replace the two strings (old_str, current_str) with (current_str, new_str), - # so they are still ordered by rust versions - new_contents = contents.replace(current_str, - new_str).replace(old_str, current_str) + if add: + rust_packages_re = re.compile(r'dev-lang/rust-(\d+\.\d+\.\d+)') + rust_packages = rust_packages_re.findall(contents) + # Assume all the rust packages are in alphabetical order, so insert the new + # version to the place after the last rust_packages + new_str = f'dev-lang/rust-{rust_version}' + new_contents = contents.replace(rust_packages[-1], + f'{rust_packages[-1]}\n{new_str}') + logging.info('%s has been inserted into package.provided', new_str) + else: + old_str = f'dev-lang/rust-{rust_version}\n' + assert old_str in contents, f'{old_str!r} not found in package.provided' + new_contents = contents.replace(old_str, '') + logging.info('%s has been removed from package.provided', old_str) + with open(package_file, 'w', encoding='utf-8') as f: f.write(new_contents) - logging.info('package.provided has been updated from %s, %s to %s, %s', - old_str, current_str, current_str, new_str) -def update_virtual_rust(ebuild_file: str, old_version: RustVersion, +def update_virtual_rust(template_version: RustVersion, new_version: RustVersion) -> None: - virtual_rust_dir = os.path.join( - os.path.dirname(ebuild_file), '../../virtual/rust') + virtual_rust_dir = os.path.join(RUST_PATH, '../../virtual/rust') assert os.path.exists(virtual_rust_dir) - subprocess.check_call( - ['git', 'mv', f'rust-{old_version}.ebuild', f'rust-{new_version}.ebuild'], - cwd=virtual_rust_dir) + shutil.copyfile( + os.path.join(virtual_rust_dir, f'rust-{template_version}.ebuild'), + os.path.join(virtual_rust_dir, f'rust-{new_version}.ebuild')) + subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], + cwd=virtual_rust_dir) def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: @@ -310,64 +376,72 @@ def perform_step(state_file: pathlib.Path, return val -def main(): - if not chroot.InChroot(): - raise RuntimeError('This script must be executed inside chroot') +def create_rust_uprev(rust_version: RustVersion, + template: Optional[RustVersion], skip_compile: bool, + run_step: Callable[[ + str, Callable[[], T], Optional[Callable[[Any], T]], + Optional[Callable[[T], Any]] + ], T]) -> None: + stage0_info = run_step( + 'parse stage0 file', lambda: parse_stage0_file(rust_version)) + template_version = run_step( + 'prepare uprev', + lambda: prepare_uprev(rust_version, template), + result_from_json=prepare_uprev_from_json, + ) + if template_version is None: + return - logging.basicConfig(level=logging.INFO) + run_step('copy patches', lambda: copy_patches(template_version, rust_version)) + ebuild_file = run_step( + 'create ebuild', lambda: create_ebuild(template_version, rust_version)) + run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) + with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: + run_step('upload_to_localmirror', lambda: upload_to_localmirror( + tempdir, rust_version)) + run_step('update manifest', lambda: update_manifest(ebuild_file)) + if not skip_compile: + run_step('compile rust', lambda: rust_ebuild_command('compile')) + run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) + run_step('insert version into rust packages', lambda: update_rust_packages( + rust_version, add=True)) + run_step('upgrade virtual/rust', lambda: update_virtual_rust( + template_version, rust_version)) - parser = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument( - '--rust_version', - type=RustVersion.parse, - required=True, - help='Rust version to upgrade to, in the form a.b.c', - ) - parser.add_argument( - '--state_file', - required=True, - help='A state file to hold previous completed steps. If the file ' - 'exists, it needs to be used together with --continue or --restart. ' - 'If not exist (do not use --continue in this case), we will create a ' - 'file for you.', - ) - parser.add_argument( - '--skip_compile', - action='store_true', - help='Skip compiling rust to test the tool. Only for testing', - ) - parser.add_argument( - '--restart', - action='store_true', - help='Restart from the first step. Ignore the completed steps in ' - 'the state file', - ) - parser.add_argument( - '--continue', - dest='cont', - action='store_true', - help='Continue the steps from the state file', - ) - args = parser.parse_args() +def remove_files(filename: str, path: str) -> None: + subprocess.check_call(['git', 'rm', filename], cwd=path) - rust_version = args.rust_version - state_file = pathlib.Path(args.state_file) - tmp_state_file = pathlib.Path(args.state_file + '.tmp') - if args.cont and args.restart: - parser.error('Please select either --continue or --restart') +def remove_rust_uprev(rust_version: RustVersion, run_step: Callable[[ + str, Callable[[], T], Optional[Callable[[Any], T]], Optional[ + Callable[[T], Any]] +], T]) -> None: + run_step( + 'remove patches', lambda: remove_files( + f'files/rust-{rust_version}-*.patch', RUST_PATH)) + run_step('remove ebuild', lambda: remove_files(f'rust-{rust_version}.ebuild', + RUST_PATH)) + ebuild_file = get_command_output(['equery', 'w', 'rust']) + run_step('update manifest', lambda: update_manifest(ebuild_file)) + run_step('remove version from rust packages', lambda: update_rust_packages( + rust_version, add=False)) + run_step( + 'remove virtual/rust', lambda: remove_files( + f'rust-{rust_version}.ebuild', + os.path.join(RUST_PATH, '../../virtual/rust'))) - if os.path.exists(state_file): - if not args.cont and not args.restart: - parser.error('State file exists, so you should either --continue ' - 'or --restart') - if args.cont and not os.path.exists(state_file): - parser.error('Indicate --continue but the state file does not exist') - if args.restart and os.path.exists(state_file): - os.remove(state_file) +def main() -> None: + if not chroot.InChroot(): + raise RuntimeError('This script must be executed inside chroot') + + logging.basicConfig(level=logging.INFO) + + args = parse_commandline_args() + + state_file = pathlib.Path(args.state_file) + tmp_state_file = state_file.with_suffix('.tmp') try: with state_file.open(encoding='utf-8') as f: @@ -384,38 +458,11 @@ def main(): return perform_step(state_file, tmp_state_file, completed_steps, step_name, step_fn, result_from_json, result_to_json) - stage0_info = run_step( - 'parse stage0 file', lambda: parse_stage0_file(rust_version)) - rust_path, current_version, old_version = run_step( - 'prepare uprev', - lambda: prepare_uprev(rust_version, args.restart), - result_from_json=prepare_uprev_from_json, - ) - if current_version is None: - return - - current_version = RustVersion(*current_version) - old_version = RustVersion(*old_version) - - run_step( - 'copy patches', lambda: copy_patches(rust_path, old_version, - current_version, rust_version)) - ebuild_file = run_step( - 'rename ebuild', lambda: rename_ebuild(rust_path, old_version, - current_version, rust_version)) - run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) - with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: - run_step('upload_to_localmirror', lambda: upload_to_localmirror( - tempdir, rust_version)) - run_step('update manifest', lambda: update_manifest(ebuild_file)) - if not args.skip_compile: - run_step('compile rust', lambda: rust_ebuild_command('compile')) - run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) - run_step( - 'upgrade rust packages', lambda: upgrade_rust_packages( - ebuild_file, old_version, current_version, rust_version)) - run_step('upgrade virtual/rust', lambda: update_virtual_rust( - ebuild_file, old_version, rust_version)) + if args.subparser_name == 'create': + create_rust_uprev(args.rust_version, args.template, args.skip_compile, + run_step) + else: + remove_rust_uprev(args.rust_version, run_step) if __name__ == '__main__': diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index 28b23bfa..e007b822 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -14,7 +14,6 @@ import unittest from unittest import mock import rust_uprev -from llvm_tools import git class RustVersionTest(unittest.TestCase): @@ -43,63 +42,65 @@ class RustVersionTest(unittest.TestCase): class PrepareUprevTest(unittest.TestCase): """Tests for prepare_uprev step in rust_uprev""" - mock_equery = '/path/to/rust/rust-1.2.3.ebuild' - mock_lsdir = ['rust-1.1.1.ebuild', 'rust-1.2.3.ebuild', 'an-unrelated-file'] - @mock.patch.object(subprocess, 'check_call') - @mock.patch.object(git, 'CreateBranch') + def setUp(self): + self.version_old = rust_uprev.RustVersion(1, 2, 3) + self.version_new = rust_uprev.RustVersion(1, 3, 5) + + @mock.patch.object(os.path, 'exists') @mock.patch.object(rust_uprev, 'get_command_output') - @mock.patch.object(os, 'listdir') - def test_success(self, mock_ls, mock_command, mock_git, mock_reset): - mock_ls.return_value = self.mock_lsdir - mock_command.return_value = self.mock_equery - input_version = rust_uprev.RustVersion(1, 3, 5) - expected = ('/path/to/rust', rust_uprev.RustVersion(1, 2, 3), - rust_uprev.RustVersion(1, 1, 1)) - actual = rust_uprev.prepare_uprev(input_version, True) + def test_success_with_template(self, mock_command, mock_exists): + mock_exists.return_value = True + expected = self.version_old + actual = rust_uprev.prepare_uprev( + rust_version=self.version_new, template=self.version_old) self.assertEqual(expected, actual) - mock_reset.assert_called_once_with(['git', 'reset', '--hard'], - cwd='/path/to/rust') - mock_git.assert_called_once_with('/path/to/rust', 'rust-to-1.3.5') - - @mock.patch.object(git, 'CreateBranch') - @mock.patch.object( - rust_uprev, - 'get_command_output', - return_value='/path/to/rust/rust-1.2.3.ebuild') - @mock.patch.object(os, 'listdir') - def test_current_version_larger_failure(self, mock_ls, mock_command, - mock_git): - mock_command.return_value = self.mock_equery - input_version = rust_uprev.RustVersion(1, 1, 1) - rust_path, current, old = rust_uprev.prepare_uprev(input_version, False) - self.assertEqual(rust_path, '') - self.assertIsNone(current) - self.assertIsNone(old) - mock_ls.assert_not_called() - mock_git.assert_not_called() - - @mock.patch.object(git, 'CreateBranch') + mock_command.assert_not_called() + + @mock.patch.object(os.path, 'exists') @mock.patch.object(rust_uprev, 'get_command_output') - @mock.patch.object(os, 'listdir') - def test_more_than_two_ebuilds_fail(self, mock_ls, mock_command, mock_git): - mock_command.return_value = self.mock_equery - mock_ls.return_value = self.mock_lsdir + ['rust-1.0.0.ebuild'] - input_version = rust_uprev.RustVersion(1, 3, 5) - with self.assertRaises(Exception) as context: - rust_uprev.prepare_uprev(input_version, False) - self.assertIn('Expect exactly 1 previous version ebuild', - str(context.exception)) - mock_git.assert_not_called() + def test_fail_with_template_not_exist(self, mock_command, mock_exists): + mock_exists.return_value = False + with self.assertRaises(ValueError) as context: + rust_uprev.prepare_uprev( + rust_version=self.version_new, template=self.version_old) + self.assertEqual(f'Template ebuild file {self.version_old} does not exist', + str(context.exception)) + mock_command.assert_not_called() + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_return_none_with_template_larger_than_input(self, mock_command, + mock_exists): + mock_exists.return_value = True + ret = rust_uprev.prepare_uprev( + rust_version=self.version_old, template=self.version_new) + self.assertIsNone(ret) + mock_command.assert_not_called() + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_success_without_template(self, mock_command, mock_exists): + mock_command.return_value = f'/path/to/rust/rust-{self.version_old}.ebuild' + expected = self.version_old + actual = rust_uprev.prepare_uprev( + rust_version=self.version_new, template=None) + self.assertEqual(expected, actual) + mock_command.assert_called_once_with(['equery', 'w', 'rust']) + mock_exists.assert_not_called() + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_return_none_with_ebuild_larger_than_input(self, mock_command, + mock_exists): + mock_command.return_value = f'/path/to/rust/rust-{self.version_new}.ebuild' + ret = rust_uprev.prepare_uprev(rust_version=self.version_old, template=None) + self.assertIsNone(ret) + mock_exists.assert_not_called() def test_prepare_uprev_from_json(self): - json_result = [ - '/path/to/rust', - [1, 44, 0], - [1, 43, 0], - ] - expected = ('/path/to/rust', rust_uprev.RustVersion(1, 44, 0), - rust_uprev.RustVersion(1, 43, 0)) + json_result = list(self.version_new) + expected = self.version_new actual = rust_uprev.prepare_uprev_from_json(json_result) self.assertEqual(expected, actual) @@ -187,15 +188,49 @@ class UpdateManifestTest(unittest.TestCase): mock.call(ebuild_file, add=False)]) -class RustUprevOtherTests(unittest.TestCase): +class UpdateRustPackagesTests(unittest.TestCase): + """Tests for update_rust_packages step.""" + + def setUp(self): + self.old_version = rust_uprev.RustVersion(1, 1, 0) + self.current_version = rust_uprev.RustVersion(1, 2, 3) + self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.ebuild_file = os.path.join(rust_uprev.RUST_PATH, + 'rust-{self.new_version}.ebuild') + + def test_add_new_rust_packages(self): + package_before = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}') + package_after = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + mock_open = mock.mock_open(read_data=package_before) + with mock.patch('builtins.open', mock_open): + rust_uprev.update_rust_packages(self.new_version, add=True) + mock_open.return_value.__enter__().write.assert_called_once_with( + package_after) + + def test_remove_old_rust_packages(self): + package_before = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + package_after = (f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + mock_open = mock.mock_open(read_data=package_before) + with mock.patch('builtins.open', mock_open): + rust_uprev.update_rust_packages(self.old_version, add=False) + mock_open.return_value.__enter__().write.assert_called_once_with( + package_after) + + +class RustUprevOtherStagesTests(unittest.TestCase): """Tests for other steps in rust_uprev""" def setUp(self): - self.rust_path = '/path/to/rust' self.old_version = rust_uprev.RustVersion(1, 1, 0) self.current_version = rust_uprev.RustVersion(1, 2, 3) self.new_version = rust_uprev.RustVersion(1, 3, 5) - self.ebuild_file = os.path.join(self.rust_path, + self.ebuild_file = os.path.join(rust_uprev.RUST_PATH, 'rust-{self.new_version}.ebuild') @mock.patch.object(rust_uprev, 'get_command_output') @@ -227,66 +262,48 @@ class RustUprevOtherTests(unittest.TestCase): f'rust-{self.current_version}-patch-1.patch', f'rust-{self.current_version}-patch-2-new.patch' ] - rust_uprev.copy_patches(self.rust_path, self.old_version, - self.current_version, self.new_version) + rust_uprev.copy_patches(self.current_version, self.new_version) mock_copy.assert_has_calls([ mock.call( - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.current_version}-patch-1.patch'), - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.new_version}-patch-1.patch'), ), mock.call( - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.current_version}-patch-2-new.patch'), - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.new_version}-patch-2-new.patch')) ]) - mock_call.assert_has_calls([ - mock.call(['git', 'add', f'files/rust-{self.new_version}-*.patch'], - cwd=self.rust_path), - mock.call(['git', 'rm', f'files/rust-{self.old_version}-*.patch'], - cwd=self.rust_path) - ]) + mock_call.assert_called_once_with( + ['git', 'add', f'files/rust-{self.new_version}-*.patch'], + cwd=rust_uprev.RUST_PATH) @mock.patch.object(shutil, 'copyfile') @mock.patch.object(subprocess, 'check_call') - def test_rename_ebuild(self, mock_call, mock_copy): - rust_uprev.rename_ebuild(self.rust_path, self.old_version, - self.current_version, self.new_version) + def test_create_ebuild(self, mock_call, mock_copy): + rust_uprev.create_ebuild(self.current_version, self.new_version) mock_copy.assert_called_once_with( - os.path.join(self.rust_path, f'rust-{self.current_version}.ebuild'), - os.path.join(self.rust_path, f'rust-{self.new_version}.ebuild')) - mock_call.assert_has_calls([ - mock.call(['git', 'add', f'rust-{self.new_version}.ebuild'], - cwd=self.rust_path), - mock.call(['git', 'rm', f'rust-{self.old_version}.ebuild'], - cwd=self.rust_path) - ]) - - def test_upgrade_rust_packages(self): - package_before = (f'dev-lang/rust-{self.old_version}\n' - f'dev-lang/rust-{self.current_version}') - package_after = (f'dev-lang/rust-{self.current_version}\n' - f'dev-lang/rust-{self.new_version}') - mock_open = mock.mock_open(read_data=package_before) - with mock.patch('builtins.open', mock_open): - rust_uprev.upgrade_rust_packages(self.ebuild_file, self.old_version, - self.current_version, self.new_version) - mock_open.return_value.__enter__().write.assert_called_once_with( - package_after) + os.path.join(rust_uprev.RUST_PATH, + f'rust-{self.current_version}.ebuild'), + os.path.join(rust_uprev.RUST_PATH, f'rust-{self.new_version}.ebuild')) + mock_call.assert_called_once_with( + ['git', 'add', f'rust-{self.new_version}.ebuild'], + cwd=rust_uprev.RUST_PATH) @mock.patch.object(os.path, 'exists', return_value=True) + @mock.patch.object(shutil, 'copyfile') @mock.patch.object(subprocess, 'check_call') - def test_update_virtual_rust(self, mock_call, _): - rust_uprev.update_virtual_rust(self.ebuild_file, self.old_version, - self.new_version) - mock_call.assert_called_once_with([ - 'git', 'mv', f'rust-{self.old_version}.ebuild', - f'rust-{self.new_version}.ebuild' - ], - cwd=os.path.join(self.rust_path, - '../../virtual/rust')) + def test_update_virtual_rust(self, mock_call, mock_copy, mock_exists): + virtual_rust_dir = os.path.join(rust_uprev.RUST_PATH, '../../virtual/rust') + rust_uprev.update_virtual_rust(self.current_version, self.new_version) + mock_call.assert_called_once_with( + ['git', 'add', f'rust-{self.new_version}.ebuild'], cwd=virtual_rust_dir) + mock_copy.assert_called_once_with( + os.path.join(virtual_rust_dir, f'rust-{self.current_version}.ebuild'), + os.path.join(virtual_rust_dir, f'rust-{self.new_version}.ebuild')) + mock_exists.assert_called_once_with(virtual_rust_dir) @mock.patch.object(subprocess, 'check_call') def test_upload_to_localmirror(self, mock_call): -- cgit v1.2.3 From 20f7df65dbdd2be116da52f165dc575061d7bc4f Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 12 Aug 2020 16:24:54 -0700 Subject: crosperf: remove uses of numpy New in python3 (compared to python2) is a `statistics` module, which provides all of the functionality we wanted from numpy here. Use that instead. BUG=chromium:980719 TEST=Unittests Change-Id: I5eaa53744142c402d1e71d6b867e434940d41aec Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2353422 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- cros_utils/tabulator.py | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index b4092993..27b1c64d 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -67,10 +67,10 @@ from __future__ import print_function import collections import getpass import math +import statistics import sys -# TODO(zhizhouy): Drop numpy in the future +# TODO(crbug.com/980719): Drop scipy in the future. # pylint: disable=import-error -import numpy import scipy from cros_utils.email_sender import EmailSender @@ -556,7 +556,7 @@ class AmeanResult(StringMeanResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - cell.value = numpy.mean(values) + cell.value = statistics.mean(values) class RawResult(Result): @@ -610,7 +610,7 @@ class StdResult(NumericalResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - cell.value = numpy.std(values) + cell.value = statistics.stdev(values) class CoeffVarResult(NumericalResult): @@ -623,8 +623,8 @@ class CoeffVarResult(NumericalResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - if numpy.mean(values) != 0.0: - noise = numpy.abs(numpy.std(values) / numpy.mean(values)) + if statistics.mean(values) != 0.0: + noise = abs(statistics.stdev(values) / statistics.mean(values)) else: noise = 0.0 cell.value = noise @@ -731,9 +731,12 @@ class AmeanRatioResult(KeyAwareComparisonResult): if self.ignore_min_max: values = _RemoveMinMax(cell, values) baseline_values = _RemoveMinMax(cell, baseline_values) - if numpy.mean(baseline_values) != 0: - cell.value = numpy.mean(values) / numpy.mean(baseline_values) - elif numpy.mean(values) != 0: + + baseline_mean = statistics.mean(baseline_values) + values_mean = statistics.mean(values) + if baseline_mean != 0: + cell.value = values_mean / baseline_mean + elif values_mean != 0: cell.value = 0.00 # cell.value = 0 means the values and baseline_values have big difference else: @@ -1506,16 +1509,15 @@ if __name__ == '__main__': 'k8': 'PASS', 'k9': 'PASS', 'k10': '0' - }, - { - 'k1': '13', - 'k2': '14', - 'k3': '15', - 'ms_1': '10', - 'k8': 'PASS', - 'k9': 'FAIL', - 'k10': '0' - }], + }, { + 'k1': '13', + 'k2': '14', + 'k3': '15', + 'ms_1': '10', + 'k8': 'PASS', + 'k9': 'FAIL', + 'k10': '0' + }], [{ 'k1': '50', 'k2': '51', -- cgit v1.2.3 From 243ce37bf481923dafd7cb30c860aa65744914f1 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 10 Aug 2020 18:35:12 -0700 Subject: compiler_wrapper: remove some flags from unsupport clang flags LLVM implemented some flags that used to not be supported. Remove these flags from unsupported flags in the wrapper. BUG=chromium:1112929 TEST=tested locally. Change-Id: If91df0d35ac3db926067d3e0c5e213f6c5e3f390 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2346956 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/clang_flags.go | 10 +--------- compiler_wrapper/clang_flags_test.go | 8 -------- .../cros_clang_host_golden/clang_specific_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 3 +++ .../clang_maincc_target_specific.json | 3 +++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_hardened_golden/clang_specific_args.json | 15 +++++++++++++++ .../clang_sysroot_wrapper_common.json | 5 +++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_nonhardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 3 +++ .../clang_maincc_target_specific.json | 3 +++ .../testdata/cros_nonhardened_golden/clang_path.json | 12 ++++++++++++ .../cros_nonhardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_nonhardened_golden/clang_specific_args.json | 15 +++++++++++++++ .../clang_sysroot_wrapper_common.json | 5 +++++ .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++++++ .../cros_nonhardened_golden/force_disable_werror.json | 5 +++++ .../cros_nonhardened_golden/gcc_clang_syntax.json | 4 ++++ 33 files changed, 205 insertions(+), 17 deletions(-) diff --git a/compiler_wrapper/clang_flags.go b/compiler_wrapper/clang_flags.go index 1f0e2231..9eb951de 100644 --- a/compiler_wrapper/clang_flags.go +++ b/compiler_wrapper/clang_flags.go @@ -47,15 +47,7 @@ func processClangFlags(builder *commandBuilder) error { // Use of -Qunused-arguments allows this set to be small, just those // that clang still warns about. unsupported := map[string]bool{ - "-mno-movbe": true, - "-pass-exit-codes": true, - "-Wclobbered": true, - "-Wno-psabi": true, - "-Wlogical-op": true, - "-Wmissing-parameter-type": true, - "-Wold-style-declaration": true, - "-Woverride-init": true, - "-Wunsafe-loop-optimizations": true, + "-pass-exit-codes": true, } unsupportedPrefixes := []string{"-Wstrict-aliasing=", "-finline-limit="} diff --git a/compiler_wrapper/clang_flags_test.go b/compiler_wrapper/clang_flags_test.go index 2a7fbd15..a4145c22 100644 --- a/compiler_wrapper/clang_flags_test.go +++ b/compiler_wrapper/clang_flags_test.go @@ -212,14 +212,6 @@ func TestFilterUnsupportedClangFlags(t *testing.T) { expectedCount int }{ {clangX86_64, "-pass-exit-codes", 0}, - {clangX86_64, "-Wclobbered", 0}, - {clangX86_64, "-Wunsafe-loop-optimizations", 0}, - {clangX86_64, "-Wlogical-op", 0}, - {clangX86_64, "-Wmissing-parameter-type", 0}, - {clangX86_64, "-Woverride-init", 0}, - {clangX86_64, "-Wold-style-declaration", 0}, - {clangX86_64, "-Wno-psabi", 0}, - {clangX86_64, "-mno-movbe", 0}, {clangX86_64, "-Wstrict-aliasing=xyz", 0}, {clangX86_64, "-finline-limit=xyz", 0}, {"./armv7a-cros-linux-gnu-clang", "-ftrapv", 0}, diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 06030a09..41143bf0 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -38,6 +38,14 @@ "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", + "-mno-movbe", + "-Wclobbered", + "-Wno-psabi", + "-Wlogical-op", + "-Wmissing-parameter-type", + "-Wold-style-declaration", + "-Woverride-init", + "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 97f5b1cf..97dec849 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -46,6 +46,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -108,6 +109,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -173,6 +175,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index 7d5a38cb..6223ed91 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -38,6 +38,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -90,6 +91,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -142,6 +144,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index c7b278ae..717681c4 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -86,6 +87,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -136,6 +138,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 1e0e5480..6940fcaf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -89,6 +90,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -195,6 +198,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -257,6 +261,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -322,6 +327,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -382,6 +388,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -435,6 +442,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -485,6 +493,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -535,6 +544,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -585,6 +595,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -638,6 +649,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index c47b0bb8..acf6c24c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -38,6 +38,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -90,6 +91,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -194,6 +197,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -246,6 +250,7 @@ "-fsanitize=fuzzer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -300,6 +305,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -351,6 +357,7 @@ "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -403,6 +410,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 859597d7..26f5a665 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -45,8 +45,17 @@ "-pie", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", + "-mno-movbe", + "-Wclobbered", + "-Wno-psabi", + "-Wlogical-op", + "-Wmissing-parameter-type", + "-Wold-style-declaration", + "-Woverride-init", + "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -99,6 +108,7 @@ "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -151,6 +161,7 @@ "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -203,6 +214,7 @@ "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -255,6 +267,7 @@ "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -307,6 +320,7 @@ "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -359,6 +373,7 @@ "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 5f3e3a65..247f207c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -71,6 +71,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -124,6 +125,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -168,6 +170,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -218,6 +221,7 @@ "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -319,6 +323,7 @@ "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index b526ec7c..219a8b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +145,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -175,6 +178,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -238,6 +242,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -273,6 +278,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -337,6 +343,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -369,6 +376,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index f4bbf664..10e485da 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -39,6 +39,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -92,6 +93,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -131,6 +133,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -188,6 +191,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -227,6 +231,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 024ac23a..ea804d97 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -110,6 +111,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -179,6 +181,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -232,6 +235,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 97f5b1cf..97dec849 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -46,6 +46,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -108,6 +109,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -173,6 +175,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 1e0e5480..6940fcaf 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -89,6 +90,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -195,6 +198,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -257,6 +261,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -322,6 +327,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -382,6 +388,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -435,6 +442,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -485,6 +493,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -535,6 +544,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -585,6 +595,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -638,6 +649,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b526ec7c..219a8b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +145,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -175,6 +178,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -238,6 +242,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -273,6 +278,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -337,6 +343,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -369,6 +376,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index f4bbf664..10e485da 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -39,6 +39,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -92,6 +93,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -131,6 +133,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -188,6 +191,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -227,6 +231,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 024ac23a..ea804d97 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -110,6 +111,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -179,6 +181,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -232,6 +235,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index dfbbbfe2..af4e3ff5 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -45,6 +45,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -103,6 +104,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -164,6 +166,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index 8637b8ea..50423288 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -35,6 +35,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -129,6 +131,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -176,6 +179,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -232,6 +236,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -292,6 +297,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -351,6 +357,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -398,6 +405,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -442,6 +450,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -486,6 +495,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -530,6 +540,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -577,6 +588,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index b526ec7c..219a8b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +145,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -175,6 +178,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -238,6 +242,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -273,6 +278,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -337,6 +343,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -369,6 +376,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index a84e7baf..a7fa8525 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -38,6 +38,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -85,6 +86,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -118,6 +120,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -169,6 +172,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -202,6 +206,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index b18c608e..bafca635 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -105,6 +106,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -174,6 +176,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -227,6 +230,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index bd3696c4..8b03c092 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -38,6 +38,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -92,6 +93,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -149,6 +151,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index c81f6332..5d72756d 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -30,6 +30,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -74,6 +75,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -118,6 +120,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 6b7b80f2..382b7097 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -70,6 +71,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -112,6 +114,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index b237e784..cadfd1fe 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -73,6 +74,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -118,6 +120,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -163,6 +166,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -217,6 +221,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -274,6 +279,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -326,6 +332,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -371,6 +378,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -413,6 +421,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -455,6 +464,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -497,6 +507,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -542,6 +553,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 7e2f61ee..8786db27 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -31,6 +31,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -76,6 +77,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -121,6 +123,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -166,6 +169,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -211,6 +215,7 @@ "-fsanitize=fuzzer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -258,6 +263,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -302,6 +308,7 @@ "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -346,6 +353,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index b82782ea..98ca5a67 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -37,8 +37,17 @@ "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", + "-mno-movbe", + "-Wclobbered", + "-Wno-psabi", + "-Wlogical-op", + "-Wmissing-parameter-type", + "-Wold-style-declaration", + "-Woverride-init", + "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -83,6 +92,7 @@ "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -127,6 +137,7 @@ "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -171,6 +182,7 @@ "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -215,6 +227,7 @@ "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -259,6 +272,7 @@ "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -303,6 +317,7 @@ "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 82b0efd4..d39e2b0a 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -59,6 +59,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -104,6 +105,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -187,6 +190,7 @@ "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -276,6 +280,7 @@ "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index 5ea4c766..ce9659a2 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -66,6 +67,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -119,6 +121,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +146,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -198,6 +202,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -225,6 +230,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -281,6 +287,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -305,6 +312,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 9e979d63..61bff7d7 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -76,6 +77,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -107,6 +109,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -156,6 +159,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -187,6 +191,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index ca16f412..244e8fad 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -90,6 +91,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -147,6 +149,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -192,6 +195,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", -- cgit v1.2.3 From 40733c3a8a604cf4e7c05b1b5e37ae1bebe0d05c Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Thu, 13 Aug 2020 13:52:23 -0700 Subject: rust_tools: Provide a big hammer to do everything to uprev Rust Create a new subcommand that can call both `create` and `remove`, as well as preparing the repo and uploading the CLs. Also update the steps to match the latest changes in UPGRADE.md. BUG=chromium:1112551 TEST=unittest; create an example CL Change-Id: I225d07d3e765daabd6ce8fc29309a5f11ef9cbae Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2355193 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- rust_tools/rust_uprev.py | 198 ++++++++++++++++++++++++++++++++++-------- rust_tools/rust_uprev_test.py | 121 +++++++++++++++++++++++--- 2 files changed, 271 insertions(+), 48 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 50f85eb9..4ff92109 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -26,6 +26,10 @@ Replace `create --rust_version 1.45.0` with `remove --rust_version 1.43.0` if you want to remove all 1.43.0 related stuff in the same CL. Remember to use a different state file if you choose to run different subcommands. +If you want a hammer that can do everything for you, use the subcommand +`roll`. It can create a Rust uprev CL with `create` and `remove` and upload +the CL to chromium code review. + See `--help` for all available options. """ @@ -43,12 +47,13 @@ import sys import tempfile from typing import Any, Callable, Dict, List, NamedTuple, Optional, T, Tuple -from llvm_tools import chroot +from llvm_tools import chroot, git RUST_PATH = '/mnt/host/source/src/third_party/chromiumos-overlay/dev-lang/rust' -def get_command_output(command: List[str]) -> str: - return subprocess.check_output(command, encoding='utf-8').strip() +def get_command_output(command: List[str], *args, **kwargs) -> str: + return subprocess.check_output( + command, encoding='utf-8', *args, **kwargs).strip() class RustVersion(NamedTuple): @@ -109,18 +114,8 @@ def parse_commandline_args() -> argparse.Namespace: help='Continue the steps from the state file', ) - subparsers = parser.add_subparsers(dest='subparser_name') - subparser_names = [] - - create_parser = subparsers.add_parser('create') - subparser_names.append('create') - create_parser.add_argument( - '--rust_version', - type=RustVersion.parse, - required=True, - help='Rust version to upgrade to, in the form a.b.c', - ) - create_parser.add_argument( + create_parser_template = argparse.ArgumentParser(add_help=False) + create_parser_template.add_argument( '--template', type=RustVersion.parse, default=None, @@ -128,19 +123,70 @@ def parse_commandline_args() -> argparse.Namespace: 'a.b.c The ebuild has to exist in the chroot. If not specified, the ' 'tool will use the current Rust version in the chroot as template.', ) - create_parser.add_argument( + create_parser_template.add_argument( '--skip_compile', action='store_true', help='Skip compiling rust to test the tool. Only for testing', ) + subparsers = parser.add_subparsers(dest='subparser_name') + subparser_names = [] + subparser_names.append('create') + create_parser = subparsers.add_parser( + 'create', + parents=[create_parser_template], + help='Create changes uprevs Rust to a new version', + ) + create_parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to uprev to, in the form a.b.c', + ) + subparser_names.append('remove') - remove_parser = subparsers.add_parser('remove') + remove_parser = subparsers.add_parser( + 'remove', + help='Clean up old Rust version from chroot', + ) remove_parser.add_argument( '--rust_version', type=RustVersion.parse, + default=None, + help='Rust version to remove, in the form a.b.c If not ' + 'specified, the tool will remove the oldest version in the chroot', + ) + + subparser_names.append('roll') + roll_parser = subparsers.add_parser( + 'roll', + parents=[create_parser_template], + help='A command can create and upload a Rust uprev CL, including ' + 'preparing the repo, creating new Rust uprev, deleting old uprev, ' + 'and upload a CL to crrev.', + ) + roll_parser.add_argument( + '--uprev', + type=RustVersion.parse, required=True, - help='Rust version to upgrade to, in the form a.b.c', + help='Rust version to uprev to, in the form a.b.c', + ) + roll_parser.add_argument( + '--remove', + type=RustVersion.parse, + default=None, + help='Rust version to remove, in the form a.b.c If not ' + 'specified, the tool will remove the oldest version in the chroot', + ) + roll_parser.add_argument( + '--skip_cross_compiler', + action='store_true', + help='Skip updating cross-compiler in the chroot', + ) + roll_parser.add_argument( + '--no_upload', + action='store_true', + help='If specified, the tool will not upload the CL for review', ) args = parser.parse_args() @@ -341,12 +387,34 @@ def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: logging.info('Downloading Rust from %s', rust_src) gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' - local_file = os.path.join(tempdir, tarfile_name) - subprocess.check_call(['curl', '-f', '-o', local_file, rust_src]) + # Download Rust's source + rust_file = os.path.join(tempdir, tarfile_name) + subprocess.check_call(['curl', '-f', '-o', rust_file, rust_src]) + + # Verify the signature of the source + sig_file = os.path.join(tempdir, 'rustc_sig.asc') + subprocess.check_call(['curl', '-f', '-o', sig_file, f'{rust_src}.asc']) + try: + subprocess.check_output(['gpg', '--verify', sig_file, rust_file], + encoding='utf-8', + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + if "gpg: Can't check signature" not in e.output: + raise RuntimeError(f'Failed to execute `gpg --verify`, {e.output}') + + # If it fails to verify the signature, try import rustc key, and retry. + keys = get_command_output( + ['curl', '-f', 'https://keybase.io/rust/pgp_keys.asc']) + subprocess.run(['gpg', '--import'], + input=keys, + encoding='utf-8', + check=True) + subprocess.check_call(['gpg', '--verify', sig_file, rust_file]) + # Since we are using `-n` to skip an item if it already exists, there's no # need to check if the file exists on GS bucket or not. subprocess.check_call( - ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsutil_location]) + ['gsutil', 'cp', '-n', '-a', 'public-read', rust_file, gsutil_location]) def perform_step(state_file: pathlib.Path, @@ -378,10 +446,7 @@ def perform_step(state_file: pathlib.Path, def create_rust_uprev(rust_version: RustVersion, template: Optional[RustVersion], skip_compile: bool, - run_step: Callable[[ - str, Callable[[], T], Optional[Callable[[Any], T]], - Optional[Callable[[T], Any]] - ], T]) -> None: + run_step: Callable[[], T]) -> None: stage0_info = run_step( 'parse stage0 file', lambda: parse_stage0_file(rust_version)) template_version = run_step( @@ -409,29 +474,82 @@ def create_rust_uprev(rust_version: RustVersion, template_version, rust_version)) +def find_oldest_rust_version_inchroot() -> RustVersion: + rust_versions = [ + RustVersion.parse(x) for x in os.listdir(RUST_PATH) if '.ebuild' in x + ] + + if len(rust_versions) <= 1: + raise RuntimeError('Expect to find more than one Rust versions') + return min(rust_versions) + + def remove_files(filename: str, path: str) -> None: subprocess.check_call(['git', 'rm', filename], cwd=path) -def remove_rust_uprev(rust_version: RustVersion, run_step: Callable[[ - str, Callable[[], T], Optional[Callable[[Any], T]], Optional[ - Callable[[T], Any]] -], T]) -> None: +def remove_rust_uprev(rust_version: Optional[RustVersion], + run_step: Callable[[], T]) -> None: + delete_version = run_step( + 'find rust version to delete', + lambda: rust_version or find_oldest_rust_version_inchroot(), + result_from_json=prepare_uprev_from_json, + ) run_step( 'remove patches', lambda: remove_files( - f'files/rust-{rust_version}-*.patch', RUST_PATH)) - run_step('remove ebuild', lambda: remove_files(f'rust-{rust_version}.ebuild', - RUST_PATH)) + f'files/rust-{delete_version}-*.patch', RUST_PATH)) + run_step('remove ebuild', lambda: remove_files( + f'rust-{delete_version}.ebuild', RUST_PATH)) ebuild_file = get_command_output(['equery', 'w', 'rust']) run_step('update manifest', lambda: update_manifest(ebuild_file)) run_step('remove version from rust packages', lambda: update_rust_packages( - rust_version, add=False)) + delete_version, add=False)) run_step( 'remove virtual/rust', lambda: remove_files( - f'rust-{rust_version}.ebuild', + f'rust-{delete_version}.ebuild', os.path.join(RUST_PATH, '../../virtual/rust'))) +def create_new_repo(rust_version: RustVersion) -> None: + output = get_command_output(['git', 'status', '--porcelain'], cwd=RUST_PATH) + if output: + raise RuntimeError( + f'{RUST_PATH} has uncommitted changes, please either discard them ' + 'or commit them.') + git.CreateBranch(RUST_PATH, f'rust-to-{rust_version}') + + +def build_cross_compiler() -> None: + # Get target triples in ebuild + rust_ebuild = get_command_output(['equery', 'w', 'rust']) + with open(rust_ebuild, encoding='utf-8') as f: + contents = f.read() + + target_triples_re = re.compile(r'RUSTC_TARGET_TRIPLES=\(([^)]+)\)') + m = target_triples_re.search(contents) + assert m, 'RUST_TARGET_TRIPLES not found in rust ebuild' + target_triples = m.group(1).strip().split('\n') + for target in target_triples: + if 'cros-' not in target: + continue + target = target.strip() + logging.info('Emerging cross compiler %s', target) + subprocess.check_call(['sudo', 'emerge', '-G', f'cross-{target}/gcc']) + + +def create_new_commit(rust_version: RustVersion) -> None: + subprocess.check_call(['git', 'add', '-A'], cwd=RUST_PATH) + messages = [ + f'[DO NOT SUBMIT] dev-lang/rust: upgrade to Rust {rust_version}', + '', + 'This CL is created by rust_uprev tool automatically.' + '', + 'BUG=None', + 'TEST=Use CQ to test the new Rust version', + ] + git.UploadChanges(RUST_PATH, f'rust-to-{rust_version}', messages) + + def main() -> None: if not chroot.InChroot(): raise RuntimeError('This script must be executed inside chroot') @@ -461,8 +579,18 @@ def main() -> None: if args.subparser_name == 'create': create_rust_uprev(args.rust_version, args.template, args.skip_compile, run_step) - else: + elif args.subparser_name == 'remove': remove_rust_uprev(args.rust_version, run_step) + else: + # If you have added more subparser_name, please also add the handlers above + assert args.subparser_name == 'roll' + run_step('create new repo', lambda: create_new_repo(args.uprev)) + if not args.skip_cross_compiler: + run_step('build cross compiler', build_cross_compiler) + create_rust_uprev(args.uprev, args.template, args.skip_compile, run_step) + remove_rust_uprev(args.remove, run_step) + if not args.no_upload: + run_step('create rust uprev CL', lambda: create_new_commit(args.uprev)) if __name__ == '__main__': diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index e007b822..a28c551e 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -13,6 +13,8 @@ import subprocess import unittest from unittest import mock +from llvm_tools import git + import rust_uprev @@ -223,6 +225,67 @@ class UpdateRustPackagesTests(unittest.TestCase): package_after) +class UploadToLocalmirrorTests(unittest.TestCase): + """Tests for upload_to_localmirror""" + + def setUp(self): + self.tempdir = '/tmp/any/dir' + self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.tarfile_name = f'rustc-{self.new_version}-src.tar.gz' + self.rust_src = f'https://static.rust-lang.org/dist/{self.tarfile_name}' + self.gsurl = f'gs://chromeos-localmirror/distfiles/{self.tarfile_name}' + self.rust_file = os.path.join(self.tempdir, self.tarfile_name) + self.sig_file = os.path.join(self.tempdir, 'rustc_sig.asc') + + @mock.patch.object(subprocess, 'check_call') + @mock.patch.object(subprocess, 'check_output') + @mock.patch.object(subprocess, 'run') + def test_pass_without_retry(self, mock_run, mock_output, mock_call): + rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + mock_output.assert_called_once_with( + ['gpg', '--verify', self.sig_file, self.rust_file], + encoding='utf-8', + stderr=subprocess.STDOUT) + mock_call.assert_has_calls([ + mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), + mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), + mock.call([ + 'gsutil', 'cp', '-n', '-a', 'public-read', self.rust_file, + self.gsurl + ]) + ]) + mock_run.assert_not_called() + + @mock.patch.object(subprocess, 'check_call') + @mock.patch.object(subprocess, 'check_output') + @mock.patch.object(subprocess, 'run') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_pass_with_retry(self, mock_output, mock_run, mock_check, mock_call): + mock_check.side_effect = subprocess.CalledProcessError( + returncode=2, cmd=None, output="gpg: Can't check signature") + mock_output.return_value = 'some_gpg_keys' + rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + mock_check.assert_called_once_with( + ['gpg', '--verify', self.sig_file, self.rust_file], + encoding='utf-8', + stderr=subprocess.STDOUT) + mock_output.assert_called_once_with( + ['curl', '-f', 'https://keybase.io/rust/pgp_keys.asc']) + mock_run.assert_called_once_with(['gpg', '--import'], + input='some_gpg_keys', + encoding='utf-8', + check=True) + mock_call.assert_has_calls([ + mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), + mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), + mock.call(['gpg', '--verify', self.sig_file, self.rust_file]), + mock.call([ + 'gsutil', 'cp', '-n', '-a', 'public-read', self.rust_file, + self.gsurl + ]) + ]) + + class RustUprevOtherStagesTests(unittest.TestCase): """Tests for other steps in rust_uprev""" @@ -305,20 +368,52 @@ class RustUprevOtherStagesTests(unittest.TestCase): os.path.join(virtual_rust_dir, f'rust-{self.new_version}.ebuild')) mock_exists.assert_called_once_with(virtual_rust_dir) + @mock.patch.object(os, 'listdir') + def test_find_oldest_rust_version_inchroot_pass(self, mock_ls): + mock_ls.return_value = [ + f'rust-{self.old_version}.ebuild', + f'rust-{self.current_version}.ebuild', f'rust-{self.new_version}.ebuild' + ] + actual = rust_uprev.find_oldest_rust_version_inchroot() + expected = self.old_version + self.assertEqual(expected, actual) + + @mock.patch.object(os, 'listdir') + def test_find_oldest_rust_version_inchroot_fail_with_only_one_ebuild( + self, mock_ls): + mock_ls.return_value = [f'rust-{self.new_version}.ebuild'] + with self.assertRaises(RuntimeError) as context: + rust_uprev.find_oldest_rust_version_inchroot() + self.assertEqual('Expect to find more than one Rust versions', + str(context.exception)) + + @mock.patch.object(rust_uprev, 'get_command_output') + @mock.patch.object(git, 'CreateBranch') + def test_create_new_repo(self, mock_branch, mock_output): + mock_output.return_value = '' + rust_uprev.create_new_repo(self.new_version) + mock_branch.assert_called_once_with(rust_uprev.RUST_PATH, + f'rust-to-{self.new_version}') + + @mock.patch.object(rust_uprev, 'get_command_output') @mock.patch.object(subprocess, 'check_call') - def test_upload_to_localmirror(self, mock_call): - tempdir = '/tmp/any/dir' - rust_uprev.upload_to_localmirror(tempdir, self.new_version) - - tarfile_name = f'rustc-{self.new_version}-src.tar.gz' - rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' - gsurl = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' - local_file = os.path.join(tempdir, tarfile_name) - mock_call.assert_has_calls([ - mock.call(['curl', '-f', '-o', local_file, rust_src]), - mock.call( - ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsurl]) - ]) + def test_build_cross_compiler(self, mock_call, mock_output): + mock_output.return_value = f'rust-{self.new_version}.ebuild' + cros_targets = [ + 'x86_64-cros-linux-gnu', 'armv7a-cros-linux-gnueabihf', + 'aarch64-cros-linux-gnu' + ] + all_triples = ['x86_64-pc-linux-gnu'] + cros_targets + rust_ebuild = 'RUSTC_TARGET_TRIPLES=(' + '\n\t'.join(all_triples) + ')' + mock_open = mock.mock_open(read_data=rust_ebuild) + with mock.patch('builtins.open', mock_open): + rust_uprev.build_cross_compiler() + + emerge_calls = [ + mock.call(['sudo', 'emerge', '-G', f'cross-{x}/gcc']) + for x in cros_targets + ] + mock_call.assert_has_calls(emerge_calls) if __name__ == '__main__': -- cgit v1.2.3 From 98de93b00a543825e7c90477eb0808e9fe9b4c55 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Tue, 18 Aug 2020 18:27:03 +0000 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13371.0-1597657048 Update chromeos-kernel-4_4 to R86-13393.0-1597657015 Update chromeos-kernel-4_14 to R86-13380.0-1597656799 Update chromeos-kernel-4_19 to R86-13390.0-1597656794 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: Ia92102c4fc76c86d3e79984b578ac74ffbb623c3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2363391 Tested-by: Bob Haarman Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 66507a3b..29545800 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1597051939" + "name": "R86-13371.0-1597657048" }, "chromeos-kernel-4_4": { - "name": "R86-13380.0-1597052123" + "name": "R86-13393.0-1597657015" }, "chromeos-kernel-4_14": { - "name": "R86-13380.0-1597052364" + "name": "R86-13380.0-1597656799" }, "chromeos-kernel-4_19": { - "name": "R86-13380.0-1597052000" + "name": "R86-13390.0-1597656794" } } -- cgit v1.2.3 From 4d7093dd6d1441fbc49e61e94d5912307f1436bb Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 19 Aug 2020 12:00:45 -0700 Subject: cros_utils: clean up naming Also fixed format to comply with yapf. BUG=chromium:1099035 TEST=None. Change-Id: I341ee97c2270f33548590daadb36050c2a6baaf6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2364722 Reviewed-by: Tiancong Wang Tested-by: Jian Cai --- cros_utils/buildbot_utils.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cros_utils/buildbot_utils.py b/cros_utils/buildbot_utils.py index e0c54782..b600c6aa 100644 --- a/cros_utils/buildbot_utils.py +++ b/cros_utils/buildbot_utils.py @@ -50,8 +50,8 @@ def PeekTrybotImage(chromeos_root, buildbucket_id): and url looks like: gs://chromeos-image-archive/trybot-elm-release-tryjob/R67-10468.0.0-b20789 """ - command = ( - 'cros buildresult --report json --buildbucket-id %s' % buildbucket_id) + command = ('cros buildresult --report json --buildbucket-id %s' % + buildbucket_id) rc, out, _ = RunCommandInPath(chromeos_root, command) # Current implementation of cros buildresult returns fail when a job is still @@ -194,9 +194,9 @@ def GetTrybotImage(chromeos_root, image = '' if not image: - logger.GetLogger().LogError( - 'Trybot job (buildbucket id: %s) failed with' - 'status %s; no trybot image generated. ' % (buildbucket_id, status)) + logger.GetLogger().LogError('Trybot job (buildbucket id: %s) failed with' + 'status %s; no trybot image generated. ' % + (buildbucket_id, status)) else: # Convert full gs path to what crosperf expects. For example, convert # gs://chromeos-image-archive/trybot-elm-release-tryjob/R67-10468.0.0-b20789 @@ -226,13 +226,13 @@ def WaitForImage(chromeos_root, build): while elapsed_time < TIME_OUT: if DoesImageExist(chromeos_root, build): return - logger.GetLogger().LogOutput( - 'Image %s not ready, waiting for 10 minutes' % build) + logger.GetLogger().LogOutput('Image %s not ready, waiting for 10 minutes' % + build) time.sleep(SLEEP_TIME) elapsed_time += SLEEP_TIME - logger.GetLogger().LogOutput( - 'Image %s not found, waited for %d hours' % (build, (TIME_OUT / 3600))) + logger.GetLogger().LogOutput('Image %s not found, waited for %d hours' % + (build, (TIME_OUT / 3600))) raise BuildbotTimeout('Timeout while waiting for image %s' % build) @@ -253,7 +253,7 @@ def GetLatestImage(chromeos_root, path): candidates.sort(reverse=True) for c in candidates: build = '%s/R%d-%d.%d.%d' % (path, c[0], c[1], c[2], c[3]) - # Blacklist "R79-12384.0.0" image released by mistake. + # Denylist "R79-12384.0.0" image released by mistake. # TODO(crbug.com/992242): Remove the filter by 2019-09-05. if c == [79, 12384, 0, 0]: continue -- cgit v1.2.3 From eaed17704e9752dfd1f60f7f92a8f346ebdf1533 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Tue, 25 Aug 2020 13:48:30 -0700 Subject: afdo_tools: Update update_kernel_afdo to check previous branch When we just branch, and no profiles for the current canary branch can be found, we should check the profiles on previous branch. Also fix non-inclusive language in this patch. BUG=None TEST=kernel_afdo.json changes made locally Change-Id: I0de00274001ee7a120c40163ab93cb35e143acdf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2376170 Tested-by: Tiancong Wang Reviewed-by: Bob Haarman --- afdo_tools/update_kernel_afdo | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index 64e5e477..8f100a12 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -1,4 +1,7 @@ #!/bin/bash +# Copyright 2020 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. # Due to crbug.com/1081332, we need to update AFDO metadata # manually. This script performs a few checks and generates a @@ -26,6 +29,7 @@ set -eu set -o pipefail +CROS_REPO=https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay GS_BASE=gs://chromeos-prebuilt/afdo-job/vetted/kernel KVERS="3.18 4.4 4.14 4.19" errs="" @@ -44,9 +48,11 @@ else expected_time=$(date +%s -d "last Monday") fi -# Get the current master branch number (using beta + 1) -beta=$(git ls-remote -h https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay | sed -n -e "s/^.*release-R\([0-9][0-9]*\).*$/\1/p" | sort -g | tail -1) -master="$(($beta + 1))" +# Get the current canary branch number (using beta + 1) +beta=$(git ls-remote -h $CROS_REPO | \ + sed -n -e "s/^.*release-R\([0-9][0-9]*\).*$/\1/p" | \ + sort -g | tail -1) +canary="$(($beta + 1))" json="{" sep="" @@ -54,7 +60,14 @@ for kver in $KVERS do # Sort the gs output by timestamp (default ordering is by name, so # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) - latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | grep "R${master}" | tail -1) + latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ + grep "R${canary}" | tail -1 || true) + if [ -z $latest ] + then + # if no profiles exist for R${canary}, try the previous branch + latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ + grep "R${beta}" | tail -1) + fi # Verify that the file has the expected date. file_time=$(echo "$latest" | awk '{print $2}') -- cgit v1.2.3 From 5d21b27e2ed16db964d947a0a09fa156522a632d Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 25 Aug 2020 12:36:45 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13371.0-1598261536 Update chromeos-kernel-4_4 to R86-13380.0-1598262292 Update chromeos-kernel-4_14 to R86-13380.0-1598261903 Update chromeos-kernel-4_19 to R86-13390.0-1598262023 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I4dd792a83fea8e205d40cbc26b9f03d84b751ef3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2376168 Reviewed-by: Tiancong Wang Tested-by: Denis Nikitin --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 29545800..5958e5af 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1597657048" + "name": "R86-13371.0-1598261536" }, "chromeos-kernel-4_4": { - "name": "R86-13393.0-1597657015" + "name": "R86-13380.0-1598262292" }, "chromeos-kernel-4_14": { - "name": "R86-13380.0-1597656799" + "name": "R86-13380.0-1598261903" }, "chromeos-kernel-4_19": { - "name": "R86-13390.0-1597656794" + "name": "R86-13390.0-1598262023" } } -- cgit v1.2.3 From 2e734a52b5556f47cfd8ee560763dbd351a08680 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Wed, 26 Aug 2020 11:00:10 -0700 Subject: crosperf: replace statistics stdev with pstdev Behavior and results of statistics.stdev(data) are slightly different from numpy.std(data) with default "ddof". The main difference is the divisor which is "N - 1" in stdev vs. "N" in numpy.std. As a consequence stdev fails with "N=1". The change replaces stdev with pstdev (population standard deviation) which is equivalent to numpy.std with default arguments that we were using. Added unittest with StdResult testing. BUG=None TEST=unittest and crosperf with one iteration passes. Change-Id: I70c7105e6cabc27437504de16ea27afdd719e552 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2376880 Reviewed-by: George Burgess Tested-by: Denis Nikitin Commit-Queue: Denis Nikitin --- cros_utils/tabulator.py | 72 ++++++++++++++++++++++---------------------- cros_utils/tabulator_test.py | 14 +++++++++ 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 27b1c64d..1a3fd4a7 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -610,7 +610,7 @@ class StdResult(NumericalResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - cell.value = statistics.stdev(values) + cell.value = statistics.pstdev(values) class CoeffVarResult(NumericalResult): @@ -624,7 +624,7 @@ class CoeffVarResult(NumericalResult): if self.ignore_min_max: values = _RemoveMinMax(cell, values) if statistics.mean(values) != 0.0: - noise = abs(statistics.stdev(values) / statistics.mean(values)) + noise = abs(statistics.pstdev(values) / statistics.mean(values)) else: noise = 0.0 cell.value = noise @@ -1498,40 +1498,40 @@ def GetComplexTable(runs, labels, out_to=TablePrinter.CONSOLE): if __name__ == '__main__': # Run a few small tests here. - runs = [ - [{ - 'k1': '10', - 'k2': '12', - 'k5': '40', - 'k6': '40', - 'ms_1': '20', - 'k7': 'FAIL', - 'k8': 'PASS', - 'k9': 'PASS', - 'k10': '0' - }, { - 'k1': '13', - 'k2': '14', - 'k3': '15', - 'ms_1': '10', - 'k8': 'PASS', - 'k9': 'FAIL', - 'k10': '0' - }], - [{ - 'k1': '50', - 'k2': '51', - 'k3': '52', - 'k4': '53', - 'k5': '35', - 'k6': '45', - 'ms_1': '200', - 'ms_2': '20', - 'k7': 'FAIL', - 'k8': 'PASS', - 'k9': 'PASS' - }], - ] + run1 = { + 'k1': '10', + 'k2': '12', + 'k5': '40', + 'k6': '40', + 'ms_1': '20', + 'k7': 'FAIL', + 'k8': 'PASS', + 'k9': 'PASS', + 'k10': '0' + } + run2 = { + 'k1': '13', + 'k2': '14', + 'k3': '15', + 'ms_1': '10', + 'k8': 'PASS', + 'k9': 'FAIL', + 'k10': '0' + } + run3 = { + 'k1': '50', + 'k2': '51', + 'k3': '52', + 'k4': '53', + 'k5': '35', + 'k6': '45', + 'ms_1': '200', + 'ms_2': '20', + 'k7': 'FAIL', + 'k8': 'PASS', + 'k9': 'PASS' + } + runs = [[run1, run2], [run3]] labels = ['vanilla', 'modified'] t = GetComplexTable(runs, labels, TablePrinter.CONSOLE) print(t) diff --git a/cros_utils/tabulator_test.py b/cros_utils/tabulator_test.py index 227e2d70..9dd4828e 100755 --- a/cros_utils/tabulator_test.py +++ b/cros_utils/tabulator_test.py @@ -33,6 +33,20 @@ class TabulatorTest(unittest.TestCase): result.Compute(cell, table[2], table[1]) self.assertTrue(cell.value == float(table[2][0])) + def testStdResult(self): + table = ['k1', [], ['1', '2']] + result = tabulator.StdResult() + cell = tabulator.Cell() + result.Compute(cell, table[2], table[1]) + self.assertTrue(cell.value == 0.5) + + def testStdResultOfSampleSize1(self): + table = ['k1', [], ['1']] + result = tabulator.StdResult() + cell = tabulator.Cell() + result.Compute(cell, table[2], table[1]) + self.assertTrue(cell.value == 0.0) + def testStringMean(self): smr = tabulator.StringMeanResult() cell = tabulator.Cell() -- cgit v1.2.3 From 29a3f18786590bfcfc98bf0640b02bb684d80ec3 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 7 Sep 2020 14:23:15 -0700 Subject: afdo_metadata: Publish the new kernel profiles. Update chromeos-kernel-3_18 to R87-13421.11-1599471395 Update chromeos-kernel-4_4 to R87-13421.11-1599472924 Update chromeos-kernel-4_14 to R87-13421.11-1599471640 Update chromeos-kernel-4_19 to R87-13421.11-1599472679 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: Iccf498fa9b8dbd7192d3a7c04fdaec68921bfe7c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2396713 Reviewed-by: Tiancong Wang Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 5958e5af..58779409 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1598261536" + "name": "R87-13421.11-1599471395" }, "chromeos-kernel-4_4": { - "name": "R86-13380.0-1598262292" + "name": "R87-13421.11-1599472924" }, "chromeos-kernel-4_14": { - "name": "R86-13380.0-1598261903" + "name": "R87-13421.11-1599471640" }, "chromeos-kernel-4_19": { - "name": "R86-13390.0-1598262023" + "name": "R87-13421.11-1599472679" } } -- cgit v1.2.3 From c1e7b46ea3d6616f3844c30e89f5014d0c3d6926 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 15 Sep 2020 11:44:49 -0700 Subject: llvm_tools: tweak script verbosity At the moment, this script is silent except for when gsutil sneakily prints file copying status to stdout/stderr. Since we're already configuring `logging` here, be a bit more descriptive about our current status. BUG=None TEST=Ran the script. Change-Id: Ibcdb0f6cd488e70b9f810a9ca615556a7d672948 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2412481 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/bisect_clang_crashes.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py index e7ce96e4..9ea10352 100755 --- a/llvm_tools/bisect_clang_crashes.py +++ b/llvm_tools/bisect_clang_crashes.py @@ -70,12 +70,17 @@ def main(argv): os.makedirs(temporary_directory, exist_ok=True) urls = get_artifacts('gs://chromeos-toolchain-artifacts/clang-crash-diagnoses' '/**/*clang_crash_diagnoses.tar.xz') + logging.info('%d crash URLs found', len(urls)) + visited = {} if os.path.exists(state_file): buildbucket_ids = {url.split('/')[-2] for url in urls} with open(state_file, encoding='utf-8') as f: data = json.load(f) visited = {k: v for k, v in data.items() if k in buildbucket_ids} + logging.info('Successfully loaded %d previously-submitted crashes', + len(visited)) + for url in urls: splits = url.split('/') buildbucket_id = splits[-2] @@ -85,7 +90,9 @@ def main(argv): visited[buildbucket_id] = '%s' % url dest_dir = os.path.join(temporary_directory, buildbucket_id) dest_file = os.path.join(dest_dir, splits[-1]) - subprocess.check_output(['gsutil', 'cp', url, dest_file]) + logging.info('Downloading and submitting %r...', url) + subprocess.check_output(['gsutil', 'cp', url, dest_file], + stderr=subprocess.STDOUT) subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) for src, script in get_crash_reproducers(dest_dir): -- cgit v1.2.3 From 563cdd918ee69f744934c3782a28d0da178ac5d1 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 15 Sep 2020 12:29:02 -0700 Subject: llvm_tools: save intermediate state even if a step fails When uploading multiple crashes, a network error may happen (or anything else, really). This isn't going to save us from SIGKILLs or power-offs (it's impossible to save us 100% from either of those, since there's always going to be a race between writing the JSON file and submitting the test-case), but it should keep us from submitting duplicate crash reports in most cases. This also has us sort results from `gsutil ls`, since that may not always print things in a deterministic order. BUG=None TEST=Ran the script; ^C'ed it in the middle. Change-Id: I9695d83db6fb8161dc6fce16b13980c8eacf219d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2412482 Reviewed-by: Jian Cai Tested-by: George Burgess --- llvm_tools/bisect_clang_crashes.py | 75 +++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py index 9ea10352..4d47c4c3 100755 --- a/llvm_tools/bisect_clang_crashes.py +++ b/llvm_tools/bisect_clang_crashes.py @@ -26,7 +26,7 @@ def get_artifacts(pattern): results = subprocess.check_output(['gsutil', 'ls', pattern], stderr=subprocess.STDOUT, encoding='utf-8') - return [l.strip() for l in results.splitlines()] + return sorted(l.strip() for l in results.splitlines()) def get_crash_reproducers(working_dir): @@ -43,6 +43,21 @@ def get_crash_reproducers(working_dir): return results +def submit_crash_to_forcey(forcey: str, temporary_directory: str, + buildbucket_id: str, url: str) -> None: + dest_dir = os.path.join(temporary_directory, buildbucket_id) + dest_file = os.path.join(dest_dir, os.path.basename(url)) + logging.info('Downloading and submitting %r...', url) + subprocess.check_output(['gsutil', 'cp', url, dest_file], + stderr=subprocess.STDOUT) + subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) + for src, script in get_crash_reproducers(dest_dir): + subprocess.check_output([ + forcey, 'reduce', '-wait=false', '-note', + '%s:%s' % (url, src), '-sh_file', script, '-src_file', src + ]) + + def main(argv): chroot.VerifyOutsideChroot() logging.basicConfig( @@ -81,33 +96,41 @@ def main(argv): logging.info('Successfully loaded %d previously-submitted crashes', len(visited)) - for url in urls: - splits = url.split('/') - buildbucket_id = splits[-2] - # Skip the builds that has been processed - if buildbucket_id in visited: - continue - visited[buildbucket_id] = '%s' % url - dest_dir = os.path.join(temporary_directory, buildbucket_id) - dest_file = os.path.join(dest_dir, splits[-1]) - logging.info('Downloading and submitting %r...', url) - subprocess.check_output(['gsutil', 'cp', url, dest_file], - stderr=subprocess.STDOUT) - subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) - - for src, script in get_crash_reproducers(dest_dir): - subprocess.check_output( - [ - opts.forcey, 'reduce', '-wait=false', '-note', - '%s:%s' % (url, src), '-sh_file', script, '-src_file', src - ], - encoding='utf-8', + try: + for url in urls: + splits = url.split('/') + buildbucket_id = splits[-2] + # Skip the builds that has been processed + if buildbucket_id in visited: + continue + submit_crash_to_forcey( + forcey=opts.forcey, + temporary_directory=temporary_directory, + buildbucket_id=buildbucket_id, + url=url, ) + visited[buildbucket_id] = url + + exception_in_flight = False + except: + exception_in_flight = True + raise + finally: + if exception_in_flight: + # This is best-effort. If the machine powers off or similar, we'll just + # resubmit the same crashes, which is suboptimal, but otherwise + # acceptable. + logging.error('Something went wrong; attempting to save our work...') + else: + logging.info('Persisting state...') + + tmp_state_file = state_file + '.tmp' + with open(tmp_state_file, 'w', encoding='utf-8') as f: + json.dump(visited, f, indent=2) + os.rename(tmp_state_file, state_file) + + logging.info('State successfully persisted') - tmp_state_file = state_file + '.tmp' - with open(tmp_state_file, 'w', encoding='utf-8') as f: - json.dump(visited, f, indent=2) - os.rename(tmp_state_file, state_file) if opts.cleanup: shutil.rmtree(temporary_directory) -- cgit v1.2.3 From 38df970e32b35519245836c25c5a2e99ef6ec642 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 17 Sep 2020 08:14:15 -0700 Subject: toolchain-utils: Update README.md for llvm_tools. This corrects an error, a typo, and an omission I discovered in the README.md instructions. BUG=None TEST=None Change-Id: I19c46d87bf326c9ab320dc7bb23b4a8dae5573fe Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2416246 Auto-Submit: Caroline Tice Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- llvm_tools/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 9c4a9c08..d7c20164 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -278,6 +278,7 @@ $ ./auto_llvm_bisection.py --start_rev 369410 --end_rev 369420 \ --last_tested /abs/path/to/last_tested_file.json \ --extra_change_lists 513590 1394249 \ --options latest-toolchain nochromesdk \ + --chroot_path /path/to/chromeos/chroot \ --builder eve-release-tryjob ``` @@ -554,8 +555,8 @@ PYTHONPATH=../ ./nightly_revert_checker.py \ ### `bisect_clang_crashes.py` This script downloads clang crash diagnoses from -gs://chrome-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for -bisectiton. +gs://chromeos-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for +bisection. Usage example: -- cgit v1.2.3 From 4edc81e0b5fe33fb3c3f59e8188d16e3bd3aba54 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 20 Apr 2020 16:34:43 -0700 Subject: crosperf: Add support to run tests with ssh forwarding The change allows running crosperf with local DUT with port forwarding. Experiment file can define a local DUT with: remote: 127.0.0.1: BUG=chromium:1064988 TEST=Tested with crosperf on local and remote DUT. Change-Id: I62446821f83e8ae39d610ca9ed60c9b37af9852c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2158122 Reviewed-by: Denis Nikitin Reviewed-by: Tiancong Wang Tested-by: Denis Nikitin --- cros_utils/command_executer.py | 58 +++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/cros_utils/command_executer.py b/cros_utils/command_executer.py index b9acbe31..ee1df95c 100755 --- a/cros_utils/command_executer.py +++ b/cros_utils/command_executer.py @@ -229,9 +229,11 @@ class CommandExecuter(object): kwargs['return_output'] = True return self.RunCommandGeneric(*args, **kwargs) - def RemoteAccessInitCommand(self, chromeos_root, machine): + def RemoteAccessInitCommand(self, chromeos_root, machine, port=None): command = '' command += '\nset -- --remote=' + machine + if port: + command += ' --ssh_port=' + port command += '\n. ' + chromeos_root + '/src/scripts/common.sh' command += '\n. ' + chromeos_root + '/src/scripts/remote_access.sh' command += '\nTMP=$(mktemp -d)' @@ -285,12 +287,16 @@ class CommandExecuter(object): sys.exit(1) chromeos_root = os.path.expanduser(chromeos_root) + port = None + if ':' in machine: + machine, port = machine.split(':') # Write all commands to a file. command_file = self.WriteToTempShFile(cmd) retval = self.CopyFiles( command_file, command_file, dest_machine=machine, + dest_port=port, command_terminator=command_terminator, chromeos_root=chromeos_root, dest_cros=True, @@ -302,7 +308,7 @@ class CommandExecuter(object): ' Is the machine up?') return (retval, '', '') - command = self.RemoteAccessInitCommand(chromeos_root, machine) + command = self.RemoteAccessInitCommand(chromeos_root, machine, port) command += '\nremote_sh bash %s' % command_file command += '\nl_retval=$?; echo "$REMOTE_OUT"; exit $l_retval' retval = self.RunCommandGeneric( @@ -313,8 +319,8 @@ class CommandExecuter(object): terminated_timeout=terminated_timeout, print_to_console=print_to_console) if return_output: - connect_signature = ( - 'Initiating first contact with remote host\n' + 'Connection OK\n') + connect_signature = ('Initiating first contact with remote host\n' + + 'Connection OK\n') connect_signature_re = re.compile(connect_signature) modded_retval = list(retval) modded_retval[1] = connect_signature_re.sub('', retval[1]) @@ -449,7 +455,9 @@ class CommandExecuter(object): src, dest, src_machine=None, + src_port=None, dest_machine=None, + dest_port=None, src_user=None, dest_user=None, recursive=True, @@ -475,30 +483,34 @@ class CommandExecuter(object): sys.exit(1) if src_cros: cros_machine = src_machine + cros_port = src_port + host_machine = dest_machine + host_user = dest_user else: cros_machine = dest_machine - - command = self.RemoteAccessInitCommand(chromeos_root, cros_machine) - ssh_command = ( - 'ssh -o StrictHostKeyChecking=no' + ' -o UserKnownHostsFile=$(mktemp)' - + ' -i $TMP_PRIVATE_KEY') + cros_port = dest_port + host_machine = src_machine + host_user = src_user + + command = self.RemoteAccessInitCommand(chromeos_root, cros_machine, + cros_port) + ssh_command = ('ssh -o StrictHostKeyChecking=no' + + ' -o UserKnownHostsFile=$(mktemp)' + + ' -i $TMP_PRIVATE_KEY') + if cros_port: + ssh_command += ' -p %s' % cros_port rsync_prefix = '\nrsync -r -e "%s" ' % ssh_command if dest_cros: - command += rsync_prefix + '%s root@%s:%s' % (src, dest_machine, dest) - return self.RunCommand( - command, - machine=src_machine, - username=src_user, - command_terminator=command_terminator, - print_to_console=print_to_console) + command += rsync_prefix + '%s root@%s:%s' % (src, cros_machine, dest) else: - command += rsync_prefix + 'root@%s:%s %s' % (src_machine, src, dest) - return self.RunCommand( - command, - machine=dest_machine, - username=dest_user, - command_terminator=command_terminator, - print_to_console=print_to_console) + command += rsync_prefix + 'root@%s:%s %s' % (cros_machine, src, dest) + + return self.RunCommand( + command, + machine=host_machine, + username=host_user, + command_terminator=command_terminator, + print_to_console=print_to_console) if dest_machine == src_machine: command = 'rsync -a %s %s' % (src, dest) -- cgit v1.2.3 From 18422a411b81cebc930b7227dc49226bbd140e8d Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 12 Feb 2020 16:06:00 -0800 Subject: bisection: exit after updating kernel Exit after running update_kernel.sh as all the following code is irrelevant to kernels. BUG=chromium:1042452 TEST=verified locally. Change-Id: I9d6fc6f6c319c7a825585868978911806f07a629 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2053243 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- binary_search_tool/common/test_setup.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/binary_search_tool/common/test_setup.sh b/binary_search_tool/common/test_setup.sh index 56b8944a..4fa1abe2 100755 --- a/binary_search_tool/common/test_setup.sh +++ b/binary_search_tool/common/test_setup.sh @@ -109,15 +109,17 @@ if [[ "${BISECT_MODE}" == "OBJECT_MODE" ]]; then echo echo "DEPLOYING" - if [[ ${PACKAGE} == sys-kernel/chromeos-kernel-* ]]; then - echo "/mnt/host/source/src/scripts/update_kernel.sh \ - --remote=${BISECT_REMOTE}" - /mnt/host/source/src/scripts/update_kernel.sh --remote=${BISECT_REMOTE} - else - echo "cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE}" - cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE} --log-level=info + + if [[ ${BISECT_PACKAGE} == sys-kernel/chromeos-kernel-* ]]; then + echo "/mnt/host/source/src/scripts/update_kernel.sh " \ + "--remote=${BISECT_REMOTE} --board=${BISECT_BOARD}" + # exec the command to make sure it always exit after + exec /mnt/host/source/src/scripts/update_kernel.sh --remote=${BISECT_REMOTE} --board=${BISECT_BOARD} fi + echo "cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE}" + cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE} --log-level=info + deploy_status=$? if [[ ${deploy_status} -eq 0 ]] ; then -- cgit v1.2.3 From 7b73dcd8392259b7c67316d09c7bb799429f9a69 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Sat, 12 Sep 2020 17:21:48 -0700 Subject: crosperf: Add verification of per-process profiles Verification is very helpful when we record per-process perf profile and collect top statistics. Using verification we can make sure that perf profiles are collected from the hottest functions in top statistics. BUG=chromium:1098098 TEST=unittests and crosperf with per-process profiling are passing. Change-Id: Ib79b070babcdea38932ba709ac3e14fa3311f842 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2407223 Reviewed-by: Tiancong Wang Reviewed-by: Caroline Tice Commit-Queue: Denis Nikitin Tested-by: Denis Nikitin --- crosperf/results_cache.py | 121 ++++++++++++++++++++++--- crosperf/results_cache_unittest.py | 177 ++++++++++++++++++++++++++++++++----- 2 files changed, 261 insertions(+), 37 deletions(-) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index b435eee3..c5c85942 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -35,6 +35,14 @@ PERF_RESULTS_FILE = 'perf-results.txt' CACHE_KEYS_FILE = 'cache_keys.txt' +class PidVerificationError(Exception): + """Error of perf PID verification in per-process mode.""" + + +class PerfDataReadError(Exception): + """Error of reading a perf.data header.""" + + class Result(object): """Class for holding the results of a single test run. @@ -142,12 +150,12 @@ class Result(object): # while tast runs hold output under TEST_NAME/. # Both ensure to be unique. result_dir_name = self.test_name if self.suite == 'tast' else 'results' - results_dir = self.FindFilesInResultsDir( - '-name %s' % result_dir_name).split('\n')[0] + results_dir = self.FindFilesInResultsDir('-name %s' % + result_dir_name).split('\n')[0] if not results_dir: - self._logger.LogOutput( - 'WARNING: No results dir matching %r found' % result_dir_name) + self._logger.LogOutput('WARNING: No results dir matching %r found' % + result_dir_name) return self.CreateTarball(results_dir, tarball) @@ -239,8 +247,8 @@ class Result(object): command = 'cp -r {0}/* {1}'.format(self.results_dir, self.temp_dir) self.ce.RunCommand(command, print_to_console=False) - command = ('./generate_test_report --no-color --csv %s' % (os.path.join( - '/tmp', os.path.basename(self.temp_dir)))) + command = ('./generate_test_report --no-color --csv %s' % + (os.path.join('/tmp', os.path.basename(self.temp_dir)))) _, out, _ = self.ce.ChrootRunCommandWOutput( self.chromeos_root, command, print_to_console=False) keyvals_dict = {} @@ -390,8 +398,8 @@ class Result(object): perf_data_file) perf_report_file = '%s.report' % perf_data_file if os.path.exists(perf_report_file): - raise RuntimeError( - 'Perf report file already exists: %s' % perf_report_file) + raise RuntimeError('Perf report file already exists: %s' % + perf_report_file) chroot_perf_report_file = misc.GetInsideChrootPath( self.chromeos_root, perf_report_file) perf_path = os.path.join(self.chromeos_root, 'chroot', 'usr/bin/perf') @@ -429,8 +437,8 @@ class Result(object): if self.log_level != 'verbose': self._logger.LogOutput('Perf report generated successfully.') else: - raise RuntimeError( - 'Perf report not generated correctly. CMD: %s' % command) + raise RuntimeError('Perf report not generated correctly. CMD: %s' % + command) # Add a keyval to the dictionary for the events captured. perf_report_files.append( @@ -844,6 +852,88 @@ class Result(object): keyvals[key] = [result, unit] return keyvals + def ReadPidFromPerfData(self): + """Read PIDs from perf.data files. + + Extract PID from perf.data if "perf record" was running per process, + i.e. with "-p " and no "-a". + + Returns: + pids: list of PIDs. + + Raises: + PerfDataReadError when perf.data header reading fails. + """ + cmd = ['/usr/bin/perf', 'report', '--header-only', '-i'] + pids = [] + + for perf_data_path in self.perf_data_files: + perf_data_path_in_chroot = misc.GetInsideChrootPath( + self.chromeos_root, perf_data_path) + path_str = ' '.join(cmd + [perf_data_path_in_chroot]) + status, output, _ = self.ce.ChrootRunCommandWOutput( + self.chromeos_root, path_str) + if status: + # Error of reading a perf.data profile is fatal. + raise PerfDataReadError(f'Failed to read perf.data profile: {path_str}') + + # Pattern to search a line with "perf record" command line: + # # cmdline : /usr/bin/perf record -e instructions -p 123" + cmdline_regex = re.compile( + r'^\#\scmdline\s:\s+(?P.*perf\s+record\s+.*)$') + # Pattern to search PID in a command line. + pid_regex = re.compile(r'^.*\s-p\s(?P\d+)\s*.*$') + for line in output.splitlines(): + cmd_match = cmdline_regex.match(line) + if cmd_match: + # Found a perf command line. + cmdline = cmd_match.group('cmd') + # '-a' is a system-wide mode argument. + if '-a' not in cmdline.split(): + # It can be that perf was attached to PID and was still running in + # system-wide mode. + # We filter out this case here since it's not per-process. + pid_match = pid_regex.match(cmdline) + if pid_match: + pids.append(pid_match.group('pid')) + # Stop the search and move to the next perf.data file. + break + else: + # cmdline wasn't found in the header. It's a fatal error. + raise PerfDataReadError(f'Perf command line is not found in {path_str}') + return pids + + def VerifyPerfDataPID(self): + """Verify PIDs in per-process perf.data profiles. + + Check that at list one top process is profiled if perf was running in + per-process mode. + + Raises: + PidVerificationError if PID verification of per-process perf.data profiles + fail. + """ + perf_data_pids = self.ReadPidFromPerfData() + if not perf_data_pids: + # In system-wide mode there are no PIDs. + self._logger.LogOutput('System-wide perf mode. Skip verification.') + return + + # PIDs will be present only in per-process profiles. + # In this case we need to verify that profiles are collected on the + # hottest processes. + top_processes = [top_cmd['cmd'] for top_cmd in self.top_cmds] + # top_process structure: - + top_pids = [top_process.split('-')[-1] for top_process in top_processes] + for top_pid in top_pids: + if top_pid in perf_data_pids: + self._logger.LogOutput('PID verification passed! ' + f'Top process {top_pid} is profiled.') + return + raise PidVerificationError( + f'top processes {top_processes} are missing in perf.data traces with' + f' PID: {perf_data_pids}.') + def ProcessResults(self, use_cache=False): # Note that this function doesn't know anything about whether there is a # cache hit or miss. It should process results agnostic of the cache hit @@ -882,6 +972,9 @@ class Result(object): cpustats = self.ProcessCpustatsResults() if self.top_log_file: self.top_cmds = self.ProcessTopResults() + # Verify that PID in non system-wide perf.data and top_cmds are matching. + if self.perf_data_files and self.top_cmds: + self.VerifyPerfDataPID() if self.wait_time_log_file: with open(self.wait_time_log_file) as f: wait_time = f.readline().strip() @@ -962,8 +1055,8 @@ class Result(object): def CreateTarball(self, results_dir, tarball): if not results_dir.strip(): - raise ValueError( - 'Refusing to `tar` an empty results_dir: %r' % results_dir) + raise ValueError('Refusing to `tar` an empty results_dir: %r' % + results_dir) ret = self.ce.RunCommand('cd %s && ' 'tar ' @@ -1013,8 +1106,8 @@ class Result(object): if ret: command = 'rm -rf {0}'.format(temp_dir) self.ce.RunCommand(command) - raise RuntimeError( - 'Could not move dir %s to dir %s' % (temp_dir, cache_dir)) + raise RuntimeError('Could not move dir %s to dir %s' % + (temp_dir, cache_dir)) @classmethod def CreateFromRun(cls, diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index 812d5ab3..91ceed22 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -21,6 +21,8 @@ import test_flag from label import MockLabel from results_cache import CacheConditions +from results_cache import PerfDataReadError +from results_cache import PidVerificationError from results_cache import Result from results_cache import ResultsCache from results_cache import TelemetryResult @@ -158,6 +160,34 @@ keyvals = { 'b_string_strstr___abcdefghijklmnopqrstuvwxyz__': '0.0134553343333' } +PERF_DATA_HEADER = """ +# ======== +# captured on : Thu Jan 01 00:00:00 1980 +# header version : 1 +# data offset : 536 +# data size : 737678672 +# feat offset : 737679208 +# hostname : localhost +# os release : 5.4.61 +# perf version : +# arch : aarch64 +# nrcpus online : 8 +# nrcpus avail : 8 +# total memory : 5911496 kB +# cmdline : /usr/bin/perf record -e instructions -p {pid} +# event : name = instructions, , id = ( 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193 ), type = 8, size = 112 +# event : name = dummy:u, , id = ( 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204 ), type = 1, size = 112, config = 0x9 +# CPU_TOPOLOGY info available, use -I to display +# pmu mappings: software = 1, uprobe = 6, cs_etm = 8, breakpoint = 5, tracepoint = 2, armv8_pmuv3 = 7 +# contains AUX area data (e.g. instruction trace) +# time of first sample : 0.000000 +# time of last sample : 0.000000 +# sample duration : 0.000 ms +# missing features: TRACING_DATA CPUDESC CPUID NUMA_TOPOLOGY BRANCH_STACK GROUP_DESC STAT CACHE MEM_TOPOLOGY CLOCKID DIR_FORMAT +# ======== +# +""" + TURBOSTAT_LOG_OUTPUT = \ """CPU Avg_MHz Busy% Bzy_MHz TSC_MHz IRQ CoreTmp - 329 12.13 2723 2393 10975 77 @@ -470,6 +500,7 @@ class ResultTest(unittest.TestCase): def setUp(self): self.result = Result(self.mock_logger, self.mock_label, 'average', self.mock_cmd_exec) + self.result.chromeos_root = '/tmp/chromeos' @mock.patch.object(os.path, 'isdir') @mock.patch.object(command_executer.CommandExecuter, 'RunCommand') @@ -707,7 +738,8 @@ class ResultTest(unittest.TestCase): self.assertEqual(mock_chrootruncmd.call_count, 1) self.assertEqual( mock_chrootruncmd.call_args_list[0][0], - ('/tmp', ('./generate_test_report --no-color --csv %s') % TMP_DIR1)) + (self.result.chromeos_root, + ('./generate_test_report --no-color --csv %s') % TMP_DIR1)) self.assertEqual(mock_getpath.call_count, 1) self.assertEqual(mock_mkdtemp.call_count, 1) self.assertEqual(res, {'Total': [10, 'score'], 'first_time': [680, 'ms']}) @@ -916,6 +948,101 @@ class ResultTest(unittest.TestCase): found_no_logs = self.result.GetCpustatsFile() self.assertEqual(found_no_logs, '') + def test_verify_perf_data_pid_ok(self): + """Verify perf PID which is present in TOP_DATA.""" + self.result.top_cmds = TOP_DATA + # pid is present in TOP_DATA. + with mock.patch.object( + Result, 'ReadPidFromPerfData', return_value=['5713']): + self.result.VerifyPerfDataPID() + + def test_verify_perf_data_pid_fail(self): + """Test perf PID missing in top raises the error.""" + self.result.top_cmds = TOP_DATA + # pid is not in the list of top processes. + with mock.patch.object( + Result, 'ReadPidFromPerfData', return_value=['9999']): + with self.assertRaises(PidVerificationError): + self.result.VerifyPerfDataPID() + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_ok(self, mock_runcmd): + """Test perf header parser, normal flow.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + exp_pid = '12345' + mock_runcmd.return_value = (0, PERF_DATA_HEADER.format(pid=exp_pid), '') + pids = self.result.ReadPidFromPerfData() + self.assertEqual(pids, [exp_pid]) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_mult_profiles(self, mock_runcmd): + """Test multiple perf.data files with PID.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + # self.result.chromeos_root = '/tmp/chromeos' + self.result.perf_data_files = [ + '/tmp/chromeos/chroot/tmp/results/perf.data.0', + '/tmp/chromeos/chroot/tmp/results/perf.data.1', + ] + # There is '-p ' in command line but it's still system-wide: '-a'. + cmd_line = '# cmdline : /usr/bin/perf record -e instructions -p {pid}' + exp_perf_pids = ['1111', '2222'] + mock_runcmd.side_effect = [ + (0, cmd_line.format(pid=exp_perf_pids[0]), ''), + (0, cmd_line.format(pid=exp_perf_pids[1]), ''), + ] + pids = self.result.ReadPidFromPerfData() + self.assertEqual(pids, exp_perf_pids) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_no_pid(self, mock_runcmd): + """Test perf.data without PID.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + cmd_line = '# cmdline : /usr/bin/perf record -e instructions' + mock_runcmd.return_value = (0, cmd_line, '') + pids = self.result.ReadPidFromPerfData() + # pids is empty. + self.assertEqual(pids, []) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_system_wide(self, mock_runcmd): + """Test reading from system-wide profile with PID.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + # There is '-p ' in command line but it's still system-wide: '-a'. + cmd_line = '# cmdline : /usr/bin/perf record -e instructions -a -p 1234' + mock_runcmd.return_value = (0, cmd_line, '') + pids = self.result.ReadPidFromPerfData() + # pids should be empty since it's not a per-process profiling. + self.assertEqual(pids, []) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_read_fail(self, mock_runcmd): + """Failure to read perf.data raises the error.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + # Error status of the profile read. + mock_runcmd.return_value = (1, '', '') + with self.assertRaises(PerfDataReadError): + self.result.ReadPidFromPerfData() + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_fail(self, mock_runcmd): + """Failure to find cmdline in perf.data header raises the error.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + # Empty output. + mock_runcmd.return_value = (0, '', '') + with self.assertRaises(PerfDataReadError): + self.result.ReadPidFromPerfData() + def test_process_turbostat_results_with_valid_data(self): """Normal case when log exists and contains valid data.""" self.result.turbostat_log_file = '/tmp/somelogfile.log' @@ -1112,10 +1239,11 @@ class ResultTest(unittest.TestCase): # Debug path not found self.result.label.debug_path = '' tmp = self.result.GeneratePerfReportFiles() - self.assertEqual(tmp, ['/tmp/chroot%s' % fake_file]) + self.assertEqual(tmp, ['/tmp/chromeos/chroot%s' % fake_file]) self.assertEqual(mock_chrootruncmd.call_args_list[0][0], - ('/tmp', ('/usr/sbin/perf report -n ' - '-i %s --stdio > %s') % (fake_file, fake_file))) + (self.result.chromeos_root, + ('/usr/sbin/perf report -n ' + '-i %s --stdio > %s') % (fake_file, fake_file))) @mock.patch.object(misc, 'GetInsideChrootPath') @mock.patch.object(command_executer.CommandExecuter, 'ChrootRunCommand') @@ -1130,11 +1258,12 @@ class ResultTest(unittest.TestCase): # Debug path found self.result.label.debug_path = '/tmp/debug' tmp = self.result.GeneratePerfReportFiles() - self.assertEqual(tmp, ['/tmp/chroot%s' % fake_file]) + self.assertEqual(tmp, ['/tmp/chromeos/chroot%s' % fake_file]) self.assertEqual(mock_chrootruncmd.call_args_list[0][0], - ('/tmp', ('/usr/sbin/perf report -n --symfs /tmp/debug ' - '--vmlinux /tmp/debug/boot/vmlinux ' - '-i %s --stdio > %s') % (fake_file, fake_file))) + (self.result.chromeos_root, + ('/usr/sbin/perf report -n --symfs /tmp/debug ' + '--vmlinux /tmp/debug/boot/vmlinux ' + '-i %s --stdio > %s') % (fake_file, fake_file))) @mock.patch.object(misc, 'GetOutsideChrootPath') def test_populate_from_run(self, mock_getpath): @@ -1183,7 +1312,6 @@ class ResultTest(unittest.TestCase): if mock_getpath: pass mock.get_path = '/tmp/chromeos/tmp/results_dir' - self.result.chromeos_root = '/tmp/chromeos' self.callGetResultsDir = False self.callGetResultsFile = False @@ -1453,8 +1581,7 @@ class ResultTest(unittest.TestCase): u'crypto-md5__crypto-md5': [10.5, u'ms'], u'string-tagcloud__string-tagcloud': [52.8, u'ms'], u'access-nbody__access-nbody': [8.5, u'ms'], - 'retval': - 0, + 'retval': 0, u'math-spectral-norm__math-spectral-norm': [6.6, u'ms'], u'math-cordic__math-cordic': [8.7, u'ms'], u'access-binary-trees__access-binary-trees': [4.5, u'ms'], @@ -1492,8 +1619,7 @@ class ResultTest(unittest.TestCase): u'crypto-md5__crypto-md5': [10.5, u'ms'], u'string-tagcloud__string-tagcloud': [52.8, u'ms'], u'access-nbody__access-nbody': [8.5, u'ms'], - 'retval': - 0, + 'retval': 0, u'math-spectral-norm__math-spectral-norm': [6.6, u'ms'], u'math-cordic__math-cordic': [8.7, u'ms'], u'access-binary-trees__access-binary-trees': [4.5, u'ms'], @@ -1722,8 +1848,9 @@ class TelemetryResultTest(unittest.TestCase): 'autotest_dir', 'debug_dir', '/tmp', 'lumpy', 'remote', 'image_args', 'cache_dir', 'average', 'gcc', False, None) - self.mock_machine = machine_manager.MockCrosMachine( - 'falco.cros', '/tmp/chromeos', 'average') + self.mock_machine = machine_manager.MockCrosMachine('falco.cros', + '/tmp/chromeos', + 'average') def test_populate_from_run(self): @@ -1803,10 +1930,12 @@ class ResultsCacheTest(unittest.TestCase): def FakeGetMachines(label): if label: pass - m1 = machine_manager.MockCrosMachine( - 'lumpy1.cros', self.results_cache.chromeos_root, 'average') - m2 = machine_manager.MockCrosMachine( - 'lumpy2.cros', self.results_cache.chromeos_root, 'average') + m1 = machine_manager.MockCrosMachine('lumpy1.cros', + self.results_cache.chromeos_root, + 'average') + m2 = machine_manager.MockCrosMachine('lumpy2.cros', + self.results_cache.chromeos_root, + 'average') return [m1, m2] mock_checksum.return_value = 'FakeImageChecksumabc123' @@ -1848,10 +1977,12 @@ class ResultsCacheTest(unittest.TestCase): def FakeGetMachines(label): if label: pass - m1 = machine_manager.MockCrosMachine( - 'lumpy1.cros', self.results_cache.chromeos_root, 'average') - m2 = machine_manager.MockCrosMachine( - 'lumpy2.cros', self.results_cache.chromeos_root, 'average') + m1 = machine_manager.MockCrosMachine('lumpy1.cros', + self.results_cache.chromeos_root, + 'average') + m2 = machine_manager.MockCrosMachine('lumpy2.cros', + self.results_cache.chromeos_root, + 'average') return [m1, m2] mock_checksum.return_value = 'FakeImageChecksumabc123' -- cgit v1.2.3 From 9ba2a4f453e3a5b5d35006e6bf72bc94b02fd5b0 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Fri, 18 Sep 2020 14:20:02 -0700 Subject: compiler_wrapper: search compiler executable in $PATH Search the compiler executable in the directories named by PATH environment variable and add its parent directory as PYTHONPATH to locate bisect_driver.py BUG=chromium:1121018 TEST=verified locally Change-Id: If1c397bedfc03b929d73ae490c1bb8f11b4edea5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2415130 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/bisect_flag.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/bisect_flag.go b/compiler_wrapper/bisect_flag.go index f07d9a63..adfa8b03 100644 --- a/compiler_wrapper/bisect_flag.go +++ b/compiler_wrapper/bisect_flag.go @@ -7,6 +7,7 @@ package main import ( "errors" "os" + "os/exec" "path/filepath" ) @@ -52,7 +53,7 @@ func calcBisectCommand(env env, cfg *config, bisectStage string, compilerCmd *co } } absCompilerPath := getAbsCmdPath(env, compilerCmd) - pythonPath, err := filepath.Abs(os.Args[0]) + pythonPath, err := exec.LookPath(os.Args[0]) if err != nil { return nil, err } -- cgit v1.2.3 From 780b6e4f9246515652336e9dd6b377b48152a463 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 21 Sep 2020 12:56:44 -0700 Subject: llvm_tools: add a script to fetch uploaded versions of LLVM Along with sdk tarballs, the SDK builder publishes manifest files containing the versions of packages contained by a particular tarball. This script is intended to extract these versions, so we can more confidently answer the question "when did this LLVM change _actually_ take effect?" Example usage: ``` [ub] /m/s/g/c/s/t/t/llvm_tools [ 10ms ] ~> ./fetch_cros_sdk_rolls.py cros-sdk-2020.08.28.002952.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.01.145913.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.02.121932.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.03.075651.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.04.035039.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.05.000203.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.05.193017.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.06.145537.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.07.100426.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.08.234732.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.09.204657.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.11.112254.tar.xz.Manifest: 11.0_pre399094_p20200824-r1 cros-sdk-2020.09.14.044644.tar.xz.Manifest: 11.0_pre399094_p20200824-r2 cros-sdk-2020.09.15.034200.tar.xz.Manifest: 11.0_pre399094_p20200824-r2 cros-sdk-2020.09.15.235650.tar.xz.Manifest: 11.0_pre399094_p20200824-r2 cros-sdk-2020.09.16.195018.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.17.182131.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.18.133717.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.19.085133.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.20.033151.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 ``` This is literally a trivial wrapper around 2 gsutil commands and very lite JSON wrangling, so I didn't include a test. Happy to add one if people feel strongly that it's necessary. BUG=None TEST=Ran the script Change-Id: If22a5faf89e601709a3304473bab2dba71ccd64c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2422663 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- llvm_tools/fetch_cros_sdk_rolls.py | 112 +++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100755 llvm_tools/fetch_cros_sdk_rolls.py diff --git a/llvm_tools/fetch_cros_sdk_rolls.py b/llvm_tools/fetch_cros_sdk_rolls.py new file mode 100755 index 00000000..42af678a --- /dev/null +++ b/llvm_tools/fetch_cros_sdk_rolls.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +# Copyright 2020 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. + +"""Gets info about completed chromiumos-sdk runs. + +Moreover, this script exists to get versions of published sdk tarballs in +gs://chromiumos-sdk/. The hope is that it'll help answer the question "when did +the toolchain ebuild ${x} go live?" +""" + +# pylint: disable=cros-logging-import + +import argparse +import json +import logging +import os +import shutil +import subprocess +import sys +import tempfile +from typing import Dict, List +from pathlib import Path + + +def fetch_all_sdk_manifest_paths() -> List[str]: + """Fetches all paths of SDK manifests; newer = later in the return value.""" + results = subprocess.run( + ['gsutil', 'ls', 'gs://chromiumos-sdk/cros-sdk-20??.*.Manifest'], + check=True, + stdout=subprocess.PIPE, + encoding='utf-8', + ).stdout + # These are named so that sorted order == newest last. + return sorted(x.strip() for x in results.splitlines()) + + +def fetch_manifests_into(into_dir: Path, manifests: List[str]): + # Wrap this in a `try` block because gsutil likes to print to stdout *and* + # stderr even on success, so we silence them & only print on failure. + try: + subprocess.run( + [ + 'gsutil', + '-m', + 'cp', + '-I', + str(into_dir), + ], + check=True, + input='\n'.join(manifests), + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + encoding='utf-8', + ) + except subprocess.CalledProcessError as e: + logging.exception('gsutil failed; output:\n%s', e.stdout) + + +def load_manifest_versions(manifest: Path) -> Dict[str, str]: + with manifest.open(encoding='utf-8') as f: + raw_versions = json.load(f) + + # We get a dict of list of lists of versions and some other metadata, e.g. + # {"foo/bar": [["1.2.3", {}]]} + # Trim out the metadata. + return {k: v[0][0] for k, v in raw_versions['packages'].items()} + + +def main(): + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '-d', '--debug', action='store_true', help='Emit debugging output') + parser.add_argument( + '-n', + '--number', + type=int, + default=20, + help='Number of recent manifests to fetch info about. 0 means unlimited.') + args = parser.parse_args() + + is_debug = args.debug + logging.basicConfig(level=logging.DEBUG if is_debug else logging.INFO) + + logging.debug('Fetching SDK manifests') + manifest_paths = fetch_all_sdk_manifest_paths() + logging.debug('%d SDK manifests fetched', len(manifest_paths)) + + number = args.number + if number: + manifest_paths = manifest_paths[-number:] + + tempdir = Path(tempfile.mkdtemp(prefix='cros-sdk-rolls')) + try: + logging.debug('Working in tempdir %r', tempdir) + fetch_manifests_into(tempdir, manifest_paths) + + for path in manifest_paths: + basename = os.path.basename(path) + versions = load_manifest_versions(tempdir.joinpath(basename)) + print(f'{basename}: {versions["sys-devel/llvm"]}') + finally: + if is_debug: + logging.debug('Keeping around tempdir %r to aid debugging', tempdir) + else: + shutil.rmtree(tempdir) + + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.3 From e2cbc18b468a984c1818c812574020761da22db0 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 18 Sep 2020 21:15:20 +0000 Subject: add unblocked_terms.txt to automatically check language unblocked_terms.txt contains regular expressions to match terms we normally want to avoid using, but which are used for various reasons in this project. As we reword, we can remove such terms from the list, after which repo hooks will prevent us from accidentally adding new uses. BUG=chromium:1099035 TEST=~/trunk/src/platform/dev/contrib/search_blocked_words.sh Change-Id: Idf44431411e2197655eef270e4daf1600b49706c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2419040 Tested-by: Bob Haarman Reviewed-by: Manoj Gupta (OoO) Reviewed-by: George Burgess Commit-Queue: Bob Haarman --- unblocked_terms.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 unblocked_terms.txt diff --git a/unblocked_terms.txt b/unblocked_terms.txt new file mode 100644 index 00000000..5c51e40c --- /dev/null +++ b/unblocked_terms.txt @@ -0,0 +1,6 @@ +dummy +insane +master +native +sane +sanity -- cgit v1.2.3 From 8a9125c6e22cd83cbccc41434780e953890adeb1 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Tue, 22 Sep 2020 08:34:51 -0700 Subject: toolchain-utils: Update compiler wrapper to disable warning. This CL updates toolchain-utils to match recent compiler wrapper changes in sys-devel/llvm/files. It's purpose is to disable the new warning -Wcompound-token-split-by-space. Also update golden tests appropriately. BUG=chromium:1130080 TEST=Previous CL already tessted/committed. Change-Id: I261250dc7ed6f1be7c3aa4652d793c924e1dc18d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2423619 Commit-Queue: Caroline Tice Commit-Queue: George Burgess Tested-by: Caroline Tice Auto-Submit: Caroline Tice Reviewed-by: George Burgess --- compiler_wrapper/config.go | 5 +++-- compiler_wrapper/cros_llvm_next_flags.go | 4 +++- .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ 7 files changed, 38 insertions(+), 3 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 10a69679..194ab579 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -96,6 +96,7 @@ func getConfig(configName string, useCCache bool, useLlvmNext bool, version stri cfg.useLlvmNext = useLlvmNext if useLlvmNext { cfg.clangFlags = append(cfg.clangFlags, llvmNextFlags...) + cfg.clangPostFlags = append(cfg.clangPostFlags, llvmNextPostFlags...) } cfg.version = version return &cfg, nil @@ -142,8 +143,8 @@ var crosHardenedConfig = &config{ clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", }, - newWarningsDir: "/tmp/fatal_clang_warnings", - triciumNitsDir: "/tmp/linting_output/clang-tidy", + newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", crashArtifactsDir: "/tmp/clang_crash_diagnostics", } diff --git a/compiler_wrapper/cros_llvm_next_flags.go b/compiler_wrapper/cros_llvm_next_flags.go index 6cd7cd2a..ef4b828d 100644 --- a/compiler_wrapper/cros_llvm_next_flags.go +++ b/compiler_wrapper/cros_llvm_next_flags.go @@ -15,4 +15,6 @@ package main // TODO: Enable test in config_test.go, once we have new llvm-next flags. var llvmNextFlags = []string{} -var llvmNextPostFlags = []string{} +var llvmNextPostFlags = []string{ + "-Wno-compound-token-split-by-space", +} diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 97dec849..2648ce08 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -46,6 +46,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -109,6 +110,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -175,6 +177,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 6940fcaf..d7d500c1 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -90,6 +91,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -144,6 +146,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -198,6 +201,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -261,6 +265,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -327,6 +332,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -388,6 +394,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -442,6 +449,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -493,6 +501,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-Ba/b/bin", "-target", @@ -544,6 +553,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-Ba/b/bin", "-target", @@ -595,6 +605,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -649,6 +660,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 219a8b2f..b0526836 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -83,6 +84,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -145,6 +147,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -178,6 +181,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -242,6 +246,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -278,6 +283,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -343,6 +349,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -376,6 +383,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 10e485da..670a361a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -39,6 +39,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -93,6 +94,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -133,6 +135,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -191,6 +194,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -231,6 +235,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index ea804d97..20e9746f 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -111,6 +112,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -181,6 +183,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -235,6 +238,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", -- cgit v1.2.3 From 4f7eb71f9fa78f8710e1deb57d441f51fa74af3b Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 18 Sep 2020 22:10:25 +0000 Subject: rephrase some language in code and comments This rephrases some code and comments to avoid unclear and non-inclusive wording. For the remaining terms in unblocked_terms.txt, comments are added to explain why these terms are present in the code. BUG=chromium:1099035 TEST=repo hooks Change-Id: I985613d811836b6fb6351eadcf3e08a3290db97f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2419656 Tested-by: Bob Haarman Reviewed-by: Manoj Gupta (OoO) Reviewed-by: George Burgess --- android_bench_suite/fix_skia_results.py | 3 ++- auto_delete_nightly_test_data.py | 4 ++-- cros_utils/command_executer.py | 2 +- crosperf/experiment_runner.py | 2 +- crosperf/generate_report_unittest.py | 6 +++--- crosperf/results_report.py | 2 +- crosperf/results_report_unittest.py | 3 ++- unblocked_terms.txt | 7 +++---- 8 files changed, 15 insertions(+), 14 deletions(-) diff --git a/android_bench_suite/fix_skia_results.py b/android_bench_suite/fix_skia_results.py index 8c919d35..bdab80a9 100755 --- a/android_bench_suite/fix_skia_results.py +++ b/android_bench_suite/fix_skia_results.py @@ -57,7 +57,8 @@ def _GetTimeMultiplier(label_name): def _GetTimeDenom(ms): - """Given a list of times (in milliseconds), find a sane time unit for them. + """Given a list of times (in milliseconds), find a time unit in which + they can all be expressed. Returns the unit name, and `ms` normalized to that time unit. diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 03d59b28..884afce2 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -50,8 +50,8 @@ def CleanNumberedDir(s, dry_run=False): return False ## Now delete the numbered dir Before forcibly removing the directory, just - ## check 's' to make sure it is sane. A valid dir to be removed must be - ## '/usr/local/google/crostc/(SUN|MON|TUE...|SAT)'. + ## check 's' to make sure it matches the expected pattern. A valid dir to be + ## removed must be '/usr/local/google/crostc/(SUN|MON|TUE...|SAT)'. valid_dir_pattern = ( '^' + NIGHTLY_TESTS_WORKSPACE + '/(' + '|'.join(DIR_BY_WEEKDAY) + ')') if not re.search(valid_dir_pattern, s): diff --git a/cros_utils/command_executer.py b/cros_utils/command_executer.py index ee1df95c..aeedf3ea 100755 --- a/cros_utils/command_executer.py +++ b/cros_utils/command_executer.py @@ -387,7 +387,7 @@ class CommandExecuter(object): command_file = f.name os.chmod(command_file, 0o777) - # if return_output is set, run a dummy command first to make sure that + # if return_output is set, run a test command first to make sure that # the chroot already exists. We want the final returned output to skip # the output from chroot creation steps. if return_output: diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 21fa3ea0..6a46adfc 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -173,7 +173,7 @@ class ExperimentRunner(object): try: # We should not lease machines if tests are launched via `skylab # create-test`. This is because leasing DUT in skylab will create a - # dummy task on the DUT and new test created will be hanging there. + # no-op task on the DUT and new test created will be hanging there. # TODO(zhizhouy): Need to check whether machine is ready or not before # assigning a test to it. if not experiment.skylab: diff --git a/crosperf/generate_report_unittest.py b/crosperf/generate_report_unittest.py index e19d4695..8c3510a9 100755 --- a/crosperf/generate_report_unittest.py +++ b/crosperf/generate_report_unittest.py @@ -109,9 +109,9 @@ class GenerateReportTests(unittest.TestCase): } results = generate_report.CutResultsInPlace( bench_data, max_keys=0, complain_on_update=False) - # Just reach into results assuming we know it otherwise outputs things - # sanely. If it doesn't, testCutResultsInPlace should give an indication as - # to what, exactly, is broken. + # Just reach into results assuming we know it otherwise outputs things in + # the expected way. If it doesn't, testCutResultsInPlace should give an + # indication as to what, exactly, is broken. self.assertEqual(list(results['foo'][0][0].items()), [('retval', 0)]) self.assertEqual(list(results['bar'][0][0].items()), [('retval', 1)]) self.assertEqual(list(results['baz'][0][0].items()), []) diff --git a/crosperf/results_report.py b/crosperf/results_report.py index ff6c4f96..ff8c119d 100644 --- a/crosperf/results_report.py +++ b/crosperf/results_report.py @@ -505,7 +505,7 @@ class HTMLResultsReport(ResultsReport): experiment_file = '' if self.experiment is not None: experiment_file = self.experiment.experiment_file - # Use kwargs for sanity, and so that testing is a bit easier. + # Use kwargs for code readability, and so that testing is a bit easier. return templates.GenerateHTMLPage( perf_table=perf_table, chart_js=chart_javascript, diff --git a/crosperf/results_report_unittest.py b/crosperf/results_report_unittest.py index e03ea431..1e96ef97 100755 --- a/crosperf/results_report_unittest.py +++ b/crosperf/results_report_unittest.py @@ -57,7 +57,8 @@ class FreeFunctionsTest(unittest.TestCase): ParseChromeosImage(os.path.dirname(buildbot_case)), ('', os.path.dirname(buildbot_img))) - # Ensure we don't act completely insanely given a few mildly insane paths. + # Ensure we do something reasonable when giving paths that don't quite + # match the expected pattern. fun_case = '/chromiumos_test_image.bin' self.assertEqual(ParseChromeosImage(fun_case), ('', fun_case)) diff --git a/unblocked_terms.txt b/unblocked_terms.txt index 5c51e40c..c961e667 100644 --- a/unblocked_terms.txt +++ b/unblocked_terms.txt @@ -1,6 +1,5 @@ -dummy -insane +# Code uses this in many cases to refer to git branches. master + +# A few paths in AOSP contain this term. native -sane -sanity -- cgit v1.2.3 From 8223d16e040748ad6a91a87f3ce1cfc13db37f4b Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Sat, 19 Sep 2020 00:00:06 +0000 Subject: fix formatting/lint issues pointed out by repohooks Previous changes resulted in some complaints about formatting and Python 3 compatibility from the repo hooks. This change fixes those. BUG=None TEST=repo upload --cbr . # check that it no longer complains Change-Id: I99cc51dcb8d499d59b7b47817f4cef8fa6ba5059 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2419831 Tested-by: Bob Haarman Reviewed-by: Manoj Gupta (OoO) --- android_bench_suite/fix_skia_results.py | 20 ++++++++++--------- auto_delete_nightly_test_data.py | 14 +++++++------- crosperf/experiment_runner.py | 34 ++++++++++++++++----------------- crosperf/results_report.py | 9 +++++---- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/android_bench_suite/fix_skia_results.py b/android_bench_suite/fix_skia_results.py index bdab80a9..84dee5a5 100755 --- a/android_bench_suite/fix_skia_results.py +++ b/android_bench_suite/fix_skia_results.py @@ -5,6 +5,7 @@ # found in the LICENSE file. # # pylint: disable=cros-logging-import + """Transforms skia benchmark results to ones that crosperf can understand.""" from __future__ import print_function @@ -57,7 +58,9 @@ def _GetTimeMultiplier(label_name): def _GetTimeDenom(ms): - """Given a list of times (in milliseconds), find a time unit in which + """Express times in a common time unit. + + Given a list of times (in milliseconds), find a time unit in which they can all be expressed. Returns the unit name, and `ms` normalized to that time unit. @@ -95,9 +98,9 @@ def _TransformBenchmarks(raw_benchmarks): # statistic... benchmarks = raw_benchmarks['results'] results = [] - for bench_name, bench_result in benchmarks.iteritems(): + for bench_name, bench_result in benchmarks.items(): try: - for cfg_name, keyvals in bench_result.iteritems(): + for cfg_name, keyvals in bench_result.items(): # Some benchmarks won't have timing data (either it won't exist at all, # or it'll be empty); skip them. samples = keyvals.get('samples') @@ -110,17 +113,16 @@ def _TransformBenchmarks(raw_benchmarks): friendly_name = _GetFamiliarName(bench_name) if len(results) < len(samples): - results.extend({ - 'retval': 0 - } for _ in range(len(samples) - len(results))) + results.extend( + {'retval': 0} for _ in range(len(samples) - len(results))) time_mul = _GetTimeMultiplier(friendly_name) - for sample, app in itertools.izip(samples, results): + for sample, app in itertools.zip(samples, results): assert friendly_name not in app app[friendly_name] = sample * time_mul except (KeyError, ValueError) as e: - logging.error('While converting "%s" (key: %s): %s', - bench_result, bench_name, e.message) + logging.error('While converting "%s" (key: %s): %s', bench_result, + bench_name, e) raise # Realistically, [results] should be multiple results, where each entry in the diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 884afce2..c3c2e24c 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -52,8 +52,8 @@ def CleanNumberedDir(s, dry_run=False): ## Now delete the numbered dir Before forcibly removing the directory, just ## check 's' to make sure it matches the expected pattern. A valid dir to be ## removed must be '/usr/local/google/crostc/(SUN|MON|TUE...|SAT)'. - valid_dir_pattern = ( - '^' + NIGHTLY_TESTS_WORKSPACE + '/(' + '|'.join(DIR_BY_WEEKDAY) + ')') + valid_dir_pattern = ('^' + NIGHTLY_TESTS_WORKSPACE + '/(' + + '|'.join(DIR_BY_WEEKDAY) + ')') if not re.search(valid_dir_pattern, s): print('Trying to delete an invalid dir "{0}" (must match "{1}"), ' 'please check.'.format(s, valid_dir_pattern)) @@ -193,8 +193,8 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): ce = command_executer.GetCommandExecuter() chromeos_root = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos') # Find Old CLs. - old_cls_cmd = ( - 'gerrit --raw search "owner:me status:open age:%sd"' % days_to_preserve) + old_cls_cmd = ('gerrit --raw search "owner:me status:open age:%sd"' % + days_to_preserve) _, cls, _ = ce.ChrootRunCommandWOutput( chromeos_root, old_cls_cmd, print_to_console=False) # Convert any whitespaces to spaces. @@ -210,20 +210,20 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): return ce.ChrootRunCommand( chromeos_root, abandon_cls_cmd, print_to_console=False) + def CleanChromeTelemetryTmpFiles(dry_run): rv = 0 ce = command_executer.GetCommandExecuter() tmp_dir = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos', '.cache', 'distfiles', 'target', 'chrome-src-internal', 'src', - 'tmp'); + 'tmp') cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' if dry_run: print(f'Going to execute:\n{cmd}') else: rv = ce.RunCommand(cmd, print_to_console=False) if rv == 0: - print(f'Successfully cleaned chrome tree tmp directory ' - f'{tmp_dir!r} .') + print(f'Successfully cleaned chrome tree tmp directory ' f'{tmp_dir!r} .') else: print(f'Some directories were not removed under chrome tree ' f'tmp directory {tmp_dir!r}.') diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 6a46adfc..8ba85a4c 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -35,8 +35,8 @@ def _WriteJSONReportToFile(experiment, results_dir, json_report): compiler_string = 'llvm' if has_llvm else 'gcc' board = experiment.labels[0].board filename = 'report_%s_%s_%s.%s.json' % (board, json_report.date, - json_report.time.replace(':', '.'), - compiler_string) + json_report.time.replace( + ':', '.'), compiler_string) fullname = os.path.join(results_dir, filename) report_text = json_report.GetReport() with open(fullname, 'w') as out_file: @@ -157,13 +157,13 @@ class ExperimentRunner(object): def _ClearCacheEntries(self, experiment): for br in experiment.benchmark_runs: cache = ResultsCache() - cache.Init( - br.label.chromeos_image, br.label.chromeos_root, - br.benchmark.test_name, br.iteration, br.test_args, br.profiler_args, - br.machine_manager, br.machine, br.label.board, br.cache_conditions, - br.logger(), br.log_level, br.label, br.share_cache, - br.benchmark.suite, br.benchmark.show_all_results, - br.benchmark.run_local, br.benchmark.cwp_dso) + cache.Init(br.label.chromeos_image, br.label.chromeos_root, + br.benchmark.test_name, br.iteration, br.test_args, + br.profiler_args, br.machine_manager, br.machine, + br.label.board, br.cache_conditions, br.logger(), br.log_level, + br.label, br.share_cache, br.benchmark.suite, + br.benchmark.show_all_results, br.benchmark.run_local, + br.benchmark.cwp_dso) cache_dir = cache.GetCacheDirForWrite() if os.path.exists(cache_dir): self.l.LogOutput('Removing cache dir: %s' % cache_dir) @@ -246,8 +246,8 @@ class ExperimentRunner(object): subject = '%s: %s' % (experiment.name, ' vs. '.join(label_names)) text_report = TextResultsReport.FromExperiment(experiment, True).GetReport() - text_report += ( - '\nResults are stored in %s.\n' % experiment.results_directory) + text_report += ('\nResults are stored in %s.\n' % + experiment.results_directory) text_report = "
%s
" % text_report html_report = HTMLResultsReport.FromExperiment(experiment).GetReport() attachment = EmailSender.Attachment('report.html', html_report) @@ -275,8 +275,8 @@ class ExperimentRunner(object): all_failed = True topstats_file = os.path.join(results_directory, 'topstats.log') - self.l.LogOutput( - 'Storing top statistics of each benchmark run into %s.' % topstats_file) + self.l.LogOutput('Storing top statistics of each benchmark run into %s.' % + topstats_file) with open(topstats_file, 'w') as top_fd: for benchmark_run in experiment.benchmark_runs: if benchmark_run.result: @@ -322,8 +322,8 @@ class ExperimentRunner(object): self.l.LogOutput('Storing email message body in %s.' % results_directory) msg_file_path = os.path.join(results_directory, 'msg_body.html') text_report = TextResultsReport.FromExperiment(experiment, True).GetReport() - text_report += ( - '\nResults are stored in %s.\n' % experiment.results_directory) + text_report += ('\nResults are stored in %s.\n' % + experiment.results_directory) msg_body = "
%s
" % text_report FileUtils().WriteFile(msg_file_path, msg_body) @@ -348,8 +348,8 @@ class MockExperimentRunner(ExperimentRunner): super(MockExperimentRunner, self).__init__(experiment, json_report) def _Run(self, experiment): - self.l.LogOutput( - "Would run the following experiment: '%s'." % experiment.name) + self.l.LogOutput("Would run the following experiment: '%s'." % + experiment.name) def _PrintTable(self, experiment): self.l.LogOutput('Would print the experiment table.') diff --git a/crosperf/results_report.py b/crosperf/results_report.py index ff8c119d..dc80b53b 100644 --- a/crosperf/results_report.py +++ b/crosperf/results_report.py @@ -418,8 +418,8 @@ class TextResultsReport(ResultsReport): cpu_info = experiment.machine_manager.GetAllCPUInfo(experiment.labels) sections.append(self._MakeSection('CPUInfo', cpu_info)) - totaltime = ( - time.time() - experiment.start_time) if experiment.start_time else 0 + totaltime = (time.time() - + experiment.start_time) if experiment.start_time else 0 totaltime_str = 'Total experiment time:\n%d min' % (totaltime // 60) cooldown_waittime_list = ['Cooldown wait time:'] # When running experiment on multiple DUTs cooldown wait time may vary @@ -430,8 +430,9 @@ class TextResultsReport(ResultsReport): cooldown_waittime_list.append('DUT %s: %d min' % (dut, waittime // 60)) cooldown_waittime_str = '\n'.join(cooldown_waittime_list) sections.append( - self._MakeSection('Duration', '\n\n'.join( - [totaltime_str, cooldown_waittime_str]))) + self._MakeSection('Duration', + '\n\n'.join([totaltime_str, + cooldown_waittime_str]))) return '\n'.join(sections) -- cgit v1.2.3 From ab646e13303ebe9518e816f85c1e4a56db88ae13 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 28 Sep 2020 11:00:44 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R87-13482.0-1601286522 Update chromeos-kernel-4_4 to R87-13482.0-1601285703 Update chromeos-kernel-4_14 to R87-13482.0-1601285982 Update chromeos-kernel-4_19 to R87-13482.0-1601286143 Also fixed the script a little bit to supress a warning. BUG=None TEST=None Change-Id: I50be925fd9f598fb834a5b3153f86f29679844c7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2436058 Reviewed-by: Manoj Gupta Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- afdo_tools/update_kernel_afdo | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 58779409..ea0237d4 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R87-13421.11-1599471395" + "name": "R87-13482.0-1601286522" }, "chromeos-kernel-4_4": { - "name": "R87-13421.11-1599472924" + "name": "R87-13482.0-1601285703" }, "chromeos-kernel-4_14": { - "name": "R87-13421.11-1599471640" + "name": "R87-13482.0-1601285982" }, "chromeos-kernel-4_19": { - "name": "R87-13421.11-1599472679" + "name": "R87-13482.0-1601286143" } } diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index 8f100a12..8eb1306c 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -62,7 +62,7 @@ do # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ grep "R${canary}" | tail -1 || true) - if [ -z $latest ] + if [ -z "$latest" ] then # if no profiles exist for R${canary}, try the previous branch latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ -- cgit v1.2.3 From 089db6731d948eeff42acf2cd1037ae0253dc65c Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Sun, 23 Aug 2020 20:09:02 -0700 Subject: llvm_tools: refactor LLVM bisection tool BUG=chromium:1081457 TEST=Verified locally. Change-Id: Ic662a7bb697efb920a83255d3da87a0031e694ed Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2371502 Tested-by: Jian Cai Reviewed-by: George Burgess --- llvm_tools/llvm_bisection.py | 257 +++++----------- llvm_tools/llvm_bisection_unittest.py | 552 ++++++++++++---------------------- 2 files changed, 274 insertions(+), 535 deletions(-) diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py index 2772ca48..37320baf 100755 --- a/llvm_tools/llvm_bisection.py +++ b/llvm_tools/llvm_bisection.py @@ -17,6 +17,7 @@ import sys import chroot import get_llvm_hash +import git_llvm_rev import modify_a_tryjob import update_tryjob_status @@ -28,11 +29,6 @@ class BisectionExitStatus(enum.Enum): BISECTION_COMPLETE = 126 -def is_file_and_json(json_file): - """Validates that the file exists and is a JSON file.""" - return os.path.isfile(json_file) and json_file.endswith('.json') - - def GetCommandLineArgs(): """Parses the command line for the command line arguments.""" @@ -124,27 +120,17 @@ def GetCommandLineArgs(): args_output = parser.parse_args() assert args_output.start_rev < args_output.end_rev, ( - 'Start revision %d is >= end revision %d' % (args_output.start_rev, - args_output.end_rev)) + 'Start revision %d is >= end revision %d' % + (args_output.start_rev, args_output.end_rev)) if args_output.last_tested and not args_output.last_tested.endswith('.json'): - raise ValueError( - 'Filed provided %s does not end in ".json"' % args_output.last_tested) + raise ValueError('Filed provided %s does not end in ".json"' % + args_output.last_tested) return args_output -def _ValidateStartAndEndAgainstJSONStartAndEnd(start, end, json_start, - json_end): - """Valides that the command line arguments are the same as the JSON.""" - - if start != json_start or end != json_end: - raise ValueError('The start %d or the end %d version provided is ' - 'different than "start" %d or "end" %d in the .JSON ' - 'file' % (start, end, json_start, json_end)) - - -def GetStartAndEndRevision(start, end, tryjobs): +def GetRemainingRange(start, end, tryjobs): """Gets the start and end intervals in 'json_file'. Args: @@ -230,145 +216,56 @@ def GetStartAndEndRevision(start, end, tryjobs): return good_rev, bad_rev, pending_revisions, skip_revisions -def GetRevisionsBetweenBisection(start, end, parallel, src_path, - pending_revisions, skip_revisions): - """Gets the revisions between 'start' and 'end'. - - Sometimes, the LLVM source tree's revisions do not increment by 1 (there is - a jump), so need to construct a list of all revisions that are NOT missing - between 'start' and 'end'. Then, the step amount (i.e. length of the list - divided by ('parallel' + 1)) will be used for indexing into the list. - - Args: - start: The start revision. - end: The end revision. - parallel: The number of tryjobs to create between 'start' and 'end'. - src_path: The absolute path to the LLVM source tree to use. - pending_revisions: A set containing 'pending' revisions that are between - 'start' and 'end'. - skip_revisions: A set containing revisions between 'start' and 'end' that - are to be skipped. - - Returns: - A list of revisions between 'start' and 'end'. - """ - - valid_revisions = [] - - # Start at ('start' + 1) because 'start' is the good revision. - # - # FIXME: Searching for each revision from ('start' + 1) up to 'end' in the - # LLVM source tree is a quadratic algorithm. It's a good idea to optimize - # this. - for cur_revision in range(start + 1, end): - try: - if cur_revision not in pending_revisions and \ - cur_revision not in skip_revisions: - # Verify that the current revision exists by finding its corresponding - # git hash in the LLVM source tree. - get_llvm_hash.GetGitHashFrom(src_path, cur_revision) - valid_revisions.append(cur_revision) - except ValueError: - # Could not find the git hash for the current revision. - continue - - # ('parallel' + 1) so that the last revision in the list is not close to - # 'end' (have a bit more coverage). - index_step = len(valid_revisions) // (parallel + 1) - - if not index_step: - index_step = 1 - - result = [valid_revisions[index] \ - for index in range(0, len(valid_revisions), index_step)] - - return result - - -def GetRevisionsListAndHashList(start, end, parallel, src_path, - pending_revisions, skip_revisions): +def GetCommitsBetween(start, end, parallel, src_path, pending_revisions, + skip_revisions): """Determines the revisions between start and end.""" - new_llvm = get_llvm_hash.LLVMHash() + with get_llvm_hash.LLVMHash().CreateTempDirectory() as temp_dir: + # We have guaranteed contiguous revision numbers after this, + # and that guarnatee simplifies things considerably, so we don't + # support anything before it. + assert start >= git_llvm_rev.base_llvm_revision, f'{start} was too long ago' - with new_llvm.CreateTempDirectory() as temp_dir: with get_llvm_hash.CreateTempLLVMRepo(temp_dir) as new_repo: if not src_path: src_path = new_repo - - # Get a list of revisions between start and end. - revisions = GetRevisionsBetweenBisection( - start, end, parallel, src_path, pending_revisions, skip_revisions) - + index_step = (end - (start + 1)) // (parallel + 1) + if not index_step: + index_step = 1 + revisions = [ + rev for rev in range(start + 1, end, index_step) + if rev not in pending_revisions and rev not in skip_revisions + ] git_hashes = [ get_llvm_hash.GetGitHashFrom(src_path, rev) for rev in revisions ] + return revisions, git_hashes - return revisions, git_hashes - - -def DieWithNoRevisionsError(start, end, skip_revisions, pending_revisions): - """Raises a ValueError exception with useful information.""" - - no_revisions_message = ('No revisions between start %d and end ' - '%d to create tryjobs' % (start, end)) - - if pending_revisions: - no_revisions_message += '\nThe following tryjobs are pending:\n' \ - + '\n'.join(str(rev) for rev in pending_revisions) - - if skip_revisions: - no_revisions_message += '\nThe following tryjobs were skipped:\n' \ - + '\n'.join(str(rev) for rev in skip_revisions) - raise ValueError(no_revisions_message) - - -def CheckForExistingTryjobsInRevisionsToLaunch(revisions, jobs): - """Checks if a revision in 'revisions' exists in 'jobs' list.""" - - for rev in revisions: - if update_tryjob_status.FindTryjobIndex(rev, jobs) is not None: - raise ValueError('Revision %d exists already in "jobs"' % rev) - - -def UpdateBisection(revisions, git_hashes, bisect_contents, last_tested, - update_packages, chroot_path, patch_metadata_file, - extra_change_lists, options, builder, verbose): +def Bisect(revisions, git_hashes, bisect_state, last_tested, update_packages, + chroot_path, patch_metadata_file, extra_change_lists, options, + builder, verbose): """Adds tryjobs and updates the status file with the new tryjobs.""" try: for svn_revision, git_hash in zip(revisions, git_hashes): - tryjob_dict = modify_a_tryjob.AddTryjob( - update_packages, git_hash, svn_revision, chroot_path, - patch_metadata_file, extra_change_lists, options, builder, verbose, - svn_revision) + tryjob_dict = modify_a_tryjob.AddTryjob(update_packages, git_hash, + svn_revision, chroot_path, + patch_metadata_file, + extra_change_lists, options, + builder, verbose, svn_revision) - bisect_contents['jobs'].append(tryjob_dict) + bisect_state['jobs'].append(tryjob_dict) finally: # Do not want to lose progress if there is an exception. if last_tested: new_file = '%s.new' % last_tested with open(new_file, 'w') as json_file: - json.dump(bisect_contents, json_file, indent=4, separators=(',', ': ')) + json.dump(bisect_state, json_file, indent=4, separators=(',', ': ')) os.rename(new_file, last_tested) -def _NoteCompletedBisection(last_tested, src_path, end): - """Prints that bisection is complete.""" - - print('Finished bisecting for %s' % last_tested) - - if src_path: - bad_llvm_hash = get_llvm_hash.GetGitHashFrom(src_path, end) - else: - bad_llvm_hash = get_llvm_hash.LLVMHash().GetLLVMHash(end) - - print( - 'The bad revision is %d and its commit hash is %s' % (end, bad_llvm_hash)) - - def LoadStatusFile(last_tested, start, end): """Loads the status file for bisection.""" @@ -383,37 +280,36 @@ def LoadStatusFile(last_tested, start, end): def main(args_output): - """Bisects LLVM based off of a .JSON file. + """Bisects LLVM commits. Raises: AssertionError: The script was run inside the chroot. """ chroot.VerifyOutsideChroot() - update_packages = [ 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' ] - patch_metadata_file = 'PATCHES.json' - start = args_output.start_rev end = args_output.end_rev - bisect_contents = LoadStatusFile(args_output.last_tested, start, end) - - _ValidateStartAndEndAgainstJSONStartAndEnd( - start, end, bisect_contents['start'], bisect_contents['end']) + bisect_state = LoadStatusFile(args_output.last_tested, start, end) + if start != bisect_state['start'] or end != bisect_state['end']: + raise ValueError(f'The start {start} or the end {end} version provided is ' + f'different than "start" {bisect_state["start"]} or "end" ' + f'{bisect_state["end"]} in the .JSON file') # Pending and skipped revisions are between 'start_revision' and # 'end_revision'. start_revision, end_revision, pending_revisions, skip_revisions = \ - GetStartAndEndRevision(start, end, bisect_contents['jobs']) + GetRemainingRange(start, end, bisect_state['jobs']) - revisions, git_hashes = GetRevisionsListAndHashList( - start_revision, end_revision, args_output.parallel, args_output.src_path, - pending_revisions, skip_revisions) + revisions, git_hashes = GetCommitsBetween(start_revision, end_revision, + args_output.parallel, + args_output.src_path, + pending_revisions, skip_revisions) # No more revisions between 'start_revision' and 'end_revision', so # bisection is complete. @@ -421,39 +317,48 @@ def main(args_output): # This is determined by finding all valid revisions between 'start_revision' # and 'end_revision' and that are NOT in the 'pending' and 'skipped' set. if not revisions: - # Successfully completed bisection where there are 2 cases: - # 1) 'start_revision' and 'end_revision' are back-to-back (example: - # 'start_revision' is 369410 and 'end_revision' is 369411). - # - # 2) 'start_revision' and 'end_revision' are NOT back-to-back, so there must - # be tryjobs in between which are labeled as 'skip' for their 'status' - # value. - # - # In either case, there are no 'pending' jobs. - if not pending_revisions: - _NoteCompletedBisection(args_output.last_tested, args_output.src_path, - end_revision) - - if skip_revisions: - skip_revisions_message = ('\nThe following revisions were skipped:\n' + - '\n'.join(str(rev) for rev in skip_revisions)) - - print(skip_revisions_message) - - return BisectionExitStatus.BISECTION_COMPLETE.value + if pending_revisions: + # Some tryjobs are not finished which may change the actual bad + # commit/revision when those tryjobs are finished. + no_revisions_message = (f'No revisions between start {start_revision} ' + f'and end {end_revision} to create tryjobs\n') - # Some tryjobs are not finished which may change the actual bad - # commit/revision when those tryjobs are finished. - DieWithNoRevisionsError(start_revision, end_revision, skip_revisions, - pending_revisions) + if pending_revisions: + no_revisions_message += ( + 'The following tryjobs are pending:\n' + + '\n'.join(str(rev) for rev in pending_revisions) + '\n') - CheckForExistingTryjobsInRevisionsToLaunch(revisions, bisect_contents['jobs']) + if skip_revisions: + no_revisions_message += ('The following tryjobs were skipped:\n' + + '\n'.join(str(rev) for rev in skip_revisions) + + '\n') + + raise ValueError(no_revisions_message) + + print(f'Finished bisecting for {args_output.last_tested}') + if args_output.src_path: + bad_llvm_hash = get_llvm_hash.GetGitHashFrom(args_output.src_path, + end_revision) + else: + bad_llvm_hash = get_llvm_hash.LLVMHash().GetLLVMHash(end_revision) + print(f'The bad revision is {end_revision} and its commit hash is ' + f'{bad_llvm_hash}') + if skip_revisions: + skip_revisions_message = ('\nThe following revisions were skipped:\n' + + '\n'.join(str(rev) for rev in skip_revisions)) + print(skip_revisions_message) + + return BisectionExitStatus.BISECTION_COMPLETE.value - UpdateBisection(revisions, git_hashes, bisect_contents, - args_output.last_tested, update_packages, - args_output.chroot_path, patch_metadata_file, - args_output.extra_change_lists, args_output.options, - args_output.builder, args_output.verbose) + for rev in revisions: + if update_tryjob_status.FindTryjobIndex(rev, + bisect_state['jobs']) is not None: + raise ValueError(f'Revision {rev} exists already in "jobs"') + + Bisect(revisions, git_hashes, bisect_state, args_output.last_tested, + update_packages, args_output.chroot_path, patch_metadata_file, + args_output.extra_change_lists, args_output.options, + args_output.builder, args_output.verbose) if __name__ == '__main__': diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py index e730293b..8478f82e 100755 --- a/llvm_tools/llvm_bisection_unittest.py +++ b/llvm_tools/llvm_bisection_unittest.py @@ -16,45 +16,50 @@ import unittest.mock as mock import chroot import get_llvm_hash +import git_llvm_rev import llvm_bisection import modify_a_tryjob import test_helpers -import update_tryjob_status class LLVMBisectionTest(unittest.TestCase): """Unittests for LLVM bisection.""" - def testStartAndEndDoNotMatchJsonStartAndEnd(self): + def testGetRemainingRangePassed(self): start = 100 end = 150 - json_start = 110 - json_end = 150 - - # Verify the exception is raised when the start and end revision for LLVM - # bisection do not match the .JSON's 'start' and 'end' values. - with self.assertRaises(ValueError) as err: - llvm_bisection._ValidateStartAndEndAgainstJSONStartAndEnd( - start, end, json_start, json_end) - - expected_error_message = ('The start %d or the end %d version provided is ' - 'different than "start" %d or "end" %d in the ' - '.JSON file' % (start, end, json_start, json_end)) - - self.assertEqual(str(err.exception), expected_error_message) - - def testStartAndEndMatchJsonStartAndEnd(self): - start = 100 - end = 150 + test_tryjobs = [{ + 'rev': 110, + 'status': 'good', + 'link': 'https://some_tryjob_1_url.com' + }, { + 'rev': 120, + 'status': 'good', + 'link': 'https://some_tryjob_2_url.com' + }, { + 'rev': 130, + 'status': 'pending', + 'link': 'https://some_tryjob_3_url.com' + }, { + 'rev': 135, + 'status': 'skip', + 'link': 'https://some_tryjob_4_url.com' + }, { + 'rev': 140, + 'status': 'bad', + 'link': 'https://some_tryjob_5_url.com' + }] - json_start = 100 - json_end = 150 + # Tuple consists of the new good revision, the new bad revision, a set of + # 'pending' revisions, and a set of 'skip' revisions. + expected_revisions_tuple = 120, 140, {130}, {135} - llvm_bisection._ValidateStartAndEndAgainstJSONStartAndEnd( - start, end, json_start, json_end) + self.assertEqual( + llvm_bisection.GetRemainingRange(start, end, test_tryjobs), + expected_revisions_tuple) - def testTryjobStatusIsMissing(self): + def testGetRemainingRangeFailedWithMissingStatus(self): start = 100 end = 150 @@ -72,18 +77,14 @@ class LLVMBisectionTest(unittest.TestCase): 'link': 'https://some_tryjob_3_url.com' }] - # Verify the exception is raised when a tryjob does not have a value for - # the 'status' key or the 'status' key is missing. with self.assertRaises(ValueError) as err: - llvm_bisection.GetStartAndEndRevision(start, end, test_tryjobs) - - expected_error_message = ( - '"status" is missing or has no value, please ' - 'go to %s and update it' % test_tryjobs[1]['link']) + llvm_bisection.GetRemainingRange(start, end, test_tryjobs) - self.assertEqual(str(err.exception), expected_error_message) + error_message = ('"status" is missing or has no value, please ' + 'go to %s and update it' % test_tryjobs[1]['link']) + self.assertEqual(str(err.exception), error_message) - def testGoodRevisionGreaterThanBadRevision(self): + def testGetRemainingRangeFailedWithInvalidRange(self): start = 100 end = 150 @@ -101,206 +102,68 @@ class LLVMBisectionTest(unittest.TestCase): 'link': 'https://some_tryjob_3_url.com' }] - # Verify the exception is raised when the new 'start' revision is greater - # than the new 'bad' revision for bisection (i.e. bisection is broken). with self.assertRaises(AssertionError) as err: - llvm_bisection.GetStartAndEndRevision(start, end, test_tryjobs) + llvm_bisection.GetRemainingRange(start, end, test_tryjobs) - expected_error_message = ( - 'Bisection is broken because %d (good) is >= ' - '%d (bad)' % (test_tryjobs[2]['rev'], test_tryjobs[0]['rev'])) + expected_error_message = ('Bisection is broken because %d (good) is >= ' + '%d (bad)' % + (test_tryjobs[2]['rev'], test_tryjobs[0]['rev'])) self.assertEqual(str(err.exception), expected_error_message) - def testSuccessfullyGetNewStartAndNewEndRevision(self): - start = 100 - end = 150 - - test_tryjobs = [{ - 'rev': 110, - 'status': 'good', - 'link': 'https://some_tryjob_1_url.com' - }, { - 'rev': 120, - 'status': 'good', - 'link': 'https://some_tryjob_2_url.com' - }, { - 'rev': 130, - 'status': 'pending', - 'link': 'https://some_tryjob_3_url.com' - }, { - 'rev': 135, - 'status': 'skip', - 'link': 'https://some_tryjob_4_url.com' - }, { - 'rev': 140, - 'status': 'bad', - 'link': 'https://some_tryjob_5_url.com' - }] - - # Tuple consists of the new good revision, the new bad revision, a set of - # 'pending' revisions, and a set of 'skip' revisions. - expected_revisions_tuple = 120, 140, {130}, {135} - - self.assertTupleEqual( - llvm_bisection.GetStartAndEndRevision(start, end, test_tryjobs), - expected_revisions_tuple) - - @mock.patch.object(get_llvm_hash, 'GetGitHashFrom') - def testNoRevisionsBetweenStartAndEnd(self, mock_get_git_hash): - start = 100 - end = 110 - - test_pending_revisions = {107} - test_skip_revisions = {101, 102, 103, 104, 108, 109} - - # Simulate behavior of `GetGitHashFrom()` when the revision does not - # exist in the LLVM source tree. - def MockGetGitHashForRevisionRaiseException(_src_path, _revision): - raise ValueError('Revision does not exist') - - mock_get_git_hash.side_effect = MockGetGitHashForRevisionRaiseException - - parallel = 3 - - abs_path_to_src = '/abs/path/to/src' - - self.assertListEqual( - llvm_bisection.GetRevisionsBetweenBisection( - start, end, parallel, abs_path_to_src, test_pending_revisions, - test_skip_revisions), []) - - # Assume llvm_bisection module has imported GetGitHashFrom @mock.patch.object(get_llvm_hash, 'GetGitHashFrom') - def testSuccessfullyRetrievedRevisionsBetweenStartAndEnd( - self, mock_get_git_hash): - - start = 100 - end = 110 - - test_pending_revisions = set() - test_skip_revisions = {101, 102, 103, 104, 106, 108, 109} - + def testGetCommitsBetweenPassed(self, mock_get_git_hash): + start = git_llvm_rev.base_llvm_revision + end = start + 10 + test_pending_revisions = {start + 7} + test_skip_revisions = { + start + 1, start + 2, start + 4, start + 8, start + 9 + } parallel = 3 - abs_path_to_src = '/abs/path/to/src' - # Valid revision that exist in the LLVM source tree between 'start' and - # 'end' and were not in the 'pending' set or 'skip' set. - expected_revisions_between_start_and_end = [105, 107] - - self.assertListEqual( - llvm_bisection.GetRevisionsBetweenBisection( - start, end, parallel, abs_path_to_src, test_pending_revisions, - test_skip_revisions), expected_revisions_between_start_and_end) - - self.assertEqual(mock_get_git_hash.call_count, 2) + revs = ['a123testhash3', 'a123testhash5'] + mock_get_git_hash.side_effect = revs - # Simulate behavior of `GetGitHashFrom()` when successfully retrieved - # a list git hashes for each revision in the revisions list. - # Assume llvm_bisection module has imported GetGitHashFrom - @mock.patch.object(get_llvm_hash, 'GetGitHashFrom') - # Simulate behavior of `GetRevisionsBetweenBisection()` when successfully - # retrieved a list of valid revisions between 'start' and 'end'. - @mock.patch.object(llvm_bisection, 'GetRevisionsBetweenBisection') - # Simulate behavior of `CreatTempLLVMRepo()` when successfully created a - # worktree when a source path was not provided. - @mock.patch.object(get_llvm_hash, 'CreateTempLLVMRepo') - def testSuccessfullyGetRevisionsListAndHashList( - self, mock_create_temp_llvm_repo, mock_get_revisions_between_bisection, - mock_get_git_hash): - - expected_revisions_and_hash_tuple = ([102, 105, 108], [ - 'a123testhash1', 'a123testhash2', 'a123testhash3' - ]) - - @test_helpers.CallCountsToMockFunctions - def MockGetGitHashForRevision(call_count, _src_path, _rev): - # Simulate retrieving the git hash for the revision. - if call_count < 3: - return expected_revisions_and_hash_tuple[1][call_count] - - assert False, 'Called `GetGitHashFrom()` more than expected.' - - temp_worktree = '/abs/path/to/tmpDir' - - mock_create_temp_llvm_repo.return_value.__enter__.return_value.name = \ - temp_worktree - - # Simulate the valid revisions list. - mock_get_revisions_between_bisection.return_value = \ - expected_revisions_and_hash_tuple[0] - - # Simulate behavior of `GetGitHashFrom()` by using the testing - # function. - mock_get_git_hash.side_effect = MockGetGitHashForRevision - - start = 100 - end = 110 - parallel = 3 - src_path = None - pending_revisions = {103, 104} - skip_revisions = {101, 106, 107, 109} + git_hashes = [ + git_llvm_rev.base_llvm_revision + 3, git_llvm_rev.base_llvm_revision + 5 + ] - self.assertTupleEqual( - llvm_bisection.GetRevisionsListAndHashList( - start, end, parallel, src_path, pending_revisions, skip_revisions), - expected_revisions_and_hash_tuple) - - mock_get_revisions_between_bisection.assert_called_once() - - self.assertEqual(mock_get_git_hash.call_count, 3) + self.assertEqual( + llvm_bisection.GetCommitsBetween(start, end, parallel, abs_path_to_src, + test_pending_revisions, + test_skip_revisions), + (git_hashes, revs)) - def testSuccessfullyDieWithNoRevisionsError(self): + def testLoadStatusFilePassedWithExistingFile(self): start = 100 - end = 110 - - pending_revisions = {105, 108} - skip_revisions = {101, 102, 103, 104, 106, 107, 109} - - expected_no_revisions_message = ('No revisions between start %d and end ' - '%d to create tryjobs' % (start, end)) - - expected_no_revisions_message += '\nThe following tryjobs are pending:\n' \ - + '\n'.join(str(rev) for rev in pending_revisions) - - expected_no_revisions_message += '\nThe following tryjobs were skipped:\n' \ - + '\n'.join(str(rev) for rev in skip_revisions) - - # Verify that an exception is raised when there are no revisions to launch - # tryjobs for between 'start' and 'end' and some tryjobs are 'pending'. - with self.assertRaises(ValueError) as err: - llvm_bisection.DieWithNoRevisionsError(start, end, skip_revisions, - pending_revisions) + end = 150 - self.assertEqual(str(err.exception), expected_no_revisions_message) + test_bisect_state = {'start': start, 'end': end, 'jobs': []} - # Simulate behavior of `FindTryjobIndex()` when the index of the tryjob was - # found. - @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) - def testTryjobExistsInRevisionsToLaunch(self, mock_find_tryjob_index): - test_existing_jobs = [{'rev': 102, 'status': 'good'}] + # Simulate that the status file exists. + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: + with open(temp_json_file, 'w') as f: + test_helpers.WritePrettyJsonFile(test_bisect_state, f) - revision_to_launch = [102] + self.assertEqual( + llvm_bisection.LoadStatusFile(temp_json_file, start, end), + test_bisect_state) - expected_revision_that_exists = 102 + def testLoadStatusFilePassedWithoutExistingFile(self): + start = 200 + end = 250 - with self.assertRaises(ValueError) as err: - llvm_bisection.CheckForExistingTryjobsInRevisionsToLaunch( - revision_to_launch, test_existing_jobs) + expected_bisect_state = {'start': start, 'end': end, 'jobs': []} - expected_found_tryjob_index_error_message = ( - 'Revision %d exists already ' - 'in "jobs"' % expected_revision_that_exists) + last_tested = '/abs/path/to/file_that_does_not_exist.json' self.assertEqual( - str(err.exception), expected_found_tryjob_index_error_message) - - mock_find_tryjob_index.assert_called_once() + llvm_bisection.LoadStatusFile(last_tested, start, end), + expected_bisect_state) @mock.patch.object(modify_a_tryjob, 'AddTryjob') - def testSuccessfullyUpdatedStatusFileWhenExceptionIsRaised( - self, mock_add_tryjob): + def testBisectPassed(self, mock_add_tryjob): git_hash_list = ['a123testhash1', 'a123testhash2', 'a123testhash3'] revisions_list = [102, 104, 106] @@ -343,11 +206,11 @@ class LLVMBisectionTest(unittest.TestCase): # Verify that the status file is updated when an exception happened when # attempting to launch a revision (i.e. progress is not lost). with self.assertRaises(ValueError) as err: - llvm_bisection.UpdateBisection( - revisions_list, git_hash_list, bisection_contents, temp_json_file, - packages, args_output.chroot_path, patch_file, - args_output.extra_change_lists, args_output.options, - args_output.builders, args_output.verbose) + llvm_bisection.Bisect(revisions_list, git_hash_list, bisection_contents, + temp_json_file, packages, args_output.chroot_path, + patch_file, args_output.extra_change_lists, + args_output.options, args_output.builders, + args_output.verbose) expected_bisection_contents = { 'start': @@ -368,121 +231,128 @@ class LLVMBisectionTest(unittest.TestCase): with open(temp_json_file) as f: json_contents = json.load(f) - self.assertDictEqual(json_contents, expected_bisection_contents) + self.assertEqual(json_contents, expected_bisection_contents) self.assertEqual(str(err.exception), 'Unable to launch tryjob') self.assertEqual(mock_add_tryjob.call_count, 3) - # Simulate behavior of `GetGitHashFrom()` when successfully retrieved - # the git hash of the bad revision. Assume llvm_bisection has imported - # GetGitHashFrom @mock.patch.object( - get_llvm_hash, 'GetGitHashFrom', return_value='a123testhash4') - def testCompletedBisectionWhenProvidedSrcPath(self, mock_get_git_hash): - last_tested = '/some/last/tested_file.json' + get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash4') + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') + @mock.patch.object(llvm_bisection, 'LoadStatusFile') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + def testMainPassed(self, mock_outside_chroot, mock_load_status_file, + mock_get_range, mock_get_revision_and_hash_list, + _mock_get_bad_llvm_hash): - src_path = '/abs/path/to/src/path' + start = 500 + end = 502 + cl = 1 - # The bad revision. - end = 150 + bisect_state = { + 'start': start, + 'end': end, + 'jobs': [{ + 'rev': 501, + 'status': 'bad', + 'cl': cl + }] + } - llvm_bisection._NoteCompletedBisection(last_tested, src_path, end) + skip_revisions = {501} + pending_revisions = {} - mock_get_git_hash.assert_called_once() + mock_load_status_file.return_value = bisect_state - # Simulate behavior of `GetLLVMHash()` when successfully retrieved - # the git hash of the bad revision. - @mock.patch.object( - get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash5') - def testCompletedBisectionWhenNotProvidedSrcPath(self, mock_get_git_hash): - last_tested = '/some/last/tested_file.json' + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) - src_path = None + mock_get_revision_and_hash_list.return_value = [], [] - # The bad revision. - end = 200 + args_output = test_helpers.ArgsOutputTest() + args_output.start_rev = start + args_output.end_rev = end + args_output.parallel = 3 + args_output.src_path = None + args_output.chroot_path = 'somepath' - llvm_bisection._NoteCompletedBisection(last_tested, src_path, end) + self.assertEqual( + llvm_bisection.main(args_output), + llvm_bisection.BisectionExitStatus.BISECTION_COMPLETE.value) - mock_get_git_hash.assert_called_once() + mock_outside_chroot.assert_called_once() - def testSuccessfullyLoadedStatusFile(self): - start = 100 - end = 150 + mock_load_status_file.assert_called_once() - test_bisect_contents = {'start': start, 'end': end, 'jobs': []} + mock_get_range.assert_called_once() - # Simulate that the status file exists. - with test_helpers.CreateTemporaryJsonFile() as temp_json_file: - with open(temp_json_file, 'w') as f: - test_helpers.WritePrettyJsonFile(test_bisect_contents, f) + mock_get_revision_and_hash_list.assert_called_once() - self.assertDictEqual( - llvm_bisection.LoadStatusFile(temp_json_file, start, end), - test_bisect_contents) + @mock.patch.object(llvm_bisection, 'LoadStatusFile') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + def testMainFailedWithInvalidRange(self, mock_outside_chroot, + mock_load_status_file): - def testLoadedStatusFileThatDoesNotExist(self): - start = 200 - end = 250 + start = 500 + end = 502 - expected_bisect_contents = {'start': start, 'end': end, 'jobs': []} + bisect_state = { + 'start': start - 1, + 'end': end, + } - last_tested = '/abs/path/to/file_that_does_not_exist.json' + mock_load_status_file.return_value = bisect_state - self.assertDictEqual( - llvm_bisection.LoadStatusFile(last_tested, start, end), - expected_bisect_contents) - - # Simulate behavior of `_NoteCompletedBisection()` when there are no more - # tryjobs to launch between start and end, so bisection is complete. - @mock.patch.object(llvm_bisection, '_NoteCompletedBisection') - @mock.patch.object(llvm_bisection, 'GetRevisionsListAndHashList') - @mock.patch.object(llvm_bisection, 'GetStartAndEndRevision') - # Simulate behavior of `_ValidateStartAndEndAgainstJSONStartAndEnd()` when - # both start and end revisions match. - @mock.patch.object(llvm_bisection, - '_ValidateStartAndEndAgainstJSONStartAndEnd') + args_output = test_helpers.ArgsOutputTest() + args_output.start_rev = start + args_output.end_rev = end + args_output.parallel = 3 + args_output.src_path = None + + with self.assertRaises(ValueError) as err: + llvm_bisection.main(args_output) + + error_message = (f'The start {start} or the end {end} version provided is ' + f'different than "start" {bisect_state["start"]} or "end" ' + f'{bisect_state["end"]} in the .JSON file') + + self.assertEqual(str(err.exception), error_message) + + mock_outside_chroot.assert_called_once() + + mock_load_status_file.assert_called_once() + + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') @mock.patch.object(llvm_bisection, 'LoadStatusFile') - # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the - # script outside of the chroot. @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) - def testSuccessfullyBisectedLLVM( - self, mock_outside_chroot, mock_load_status_file, - mock_validate_start_and_end, mock_get_start_and_end_revision, - mock_get_revision_and_hash_list, mock_note_completed_bisection): + def testMainFailedWithPendingBuilds(self, mock_outside_chroot, + mock_load_status_file, mock_get_range, + mock_get_revision_and_hash_list): start = 500 end = 502 + rev = 501 - bisect_contents = { + bisect_state = { 'start': start, 'end': end, 'jobs': [{ - 'rev': 501, - 'status': 'skip' + 'rev': rev, + 'status': 'pending' }] } - skip_revisions = {501} - pending_revisions = {} + skip_revisions = {} + pending_revisions = {rev} + + mock_load_status_file.return_value = bisect_state + + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) - # Simulate behavior of `LoadStatusFile()` when successfully loaded the - # status file. - mock_load_status_file.return_value = bisect_contents - - # Simulate behavior of `GetStartAndEndRevision()` when successfully found - # the new start and end revision of the bisection. - # - # Returns new start revision, new end revision, a set of pending revisions, - # and a set of skip revisions. - mock_get_start_and_end_revision.return_value = (start, end, - pending_revisions, - skip_revisions) - - # Simulate behavior of `GetRevisionsListAndHashList()` when successfully - # retrieved valid revisions (along with their git hashes) between start and - # end (in this case, none). mock_get_revision_and_hash_list.return_value = [], [] args_output = test_helpers.ArgsOutputTest() @@ -491,111 +361,75 @@ class LLVMBisectionTest(unittest.TestCase): args_output.parallel = 3 args_output.src_path = None - self.assertEqual( - llvm_bisection.main(args_output), - llvm_bisection.BisectionExitStatus.BISECTION_COMPLETE.value) + with self.assertRaises(ValueError) as err: + llvm_bisection.main(args_output) + + error_message = (f'No revisions between start {start} and end {end} to ' + 'create tryjobs\nThe following tryjobs are pending:\n' + f'{rev}\n') + + self.assertEqual(str(err.exception), error_message) mock_outside_chroot.assert_called_once() mock_load_status_file.assert_called_once() - mock_validate_start_and_end.assert_called_once() - - mock_get_start_and_end_revision.assert_called_once() + mock_get_range.assert_called_once() mock_get_revision_and_hash_list.assert_called_once() - mock_note_completed_bisection.assert_called_once() - - @mock.patch.object(llvm_bisection, 'DieWithNoRevisionsError') - # Simulate behavior of `_NoteCompletedBisection()` when there are no more - # tryjobs to launch between start and end, so bisection is complete. - @mock.patch.object(llvm_bisection, 'GetRevisionsListAndHashList') - @mock.patch.object(llvm_bisection, 'GetStartAndEndRevision') - # Simulate behavior of `_ValidateStartAndEndAgainstJSONStartAndEnd()` when - # both start and end revisions match. - @mock.patch.object(llvm_bisection, - '_ValidateStartAndEndAgainstJSONStartAndEnd') + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') @mock.patch.object(llvm_bisection, 'LoadStatusFile') - # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the - # script outside of the chroot. @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) - def testNoMoreTryjobsToLaunch( - self, mock_outside_chroot, mock_load_status_file, - mock_validate_start_and_end, mock_get_start_and_end_revision, - mock_get_revision_and_hash_list, mock_die_with_no_revisions_error): + def testMainFailedWithDuplicateBuilds(self, mock_outside_chroot, + mock_load_status_file, mock_get_range, + mock_get_revision_and_hash_list): start = 500 end = 502 + rev = 501 + git_hash = 'a123testhash1' - bisect_contents = { + bisect_state = { 'start': start, 'end': end, 'jobs': [{ - 'rev': 501, + 'rev': rev, 'status': 'pending' }] } skip_revisions = {} - pending_revisions = {501} - - no_revisions_error_message = ('No more tryjobs to launch between %d and ' - '%d' % (start, end)) - - def MockNoRevisionsErrorException(_start, _end, _skip, _pending): - raise ValueError(no_revisions_error_message) - - # Simulate behavior of `LoadStatusFile()` when successfully loaded the - # status file. - mock_load_status_file.return_value = bisect_contents - - # Simulate behavior of `GetStartAndEndRevision()` when successfully found - # the new start and end revision of the bisection. - # - # Returns new start revision, new end revision, a set of pending revisions, - # and a set of skip revisions. - mock_get_start_and_end_revision.return_value = (start, end, - pending_revisions, - skip_revisions) - - # Simulate behavior of `GetRevisionsListAndHashList()` when successfully - # retrieved valid revisions (along with their git hashes) between start and - # end (in this case, none). - mock_get_revision_and_hash_list.return_value = [], [] + pending_revisions = {rev} + + mock_load_status_file.return_value = bisect_state - # Use the test function to simulate `DieWithNoRevisionsWithError()` - # behavior. - mock_die_with_no_revisions_error.side_effect = MockNoRevisionsErrorException + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) + + mock_get_revision_and_hash_list.return_value = [rev], [git_hash] - # Simulate behavior of arguments passed into the command line. args_output = test_helpers.ArgsOutputTest() args_output.start_rev = start args_output.end_rev = end args_output.parallel = 3 args_output.src_path = None - # Verify the exception is raised when there are no more tryjobs to launch - # between start and end when there are tryjobs that are 'pending', so - # the actual bad revision can change when those tryjobs's 'status' are - # updated. with self.assertRaises(ValueError) as err: llvm_bisection.main(args_output) - self.assertEqual(str(err.exception), no_revisions_error_message) + error_message = ('Revision %d exists already in "jobs"' % rev) + self.assertEqual(str(err.exception), error_message) mock_outside_chroot.assert_called_once() mock_load_status_file.assert_called_once() - mock_validate_start_and_end.assert_called_once() - - mock_get_start_and_end_revision.assert_called_once() + mock_get_range.assert_called_once() mock_get_revision_and_hash_list.assert_called_once() - mock_die_with_no_revisions_error.assert_called_once() - if __name__ == '__main__': unittest.main() -- cgit v1.2.3 From fb8fd5be362ec7a52dc3be33859d31b0553c1038 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 28 Sep 2020 15:30:23 -0700 Subject: compiler_wrapper: enable -mharden-sls=all on aarch64 Migrate straight-line speculation vulnerability. Link: http://lists.llvm.org/pipermail/llvm-dev/2020-June/142109.html BUG=chromium:1096302 TEST=https://docs.google.com/spreadsheets/d/1EZbTYUdq2Y6Jpgy5PrCACB3GrInFy0ahI40IPexBZDM/edit#gid=336625829 Change-Id: I35e8f3cce53b86159f1705429774ceb803264f7d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2436936 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/aarch64_flags.go | 11 +++++++++++ compiler_wrapper/aarch64_flags_test.go | 19 +++++++++++++++++++ compiler_wrapper/compiler_wrapper.go | 1 + compiler_wrapper/testutil_test.go | 1 + 4 files changed, 32 insertions(+) create mode 100644 compiler_wrapper/aarch64_flags.go create mode 100644 compiler_wrapper/aarch64_flags_test.go diff --git a/compiler_wrapper/aarch64_flags.go b/compiler_wrapper/aarch64_flags.go new file mode 100644 index 00000000..a0d05523 --- /dev/null +++ b/compiler_wrapper/aarch64_flags.go @@ -0,0 +1,11 @@ +// Copyright 2020 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. + +package main + +func processAarch64Flags(builder *commandBuilder) { + if builder.target.arch == "aarch64" { + builder.addPreUserArgs("-mharden-sls=all") + } +} diff --git a/compiler_wrapper/aarch64_flags_test.go b/compiler_wrapper/aarch64_flags_test.go new file mode 100644 index 00000000..0cb692e2 --- /dev/null +++ b/compiler_wrapper/aarch64_flags_test.go @@ -0,0 +1,19 @@ +// Copyright 2020 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. + +package main + +import ( + "testing" +) + +func TestAddSlsFlagOnAarch64(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + cmd := ctx.must(callCompiler(ctx, ctx.cfg, + ctx.newCommand(clangAarch64, mainCc))) + if err := verifyArgOrder(cmd, "-mharden-sls=all", mainCc); err != nil { + t.Error(err) + } + }) +} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index aa52dfdc..49ee0eb0 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -187,6 +187,7 @@ func prepareClangCommand(builder *commandBuilder) (err error) { } builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) + processAarch64Flags(builder) return processClangFlags(builder) } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 21b7169d..8e2377e7 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -22,6 +22,7 @@ const ( clangAndroid = "./clang" clangTidyAndroid = "./clang-tidy" clangX86_64 = "./x86_64-cros-linux-gnu-clang" + clangAarch64 = "./aarch64-cros-linux-gnu-clang" gccX86_64 = "./x86_64-cros-linux-gnu-gcc" gccX86_64Eabi = "./x86_64-cros-eabi-gcc" gccArmV7 = "./armv7m-cros-linux-gnu-gcc" -- cgit v1.2.3 From b9a429906b7815cd9aeca6674f26e6e2e3ba56dd Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Sun, 23 Aug 2020 20:09:02 -0700 Subject: llvm_tools: abandon CLs after completing LLVM bisection. Abandon CLs created for bisection if LLVM bisection successfully found the root cause. BUG=chromium:1081457 TEST=Verified locally. Change-Id: I3702c38432fbaf87f7df62418c0b29cbe4ca722a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2382420 Reviewed-by: Manoj Gupta Reviewed-by: George Burgess Tested-by: Jian Cai --- llvm_tools/llvm_bisection.py | 21 ++++++++++ llvm_tools/llvm_bisection_unittest.py | 76 ++++++++++++++++++++++++++++++++++- 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py index 37320baf..c8d694cd 100755 --- a/llvm_tools/llvm_bisection.py +++ b/llvm_tools/llvm_bisection.py @@ -13,6 +13,7 @@ import enum import errno import json import os +import subprocess import sys import chroot @@ -117,6 +118,13 @@ def GetCommandLineArgs(): help='display contents of a command to the terminal ' '(default: %(default)s)') + # Add argument for whether to display command contents to `stdout`. + parser.add_argument( + '--nocleanup', + action='store_false', + dest='cleanup', + help='Abandon CLs created for bisectoin') + args_output = parser.parse_args() assert args_output.start_rev < args_output.end_rev, ( @@ -348,6 +356,19 @@ def main(args_output): '\n'.join(str(rev) for rev in skip_revisions)) print(skip_revisions_message) + if args_output.cleanup: + # Abondon all the CLs created for bisection + gerrit = os.path.join(args_output.chroot_path, 'chromite/bin/gerrit') + for build in bisect_state['jobs']: + try: + subprocess.check_output([gerrit, 'abandon', build['cl']], + stderr=subprocess.STDOUT, + encoding='utf-8') + except subprocess.CalledProcessError as err: + # the CL may have been abandoned + if 'chromite.lib.gob_util.GOBError' not in err.output: + raise + return BisectionExitStatus.BISECTION_COMPLETE.value for rev in revisions: diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py index 8478f82e..a40770a5 100755 --- a/llvm_tools/llvm_bisection_unittest.py +++ b/llvm_tools/llvm_bisection_unittest.py @@ -11,6 +11,8 @@ from __future__ import print_function import json +import os +import subprocess import unittest import unittest.mock as mock @@ -237,6 +239,7 @@ class LLVMBisectionTest(unittest.TestCase): self.assertEqual(mock_add_tryjob.call_count, 3) + @mock.patch.object(subprocess, 'check_output', return_value=None) @mock.patch.object( get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash4') @mock.patch.object(llvm_bisection, 'GetCommitsBetween') @@ -245,7 +248,7 @@ class LLVMBisectionTest(unittest.TestCase): @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) def testMainPassed(self, mock_outside_chroot, mock_load_status_file, mock_get_range, mock_get_revision_and_hash_list, - _mock_get_bad_llvm_hash): + _mock_get_bad_llvm_hash, mock_abandon_cl): start = 500 end = 502 @@ -277,6 +280,7 @@ class LLVMBisectionTest(unittest.TestCase): args_output.parallel = 3 args_output.src_path = None args_output.chroot_path = 'somepath' + args_output.cleanup = True self.assertEqual( llvm_bisection.main(args_output), @@ -290,6 +294,19 @@ class LLVMBisectionTest(unittest.TestCase): mock_get_revision_and_hash_list.assert_called_once() + mock_abandon_cl.assert_called_once() + self.assertEqual( + mock_abandon_cl.call_args, + mock.call( + [ + os.path.join(args_output.chroot_path, 'chromite/bin/gerrit'), + 'abandon', + cl, + ], + stderr=subprocess.STDOUT, + encoding='utf-8', + )) + @mock.patch.object(llvm_bisection, 'LoadStatusFile') @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) def testMainFailedWithInvalidRange(self, mock_outside_chroot, @@ -430,6 +447,63 @@ class LLVMBisectionTest(unittest.TestCase): mock_get_revision_and_hash_list.assert_called_once() + @mock.patch.object(subprocess, 'check_output', return_value=None) + @mock.patch.object( + get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash4') + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') + @mock.patch.object(llvm_bisection, 'LoadStatusFile') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + def testMainFailedToAbandonCL(self, mock_outside_chroot, + mock_load_status_file, mock_get_range, + mock_get_revision_and_hash_list, + _mock_get_bad_llvm_hash, mock_abandon_cl): + + start = 500 + end = 502 + + bisect_state = { + 'start': start, + 'end': end, + 'jobs': [{ + 'rev': 501, + 'status': 'bad', + 'cl': 0 + }] + } + + skip_revisions = {501} + pending_revisions = {} + + mock_load_status_file.return_value = bisect_state + + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) + + mock_get_revision_and_hash_list.return_value = ([], []) + + error_message = 'Error message.' + mock_abandon_cl.side_effect = subprocess.CalledProcessError( + returncode=1, cmd=[], output=error_message) + + args_output = test_helpers.ArgsOutputTest() + args_output.start_rev = start + args_output.end_rev = end + args_output.parallel = 3 + args_output.src_path = None + args_output.cleanup = True + + with self.assertRaises(subprocess.CalledProcessError) as err: + llvm_bisection.main(args_output) + + self.assertEqual(err.exception.output, error_message) + + mock_outside_chroot.assert_called_once() + + mock_load_status_file.assert_called_once() + + mock_get_range.assert_called_once() + if __name__ == '__main__': unittest.main() -- cgit v1.2.3 From d184b9af4fb0559b1e98a935c85a1b42a2af37bd Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Sat, 3 Oct 2020 11:45:28 -0700 Subject: crosperf: Update path search for chrome sources Chrome source location has recently changed and path search in crosperf is updated accordingly. BUG=None TEST=run crosperf after repo sync and ebuild prepare of chrome. Change-Id: I715b3a9bf4892a993181b0be5864de94f651afe2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2446895 Commit-Queue: Denis Nikitin Commit-Queue: Manoj Gupta Tested-by: Denis Nikitin Auto-Submit: Denis Nikitin Reviewed-by: Manoj Gupta --- crosperf/label.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crosperf/label.py b/crosperf/label.py index b8122613..b14c4a73 100644 --- a/crosperf/label.py +++ b/crosperf/label.py @@ -61,9 +61,9 @@ class Label(object): if self.image_type == 'local': chromeos_root = FileUtils().ChromeOSRootFromImage(chromeos_image) if not chromeos_root: - raise RuntimeError( - "No ChromeOS root given for label '%s' and could " - "not determine one from image path: '%s'." % (name, chromeos_image)) + raise RuntimeError("No ChromeOS root given for label '%s' and could " + "not determine one from image path: '%s'." % + (name, chromeos_image)) else: chromeos_root = FileUtils().CanonicalizeChromeOSRoot(chromeos_root) if not chromeos_root: @@ -77,6 +77,11 @@ class Label(object): if not os.path.exists(self.chrome_src): self.chrome_src = os.path.join(self.chromeos_root, '.cache/distfiles/target/chrome-src') + # Chrome source location has changed and we have to support + # old and new path. + if not os.path.exists(self.chrome_src): + self.chrome_src = os.path.join(self.chromeos_root, + '.cache/distfiles/chrome-src-internal') else: chromeos_src = misc.CanonicalizePath(chrome_src) if not chromeos_src: -- cgit v1.2.3 From d8187c7c4ba1296034498fc657aef0e032e2a96f Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 5 Oct 2020 08:41:41 -0700 Subject: toolchain-utils: Sync compiler wrapper changes with llvm changes. This updates the compiler wrapper flags to match recent updates to compiler wrapper in sys-devel/llvm (for llvm-next). BUG=chromium:1133468 TEST=None Change-Id: Ibab9f0e1d0e35db3ba838e70a812efe2d5137a0a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2448871 Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- compiler_wrapper/cros_llvm_next_flags.go | 5 ++++- .../cros_hardened_llvmnext_golden/bisect.json | 6 ++++++ .../cros_hardened_llvmnext_golden/clang_path.json | 24 ++++++++++++++++++++++ .../cros_hardened_llvmnext_golden/clangtidy.json | 16 +++++++++++++++ .../force_disable_werror.json | 10 +++++++++ .../gcc_clang_syntax.json | 8 ++++++++ 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/cros_llvm_next_flags.go b/compiler_wrapper/cros_llvm_next_flags.go index ef4b828d..f5823fbf 100644 --- a/compiler_wrapper/cros_llvm_next_flags.go +++ b/compiler_wrapper/cros_llvm_next_flags.go @@ -13,8 +13,11 @@ package main // tag is set. // TODO: Enable test in config_test.go, once we have new llvm-next flags. -var llvmNextFlags = []string{} +var llvmNextFlags = []string{ + "-Wno-compound-token-split-by-macro", +} var llvmNextPostFlags = []string{ "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", } diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 2648ce08..b8e0e462 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -47,6 +48,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -102,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -111,6 +114,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -169,6 +173,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -178,6 +183,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index d7d500c1..9780356e 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -37,6 +38,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -83,6 +85,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -92,6 +95,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -138,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -147,6 +152,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -193,6 +199,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -202,6 +209,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -255,6 +263,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -266,6 +275,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -322,6 +332,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -333,6 +344,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -384,6 +396,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -395,6 +408,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -441,6 +455,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -450,6 +465,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -493,6 +509,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -502,6 +519,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -545,6 +563,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -554,6 +573,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -597,6 +617,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -606,6 +627,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -652,6 +674,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -661,6 +684,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b0526836..06e114cb 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -52,6 +53,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -76,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -85,6 +88,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -139,6 +143,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -148,6 +153,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -173,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -182,6 +189,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -238,6 +246,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -247,6 +256,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -275,6 +285,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -284,6 +295,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -341,6 +353,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -350,6 +363,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -375,6 +389,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -384,6 +399,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 670a361a..cd460a79 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -40,6 +41,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -86,6 +88,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -95,6 +98,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -127,6 +131,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -136,6 +141,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -186,6 +192,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -195,6 +202,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -227,6 +235,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -236,6 +245,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 20e9746f..c7f619d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -37,6 +38,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -104,6 +106,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -113,6 +116,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -175,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -184,6 +189,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -230,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -239,6 +246,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", -- cgit v1.2.3 From 92d7005475c73345f1367892d4e28c618137ffc5 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 6 Oct 2020 11:31:25 -0700 Subject: toolchain-utils: create pending_archives if needed The change fixes the following error happening after migration to a new chrotomation: cp: cannot create regular file '/usr/local/google/crostc/pending_archives/.': No such file or directory Traceback (most recent call last): ... File "./buildbot_test_toolchains.py", line 259, in _CopyJson raise RuntimeError( RuntimeError: Crosperf failed to run tests, cannot copy json report! BUG=None TEST=To be tested on chrotomation.mtv. Change-Id: I4de2bb1ec816fa6d9e98993d6da1b6bded34b1f5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2453594 Commit-Queue: Denis Nikitin Tested-by: Denis Nikitin Reviewed-by: George Burgess --- buildbot_test_toolchains.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index e4784a62..48987966 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -250,6 +250,8 @@ class ToolchainComparator(object): self._ce.RunCommand(command) def _CopyJson(self): + # Make sure a destination directory exists. + os.makedirs(PENDING_ARCHIVES_DIR, exist_ok=True) # Copy json report to pending archives directory. command = 'cp %s/*.json %s/.' % (self._reports_dir, PENDING_ARCHIVES_DIR) ret = self._ce.RunCommand(command) -- cgit v1.2.3 From 6d9e457d1841b6086c51719ee43a56f2ee550c7c Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 5 Oct 2020 16:32:36 -0700 Subject: llvm_tools: add a lexan crash autouploader This CL adds an autouploader for crashes that land in Lexan's bucket. This autouploader uploads them to 4c, much like how `bisect_clang_crashes.py` does. The intent is to run this regularly on chrotomation. BUG=None TEST=Ran it Change-Id: I7cfbe463d89994f6ed3f750c9e8277e1fad0738e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2451306 Reviewed-by: Jian Cai Tested-by: George Burgess --- llvm_tools/README.md | 25 ++- llvm_tools/upload_lexan_crashes_to_forcey.py | 258 ++++++++++++++++++++++ llvm_tools/upload_lexan_crashes_to_forcey_test.py | 122 ++++++++++ 3 files changed, 404 insertions(+), 1 deletion(-) create mode 100755 llvm_tools/upload_lexan_crashes_to_forcey.py create mode 100755 llvm_tools/upload_lexan_crashes_to_forcey_test.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index d7c20164..783ec22d 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -555,7 +555,7 @@ PYTHONPATH=../ ./nightly_revert_checker.py \ ### `bisect_clang_crashes.py` This script downloads clang crash diagnoses from -gs://chromeos-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for +gs://chromeos-toolchain-artifacts/clang-crash-diagnoses and sends them to 4c for bisection. Usage example: @@ -569,3 +569,26 @@ to 4c server for bisection. The summary of submitted jobs will be saved in output/state.json under the current path. The output directory will be created automatically if it does not exist yet. To get more information of the submitted jobs, please refer to go/4c-cli. + +### `upload_lexan_crashes_to_forcey.py` + +This script downloads clang crash diagnoses from Lexan's bucket and sends them +to 4c for bisection. + +Usage example: + +``` +$ ./upload_lexan_crashes_to_forcey.py --4c 4c-cli \ + --state_file ./output/state.json +``` + +The above command downloads the artifacts of clang crash diagnoses and send them +to 4c server for bisection. The summary of submitted jobs will be saved in +output/state.json under the current path. The output directory will be created +automatically if it does not exist yet. To get more information of the submitted +jobs, please refer to go/4c-cli. + +Note that it's recommended to 'seed' the state file with a most recent upload +date. This can be done by running this tool *once* with a `--last_date` flag. +This flag has the script override whatever's in the state file (if anything) and +start submitting all crashes uploaded starting at the given day. diff --git a/llvm_tools/upload_lexan_crashes_to_forcey.py b/llvm_tools/upload_lexan_crashes_to_forcey.py new file mode 100755 index 00000000..9cf0c086 --- /dev/null +++ b/llvm_tools/upload_lexan_crashes_to_forcey.py @@ -0,0 +1,258 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Fetches and submits the latest test-cases from Lexan's crash bucket.""" + +# pylint: disable=cros-logging-import + +import argparse +import contextlib +import datetime +import json +import logging +import os +import shutil +import subprocess +import sys +import tempfile +from typing import Generator, List, Iterable + +gsurl_base = 'gs://chrome-clang-crash-reports/v1' + + +def gsutil_ls(loc: str) -> List[str]: + results = subprocess.run(['gsutil', 'ls', loc], + stdout=subprocess.PIPE, + check=True, + encoding='utf-8') + return [l.strip() for l in results.stdout.splitlines()] + + +def gsurl_ls_last_numbers(url: str) -> List[int]: + return sorted(int(x.rstrip('/').split('/')[-1]) for x in gsutil_ls(url)) + + +def get_available_year_numbers() -> List[int]: + return gsurl_ls_last_numbers(gsurl_base) + + +def get_available_month_numbers(year: int) -> List[int]: + return gsurl_ls_last_numbers(f'{gsurl_base}/{year}') + + +def get_available_day_numbers(year: int, month: int) -> List[int]: + return gsurl_ls_last_numbers(f'{gsurl_base}/{year}/{month:02d}') + + +def get_available_test_case_urls(year: int, month: int, day: int) -> List[str]: + return gsutil_ls(f'{gsurl_base}/{year}/{month:02d}/{day:02d}') + + +def test_cases_on_or_after(date: datetime.datetime + ) -> Generator[str, None, None]: + """Yields all test-cases submitted on or after the given date.""" + for year in get_available_year_numbers(): + if year < date.year: + continue + + for month in get_available_month_numbers(year): + if year == date.year and month < date.month: + continue + + for day in get_available_day_numbers(year, month): + when = datetime.date(year, month, day) + if when < date: + continue + + yield when, get_available_test_case_urls(year, month, day) + + +def to_ymd(date: datetime.date) -> str: + return date.strftime('%Y-%m-%d') + + +def from_ymd(date_str: str) -> datetime.date: + return datetime.datetime.strptime(date_str, '%Y-%m-%d').date() + + +def persist_state(seen_urls: Iterable[str], state_file: str, + current_date: datetime.date): + tmp_state_file = state_file + '.tmp' + with open(tmp_state_file, 'w', encoding='utf-8') as f: + json.dump( + { + 'already_seen': sorted(seen_urls), + 'most_recent_date': to_ymd(current_date), + }, + f, + ) + os.rename(tmp_state_file, state_file) + + +@contextlib.contextmanager +def temp_dir() -> Generator[str, None, None]: + loc = tempfile.mkdtemp('lexan-autosubmit') + try: + yield loc + finally: + shutil.rmtree(loc) + + +def submit_test_case(gs_url: str, cr_tool: str) -> None: + logging.info('Submitting %s', gs_url) + suffix = os.path.splitext(gs_url)[1] + with temp_dir() as tempdir: + target_name = 'test_case' + suffix + target = os.path.join(tempdir, target_name) + subprocess.run(['gsutil', 'cp', gs_url, target], check=True) + subprocess.run(['tar', 'xaf', target_name], check=True, cwd=tempdir) + os.unlink(target) + + # Sometimes (e.g., in + # gs://chrome-clang-crash-reports/v1/2020/03/27/ + # chromium.clang-ToTiOS-12754-GTXToolKit-2bfcde.tgz) + # we'll get `.crash` files. Unclear why, but let's filter them out anyway. + repro_files = [x for x in os.listdir(tempdir) if not x.endswith('.crash')] + assert len(repro_files) == 2, repro_files + if repro_files[0].endswith('.sh'): + sh_file, src_file = repro_files + assert not src_file.endswith('.sh'), repro_files + else: + src_file, sh_file = repro_files + assert sh_file.endswith('.sh'), repro_files + + subprocess.run( + [ + cr_tool, + 'reduce', + '-stream=false', + '-wait=false', + '-note', + gs_url, + '-sh_file', + os.path.join(tempdir, sh_file), + '-src_file', + os.path.join(tempdir, src_file), + ], + check=True, + ) + + +def submit_new_test_cases( + last_seen_test_cases: Iterable[str], + earliest_date_to_check: datetime.date, + forcey: str, + state_file_path: str, +) -> None: + """Submits new test-cases to forcey. + + This will persist state after each test-case is submitted. + + Args: + last_seen_test_cases: test-cases which have been submitted already, and + should be skipped if seen again. + earliest_date_to_check: the earliest date we should consider test-cases + from. + forcey: path to the forcey binary. + state_file_path: path to our state file. + """ + # `all_test_cases_seen` is the union of all test-cases seen on this and prior + # invocations. It guarantees, in all cases we care about, that we won't + # submit the same test-case twice. `test_cases_seen_this_invocation` is + # persisted as "all of the test-cases we've seen on this and prior + # invocations" if we successfully submit _all_ test-cases. + # + # Since you can visualize the test-cases this script considers as a sliding + # window that only moves forward, if we saw a test-case on a prior iteration + # but no longer see it, we'll never see it again (since it fell out of our + # sliding window by being too old). Hence, keeping it around is + # pointless. + # + # We only persist this minimized set of test-cases if _everything_ succeeds, + # since if something fails below, there's a chance that we haven't revisited + # test-cases that we've already seen. + all_test_cases_seen = set(last_seen_test_cases) + test_cases_seen_this_invocation = [] + most_recent_date = earliest_date_to_check + for date, candidates in test_cases_on_or_after(earliest_date_to_check): + most_recent_date = max(most_recent_date, date) + + for url in candidates: + test_cases_seen_this_invocation.append(url) + if url in all_test_cases_seen: + continue + + all_test_cases_seen.add(url) + submit_test_case(url, forcey) + + # Persisting on each iteration of this loop isn't free, but it's the + # easiest way to not resubmit test-cases, and it's good to keep in mind + # that: + # - the state file will be small (<12KB, since it only keeps a few days + # worth of test-cases after the first run) + # - in addition to this, we're downloading+unzipping+reuploading multiple + # MB of test-case bytes. + # + # So comparatively, the overhead here probably isn't an issue. + persist_state(all_test_cases_seen, state_file_path, most_recent_date) + + persist_state(test_cases_seen_this_invocation, state_file_path, + most_recent_date) + + +def main(argv: List[str]): + logging.basicConfig( + format='>> %(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: ' + '%(message)s', + level=logging.INFO, + ) + + my_dir = os.path.dirname(os.path.abspath(__file__)) + + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--state_file', default=os.path.join(my_dir, 'lexan-state.json')) + parser.add_argument( + '--last_date', + help='The earliest date that we care about. All test cases from here ' + 'on will be picked up. Format is YYYY-MM-DD.') + parser.add_argument( + '--4c', dest='forcey', required=True, help='Path to a 4c client binary') + opts = parser.parse_args(argv) + + forcey = opts.forcey + state_file = opts.state_file + last_date_str = opts.last_date + + os.makedirs(os.path.dirname(state_file), 0o755) + + if last_date_str is None: + with open(state_file, encoding='utf-8') as f: + data = json.load(f) + most_recent_date = from_ymd(data['most_recent_date']) + submit_new_test_cases( + last_seen_test_cases=data['already_seen'], + # Note that we always subtract one day from this to avoid a race: + # uploads may appear slightly out-of-order (or builders may lag, or + # ...), so the last test-case uploaded for 2020/01/01 might appear + # _after_ the first test-case for 2020/01/02. Assuming that builders + # won't lag behind for over a day, the easiest way to handle this is to + # always check the previous and current days. + earliest_date_to_check=most_recent_date - datetime.timedelta(days=1), + forcey=forcey, + state_file_path=state_file, + ) + else: + submit_new_test_cases( + last_seen_test_cases=(), + earliest_date_to_check=from_ymd(last_date_str), + forcey=forcey, + state_file_path=state_file, + ) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/llvm_tools/upload_lexan_crashes_to_forcey_test.py b/llvm_tools/upload_lexan_crashes_to_forcey_test.py new file mode 100755 index 00000000..3c9c0d4b --- /dev/null +++ b/llvm_tools/upload_lexan_crashes_to_forcey_test.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for upload_lexan_crashes_to_forcey.""" + +import datetime +import unittest +import unittest.mock + +import upload_lexan_crashes_to_forcey + + +class Test(unittest.TestCase): + """Tests for upload_lexan_crashes_to_forcey.""" + + def test_date_parsing_functions(self): + self.assertEqual( + datetime.date(2020, 2, 1), + upload_lexan_crashes_to_forcey.from_ymd('2020-02-01')) + + @unittest.mock.patch( + 'upload_lexan_crashes_to_forcey.test_cases_on_or_after', + return_value=( + ( + datetime.date(2020, 1, 1), + ('gs://test-case-1', 'gs://test-case-1.1'), + ), + (datetime.date(2020, 1, 2), ('gs://test-case-2',)), + (datetime.date(2020, 1, 1), ('gs://test-case-3',)), + (datetime.date(2020, 1, 4), ('gs://test-case-4',)), + )) + @unittest.mock.patch('upload_lexan_crashes_to_forcey.submit_test_case') + @unittest.mock.patch('upload_lexan_crashes_to_forcey.persist_state') + def test_new_test_case_submission_functions(self, persist_state_mock, + submit_test_case_mock, + test_cases_on_or_after_mock): + forcey_path = '/path/to/4c' + real_state_file_path = '/path/to/state/file' + earliest_date = datetime.date(2020, 1, 1) + + persist_state_calls = [] + + # Since the set this gets is mutated, we need to copy it somehow. + def persist_state_side_effect(test_cases_to_persist, state_file_path, + most_recent_date): + self.assertEqual(state_file_path, real_state_file_path) + persist_state_calls.append( + (sorted(test_cases_to_persist), most_recent_date)) + + persist_state_mock.side_effect = persist_state_side_effect + + upload_lexan_crashes_to_forcey.submit_new_test_cases( + last_seen_test_cases=( + 'gs://test-case-0', + 'gs://test-case-1', + ), + earliest_date_to_check=earliest_date, + forcey=forcey_path, + state_file_path=real_state_file_path, + ) + + test_cases_on_or_after_mock.assert_called_once_with(earliest_date) + self.assertEqual(submit_test_case_mock.call_args_list, [ + unittest.mock.call('gs://test-case-1.1', forcey_path), + unittest.mock.call('gs://test-case-2', forcey_path), + unittest.mock.call('gs://test-case-3', forcey_path), + unittest.mock.call('gs://test-case-4', forcey_path), + ]) + + self.assertEqual(persist_state_calls, [ + ( + ['gs://test-case-0', 'gs://test-case-1', 'gs://test-case-1.1'], + datetime.date(2020, 1, 1), + ), + ( + [ + 'gs://test-case-0', + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + ], + datetime.date(2020, 1, 2), + ), + ( + [ + 'gs://test-case-0', + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + 'gs://test-case-3', + ], + datetime.date(2020, 1, 2), + ), + ( + [ + 'gs://test-case-0', + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + 'gs://test-case-3', + 'gs://test-case-4', + ], + datetime.date(2020, 1, 4), + ), + ( + [ + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + 'gs://test-case-3', + 'gs://test-case-4', + ], + datetime.date(2020, 1, 4), + ), + ]) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From fff1c261e1246a7c8b84cca740339c02336a930c Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Wed, 7 Oct 2020 09:59:40 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R87-13502.0-1601891298 Update chromeos-kernel-4_4 to R87-13502.0-1601890528 Update chromeos-kernel-4_14 to R87-13502.0-1601890521 Update chromeos-kernel-4_19 to R87-13502.0-1601890982 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I7a451319f85a7d9f0d4dc7635be5e6b63f4f4ba1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2457366 Tested-by: Denis Nikitin Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index ea0237d4..e6db7d82 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R87-13482.0-1601286522" + "name": "R87-13502.0-1601891298" }, "chromeos-kernel-4_4": { - "name": "R87-13482.0-1601285703" + "name": "R87-13502.0-1601890528" }, "chromeos-kernel-4_14": { - "name": "R87-13482.0-1601285982" + "name": "R87-13502.0-1601890521" }, "chromeos-kernel-4_19": { - "name": "R87-13482.0-1601286143" + "name": "R87-13502.0-1601890982" } } -- cgit v1.2.3 From 44e5787e5c98615899e512462491089e5c4dfb00 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Thu, 8 Oct 2020 10:17:13 -0700 Subject: rust_tools: Fix the tool using real Rust uprev experiences. Changes include bugs fixes, support running clean before compile with ebuild command, and upload all tarballs (not just rustc). BUG=chromium:1112551 TEST=unittest Change-Id: I83a6845ba01590ea1319c90ebb427fb48c3da773 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462042 Reviewed-by: Bob Haarman Reviewed-by: George Burgess Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- rust_tools/rust_uprev.py | 59 +++++++++++++++++++++++++++++++++---------- rust_tools/rust_uprev_test.py | 30 +++++++++++++++++++--- 2 files changed, 71 insertions(+), 18 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 4ff92109..db907149 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -306,7 +306,6 @@ def update_ebuild(ebuild_file: str, stage0_info: Tuple[str, str, str]) -> None: 'Rust ebuild file has STAGE0_DATE, STAGE0_VERSION, STAGE0_VERSION_CARGO ' 'updated to %s, %s, %s respectively', stage0_date, stage0_rustc, stage0_cargo) - return ebuild_file def flip_mirror_in_ebuild(ebuild_file: str, add: bool) -> None: @@ -330,18 +329,18 @@ def flip_mirror_in_ebuild(ebuild_file: str, add: bool) -> None: f.write(new_contents) -def rust_ebuild_command(command: str, sudo: bool = False) -> None: +def rust_ebuild_actions(actions: List[str], sudo: bool = False) -> None: ebuild_path_inchroot = get_command_output(['equery', 'w', 'rust']) - cmd = ['ebuild', ebuild_path_inchroot, command] + cmd = ['ebuild', ebuild_path_inchroot] + actions if sudo: cmd = ['sudo'] + cmd - subprocess.check_call(cmd, stderr=subprocess.STDOUT) + subprocess.check_call(cmd) def update_manifest(ebuild_file: str) -> None: logging.info('Added "mirror" to RESTRICT to Rust ebuild') flip_mirror_in_ebuild(ebuild_file, add=True) - rust_ebuild_command('manifest') + rust_ebuild_actions(['manifest']) logging.info('Removed "mirror" to RESTRICT from Rust ebuild') flip_mirror_in_ebuild(ebuild_file, add=False) @@ -381,10 +380,10 @@ def update_virtual_rust(template_version: RustVersion, cwd=virtual_rust_dir) -def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: - tarfile_name = f'rustc-{rust_version}-src.tar.gz' - rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' - logging.info('Downloading Rust from %s', rust_src) +def upload_single_tarball(rust_url: str, tarfile_name: str, + tempdir: str) -> None: + rust_src = f'{rust_url}/{tarfile_name}' + logging.info('Downloading Rust artifact from %s', rust_src) gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' # Download Rust's source @@ -417,6 +416,36 @@ def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: ['gsutil', 'cp', '-n', '-a', 'public-read', rust_file, gsutil_location]) +def upload_to_localmirror(tempdir: str, rust_version: RustVersion, + stage0_info: Tuple[str, str, str]) -> None: + stage0_date, stage0_rustc, stage0_cargo = stage0_info + rust_url = 'https://static.rust-lang.org/dist' + # Upload rustc source + upload_single_tarball( + rust_url, + f'rustc-{rust_version}-src.tar.gz', + tempdir, + ) + # Upload stage0 toolchain + upload_single_tarball( + f'{rust_url}/{stage0_date}', + f'rust-std-{stage0_rustc}-x86_64-unknown-linux-gnu.tar.gz', + tempdir, + ) + # Upload stage0 source + upload_single_tarball( + rust_url, + f'rustc-{stage0_rustc}-x86_64-unknown-linux-gnu.tar.gz', + tempdir, + ) + # Upload stage0 cargo + upload_single_tarball( + rust_url, + f'cargo-{stage0_cargo}-x86_64-unknown-linux-gnu.tar.gz', + tempdir, + ) + + def perform_step(state_file: pathlib.Path, tmp_state_file: pathlib.Path, completed_steps: Dict[str, Any], @@ -463,11 +492,12 @@ def create_rust_uprev(rust_version: RustVersion, run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: run_step('upload_to_localmirror', lambda: upload_to_localmirror( - tempdir, rust_version)) - run_step('update manifest', lambda: update_manifest(ebuild_file)) + tempdir, rust_version, stage0_info)) + run_step('update manifest to add new version', lambda: update_manifest( + ebuild_file)) if not skip_compile: - run_step('compile rust', lambda: rust_ebuild_command('compile')) - run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) + run_step('compile rust', lambda: rust_ebuild_actions(['clean', 'compile'])) + run_step('merge rust', lambda: rust_ebuild_actions(['merge'], sudo=True)) run_step('insert version into rust packages', lambda: update_rust_packages( rust_version, add=True)) run_step('upgrade virtual/rust', lambda: update_virtual_rust( @@ -501,7 +531,8 @@ def remove_rust_uprev(rust_version: Optional[RustVersion], run_step('remove ebuild', lambda: remove_files( f'rust-{delete_version}.ebuild', RUST_PATH)) ebuild_file = get_command_output(['equery', 'w', 'rust']) - run_step('update manifest', lambda: update_manifest(ebuild_file)) + run_step('update manifest to delete old version', lambda: update_manifest( + ebuild_file)) run_step('remove version from rust packages', lambda: update_rust_packages( delete_version, add=False)) run_step( diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index a28c551e..c2f071f2 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -180,11 +180,11 @@ class UpdateManifestTest(unittest.TestCase): expect_write=False) @mock.patch.object(rust_uprev, 'flip_mirror_in_ebuild') - @mock.patch.object(rust_uprev, 'rust_ebuild_command') + @mock.patch.object(rust_uprev, 'rust_ebuild_actions') def test_update_manifest(self, mock_run, mock_flip): ebuild_file = '/path/to/rust/rust-1.1.1.ebuild' rust_uprev.update_manifest(ebuild_file) - mock_run.assert_called_once_with('manifest') + mock_run.assert_called_once_with(['manifest']) mock_flip.assert_has_calls( [mock.call(ebuild_file, add=True), mock.call(ebuild_file, add=False)]) @@ -231,6 +231,7 @@ class UploadToLocalmirrorTests(unittest.TestCase): def setUp(self): self.tempdir = '/tmp/any/dir' self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.rust_url = 'https://static.rust-lang.org/dist' self.tarfile_name = f'rustc-{self.new_version}-src.tar.gz' self.rust_src = f'https://static.rust-lang.org/dist/{self.tarfile_name}' self.gsurl = f'gs://chromeos-localmirror/distfiles/{self.tarfile_name}' @@ -241,7 +242,8 @@ class UploadToLocalmirrorTests(unittest.TestCase): @mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'run') def test_pass_without_retry(self, mock_run, mock_output, mock_call): - rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + rust_uprev.upload_single_tarball(self.rust_url, self.tarfile_name, + self.tempdir) mock_output.assert_called_once_with( ['gpg', '--verify', self.sig_file, self.rust_file], encoding='utf-8', @@ -264,7 +266,8 @@ class UploadToLocalmirrorTests(unittest.TestCase): mock_check.side_effect = subprocess.CalledProcessError( returncode=2, cmd=None, output="gpg: Can't check signature") mock_output.return_value = 'some_gpg_keys' - rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + rust_uprev.upload_single_tarball(self.rust_url, self.tarfile_name, + self.tempdir) mock_check.assert_called_once_with( ['gpg', '--verify', self.sig_file, self.rust_file], encoding='utf-8', @@ -285,6 +288,25 @@ class UploadToLocalmirrorTests(unittest.TestCase): ]) ]) + @mock.patch.object(rust_uprev, 'upload_single_tarball') + def test_upload_to_mirror(self, mock_upload): + stage0_info = '2020-01-01', '1.1.1', '0.1.0' + rust_uprev.upload_to_localmirror(self.tempdir, self.new_version, + stage0_info) + mock_upload.assert_has_calls([ + mock.call(self.rust_url, f'rustc-{self.new_version}-src.tar.gz', + self.tempdir), + mock.call(f'{self.rust_url}/{stage0_info[0]}', + f'rust-std-{stage0_info[1]}-x86_64-unknown-linux-gnu.tar.gz', + self.tempdir), + mock.call(self.rust_url, + f'rustc-{stage0_info[1]}-x86_64-unknown-linux-gnu.tar.gz', + self.tempdir), + mock.call(self.rust_url, + f'cargo-{stage0_info[2]}-x86_64-unknown-linux-gnu.tar.gz', + self.tempdir), + ]) + class RustUprevOtherStagesTests(unittest.TestCase): """Tests for other steps in rust_uprev""" -- cgit v1.2.3 From 7624e2dace1eddb857ba092d4db07ade86891165 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 11:18:36 -0700 Subject: llvm_tools: use gsutil.py instead of gsutil chrotomation.mtv has gsutil.py from depot_tools, and no pre-installed gsutil. seems easiest to just add another dependency on gsutil.py. BUG=None TEST=Ran on chrotomation Change-Id: I9833c0fb1e11d31b3a4c17375e0f296ff5a83a8e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462043 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/bisect_clang_crashes.py | 4 ++-- llvm_tools/bisect_clang_crashes_unittest.py | 2 +- llvm_tools/upload_lexan_crashes_to_forcey.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py index 4d47c4c3..e8ee2ab6 100755 --- a/llvm_tools/bisect_clang_crashes.py +++ b/llvm_tools/bisect_clang_crashes.py @@ -23,7 +23,7 @@ import chroot def get_artifacts(pattern): - results = subprocess.check_output(['gsutil', 'ls', pattern], + results = subprocess.check_output(['gsutil.py', 'ls', pattern], stderr=subprocess.STDOUT, encoding='utf-8') return sorted(l.strip() for l in results.splitlines()) @@ -48,7 +48,7 @@ def submit_crash_to_forcey(forcey: str, temporary_directory: str, dest_dir = os.path.join(temporary_directory, buildbucket_id) dest_file = os.path.join(dest_dir, os.path.basename(url)) logging.info('Downloading and submitting %r...', url) - subprocess.check_output(['gsutil', 'cp', url, dest_file], + subprocess.check_output(['gsutil.py', 'cp', url, dest_file], stderr=subprocess.STDOUT) subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) for src, script in get_crash_reproducers(dest_dir): diff --git a/llvm_tools/bisect_clang_crashes_unittest.py b/llvm_tools/bisect_clang_crashes_unittest.py index 66923ffc..c9143450 100755 --- a/llvm_tools/bisect_clang_crashes_unittest.py +++ b/llvm_tools/bisect_clang_crashes_unittest.py @@ -40,7 +40,7 @@ class Test(unittest.TestCase): mock_gsutil_ls.return_value = 'artifact1\nartifact2\nartifact3' results = bisect_clang_crashes.get_artifacts(pattern) self.assertEqual(results, ['artifact1', 'artifact2', 'artifact3']) - mock_gsutil_ls.assert_called_once_with(['gsutil', 'ls', pattern], + mock_gsutil_ls.assert_called_once_with(['gsutil.py', 'ls', pattern], stderr=subprocess.STDOUT, encoding='utf-8') diff --git a/llvm_tools/upload_lexan_crashes_to_forcey.py b/llvm_tools/upload_lexan_crashes_to_forcey.py index 9cf0c086..216511fc 100755 --- a/llvm_tools/upload_lexan_crashes_to_forcey.py +++ b/llvm_tools/upload_lexan_crashes_to_forcey.py @@ -24,7 +24,7 @@ gsurl_base = 'gs://chrome-clang-crash-reports/v1' def gsutil_ls(loc: str) -> List[str]: - results = subprocess.run(['gsutil', 'ls', loc], + results = subprocess.run(['gsutil.py', 'ls', loc], stdout=subprocess.PIPE, check=True, encoding='utf-8') @@ -107,7 +107,7 @@ def submit_test_case(gs_url: str, cr_tool: str) -> None: with temp_dir() as tempdir: target_name = 'test_case' + suffix target = os.path.join(tempdir, target_name) - subprocess.run(['gsutil', 'cp', gs_url, target], check=True) + subprocess.run(['gsutil.py', 'cp', gs_url, target], check=True) subprocess.run(['tar', 'xaf', target_name], check=True, cwd=tempdir) os.unlink(target) -- cgit v1.2.3 From a874714a7352b770993f451b2ecb4e5d0ab58ac8 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 12:34:34 -0700 Subject: rust_uprev: support -rN ebuilds rust_uprev currently doesn't fully support ebuilds with -r123 after Rust's version number. This CL aims to help us support those better. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I22a09ec3f5d074be547783e4cb9b702d4aad0bd2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462925 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 83 +++++++++++++++++++++++++++---------------- rust_tools/rust_uprev_test.py | 64 ++++++++++++++++----------------- 2 files changed, 85 insertions(+), 62 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index db907149..b4fcaf18 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -71,6 +71,7 @@ class RustVersion(NamedTuple): r'(?P\d+)\.' r'(?P\d+)\.' r'(?P\d+)' + r'(:?-r\d+)?' r'\.ebuild$') m = input_re.match(ebuild_name) assert m, f'failed to parse {ebuild_name!r}' @@ -226,28 +227,25 @@ def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: return stage0_date, stage0_rustc, stage0_cargo -def prepare_uprev_from_json(json_input: Any) -> RustVersion: - return RustVersion(*json_input) - - -def prepare_uprev(rust_version: RustVersion, - template: Optional[RustVersion]) -> RustVersion: +def prepare_uprev(rust_version: RustVersion, template: Optional[RustVersion] + ) -> Optional[Tuple[RustVersion, str]]: if template is None: ebuild_path = get_command_output(['equery', 'w', 'rust']) ebuild_name = os.path.basename(ebuild_path) - template_version = RustVersion.parse(ebuild_name) + template_version = RustVersion.parse_from_ebuild(ebuild_name) else: - if not os.path.exists(os.path.join(RUST_PATH, f'rust-{template}.ebuild')): - raise ValueError(f'Template ebuild file {template} does not exist') + ebuild_path = find_ebuild_for_rust_version(template) template_version = template + if rust_version <= template_version: logging.info( 'Requested version %s is not newer than the template version %s.', rust_version, template_version) return None - logging.info('Template Rust version is %s', template_version) - return template_version + logging.info('Template Rust version is %s (ebuild: %r)', template_version, + ebuild_path) + return template_version, ebuild_path def copy_patches(template_version: RustVersion, @@ -267,11 +265,9 @@ def copy_patches(template_version: RustVersion, cwd=RUST_PATH) -def create_ebuild(template_version: RustVersion, - new_version: RustVersion) -> str: - shutil.copyfile( - os.path.join(RUST_PATH, f'rust-{template_version}.ebuild'), - os.path.join(RUST_PATH, f'rust-{new_version}.ebuild')) +def create_ebuild(template_ebuild: str, new_version: RustVersion) -> str: + shutil.copyfile(template_ebuild, + os.path.join(RUST_PATH, f'rust-{new_version}.ebuild')) subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], cwd=RUST_PATH) return os.path.join(RUST_PATH, f'rust-{new_version}.ebuild') @@ -473,22 +469,29 @@ def perform_step(state_file: pathlib.Path, return val +def prepare_uprev_from_json(obj: Any) -> Optional[Tuple[RustVersion, str]]: + if not obj: + return None + version, ebuild_path = obj + return RustVersion(*version), ebuild_path + + def create_rust_uprev(rust_version: RustVersion, - template: Optional[RustVersion], skip_compile: bool, - run_step: Callable[[], T]) -> None: + maybe_template_version: Optional[RustVersion], + skip_compile: bool, run_step: Callable[[], T]) -> None: stage0_info = run_step( 'parse stage0 file', lambda: parse_stage0_file(rust_version)) - template_version = run_step( + template_version, template_ebuild = run_step( 'prepare uprev', - lambda: prepare_uprev(rust_version, template), + lambda: prepare_uprev(rust_version, maybe_template_version), result_from_json=prepare_uprev_from_json, ) - if template_version is None: + if template_ebuild is None: return run_step('copy patches', lambda: copy_patches(template_version, rust_version)) ebuild_file = run_step( - 'create ebuild', lambda: create_ebuild(template_version, rust_version)) + 'create ebuild', lambda: create_ebuild(template_ebuild, rust_version)) run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: run_step('upload_to_localmirror', lambda: upload_to_localmirror( @@ -504,32 +507,52 @@ def create_rust_uprev(rust_version: RustVersion, template_version, rust_version)) -def find_oldest_rust_version_inchroot() -> RustVersion: - rust_versions = [ - RustVersion.parse(x) for x in os.listdir(RUST_PATH) if '.ebuild' in x - ] +def find_rust_versions_in_chroot() -> List[Tuple[RustVersion, str]]: + return [(RustVersion.parse_from_ebuild(x), os.path.join(RUST_PATH, x)) + for x in os.listdir(RUST_PATH) + if x.endswith('.ebuild')] + +def find_oldest_rust_version_in_chroot() -> Tuple[RustVersion, str]: + rust_versions = find_rust_versions_in_chroot() if len(rust_versions) <= 1: raise RuntimeError('Expect to find more than one Rust versions') return min(rust_versions) +def find_ebuild_for_rust_version(version: RustVersion) -> str: + rust_ebuilds = [ + ebuild for x, ebuild in find_rust_versions_in_chroot() if x == version + ] + if not rust_ebuilds: + raise ValueError(f'No Rust ebuilds found matching {version}') + if len(rust_ebuilds) > 1: + raise ValueError(f'Multiple Rust ebuilds found matching {version}: ' + f'{rust_ebuilds}') + return rust_ebuilds[0] + + def remove_files(filename: str, path: str) -> None: subprocess.check_call(['git', 'rm', filename], cwd=path) def remove_rust_uprev(rust_version: Optional[RustVersion], run_step: Callable[[], T]) -> None: - delete_version = run_step( + + def find_desired_rust_version(): + if rust_version: + return rust_version, find_ebuild_for_rust_version(rust_version) + return find_oldest_rust_version_in_chroot() + + delete_version, delete_ebuild = run_step( 'find rust version to delete', - lambda: rust_version or find_oldest_rust_version_inchroot(), + find_desired_rust_version, result_from_json=prepare_uprev_from_json, ) run_step( 'remove patches', lambda: remove_files( f'files/rust-{delete_version}-*.patch', RUST_PATH)) - run_step('remove ebuild', lambda: remove_files( - f'rust-{delete_version}.ebuild', RUST_PATH)) + run_step('remove ebuild', lambda: remove_files(delete_ebuild, RUST_PATH)) ebuild_file = get_command_output(['equery', 'w', 'rust']) run_step('update manifest to delete old version', lambda: update_manifest( ebuild_file)) diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index c2f071f2..d7efdce2 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -35,6 +35,9 @@ class RustVersionTest(unittest.TestCase): actual = rust_uprev.RustVersion.parse_from_ebuild('rust-1.2.3.ebuild') self.assertEqual(expected, actual) + actual = rust_uprev.RustVersion.parse_from_ebuild('rust-1.2.3-r1.ebuild') + self.assertEqual(expected, actual) + def test_parse_fail(self): with self.assertRaises(AssertionError) as context: rust_uprev.RustVersion.parse('invalid-rust-1.2.3') @@ -49,32 +52,25 @@ class PrepareUprevTest(unittest.TestCase): self.version_old = rust_uprev.RustVersion(1, 2, 3) self.version_new = rust_uprev.RustVersion(1, 3, 5) - @mock.patch.object(os.path, 'exists') + @mock.patch.object( + rust_uprev, + 'find_ebuild_for_rust_version', + return_value='/path/to/ebuild') @mock.patch.object(rust_uprev, 'get_command_output') - def test_success_with_template(self, mock_command, mock_exists): - mock_exists.return_value = True - expected = self.version_old + def test_success_with_template(self, mock_command, mock_find_ebuild): + expected = (self.version_old, '/path/to/ebuild') actual = rust_uprev.prepare_uprev( rust_version=self.version_new, template=self.version_old) self.assertEqual(expected, actual) mock_command.assert_not_called() - @mock.patch.object(os.path, 'exists') - @mock.patch.object(rust_uprev, 'get_command_output') - def test_fail_with_template_not_exist(self, mock_command, mock_exists): - mock_exists.return_value = False - with self.assertRaises(ValueError) as context: - rust_uprev.prepare_uprev( - rust_version=self.version_new, template=self.version_old) - self.assertEqual(f'Template ebuild file {self.version_old} does not exist', - str(context.exception)) - mock_command.assert_not_called() - - @mock.patch.object(os.path, 'exists') + @mock.patch.object( + rust_uprev, + 'find_ebuild_for_rust_version', + return_value='/path/to/ebuild') @mock.patch.object(rust_uprev, 'get_command_output') def test_return_none_with_template_larger_than_input(self, mock_command, - mock_exists): - mock_exists.return_value = True + _mock_find_ebuild): ret = rust_uprev.prepare_uprev( rust_version=self.version_old, template=self.version_new) self.assertIsNone(ret) @@ -83,8 +79,9 @@ class PrepareUprevTest(unittest.TestCase): @mock.patch.object(os.path, 'exists') @mock.patch.object(rust_uprev, 'get_command_output') def test_success_without_template(self, mock_command, mock_exists): - mock_command.return_value = f'/path/to/rust/rust-{self.version_old}.ebuild' - expected = self.version_old + rust_ebuild_path = f'/path/to/rust/rust-{self.version_old}-r3.ebuild' + mock_command.return_value = rust_ebuild_path + expected = (self.version_old, rust_ebuild_path) actual = rust_uprev.prepare_uprev( rust_version=self.version_new, template=None) self.assertEqual(expected, actual) @@ -101,8 +98,9 @@ class PrepareUprevTest(unittest.TestCase): mock_exists.assert_not_called() def test_prepare_uprev_from_json(self): - json_result = list(self.version_new) - expected = self.version_new + ebuild_path = '/path/to/the/ebuild' + json_result = (list(self.version_new), ebuild_path) + expected = (self.version_new, ebuild_path) actual = rust_uprev.prepare_uprev_from_json(json_result) self.assertEqual(expected, actual) @@ -368,10 +366,10 @@ class RustUprevOtherStagesTests(unittest.TestCase): @mock.patch.object(shutil, 'copyfile') @mock.patch.object(subprocess, 'check_call') def test_create_ebuild(self, mock_call, mock_copy): - rust_uprev.create_ebuild(self.current_version, self.new_version) + template_ebuild = f'/path/to/rust-{self.current_version}-r2.ebuild' + rust_uprev.create_ebuild(template_ebuild, self.new_version) mock_copy.assert_called_once_with( - os.path.join(rust_uprev.RUST_PATH, - f'rust-{self.current_version}.ebuild'), + template_ebuild, os.path.join(rust_uprev.RUST_PATH, f'rust-{self.new_version}.ebuild')) mock_call.assert_called_once_with( ['git', 'add', f'rust-{self.new_version}.ebuild'], @@ -391,21 +389,23 @@ class RustUprevOtherStagesTests(unittest.TestCase): mock_exists.assert_called_once_with(virtual_rust_dir) @mock.patch.object(os, 'listdir') - def test_find_oldest_rust_version_inchroot_pass(self, mock_ls): + def test_find_oldest_rust_version_in_chroot_pass(self, mock_ls): + oldest_version_name = f'rust-{self.old_version}.ebuild' mock_ls.return_value = [ - f'rust-{self.old_version}.ebuild', - f'rust-{self.current_version}.ebuild', f'rust-{self.new_version}.ebuild' + oldest_version_name, f'rust-{self.current_version}.ebuild', + f'rust-{self.new_version}.ebuild' ] - actual = rust_uprev.find_oldest_rust_version_inchroot() - expected = self.old_version + actual = rust_uprev.find_oldest_rust_version_in_chroot() + expected = (self.old_version, + os.path.join(rust_uprev.RUST_PATH, oldest_version_name)) self.assertEqual(expected, actual) @mock.patch.object(os, 'listdir') - def test_find_oldest_rust_version_inchroot_fail_with_only_one_ebuild( + def test_find_oldest_rust_version_in_chroot_fail_with_only_one_ebuild( self, mock_ls): mock_ls.return_value = [f'rust-{self.new_version}.ebuild'] with self.assertRaises(RuntimeError) as context: - rust_uprev.find_oldest_rust_version_inchroot() + rust_uprev.find_oldest_rust_version_in_chroot() self.assertEqual('Expect to find more than one Rust versions', str(context.exception)) -- cgit v1.2.3 From 6868239551ebbefe0a87f0ff8565917c4f2859f5 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 12:44:45 -0700 Subject: rust_uprev: check for files in gs:// before downloading them I had to `--reset` a few times; downloading these files just to not upload them took a bit, and wasn't useful. This CL adds a check so we don't do that in the future. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I03f9f21cc07a7b16b540a5be5b4b08e105fc81a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462926 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 13 ++++++++++++- rust_tools/rust_uprev_test.py | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index b4fcaf18..1d29556d 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -379,9 +379,20 @@ def update_virtual_rust(template_version: RustVersion, def upload_single_tarball(rust_url: str, tarfile_name: str, tempdir: str) -> None: rust_src = f'{rust_url}/{tarfile_name}' - logging.info('Downloading Rust artifact from %s', rust_src) gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' + missing_file = subprocess.call( + ['gsutil', 'ls', gsutil_location], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + if not missing_file: + logging.info('Rust artifact at %s already exists; skipping download', + gsutil_location) + return + + logging.info('Downloading Rust artifact from %s', rust_src) + # Download Rust's source rust_file = os.path.join(tempdir, tarfile_name) subprocess.check_call(['curl', '-f', '-o', rust_file, rust_src]) diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index d7efdce2..d13ce912 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -236,16 +236,23 @@ class UploadToLocalmirrorTests(unittest.TestCase): self.rust_file = os.path.join(self.tempdir, self.tarfile_name) self.sig_file = os.path.join(self.tempdir, 'rustc_sig.asc') + @mock.patch.object(subprocess, 'call', return_value=1) @mock.patch.object(subprocess, 'check_call') @mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'run') - def test_pass_without_retry(self, mock_run, mock_output, mock_call): + def test_pass_without_retry(self, mock_run, mock_output, mock_call, + mock_raw_call): rust_uprev.upload_single_tarball(self.rust_url, self.tarfile_name, self.tempdir) mock_output.assert_called_once_with( ['gpg', '--verify', self.sig_file, self.rust_file], encoding='utf-8', stderr=subprocess.STDOUT) + mock_raw_call.assert_has_calls([ + mock.call(['gsutil', 'ls', self.gsurl], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL) + ]) mock_call.assert_has_calls([ mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), @@ -256,11 +263,13 @@ class UploadToLocalmirrorTests(unittest.TestCase): ]) mock_run.assert_not_called() + @mock.patch.object(subprocess, 'call') @mock.patch.object(subprocess, 'check_call') @mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'run') @mock.patch.object(rust_uprev, 'get_command_output') - def test_pass_with_retry(self, mock_output, mock_run, mock_check, mock_call): + def test_pass_with_retry(self, mock_output, mock_run, mock_check, mock_call, + mock_raw_call): mock_check.side_effect = subprocess.CalledProcessError( returncode=2, cmd=None, output="gpg: Can't check signature") mock_output.return_value = 'some_gpg_keys' @@ -276,6 +285,11 @@ class UploadToLocalmirrorTests(unittest.TestCase): input='some_gpg_keys', encoding='utf-8', check=True) + mock_raw_call.assert_has_calls([ + mock.call(['gsutil', 'ls', self.gsurl], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL) + ]) mock_call.assert_has_calls([ mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), -- cgit v1.2.3 From 8ecb53f8c692c56f1f824c377fe51a5789616713 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 12:50:27 -0700 Subject: rust_uprev: emerge arm-none-eabi-gcc & do it in parallel arm-none-eabi-gcc isn't mentioned in the list of RUSTC_TARGET_TRIPLES, though it's necessary (we check for it in the ebuild) While I'm in the area, if we're unconditionally emerge'ing all of these anyway, do it in parallel. Doing so makes installation take 1/4 as long. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I49063487b2e2b2c83e2ef30dd8f8904b13c59f38 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462927 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 15 +++++++++++++-- rust_tools/rust_uprev_test.py | 13 ++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 1d29556d..4fdae60f 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -594,12 +594,23 @@ def build_cross_compiler() -> None: m = target_triples_re.search(contents) assert m, 'RUST_TARGET_TRIPLES not found in rust ebuild' target_triples = m.group(1).strip().split('\n') + + compiler_targets_to_install = [ + target.strip() for target in target_triples if 'cros-' in target + ] for target in target_triples: if 'cros-' not in target: continue target = target.strip() - logging.info('Emerging cross compiler %s', target) - subprocess.check_call(['sudo', 'emerge', '-G', f'cross-{target}/gcc']) + + # We also always need arm-none-eabi, though it's not mentioned in + # RUSTC_TARGET_TRIPLES. + compiler_targets_to_install.append('arm-none-eabi') + + logging.info('Emerging cross compilers %s', compiler_targets_to_install) + subprocess.check_call( + ['sudo', 'emerge', '-j', '-G'] + + [f'cross-{target}/gcc' for target in compiler_targets_to_install]) def create_new_commit(rust_version: RustVersion) -> None: diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index d13ce912..fc506004 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -436,8 +436,9 @@ class RustUprevOtherStagesTests(unittest.TestCase): def test_build_cross_compiler(self, mock_call, mock_output): mock_output.return_value = f'rust-{self.new_version}.ebuild' cros_targets = [ - 'x86_64-cros-linux-gnu', 'armv7a-cros-linux-gnueabihf', - 'aarch64-cros-linux-gnu' + 'x86_64-cros-linux-gnu', + 'armv7a-cros-linux-gnueabihf', + 'aarch64-cros-linux-gnu', ] all_triples = ['x86_64-pc-linux-gnu'] + cros_targets rust_ebuild = 'RUSTC_TARGET_TRIPLES=(' + '\n\t'.join(all_triples) + ')' @@ -445,11 +446,9 @@ class RustUprevOtherStagesTests(unittest.TestCase): with mock.patch('builtins.open', mock_open): rust_uprev.build_cross_compiler() - emerge_calls = [ - mock.call(['sudo', 'emerge', '-G', f'cross-{x}/gcc']) - for x in cros_targets - ] - mock_call.assert_has_calls(emerge_calls) + mock_call.assert_called_once_with( + ['sudo', 'emerge', '-j', '-G'] + + [f'cross-{x}/gcc' for x in cros_targets + ['arm-none-eabi']]) if __name__ == '__main__': -- cgit v1.2.3 From fd598ff8539e2d99755c52d15159864686092976 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 19:23:15 -0700 Subject: rust_uprev: emerge rust instead of ebuilding it if `ebuild merge` fails, the build directory might not be in a great state where we can skip recompilation when we try again. emerge'ing is probably what we actually want to do here, since that's representative of what builders and users are going to do when they get the new rust uprev. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I84f12769e32fada3f858a2889f0ead7555b58256 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462928 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 4fdae60f..3c0ad012 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -510,8 +510,8 @@ def create_rust_uprev(rust_version: RustVersion, run_step('update manifest to add new version', lambda: update_manifest( ebuild_file)) if not skip_compile: - run_step('compile rust', lambda: rust_ebuild_actions(['clean', 'compile'])) - run_step('merge rust', lambda: rust_ebuild_actions(['merge'], sudo=True)) + run_step('emerge rust', lambda: subprocess.check_call( + ['sudo', 'emerge', 'dev-lang/rust'])) run_step('insert version into rust packages', lambda: update_rust_packages( rust_version, add=True)) run_step('upgrade virtual/rust', lambda: update_virtual_rust( -- cgit v1.2.3 From 2159420ccfca45fe94e5a87483d2889fe323029d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 9 Oct 2020 12:32:18 -0700 Subject: llvm_tools: add exist_ok=True to state dir creation we just want to make sure that the state file directory exists here. BUG=None TEST=Ran Change-Id: I563821a357e2863c0a71570cfcb7319401a03778 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2460837 Tested-by: George Burgess Reviewed-by: Manoj Gupta --- llvm_tools/upload_lexan_crashes_to_forcey.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm_tools/upload_lexan_crashes_to_forcey.py b/llvm_tools/upload_lexan_crashes_to_forcey.py index 216511fc..b93f51a7 100755 --- a/llvm_tools/upload_lexan_crashes_to_forcey.py +++ b/llvm_tools/upload_lexan_crashes_to_forcey.py @@ -227,7 +227,7 @@ def main(argv: List[str]): state_file = opts.state_file last_date_str = opts.last_date - os.makedirs(os.path.dirname(state_file), 0o755) + os.makedirs(os.path.dirname(state_file), 0o755, exist_ok=True) if last_date_str is None: with open(state_file, encoding='utf-8') as f: -- cgit v1.2.3 From aac9c23c9414831617739e1271aa9491b04b7e4f Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Fri, 9 Oct 2020 12:02:09 -0700 Subject: toolchain_utils: replace gsutil with gsutil.py Remove dependency on pre-installed gLinux software. gsutil.py comes from depot_tools which is part of chrotomation setup. BUG=None TEST=tested locally on chrotomation.mtv Change-Id: I8fcef35a3c229ec06639a56b02c5751b4cedfc95 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2460835 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Tested-by: George Burgess --- pgo_tools/monitor_pgo_profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pgo_tools/monitor_pgo_profiles.py b/pgo_tools/monitor_pgo_profiles.py index 86701675..cb41eb88 100755 --- a/pgo_tools/monitor_pgo_profiles.py +++ b/pgo_tools/monitor_pgo_profiles.py @@ -37,7 +37,7 @@ def parse_date(date: str) -> datetime.datetime: def fetch_most_recent_profdata(arch: str) -> ProfdataInfo: result = subprocess.run( [ - 'gsutil', + 'gsutil.py', 'ls', '-l', f'gs://chromeos-toolchain-artifacts/llvm-pgo/{arch}/' -- cgit v1.2.3 From 5672f28e2acdf00721356e67a4de7d03f4d18960 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 6 Oct 2020 12:07:42 -0700 Subject: crosperf: refactor chrome src search Replace multiple levels of if/else of the chrome src search with a loop. Add a missing search path .cache/distfiles/chrome-src. Add checks for the Chrome source location and raise RuntimeError if it does not exist. BUG=None TEST=Tested with crosperf and distfiles/target/chrome-src-internal. Change-Id: I66dd7c802a4e80238e4d625586198bdf573621dc Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2453595 Reviewed-by: Manoj Gupta Reviewed-by: Caroline Tice Tested-by: Denis Nikitin Commit-Queue: George Burgess --- crosperf/label.py | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/crosperf/label.py b/crosperf/label.py index b14c4a73..a55d663c 100644 --- a/crosperf/label.py +++ b/crosperf/label.py @@ -72,22 +72,31 @@ class Label(object): self.chromeos_root = chromeos_root if not chrome_src: - self.chrome_src = os.path.join( - self.chromeos_root, '.cache/distfiles/target/chrome-src-internal') - if not os.path.exists(self.chrome_src): - self.chrome_src = os.path.join(self.chromeos_root, - '.cache/distfiles/target/chrome-src') - # Chrome source location has changed and we have to support - # old and new path. - if not os.path.exists(self.chrome_src): - self.chrome_src = os.path.join(self.chromeos_root, - '.cache/distfiles/chrome-src-internal') + # Old and new chroots may have different chrome src locations. + # The path also depends on the chrome build flags. + # Give priority to chrome-src-internal. + chrome_src_rel_paths = [ + '.cache/distfiles/target/chrome-src-internal', + '.cache/distfiles/chrome-src-internal', + '.cache/distfiles/target/chrome-src', + '.cache/distfiles/chrome-src', + ] + for chrome_src_rel_path in chrome_src_rel_paths: + chrome_src_abs_path = os.path.join(self.chromeos_root, + chrome_src_rel_path) + if os.path.exists(chrome_src_abs_path): + chrome_src = chrome_src_abs_path + break + if not chrome_src: + raise RuntimeError('Can not find location of Chrome sources.\n' + f'Checked paths: {chrome_src_rel_paths}') else: - chromeos_src = misc.CanonicalizePath(chrome_src) - if not chromeos_src: + chrome_src = misc.CanonicalizePath(chrome_src) + # Make sure the path exists. + if not os.path.exists(chrome_src): raise RuntimeError("Invalid Chrome src given for label '%s': '%s'." % (name, chrome_src)) - self.chrome_src = chromeos_src + self.chrome_src = chrome_src self._SetupChecksum() -- cgit v1.2.3 From 8373fd4139494c6df36f77bc1547c0eeb805b9cd Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Tue, 13 Oct 2020 15:34:15 -0700 Subject: Revert "compiler_wrapper: enable -mharden-sls=all on aarch64" This reverts commit fb8fd5be362ec7a52dc3be33859d31b0553c1038. Enabling the option caused 4.4 based arm64 devices failed to boot. Disable this option until the issue is fixed. BUG=chromium:1096302 TEST=Verified locally. Change-Id: I02d5a72423f3cf0097edff7ace85b23caf3ff554 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2469305 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/aarch64_flags.go | 11 ----------- compiler_wrapper/aarch64_flags_test.go | 19 ------------------- compiler_wrapper/compiler_wrapper.go | 1 - compiler_wrapper/testutil_test.go | 1 - 4 files changed, 32 deletions(-) delete mode 100644 compiler_wrapper/aarch64_flags.go delete mode 100644 compiler_wrapper/aarch64_flags_test.go diff --git a/compiler_wrapper/aarch64_flags.go b/compiler_wrapper/aarch64_flags.go deleted file mode 100644 index a0d05523..00000000 --- a/compiler_wrapper/aarch64_flags.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2020 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. - -package main - -func processAarch64Flags(builder *commandBuilder) { - if builder.target.arch == "aarch64" { - builder.addPreUserArgs("-mharden-sls=all") - } -} diff --git a/compiler_wrapper/aarch64_flags_test.go b/compiler_wrapper/aarch64_flags_test.go deleted file mode 100644 index 0cb692e2..00000000 --- a/compiler_wrapper/aarch64_flags_test.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2020 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. - -package main - -import ( - "testing" -) - -func TestAddSlsFlagOnAarch64(t *testing.T) { - withTestContext(t, func(ctx *testContext) { - cmd := ctx.must(callCompiler(ctx, ctx.cfg, - ctx.newCommand(clangAarch64, mainCc))) - if err := verifyArgOrder(cmd, "-mharden-sls=all", mainCc); err != nil { - t.Error(err) - } - }) -} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 49ee0eb0..aa52dfdc 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -187,7 +187,6 @@ func prepareClangCommand(builder *commandBuilder) (err error) { } builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) - processAarch64Flags(builder) return processClangFlags(builder) } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 8e2377e7..21b7169d 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -22,7 +22,6 @@ const ( clangAndroid = "./clang" clangTidyAndroid = "./clang-tidy" clangX86_64 = "./x86_64-cros-linux-gnu-clang" - clangAarch64 = "./aarch64-cros-linux-gnu-clang" gccX86_64 = "./x86_64-cros-linux-gnu-gcc" gccX86_64Eabi = "./x86_64-cros-eabi-gcc" gccArmV7 = "./armv7m-cros-linux-gnu-gcc" -- cgit v1.2.3 From 356e7cf8f3d2c61a630a97e335efa3d892a7c89c Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Thu, 15 Oct 2020 11:14:37 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R88-13502.0-1602497202 Update chromeos-kernel-4_4 to R88-13505.4-1602496005 Update chromeos-kernel-4_14 to R88-13505.4-1602496823 Update chromeos-kernel-4_19 to R88-13502.0-1602496205 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I7f27f99e846e97e4ce04578a3ab15563ab6ebe7f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2476656 Reviewed-by: Tiancong Wang Tested-by: Denis Nikitin --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index e6db7d82..2f4ead4a 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R87-13502.0-1601891298" + "name": "R88-13502.0-1602497202" }, "chromeos-kernel-4_4": { - "name": "R87-13502.0-1601890528" + "name": "R88-13505.4-1602496005" }, "chromeos-kernel-4_14": { - "name": "R87-13502.0-1601890521" + "name": "R88-13505.4-1602496823" }, "chromeos-kernel-4_19": { - "name": "R87-13502.0-1601890982" + "name": "R88-13502.0-1602496205" } } -- cgit v1.2.3 From efb75cffd4a6bf629a4a374f2c1039dc37750dca Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Wed, 21 Oct 2020 13:57:01 -0700 Subject: Handle clangPostFlags for Android BUG=None TEST=None Change-Id: I55bf76106eb1635c0bb4b936eaf3b96eef1dbb44 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2490653 Reviewed-by: George Burgess Tested-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index aa52dfdc..2b9459e4 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -80,6 +80,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int case clangType: mainBuilder.addPreUserArgs(mainBuilder.cfg.clangFlags...) mainBuilder.addPreUserArgs(mainBuilder.cfg.commonFlags...) + mainBuilder.addPostUserArgs(mainBuilder.cfg.clangPostFlags...) if _, err := processGomaCccFlags(mainBuilder); err != nil { return 0, err } -- cgit v1.2.3 From 602351c3b1f671f60048d511cea85b62763b9821 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Wed, 21 Oct 2020 20:29:31 +0000 Subject: update_kernel_afdo: use gsutil.py instead of gsutil This changes update_kernel_afdo to call gsutil.py instead of gsutil (without the ".py"). Reason: the non-.py does not exist everywhere, whereas gsutil.py is part of depot_tools. BUG=None TEST=./afdo_tools/update_kernel_afdo Change-Id: I7c2192f5d4ef85852a4c5023edb29e9a092bbb8d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2490652 Tested-by: Bob Haarman Reviewed-by: George Burgess Reviewed-by: Manoj Gupta --- afdo_tools/update_kernel_afdo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index 8eb1306c..a677bf1b 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -60,12 +60,12 @@ for kver in $KVERS do # Sort the gs output by timestamp (default ordering is by name, so # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) - latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ + latest=$(gsutil.py ls -l "$GS_BASE/$kver/" | sort -k2 | \ grep "R${canary}" | tail -1 || true) if [ -z "$latest" ] then # if no profiles exist for R${canary}, try the previous branch - latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ + latest=$(gsutil.py ls -l "$GS_BASE/$kver/" | sort -k2 | \ grep "R${beta}" | tail -1) fi -- cgit v1.2.3 From 49187a5efe3ee2e23d99484a1d25500f116dd4f7 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Wed, 21 Oct 2020 20:39:48 +0000 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R88-13531.0-1603099914 Update chromeos-kernel-4_4 to R88-13531.0-1603100212 Update chromeos-kernel-4_14 to R88-13505.11-1603100505 Update chromeos-kernel-4_19 to R88-13531.0-1603100310 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: Ife0010abb801c80f1de503a88c36f342891ad0cf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2489892 Reviewed-by: Manoj Gupta Commit-Queue: Bob Haarman Tested-by: Bob Haarman --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 2f4ead4a..f1de57f0 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R88-13502.0-1602497202" + "name": "R88-13531.0-1603099914" }, "chromeos-kernel-4_4": { - "name": "R88-13505.4-1602496005" + "name": "R88-13531.0-1603100212" }, "chromeos-kernel-4_14": { - "name": "R88-13505.4-1602496823" + "name": "R88-13505.11-1603100505" }, "chromeos-kernel-4_19": { - "name": "R88-13502.0-1602496205" + "name": "R88-13531.0-1603100310" } } -- cgit v1.2.3 From 84b5c8fad9e67e74fd14d26fc45a03329f3d1b56 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 16 Oct 2020 15:54:21 -0700 Subject: compiler_wrapper: report parent processes' info in warnings tarballs The bug I'm chasing down right now depends on environment variables, and could be due to a `make` invocation in one of N places. Having this context available to me is useful. It seriously pollutes the JSON we dump, but use of `jq` that I've put in the doc about this makes that a non-issue. BUG=None TEST=Ran on stress-ng. parent process info was dumped. Change-Id: Ib4d3b6c9887b4cf2a38472ef299c81af27e9a617 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2481829 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/disable_werror_flag.go | 100 ++++++++++++++++++++++++--- compiler_wrapper/disable_werror_flag_test.go | 65 +++++++++++++++++ 2 files changed, 157 insertions(+), 8 deletions(-) diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go index 1180127c..8f20b6f3 100644 --- a/compiler_wrapper/disable_werror_flag.go +++ b/compiler_wrapper/disable_werror_flag.go @@ -7,9 +7,12 @@ package main import ( "bytes" "encoding/json" + "fmt" "io" "io/ioutil" "os" + "path" + "strconv" "strings" "syscall" ) @@ -119,10 +122,14 @@ func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command) (exitCo } outputToLog := strings.Join(lines, "\n") + // Ignore the error here; we can't do anything about it. The result is always valid (though + // perhaps incomplete) even if this returns an error. + parentProcesses, _ := collectAllParentProcesses() jsonData := warningsJSONData{ - Cwd: env.getwd(), - Command: append([]string{originalCmd.Path}, originalCmd.Args...), - Stdout: outputToLog, + Cwd: env.getwd(), + Command: append([]string{originalCmd.Path}, originalCmd.Args...), + Stdout: outputToLog, + ParentProcesses: parentProcesses, } // Write warning report to stdout for Android. On Android, @@ -186,10 +193,87 @@ func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command) (exitCo return retryExitCode, nil } -// Struct used to write JSON. Fileds have to be uppercase for the json -// encoder to read them. +func parseParentPidFromPidStat(pidStatContents string) (parentPid int, ok bool) { + // The parent's pid is the fourth field of /proc/[pid]/stat. Sadly, the second field can + // have spaces in it. It ends at the last ')' in the contents of /proc/[pid]/stat. + lastParen := strings.LastIndex(pidStatContents, ")") + if lastParen == -1 { + return 0, false + } + + thirdFieldAndBeyond := strings.TrimSpace(pidStatContents[lastParen+1:]) + fields := strings.Fields(thirdFieldAndBeyond) + if len(fields) < 2 { + return 0, false + } + + fourthField := fields[1] + parentPid, err := strconv.Atoi(fourthField) + if err != nil { + return 0, false + } + return parentPid, true +} + +func collectProcessData(pid int) (args, env []string, parentPid int, err error) { + procDir := fmt.Sprintf("/proc/%d", pid) + + readFile := func(fileName string) (string, error) { + s, err := ioutil.ReadFile(path.Join(procDir, fileName)) + if err != nil { + return "", fmt.Errorf("reading %s: %v", fileName, err) + } + return string(s), nil + } + + statStr, err := readFile("stat") + if err != nil { + return nil, nil, 0, err + } + + parentPid, ok := parseParentPidFromPidStat(statStr) + if !ok { + return nil, nil, 0, fmt.Errorf("no parseable parent PID found in %q", statStr) + } + + argsStr, err := readFile("cmdline") + if err != nil { + return nil, nil, 0, err + } + args = strings.Split(argsStr, "\x00") + + envStr, err := readFile("environ") + if err != nil { + return nil, nil, 0, err + } + env = strings.Split(envStr, "\x00") + return args, env, parentPid, nil +} + +// The returned []processData is valid even if this returns an error. The error is just the first we +// encountered when trying to collect parent process data. +func collectAllParentProcesses() ([]processData, error) { + results := []processData{} + for parent := os.Getppid(); parent != 1; { + args, env, p, err := collectProcessData(parent) + if err != nil { + return results, fmt.Errorf("inspecting parent %d: %v", parent, err) + } + results = append(results, processData{Args: args, Env: env}) + parent = p + } + return results, nil +} + +type processData struct { + Args []string `json:"invocation"` + Env []string `json:"env"` +} + +// Struct used to write JSON. Fields have to be uppercase for the json encoder to read them. type warningsJSONData struct { - Cwd string `json:"cwd"` - Command []string `json:"command"` - Stdout string `json:"stdout"` + Cwd string `json:"cwd"` + Command []string `json:"command"` + Stdout string `json:"stdout"` + ParentProcesses []processData `json:"parent_process_data"` } diff --git a/compiler_wrapper/disable_werror_flag_test.go b/compiler_wrapper/disable_werror_flag_test.go index ecc1090b..0c43dbe0 100644 --- a/compiler_wrapper/disable_werror_flag_test.go +++ b/compiler_wrapper/disable_werror_flag_test.go @@ -500,3 +500,68 @@ func TestClangTidyDoubleBuildClangError(t *testing.T) { } }) } + +func TestProcPidStatParsingWorksAsIntended(t *testing.T) { + t.Parallel() + + type expected struct { + parent int + ok bool + } + + testCases := []struct { + input string + expected expected + }{ + { + input: "2556041 (cat) R 2519408 2556041 2519408 34818 2556041 4194304", + expected: expected{ + parent: 2519408, + ok: true, + }, + }, + { + input: "2556041 (c a t) R 2519408 2556041 2519408 34818 2556041 4194304", + expected: expected{ + parent: 2519408, + ok: true, + }, + }, + { + input: "", + expected: expected{ + ok: false, + }, + }, + { + input: "foo (bar)", + expected: expected{ + ok: false, + }, + }, + { + input: "foo (bar) baz", + expected: expected{ + ok: false, + }, + }, + { + input: "foo (bar) baz 1qux2", + expected: expected{ + ok: false, + }, + }, + } + + for _, tc := range testCases { + parent, ok := parseParentPidFromPidStat(tc.input) + if tc.expected.ok != ok { + t.Errorf("Got ok=%v when parsing %q; expected %v", ok, tc.input, tc.expected.ok) + continue + } + + if tc.expected.parent != parent { + t.Errorf("Got parent=%v when parsing %q; expected %v", parent, tc.input, tc.expected.parent) + } + } +} -- cgit v1.2.3 From 6da42e5adaca8dbe139ddfb7b37aa10251214308 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 6 Nov 2020 09:34:34 -0800 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R88-13560.0-1604313218 Update chromeos-kernel-4_4 to R88-13560.0-1604313145 Update chromeos-kernel-4_14 to R88-13560.0-1604313396 Update chromeos-kernel-4_19 to R88-13560.0-1604313185 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I43d2604122c5af90ed7bdb47663bcf4c1b6a59aa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2523230 Tested-by: Tiancong Wang Reviewed-by: Tiancong Wang Commit-Queue: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index f1de57f0..7358a07e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R88-13531.0-1603099914" + "name": "R88-13560.0-1604313218" }, "chromeos-kernel-4_4": { - "name": "R88-13531.0-1603100212" + "name": "R88-13560.0-1604313145" }, "chromeos-kernel-4_14": { - "name": "R88-13505.11-1603100505" + "name": "R88-13560.0-1604313396" }, "chromeos-kernel-4_19": { - "name": "R88-13531.0-1603100310" + "name": "R88-13560.0-1604313185" } } -- cgit v1.2.3 From 8c34e96ac5b608a1f92c6a23124274010ced28be Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Fri, 6 Nov 2020 11:37:38 -0800 Subject: crosperf: Fix BadChecksum failure on coral Ignore "core id", "apicid", "initial apicid" fields from cpuinfo in machine checksum calculation. The values may differ on the same type of machines. Add more descriptive output for the BadChecksum error. Unittest is updated accordingly. BUG=chromium:1145386 TEST=./run_tests.sh in crosperf. Change-Id: Ifcc91fb70f02c41d77787fbb665741bc130152c0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2523398 Tested-by: Denis Nikitin Reviewed-by: Bob Haarman Commit-Queue: Denis Nikitin --- crosperf/machine_manager.py | 58 +++++++++++++++++++++++------------- crosperf/machine_manager_unittest.py | 24 +++++++-------- 2 files changed, 50 insertions(+), 32 deletions(-) diff --git a/crosperf/machine_manager.py b/crosperf/machine_manager.py index 0b38eef2..aaf09bf5 100644 --- a/crosperf/machine_manager.py +++ b/crosperf/machine_manager.py @@ -141,7 +141,12 @@ class CrosMachine(object): def _ComputeMachineChecksumString(self): self.checksum_string = '' - exclude_lines_list = ['MHz', 'BogoMIPS', 'bogomips'] + # Some lines from cpuinfo have to be excluded because they are not + # persistent across DUTs. + # MHz, BogoMIPS are dynamically changing values. + # core id, apicid are identifiers assigned on startup + # and may differ on the same type of machine. + exclude_lines_list = ['MHz', 'BogoMIPS', 'bogomips', 'core id', 'apicid'] for line in self.cpuinfo.splitlines(): if not any(e in line for e in exclude_lines_list): self.checksum_string += line @@ -220,8 +225,8 @@ class MachineManager(object): self.logger = lgr or logger.GetLogger() if self.locks_dir and not os.path.isdir(self.locks_dir): - raise MissingLocksDirectory( - 'Cannot access locks directory: %s' % self.locks_dir) + raise MissingLocksDirectory('Cannot access locks directory: %s' % + self.locks_dir) self._initialized_machines = [] self.chromeos_root = chromeos_root @@ -242,8 +247,8 @@ class MachineManager(object): ret, version, _ = self.ce.CrosRunCommandWOutput( cmd, machine=machine.name, chromeos_root=self.chromeos_root) if ret != 0: - raise CrosCommandError( - "Couldn't get Chrome version from %s." % machine.name) + raise CrosCommandError("Couldn't get Chrome version from %s." % + machine.name) if ret != 0: version = '' @@ -312,20 +317,33 @@ class MachineManager(object): # Since this is used for cache lookups before the machines have been # compared/verified, check here to make sure they all have the same # checksum (otherwise the cache lookup may not be valid). - common_checksum = None + base = None for machine in self.GetMachines(label): # Make sure the machine's checksums are calculated. if not machine.machine_checksum: machine.SetUpChecksumInfo() - cs = machine.machine_checksum - # If this is the first machine we've examined, initialize - # common_checksum. - if not common_checksum: - common_checksum = cs + # Use the first machine as the basis for comparison. + if not base: + base = machine # Make sure this machine's checksum matches our 'common' checksum. - if cs != common_checksum: - raise BadChecksum('Machine checksums do not match!') - self.machine_checksum[label.name] = common_checksum + if base.machine_checksum != machine.machine_checksum: + # Found a difference. Fatal error. + # Extract non-matching part and report it. + for mismatch_index in range(len(base.checksum_string)): + if (mismatch_index >= len(machine.checksum_string) or + base.checksum_string[mismatch_index] != + machine.checksum_string[mismatch_index]): + break + # We want to show some context after the mismatch. + end_ind = mismatch_index + 8 + # Print a mismatching string. + raise BadChecksum( + 'Machine checksums do not match!\n' + 'Diff:\n' + f'{base.name}: {base.checksum_string[:end_ind]}\n' + f'{machine.name}: {machine.checksum_string[:end_ind]}\n' + '\nCheck for matching /proc/cpuinfo and /proc/meminfo on DUTs.\n') + self.machine_checksum[label.name] = base.machine_checksum def ComputeCommonCheckSumString(self, label): # The assumption is that this function is only called AFTER @@ -369,8 +387,8 @@ class MachineManager(object): if self.log_level != 'verbose': self.logger.LogOutput('Setting up remote access to %s' % machine_name) - self.logger.LogOutput( - 'Checking machine characteristics for %s' % machine_name) + self.logger.LogOutput('Checking machine characteristics for %s' % + machine_name) cm = CrosMachine(machine_name, self.chromeos_root, self.log_level) if cm.machine_checksum: self._all_machines.append(cm) @@ -410,8 +428,8 @@ class MachineManager(object): if self.acquire_timeout < 0: self.logger.LogFatal('Could not acquire any of the ' - "following machines: '%s'" % ', '.join( - machine.name for machine in machines)) + "following machines: '%s'" % + ', '.join(machine.name for machine in machines)) ### for m in self._machines: @@ -664,8 +682,8 @@ class MockMachineManager(MachineManager): for m in self._all_machines: assert m.name != machine_name, 'Tried to double-add %s' % machine_name cm = MockCrosMachine(machine_name, self.chromeos_root, self.log_level) - assert cm.machine_checksum, ( - 'Could not find checksum for machine %s' % machine_name) + assert cm.machine_checksum, ('Could not find checksum for machine %s' % + machine_name) # In Original MachineManager, the test is 'if cm.machine_checksum:' - if a # machine is unreachable, then its machine_checksum is None. Here we # cannot do this, because machine_checksum is always faked, so we directly diff --git a/crosperf/machine_manager_unittest.py b/crosperf/machine_manager_unittest.py index 26eacbd7..f47cc881 100755 --- a/crosperf/machine_manager_unittest.py +++ b/crosperf/machine_manager_unittest.py @@ -44,8 +44,8 @@ class MyMachineManager(machine_manager.MachineManager): assert m.name != machine_name, 'Tried to double-add %s' % machine_name cm = machine_manager.MockCrosMachine(machine_name, self.chromeos_root, 'average') - assert cm.machine_checksum, ( - 'Could not find checksum for machine %s' % machine_name) + assert cm.machine_checksum, ('Could not find checksum for machine %s' % + machine_name) self._all_machines.append(cm) @@ -87,9 +87,10 @@ class MachineManagerTest(unittest.TestCase): def setUp(self, mock_isdir): mock_isdir.return_value = True - self.mm = machine_manager.MachineManager( - '/usr/local/chromeos', 0, 'average', None, self.mock_cmd_exec, - self.mock_logger) + self.mm = machine_manager.MachineManager('/usr/local/chromeos', 0, + 'average', None, + self.mock_cmd_exec, + self.mock_logger) self.mock_lumpy1.name = 'lumpy1' self.mock_lumpy2.name = 'lumpy2' @@ -225,15 +226,14 @@ class MachineManagerTest(unittest.TestCase): self.assertEqual(mock_sleep.call_count, 0) def test_compute_common_checksum(self): - self.mm.machine_checksum = {} self.mm.ComputeCommonCheckSum(LABEL_LUMPY) self.assertEqual(self.mm.machine_checksum['lumpy'], 'lumpy123') self.assertEqual(len(self.mm.machine_checksum), 1) self.mm.machine_checksum = {} - self.assertRaises(machine_manager.BadChecksum, - self.mm.ComputeCommonCheckSum, LABEL_MIX) + self.assertRaisesRegex(machine_manager.BadChecksum, r'daisy.*\n.*lumpy', + self.mm.ComputeCommonCheckSum, LABEL_MIX) def test_compute_common_checksum_string(self): self.mm.machine_checksum_string = {} @@ -583,8 +583,8 @@ power management: CHECKSUM_STRING = ('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: ' + 'KBphysical id: 0siblings: 2cpu cores: 2' + 'fpu: 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 ' @@ -597,8 +597,8 @@ CHECKSUM_STRING = ('processor: 0vendor_id: GenuineIntelcpu family: 6model: ' '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' + ' size: 2048 KBphysical id: 0siblings: 2cpu cores:' + ' 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 ' -- cgit v1.2.3 From cb138b5523a3f37a84a6103dcc75c78a0985254e Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Tue, 10 Nov 2020 12:13:15 -0800 Subject: afdo_metadata: Publish the new kernel profiles Update afdo cwp kernel profiles to R88-13577 version. BUG=None TEST=None Change-Id: I6acae2a8d6a47fa8f6d4a21d7b63ac75c5a0799b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2530409 Reviewed-by: Tiancong Wang Tested-by: Manoj Gupta --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 7358a07e..e026fff2 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R88-13560.0-1604313218" + "name": "R88-13577.0-1604918172" }, "chromeos-kernel-4_4": { - "name": "R88-13560.0-1604313145" + "name": "R88-13577.0-1604917948" }, "chromeos-kernel-4_14": { - "name": "R88-13560.0-1604313396" + "name": "R88-13577.0-1604918128" }, "chromeos-kernel-4_19": { - "name": "R88-13560.0-1604313185" + "name": "R88-13577.0-1604918282" } } -- cgit v1.2.3 From 242137225162f36d6bcfb22608d8290ab99ad038 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 16 Nov 2020 13:49:20 -0800 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R88-13577.0-1605522740 Update chromeos-kernel-4_4 to R88-13577.0-1605523015 Update chromeos-kernel-4_14 to R88-13577.0-1605522850 Update chromeos-kernel-4_19 to R88-13577.0-1605522896 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I75595037318c871b828f625b376000a6794ec65d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2542722 Reviewed-by: Manoj Gupta Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index e026fff2..2aab3b7e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R88-13577.0-1604918172" + "name": "R88-13577.0-1605522740" }, "chromeos-kernel-4_4": { - "name": "R88-13577.0-1604917948" + "name": "R88-13577.0-1605523015" }, "chromeos-kernel-4_14": { - "name": "R88-13577.0-1604918128" + "name": "R88-13577.0-1605522850" }, "chromeos-kernel-4_19": { - "name": "R88-13577.0-1604918282" + "name": "R88-13577.0-1605522896" } } -- cgit v1.2.3 From 2c27f0a0c2dc4592643bfc1381f593f584a67a19 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 20 Nov 2020 15:30:19 +0000 Subject: llvm_tools: pass cl number as str to avoid type error llvm_bisection.py invokes the Gerrit CLI to abandon CLs created as part of the bisection. It passes a CL number to the command. Before this change, the CL number was passed as an int, which leads to the following error: Traceback (most recent call last): File "./auto_llvm_bisection.py", line 103, in main bisection_ret = llvm_bisection.main(args_output) File "/usr/local/google/home/inglorion/chromiumos/src/third_party/toolchain-utils/llvm_tools/llvm_bisection.py", line 364, in main subprocess.check_output([gerrit, 'abandon', build['cl']], File "/usr/lib/python3.8/subprocess.py", line 411, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.8/subprocess.py", line 489, in run with Popen(*popenargs, **kwargs) as process: File "/usr/lib/python3.8/subprocess.py", line 854, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.8/subprocess.py", line 1637, in _execute_child self.pid = _posixsubprocess.fork_exec( TypeError: expected str, bytes or os.PathLike object, not int With this change, we convert the value to an str first, avoiding the type error. BUG=chromium:1151325 TEST=run auto_llvm_bisection.py Change-Id: I2b151c76757067f536712f69b14d6be549ee7c75 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2551789 Reviewed-by: Manoj Gupta Reviewed-by: Jian Cai Tested-by: Bob Haarman --- llvm_tools/llvm_bisection.py | 9 +++++---- llvm_tools/llvm_bisection_unittest.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py index c8d694cd..b1898ea9 100755 --- a/llvm_tools/llvm_bisection.py +++ b/llvm_tools/llvm_bisection.py @@ -357,13 +357,14 @@ def main(args_output): print(skip_revisions_message) if args_output.cleanup: - # Abondon all the CLs created for bisection + # Abandon all the CLs created for bisection gerrit = os.path.join(args_output.chroot_path, 'chromite/bin/gerrit') for build in bisect_state['jobs']: try: - subprocess.check_output([gerrit, 'abandon', build['cl']], - stderr=subprocess.STDOUT, - encoding='utf-8') + subprocess.check_output( + [gerrit, 'abandon', str(build['cl'])], + stderr=subprocess.STDOUT, + encoding='utf-8') except subprocess.CalledProcessError as err: # the CL may have been abandoned if 'chromite.lib.gob_util.GOBError' not in err.output: diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py index a40770a5..cc22dfa4 100755 --- a/llvm_tools/llvm_bisection_unittest.py +++ b/llvm_tools/llvm_bisection_unittest.py @@ -301,7 +301,7 @@ class LLVMBisectionTest(unittest.TestCase): [ os.path.join(args_output.chroot_path, 'chromite/bin/gerrit'), 'abandon', - cl, + str(cl), ], stderr=subprocess.STDOUT, encoding='utf-8', -- cgit v1.2.3 From 4a8085ed25adf0822fa1012d21b51b52a8f6db5c Mon Sep 17 00:00:00 2001 From: inglorion Date: Wed, 25 Nov 2020 17:18:50 -0800 Subject: compiler_wrapper: move llvm-next options to clang options The new Clang version has a number of new warnings which we disable. This CL makes those apply to llvm (current) as well as llvm-next. BUG=None TEST=go test Change-Id: I1f4929580953003d21676e7e72af4577592fb217 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2561725 Reviewed-by: Manoj Gupta Tested-by: Manoj Gupta Commit-Queue: Manoj Gupta --- compiler_wrapper/config.go | 9 ++++ compiler_wrapper/cros_llvm_next_flags.go | 9 +--- .../testdata/cros_clang_host_golden/bisect.json | 15 ++++-- .../clang_ftrapv_maincc_target_specific.json | 45 ++++++++++++---- .../cros_clang_host_golden/clang_host_wrapper.json | 5 +- .../clang_maincc_target_specific.json | 45 ++++++++++++---- .../cros_clang_host_golden/clang_path.json | 60 +++++++++++++++++----- .../clang_sanitizer_args.json | 40 ++++++++++++--- .../clang_specific_args.json | 35 ++++++++++--- .../testdata/cros_clang_host_golden/clangtidy.json | 40 ++++++++++++--- .../force_disable_werror.json | 21 ++++++-- .../testdata/cros_hardened_golden/bisect.json | 9 ++++ .../clang_ftrapv_maincc_target_specific.json | 27 ++++++++++ .../clang_maincc_target_specific.json | 27 ++++++++++ .../testdata/cros_hardened_golden/clang_path.json | 36 +++++++++++++ .../cros_hardened_golden/clang_sanitizer_args.json | 24 +++++++++ .../cros_hardened_golden/clang_specific_args.json | 21 ++++++++ .../clang_sysroot_wrapper_common.json | 18 +++++++ .../testdata/cros_hardened_golden/clangtidy.json | 24 +++++++++ .../cros_hardened_golden/force_disable_werror.json | 15 ++++++ .../cros_hardened_golden/gcc_clang_syntax.json | 12 +++++ .../cros_hardened_noccache_golden/bisect.json | 9 ++++ .../cros_hardened_noccache_golden/clang_path.json | 36 +++++++++++++ .../cros_hardened_noccache_golden/clangtidy.json | 24 +++++++++ .../force_disable_werror.json | 15 ++++++ .../gcc_clang_syntax.json | 12 +++++ .../testdata/cros_nonhardened_golden/bisect.json | 9 ++++ .../clang_ftrapv_maincc_target_specific.json | 27 ++++++++++ .../clang_maincc_target_specific.json | 27 ++++++++++ .../cros_nonhardened_golden/clang_path.json | 36 +++++++++++++ .../clang_sanitizer_args.json | 24 +++++++++ .../clang_specific_args.json | 21 ++++++++ .../clang_sysroot_wrapper_common.json | 18 +++++++ .../cros_nonhardened_golden/clangtidy.json | 24 +++++++++ .../force_disable_werror.json | 15 ++++++ .../cros_nonhardened_golden/gcc_clang_syntax.json | 12 +++++ 36 files changed, 779 insertions(+), 67 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 194ab579..8b5432b8 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -139,9 +139,12 @@ var crosHardenedConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", @@ -171,9 +174,12 @@ var crosNonHardenedConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", @@ -209,9 +215,12 @@ var crosHostConfig = &config{ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", diff --git a/compiler_wrapper/cros_llvm_next_flags.go b/compiler_wrapper/cros_llvm_next_flags.go index f5823fbf..6cd7cd2a 100644 --- a/compiler_wrapper/cros_llvm_next_flags.go +++ b/compiler_wrapper/cros_llvm_next_flags.go @@ -13,11 +13,6 @@ package main // tag is set. // TODO: Enable test in config_test.go, once we have new llvm-next flags. -var llvmNextFlags = []string{ - "-Wno-compound-token-split-by-macro", -} +var llvmNextFlags = []string{} -var llvmNextPostFlags = []string{ - "-Wno-compound-token-split-by-space", - "-Wno-string-concatenation", -} +var llvmNextPostFlags = []string{} diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index cc55bc4f..1c2e5a0e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -36,9 +36,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ], "env_updates": [ "PYTHONPATH=/somepath/test_binary" @@ -85,9 +88,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ], "env_updates": [ "PYTHONPATH=/somepath/test_binary" @@ -137,9 +143,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ], "env_updates": [ "PYTHONPATH=/somepath/test_binary" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 5a59277c..ec57b0d7 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -27,9 +27,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -63,9 +66,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -99,9 +105,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -135,9 +144,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -171,9 +183,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -207,9 +222,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -243,9 +261,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -279,9 +300,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -315,9 +339,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 44b2fb91..99c12725 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -26,9 +26,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index 0b951f3e..9389a4d8 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -26,9 +26,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -61,9 +64,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -96,9 +102,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -131,9 +140,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -166,9 +178,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -201,9 +216,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -236,9 +254,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -271,9 +292,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -306,9 +330,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 69fb4410..080f1d48 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -26,9 +26,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -64,9 +67,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] }, "stdout": "somemessage", @@ -102,9 +108,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -140,9 +149,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -185,11 +197,14 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -235,11 +250,14 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -285,11 +303,14 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] }, "stdout": "somemessage", @@ -325,9 +346,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -360,9 +384,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -395,9 +422,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -430,9 +460,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -468,9 +501,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 93e566fe..0aeb2362 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -28,10 +28,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -66,10 +69,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -104,10 +110,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -142,10 +151,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -179,11 +191,14 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -218,12 +233,15 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -257,10 +275,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=address", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -294,10 +315,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 41143bf0..bddb110e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -37,6 +37,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mno-movbe", "-Wclobbered", @@ -47,7 +48,9 @@ "-Woverride-init", "-Wunsafe-loop-optimizations", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -81,10 +84,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -118,10 +124,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -155,10 +164,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -192,10 +204,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -229,10 +244,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wunused-variable", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -266,10 +284,13 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-someflag", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index c4f86b01..89e4c6f3 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -42,9 +42,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } }, @@ -64,9 +67,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -116,9 +122,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } }, @@ -138,9 +147,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -192,9 +204,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] }, "stdout": "somemessage", @@ -217,9 +232,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -272,9 +290,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } }, @@ -294,9 +315,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] }, "stdout": "somemessage", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 272b4220..75f5e474 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -29,9 +29,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] } } @@ -67,9 +70,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] }, "stderr": "-Werror originalerror", @@ -91,9 +97,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-Wno-error", "-Wno-error=poison-system-directories" ] @@ -133,9 +142,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", - "-Wno-implicit-int-float-conversion" + "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation" ] }, "stderr": "-Werror originalerror", @@ -157,9 +169,12 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-Wno-error", "-Wno-error=poison-system-directories" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 97dec849..b8e0e462 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -46,6 +47,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -101,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -109,6 +113,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -167,6 +173,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -175,6 +182,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index 6223ed91..13e97dc0 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,6 +29,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -38,6 +39,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -82,6 +85,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -91,6 +95,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -135,6 +141,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -144,6 +151,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -188,6 +197,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -197,6 +207,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-linux-gnu" @@ -240,6 +252,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -249,6 +262,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-eabi" @@ -292,6 +307,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -301,6 +317,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-win-gnu" @@ -344,6 +362,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -353,6 +372,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-linux-gnu" @@ -396,6 +417,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -405,6 +427,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-eabi" @@ -448,6 +472,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -457,6 +482,8 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 717681c4..b604692a 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -36,6 +37,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -79,6 +82,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -87,6 +91,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -130,6 +136,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -138,6 +145,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -181,6 +190,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -189,6 +199,8 @@ "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-linux-gnu" @@ -231,6 +243,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -239,6 +252,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-eabi" @@ -281,6 +296,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -289,6 +305,8 @@ "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-win-gnu" @@ -331,6 +349,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -339,6 +358,8 @@ "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-linux-gnu" @@ -381,6 +402,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -389,6 +411,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-eabi" @@ -431,6 +455,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -439,6 +464,8 @@ "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 6940fcaf..9780356e 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -36,6 +37,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -82,6 +85,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -90,6 +94,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -136,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -144,6 +151,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -190,6 +199,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -198,6 +208,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -251,6 +263,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -261,6 +274,8 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -317,6 +332,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -327,6 +343,8 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -378,6 +396,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -388,6 +407,8 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -434,6 +455,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -442,6 +464,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -485,6 +509,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -493,6 +518,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -536,6 +563,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -544,6 +572,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -587,6 +617,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -595,6 +626,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -641,6 +674,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -649,6 +683,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index acf6c24c..b90ad65d 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,6 +30,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -38,6 +39,8 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -83,6 +86,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -91,6 +95,8 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -136,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -144,6 +151,8 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -189,6 +198,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -197,6 +207,8 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -241,6 +253,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -250,6 +263,8 @@ "-fsanitize=fuzzer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -295,6 +310,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -305,6 +321,8 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -349,6 +367,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -357,6 +376,8 @@ "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -401,6 +422,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -410,6 +432,8 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 26f5a665..0d4aaf92 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,6 +39,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -55,6 +56,8 @@ "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -99,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -108,6 +112,8 @@ "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -152,6 +158,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -161,6 +168,8 @@ "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -205,6 +214,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -214,6 +224,8 @@ "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -258,6 +270,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -267,6 +280,8 @@ "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -311,6 +326,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -320,6 +336,8 @@ "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -364,6 +382,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -373,6 +392,8 @@ "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 247f207c..0ef55357 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -71,6 +72,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -117,6 +120,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -125,6 +129,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -164,12 +170,15 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -214,6 +223,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -221,6 +231,8 @@ "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -265,6 +277,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-mthumb", @@ -272,6 +285,8 @@ "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7a-cros-linux-gnueabihf" @@ -314,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -323,6 +339,8 @@ "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index 219a8b2f..06e114cb 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -51,6 +52,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -75,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -83,6 +87,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -137,6 +143,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -145,6 +152,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -170,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -178,6 +188,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -234,6 +246,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -242,6 +255,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -270,6 +285,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -278,6 +294,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -335,6 +353,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -343,6 +362,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -368,6 +389,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -376,6 +398,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 10e485da..cd460a79 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -39,6 +40,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -85,6 +88,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -93,6 +97,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -125,6 +131,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -133,6 +140,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -183,6 +192,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -191,6 +201,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -223,6 +235,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -231,6 +244,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index ea804d97..c7f619d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -36,6 +37,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -103,6 +106,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -111,6 +115,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -173,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -181,6 +188,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -227,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -235,6 +245,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index af4e3ff5..b53bcc59 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,6 +37,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -45,6 +46,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -96,6 +99,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -104,6 +108,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -158,6 +164,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -166,6 +173,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index 50423288..9176e9d7 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -35,6 +36,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -75,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -83,6 +87,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -123,6 +129,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -131,6 +138,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -171,6 +180,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -179,6 +189,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -226,6 +238,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -236,6 +249,8 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -287,6 +302,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -297,6 +313,8 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -347,6 +365,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -357,6 +376,8 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -397,6 +418,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -405,6 +427,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -442,6 +466,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -450,6 +475,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -487,6 +514,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -495,6 +523,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -532,6 +562,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -540,6 +571,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -580,6 +613,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -588,6 +622,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index 219a8b2f..06e114cb 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -51,6 +52,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -75,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -83,6 +87,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -137,6 +143,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -145,6 +152,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -170,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -178,6 +188,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -234,6 +246,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -242,6 +255,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -270,6 +285,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -278,6 +294,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -335,6 +353,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -343,6 +362,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -368,6 +389,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -376,6 +398,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index a7fa8525..a85e91ee 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,6 +30,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -38,6 +39,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -78,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -86,6 +90,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -112,6 +118,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -120,6 +127,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -164,6 +173,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -172,6 +182,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -198,6 +210,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -206,6 +219,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index bafca635..fe1e9b35 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -36,6 +37,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -98,6 +101,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -106,6 +110,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -168,6 +174,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -176,6 +183,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -222,6 +231,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -230,6 +240,8 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 8b03c092..b7e4de39 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -35,9 +35,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -90,9 +93,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -148,9 +154,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index 5d72756d..a9e8b859 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -26,10 +26,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -71,10 +74,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -116,10 +122,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -161,11 +170,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-linux-gnu" @@ -206,10 +218,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-eabi" @@ -250,11 +265,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-win-gnu" @@ -295,11 +313,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-linux-gnu" @@ -340,10 +361,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-eabi" @@ -384,11 +408,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 382b7097..bedbd6eb 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -25,9 +25,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -68,9 +71,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -111,9 +117,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -154,10 +163,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-linux-gnu" @@ -197,9 +209,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-eabi" @@ -239,10 +254,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7m-cros-win-gnu" @@ -282,10 +300,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-linux-gnu" @@ -325,9 +346,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-eabi" @@ -367,10 +391,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv8m-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index cadfd1fe..edd40b72 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -25,9 +25,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -71,9 +74,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -117,9 +123,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -163,9 +172,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -216,11 +228,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -274,11 +289,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -327,11 +345,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -375,9 +396,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -418,9 +442,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -461,9 +488,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -504,9 +534,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -550,9 +583,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 8786db27..e10a92b9 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -27,10 +27,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -73,10 +76,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -119,10 +125,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -165,10 +174,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -210,11 +222,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -257,12 +272,15 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -304,10 +322,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -349,10 +370,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index 98ca5a67..aafdaba0 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -36,6 +36,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mno-movbe", "-Wclobbered", @@ -47,6 +48,8 @@ "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -88,10 +91,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -133,10 +139,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -178,10 +187,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -223,10 +235,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -268,10 +283,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -313,10 +331,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index d39e2b0a..e094f911 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -56,9 +56,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -102,9 +105,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -141,9 +147,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -185,11 +194,14 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-stack-protector", "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -231,12 +243,15 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-B../../bin", "-target", "armv7a-cros-linux-gnueabihf" @@ -276,10 +291,13 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index ce9659a2..4e6ec630 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -40,9 +40,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -64,9 +67,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -118,9 +124,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -143,9 +152,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -199,9 +211,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -227,9 +242,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -284,9 +302,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -309,9 +330,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 61bff7d7..ef266efa 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -28,9 +28,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -74,9 +77,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -106,9 +112,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -156,9 +165,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -188,9 +200,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index 244e8fad..9ea1c01d 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -25,9 +25,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -88,9 +91,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -146,9 +152,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -192,9 +201,12 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", -- cgit v1.2.3 From 369072a8f00b80132a6442e5c3cb28d014e360c4 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Fri, 4 Dec 2020 14:41:03 -0800 Subject: default_remotes: Update toolchain DUT names Replace veyron_minnie with a newer model as it reaches end of life. BUG=b:170402899 TEST=None Change-Id: I0caf06b84b465dcc88a3fdd9dc7d19f13fcd11b9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2574734 Reviewed-by: Tiancong Wang Tested-by: Jian Cai --- crosperf/default_remotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crosperf/default_remotes b/crosperf/default_remotes index cc7f33ef..8daa2485 100644 --- a/crosperf/default_remotes +++ b/crosperf/default_remotes @@ -6,4 +6,4 @@ kefka : chromeos2-row9-rack9-host21.cros chromeos2-row10-rack9-host13.c lulu : chromeos2-row9-rack9-host5.cros chromeos2-row9-rack9-host7.cros nautilus : chromeos2-row10-rack9-host9.cros chromeos2-row10-rack9-host11.cros snappy : chromeos2-row10-rack9-host5.cros chromeos2-row10-rack9-host7.cros -veyron_minnie : chromeos2-row10-rack9-host15.cros chromeos2-row10-rack9-host17.cros +veyron_tigger : chromeos2-row9-rack9-host17.cros chromeos2-row9-rack9-host19.cros -- cgit v1.2.3 From 9d35abcfd61e3b23d40d3a30c3f880398fc86239 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 7 Dec 2020 09:53:22 -0800 Subject: llvm_tools: update upstream branch names to point to `main` LLVM recently renamed their `master` branch to `main` upstream. This changes our tooling to search for the latter name instead. BUG=None TEST=Unittests; ran `git llvm-rev --sha HEAD` in an up-to-date llvm repo. Change-Id: Icdc6dac48fda7697d18d0d77935e46670273bf84 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2577643 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/get_llvm_hash.py | 2 +- llvm_tools/git_llvm_rev.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm_tools/get_llvm_hash.py b/llvm_tools/get_llvm_hash.py index 4c479962..329e8292 100755 --- a/llvm_tools/get_llvm_hash.py +++ b/llvm_tools/get_llvm_hash.py @@ -293,7 +293,7 @@ class LLVMHash(object): def GetTopOfTrunkGitHash(self): """Gets the latest git hash from top of trunk of LLVM.""" - path_to_main_branch = 'refs/heads/master' + path_to_main_branch = 'refs/heads/main' llvm_tot_git_hash = check_output( ['git', 'ls-remote', _LLVM_GIT_URL, path_to_main_branch]) return llvm_tot_git_hash.rstrip().split()[0] diff --git a/llvm_tools/git_llvm_rev.py b/llvm_tools/git_llvm_rev.py index 07209f1e..c8c1505c 100755 --- a/llvm_tools/git_llvm_rev.py +++ b/llvm_tools/git_llvm_rev.py @@ -7,7 +7,7 @@ """Maps LLVM git SHAs to synthetic revision numbers and back. Revision numbers are all of the form '(branch_name, r1234)'. As a shorthand, -r1234 is parsed as '(master, 1234)'. +r1234 is parsed as '(main, 1234)'. """ from __future__ import print_function @@ -18,7 +18,7 @@ import subprocess import sys import typing as t -MAIN_BRANCH = 'master' +MAIN_BRANCH = 'main' # Note that after base_llvm_sha, we reach The Wild West(TM) of commits. # So reasonable input that could break us includes: -- cgit v1.2.3 From d796e2cab9e25c9c94d21011f30cd09dd3c3a7af Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Tue, 8 Dec 2020 10:46:28 -0800 Subject: default_remotes: fix a typo Change "tigger" to "tiger". Also update a unit test. BUG=chromium:1156409 TEST=None. Change-Id: I2dd394ccdfa79632e637cbefddf559e95296c8c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2580398 Reviewed-by: Tiancong Wang Tested-by: Jian Cai --- crosperf/default_remotes | 2 +- crosperf/experiment_factory_unittest.py | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/crosperf/default_remotes b/crosperf/default_remotes index 8daa2485..f23fe21b 100644 --- a/crosperf/default_remotes +++ b/crosperf/default_remotes @@ -6,4 +6,4 @@ kefka : chromeos2-row9-rack9-host21.cros chromeos2-row10-rack9-host13.c lulu : chromeos2-row9-rack9-host5.cros chromeos2-row9-rack9-host7.cros nautilus : chromeos2-row10-rack9-host9.cros chromeos2-row10-rack9-host11.cros snappy : chromeos2-row10-rack9-host5.cros chromeos2-row10-rack9-host7.cros -veyron_tigger : chromeos2-row9-rack9-host17.cros chromeos2-row9-rack9-host19.cros +veyron_tiger : chromeos2-row9-rack9-host17.cros chromeos2-row9-rack9-host19.cros diff --git a/crosperf/experiment_factory_unittest.py b/crosperf/experiment_factory_unittest.py index f5b17ee2..3528eb1f 100755 --- a/crosperf/experiment_factory_unittest.py +++ b/crosperf/experiment_factory_unittest.py @@ -248,17 +248,19 @@ class ExperimentFactoryTest(unittest.TestCase): self.assertTrue(isinstance(bench_list[0], benchmark.Benchmark)) bench_list = [] - ef.AppendBenchmarkSet( - bench_list, experiment_factory.telemetry_pagecycler_tests, '', 1, False, - '', 'telemetry_Crosperf', False, 0, False, '', 0) + ef.AppendBenchmarkSet(bench_list, + experiment_factory.telemetry_pagecycler_tests, '', 1, + False, '', 'telemetry_Crosperf', False, 0, False, '', + 0) self.assertEqual( len(bench_list), len(experiment_factory.telemetry_pagecycler_tests)) self.assertTrue(isinstance(bench_list[0], benchmark.Benchmark)) bench_list = [] - ef.AppendBenchmarkSet( - bench_list, experiment_factory.telemetry_toolchain_perf_tests, '', 1, - False, '', 'telemetry_Crosperf', False, 0, False, '', 0) + ef.AppendBenchmarkSet(bench_list, + experiment_factory.telemetry_toolchain_perf_tests, '', + 1, False, '', 'telemetry_Crosperf', False, 0, False, + '', 0) self.assertEqual( len(bench_list), len(experiment_factory.telemetry_toolchain_perf_tests)) self.assertTrue(isinstance(bench_list[0], benchmark.Benchmark)) @@ -398,7 +400,7 @@ class ExperimentFactoryTest(unittest.TestCase): def test_get_default_remotes(self): board_list = [ 'elm', 'bob', 'chell', 'kefka', 'lulu', 'nautilus', 'snappy', - 'veyron_minnie' + 'veyron_tiger' ] ef = ExperimentFactory() -- cgit v1.2.3 From d5d49d24623ef1ba34f57c4963ee7c5eda7943b3 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Tue, 8 Dec 2020 16:12:03 -0800 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R89-13638.0-1607337469 Update chromeos-kernel-4_4 to R89-13638.0-1607337135 Update chromeos-kernel-4_14 to R89-13638.0-1607337215 Update chromeos-kernel-4_19 to R89-13638.0-1607337429 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I994ba9effc664cab904fccdbe0a207436ac2ea48 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2580915 Reviewed-by: Tiancong Wang Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 2aab3b7e..714ba350 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R88-13577.0-1605522740" + "name": "R89-13638.0-1607337469" }, "chromeos-kernel-4_4": { - "name": "R88-13577.0-1605523015" + "name": "R89-13638.0-1607337135" }, "chromeos-kernel-4_14": { - "name": "R88-13577.0-1605522850" + "name": "R89-13638.0-1607337215" }, "chromeos-kernel-4_19": { - "name": "R88-13577.0-1605522896" + "name": "R89-13638.0-1607337429" } } -- cgit v1.2.3 From bd1004a4776dc1b2df3a2a565cda6c0f1fc8599f Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 10 Dec 2020 12:02:41 -0800 Subject: toolchain-utils: Fix hyphen/underscore issue for nightly tests. The recipe builders use hyphens, while gsutil uses underscores. We had a fix in place for this for veyron_minnie; this updates the fix for veyron_tiger. BUG=None TEST=None Change-Id: Ide32264e1cbbe29afc8ca2cd44e449b56f91a2c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2585646 Auto-Submit: Caroline Tice Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- buildbot_test_toolchains.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index 48987966..b5468941 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -71,7 +71,7 @@ RECIPE_IMAGE_RE_GROUPS = { } RECIPE_IMAGE_RE = RECIPE_IMAGE_FS.format(**RECIPE_IMAGE_RE_GROUPS) -TELEMETRY_AQUARIUM_UNSUPPORTED = ['bob', 'elm', 'veyron_minnie'] +TELEMETRY_AQUARIUM_UNSUPPORTED = ['bob', 'elm', 'veyron_tiger'] class ToolchainComparator(object): @@ -124,9 +124,9 @@ class ToolchainComparator(object): """ # For board names with underscores, we need to fix the trybot image name # to replace the hyphen (for the recipe builder) with the underscore. - # Currently the only such board we use is 'veyron_minnie'. - if trybot_image.find('veyron-minnie') != -1: - trybot_image = trybot_image.replace('veyron-minnie', 'veyron_minnie') + # Currently the only such board we use is 'veyron_tiger'. + if trybot_image.find('veyron-tiger') != -1: + trybot_image = trybot_image.replace('veyron-tiger', 'veyron_tiger') # We need to filter out -tryjob in the trybot_image. if self._recipe: trybot = re.sub('-llvm-next-nightly', '-release', trybot_image) -- cgit v1.2.3 From 028b14d40de70f7caf987fc76db932d78174b4cc Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 10 Dec 2020 14:04:22 -0800 Subject: toolchain-utils: Remove 'target' from distfiles path (for cleanup). 'target' is no longer part of the path from distfiles to chrome-src, so this CL fixes the path inour cleanup script. BUG=None TEST=tested script by hand. Change-Id: I8a69b0d153a301b61c5176e44d1ad65dc8e467cd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2585652 Auto-Submit: Caroline Tice Tested-by: Caroline Tice Commit-Queue: Manoj Gupta Reviewed-by: Manoj Gupta --- auto_delete_nightly_test_data.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index c3c2e24c..67841188 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -215,8 +215,7 @@ def CleanChromeTelemetryTmpFiles(dry_run): rv = 0 ce = command_executer.GetCommandExecuter() tmp_dir = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos', '.cache', - 'distfiles', 'target', 'chrome-src-internal', 'src', - 'tmp') + 'distfiles', 'chrome-src-internal', 'src', 'tmp') cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' if dry_run: print(f'Going to execute:\n{cmd}') -- cgit v1.2.3