From: Keith Seitz Date: Fri, 17 Mar 2017 17:25:55 +0000 (-0700) Subject: Add tests for array decay. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71f21024ff4d38ee617d536ac1144a88ebe9ce8b;p=thirdparty%2Fbinutils-gdb.git Add tests for array decay. --- diff --git a/gdb/testsuite/gdb.compile/cp-array-decay.cc b/gdb/testsuite/gdb.compile/cp-array-decay.cc new file mode 100644 index 00000000000..8e2cead419d --- /dev/null +++ b/gdb/testsuite/gdb.compile/cp-array-decay.cc @@ -0,0 +1,31 @@ +/* Copyright 2017 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 . */ + +static const char *g_string_initializer = "hello"; + +int +main () +{ + int integers[10]; + const char *strings[10]; + + for (auto &i : integers) + i = 0; + + for (auto &i : strings) + i = g_string_initializer; + + return 0; // break here +} diff --git a/gdb/testsuite/gdb.compile/cp-array-decay.exp b/gdb/testsuite/gdb.compile/cp-array-decay.exp new file mode 100644 index 00000000000..8baeef4484a --- /dev/null +++ b/gdb/testsuite/gdb.compile/cp-array-decay.exp @@ -0,0 +1,50 @@ +# Copyright 2017 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 . + +# Test whether c++compile is not decaying arrays into pointers. + +load_lib compile-support.exp + +standard_testfile .cc + +if {[skip_cplus_tests]} { + untested "skipping C++ tests" + return +} + +if {[prepare_for_testing $testfile $testfile $srcfile \ + {debug nowarnings c++}]} { + return -1 +} + +if {![runto_main]} { + untested "could not run to main" + return -1 +} + +if {[skip_compile_feature_tests]} { + untested \ + "compile command not supported (could not find libcc1 shared library?)" + return -1 +} + +gdb_breakpoint [gdb_get_line_number "break here" $srcfile] +gdb_continue_to_breakpoint "testing location" + +gdb_test "compile print integers" " = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}" + +gdb_test "compile print strings" " = \\{$hex \"hello\", $hex \"hello\", \ +$hex \"hello\", $hex \"hello\", $hex \"hello\", $hex \"hello\", \ +$hex \"hello\", $hex \"hello\", $hex \"hello\", $hex \"hello\"\\}"