diff options
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/dcache-flush.c | 33 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/dcache-flush.exp | 64 |
3 files changed, 102 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 130de8a..3411f6c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2020-12-13 Andrew Burgess <andrew.burgess@embecosm.com> + * gdb.base/dcache-flush.c: New file. + * gdb.base/dcache-flush.exp: New file. + +2020-12-13 Andrew Burgess <andrew.burgess@embecosm.com> + * gdb.base/c-linkage-name.exp: Update to use new 'maint flush ...' commands. * gdb.base/killed-outside.exp: Likewise. diff --git a/gdb/testsuite/gdb.base/dcache-flush.c b/gdb/testsuite/gdb.base/dcache-flush.c new file mode 100644 index 0000000..b512ea3 --- /dev/null +++ b/gdb/testsuite/gdb.base/dcache-flush.c @@ -0,0 +1,33 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +int __attribute__((noinline)) +func (int *v1, int *v2) +{ + return *v1 - *v2 - 1; +} + +int +main () +{ + int var1 = 4; + int var2 = 3; + int res; + + res = func (&var1, &var2); + return res; +} diff --git a/gdb/testsuite/gdb.base/dcache-flush.exp b/gdb/testsuite/gdb.base/dcache-flush.exp new file mode 100644 index 0000000..6c7d2f4 --- /dev/null +++ b/gdb/testsuite/gdb.base/dcache-flush.exp @@ -0,0 +1,64 @@ +# Copyright 2020 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Test that the dcache can be flushed. + +standard_testfile + +if { [prepare_for_testing "failed to prepare" ${testfile}] } { + return -1 +} + +if ![runto func] { + return -1 +} + +gdb_test "up" ".* main .*" +gdb_test "p var1" " = 4" +gdb_test "p var2" " = 3" + +# By reading var1 and var2 we should have at least one line in the +# dcache. +gdb_test "info dcache" \ + [multi_line \ + "Dcache $decimal lines of $decimal bytes each." \ + "Contains data for process $decimal" \ + "Line 0: address $hex \[$decimal hits\].*" \ + "Cache state: $decimal active lines, $decimal hits" ] \ + "check dcache before flushing" + +# Flush the dcache. +gdb_test "maint flush dcache" "The dcache was flushed\." + +# Check the dcache is now empty. +gdb_test "info dcache" \ + [multi_line "Dcache $decimal lines of $decimal bytes each." \ + "No data cache available." ] \ + "check dcache after flushing" + +# Read the stack variables again, refilling the dcache. +with_test_prefix "refilling" { + gdb_test "p var1" " = 4" + gdb_test "p var2" " = 3" +} + +# And check we have some content back in the dcache. +gdb_test "info dcache" \ + [multi_line \ + "Dcache $decimal lines of $decimal bytes each." \ + "Contains data for process $decimal" \ + "Line 0: address $hex \[$decimal hits\].*" \ + "Cache state: $decimal active lines, $decimal hits" ] \ + "check dcache before refilling" |