From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 957 invoked by alias); 7 Oct 2015 09:26:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 902 invoked by uid 89); 7 Oct 2015 09:26:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f51.google.com Received: from mail-pa0-f51.google.com (HELO mail-pa0-f51.google.com) (209.85.220.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 07 Oct 2015 09:26:45 +0000 Received: by pablk4 with SMTP id lk4so16259458pab.3 for ; Wed, 07 Oct 2015 02:26:44 -0700 (PDT) X-Received: by 10.66.141.42 with SMTP id rl10mr8884pab.18.1444210004061; Wed, 07 Oct 2015 02:26:44 -0700 (PDT) Received: from E107787-LIN.cambridge.arm.com (power-aix.osuosl.org. [140.211.15.154]) by smtp.gmail.com with ESMTPSA id xa4sm38490858pac.28.2015.10.07.02.26.42 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 07 Oct 2015 02:26:43 -0700 (PDT) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 08/11] New test case gdb.arch/disp-step-insn-reloc.exp Date: Wed, 07 Oct 2015 09:26:00 -0000 Message-Id: <1444209985-15829-9-git-send-email-yao.qi@linaro.org> In-Reply-To: <1444209985-15829-1-git-send-email-yao.qi@linaro.org> References: <1444209985-15829-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes X-SW-Source: 2015-10/txt/msg00065.txt.bz2 This patch adds a new test case which uses gdb.arch/insn-reloc.c too to test displaced stepping. Nowadays, tests are for x86, x86_64 and aarch64. gdb/testsuite: * gdb.arch/disp-step-insn-reloc.exp: New test case. --- gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp | 84 +++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp diff --git a/gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp b/gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp new file mode 100644 index 0000000..2edb258 --- /dev/null +++ b/gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp @@ -0,0 +1,84 @@ +# Copyright 2015 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 . + +standard_testfile insn-reloc.c +set executable $testfile +set expfile $testfile.exp + +if { ![support_displaced_stepping] } { + unsupported "displaced stepping" + return -1 +} + +# Some targets have leading underscores on assembly symbols. +set additional_flags [gdb_target_symbol_prefix_flags] + +if [prepare_for_testing $expfile $executable $srcfile \ + [list debug $additional_flags]] { + untested "failed to prepare for tests" + return -1 +} + +if ![runto_main] { + fail "Can't run to main" + return -1 +} + +# Read function name from testcases[N]. + +proc read_testcase { n } { + global gdb_prompt + + set result -1 + gdb_test_multiple "print testcases\[${n}\]" "read name of test case ${n}" { + -re "\[$\].*= .*<(.*)>.*$gdb_prompt $" { + set result $expect_out(1,string) + } + -re "$gdb_prompt $" { } + } + + return $result +} + +set n_testcases [get_integer_valueof "n_testcases" 0] +if { ${n_testcases} == 0 } { + untested "No instruction relocation to test" + return 1 +} + +# Set a fast tracepoint on each set_point${i} symbol. There is one for +# each testcase. +for { set i 0 } { ${i} < ${n_testcases} } { incr i } { + set testcase [read_testcase $i] + + gdb_test "break *set_point$i" "Breakpoint .*" "breakpoint on ${testcase}" +} + +gdb_test "break pass" ".*" "" +gdb_test "break fail" ".*" "" + +gdb_test_no_output "set displaced-stepping on" + +# Make sure we have hit the pass breakpoint for each testcase. +for { set i 0 } { ${i} < ${n_testcases} } { incr i } { + set testcase [read_testcase $i] + + with_test_prefix "${testcase}" { + gdb_test "continue" ".*Breakpoint \[0-9\]+, .*" \ + "go to breakpoint $i" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, pass \(\).*" \ + "relocated instruction" + } +} -- 1.9.1