e22f8b7c8c
Switch the license of all .f and .f90 files to GPLv3. Switch the license of all .s and .S files to GPLv3.
290 lines
10 KiB
Text
290 lines
10 KiB
Text
# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
|
|
# 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/>. */
|
|
|
|
# written by Elena Zannoni (elz@apollo.hp.com)
|
|
#
|
|
# This file is part of the gdb testsuite
|
|
#
|
|
# tests for const variables
|
|
# const pointers to vars
|
|
# pointers to const variables
|
|
# const pointers to const vars
|
|
# with mixed types
|
|
|
|
if $tracelevel then {
|
|
strace $tracelevel
|
|
}
|
|
|
|
#
|
|
# test running programs
|
|
#
|
|
set prms_id 0
|
|
set bug_id 0
|
|
|
|
set testfile "constvars"
|
|
set srcfile ${testfile}.c
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
|
|
# Create and source the file that provides information about the compiler
|
|
# used to compile the test case.
|
|
if [get_compiler_info ${binfile}] {
|
|
return -1;
|
|
}
|
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } {
|
|
untested constvars.exp
|
|
return -1
|
|
}
|
|
|
|
gdb_exit
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
gdb_load ${binfile}
|
|
|
|
|
|
#
|
|
# set it up at a breakpoint so we can play with the variable values
|
|
#
|
|
if ![runto_main] then {
|
|
perror "couldn't run to breakpoint"
|
|
continue
|
|
}
|
|
|
|
get_debug_format
|
|
|
|
# Many tests xfail with gcc 2 -gstabs+.
|
|
# TODO: check out the hp side of this.
|
|
|
|
proc local_compiler_xfail_check { } {
|
|
if { [test_compiler_info gcc-2-*] } then {
|
|
if { ![test_debug_format "HP"] \
|
|
&& ![test_debug_format "DWARF 2"] } then {
|
|
setup_xfail "*-*-*"
|
|
}
|
|
}
|
|
|
|
global hp_cc_compiler
|
|
if { $hp_cc_compiler } {
|
|
setup_xfail "hppa*-*-hpux*"
|
|
}
|
|
}
|
|
|
|
# A few tests still xfail with gcc 3 -gstabs+ and gcc 4 -gstabs+.
|
|
|
|
proc local_compiler_xfail_check_2 { } {
|
|
if { [test_compiler_info gcc-3-*] || [test_compiler_info gcc-4-*] } {
|
|
if { [test_debug_format "stabs" ] } {
|
|
setup_xfail "*-*-*"
|
|
}
|
|
}
|
|
}
|
|
|
|
send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
|
|
|
|
send_gdb "cont\n"
|
|
gdb_expect {
|
|
-re "Break.* marker1 \\(\\) at .*:$decimal.*$gdb_prompt $" {
|
|
send_gdb "up\n"
|
|
gdb_expect {
|
|
-re ".*main.*$gdb_prompt $" {
|
|
pass "up from marker1"
|
|
}
|
|
-re ".*$gdb_prompt $" {
|
|
fail "up from marker1"
|
|
}
|
|
timeout { fail "up from marker1 (timeout)" }
|
|
}
|
|
}
|
|
-re "Break.* marker1__.* \\(\\) at .*:$decimal.*$gdb_prompt $" {
|
|
fail "continue to marker1 (demangling)"
|
|
send_gdb "up\n"
|
|
gdb_expect {
|
|
-re ".*main.*$gdb_prompt $" {
|
|
pass "up from marker1"
|
|
}
|
|
-re ".*$gdb_prompt $" {
|
|
fail "up from marker1"
|
|
}
|
|
timeout { fail "up from marker1 (timeout)" }
|
|
}
|
|
}
|
|
-re "$gdb_prompt $" { fail "continue to marker1" }
|
|
timeout { fail "(timeout) continue to marker1" }
|
|
}
|
|
|
|
# test function parameters
|
|
|
|
local_compiler_xfail_check
|
|
local_compiler_xfail_check_2
|
|
|
|
send_gdb "ptype qux1\n"
|
|
gdb_expect {
|
|
-re "type = int \\(const char, const char, const char \\*, char \\* const\\).*$gdb_prompt $" {
|
|
pass "ptype qux1"
|
|
}
|
|
-re ".*$gdb_prompt $" { fail "ptype qux1" }
|
|
timeout { fail "(timeout) ptype qux1" }
|
|
}
|
|
|
|
# test vars and pointers
|
|
|
|
proc do_constvar_tests {} {
|
|
gdb_test "print lave" " = 66 'B'"
|
|
gdb_test "ptype lave" "type = char"
|
|
gdb_test "print lavish" " = 10 '\\\\n'"
|
|
gdb_test "ptype lavish" "type = unsigned char"
|
|
gdb_test "print lax" " = 20"
|
|
gdb_test "ptype lax" "type = short.*"
|
|
gdb_test "print lecherous" " = 30"
|
|
gdb_test "ptype lecherous" "type = (unsigned short|short unsigned)( int)?"
|
|
gdb_test "print lechery" " = 40"
|
|
gdb_test "ptype lechery" "type = long.*"
|
|
gdb_test "print lectern" " = 50"
|
|
gdb_test "ptype lectern" "type = (unsigned long|long unsigned)( int)?"
|
|
gdb_test "print leeway" " = 60"
|
|
gdb_test "ptype leeway" "type = float"
|
|
gdb_test "print legacy" " = 70"
|
|
gdb_test "ptype legacy" "type = double"
|
|
gdb_test "print laconic" " = 65 'A'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype laconic" "type = const char"
|
|
gdb_test "print laggard" " = 1 '.001'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype laggard" "type = const unsigned char"
|
|
gdb_test "print lagoon" " = 2"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lagoon" "type = const short( int)?"
|
|
gdb_test "print laity" " = 3"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype laity" "type = const (unsigned short|short unsigned)( int)?"
|
|
gdb_test "print lambent" " = 4"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lambent" "type = const long( int)?"
|
|
gdb_test "print laminated" " = 5"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype laminated" "type = const (unsigned long|long unsigned)( int)?"
|
|
gdb_test "print lampoon" " = 6"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lampoon" "type = const float"
|
|
gdb_test "print languid" " = 7"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype languid" "type = const double"
|
|
gdb_test "print *legend" " = 66 'B'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype legend" "type = const char \\*"
|
|
gdb_test "print *legerdemain" " = 10 '\\\\n'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype legerdemain" "type = const unsigned char \\*"
|
|
gdb_test "print *leniency" " = 20"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype leniency" "type = const short( int)? \\*"
|
|
gdb_test "print *leonine" " = 30"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype leonine" "type = const (unsigned short|short unsigned)( int)? \\*"
|
|
gdb_test "print *lesion" " = 40"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lesion" "type = const long( int)? \\*"
|
|
gdb_test "print *lethal" " = 50"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lethal" "type = const (unsigned long|long unsigned)( int)? \\*"
|
|
gdb_test "print *lethargic" " = 60"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lethargic" "type = const float \\*"
|
|
gdb_test "print *levity" " = 70"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype levity" "type = const double \\*"
|
|
gdb_test "print *lewd" " = 65 'A'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lewd" "type = const char \\* const"
|
|
gdb_test "print *lexicographer" " = 1 '.001'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lexicographer" "type = const unsigned char \\* const"
|
|
gdb_test "print *lexicon" " = 2"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lexicon" "type = const short( int)? \\* const"
|
|
gdb_test "print *liaison" " = 3"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype liaison" "type = const (unsigned short|short unsigned)( int)? \\* const"
|
|
gdb_test "print *libation" " = 4"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype libation" "type = const long( int)? \\* const"
|
|
gdb_test "print *libelous" " = 5"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype libelous" "type = const (unsigned long|long unsigned)( int)? \\* const"
|
|
gdb_test "print *libertine" " = 6"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype libertine" "type = const float \\* const"
|
|
gdb_test "print *libidinous" " = 7"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype libidinous" "type = const double \\* const"
|
|
gdb_test "print *languish" " = 65 'A'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype languish" "type = const char \\*"
|
|
gdb_test "print *languor" " = 1 '.001'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype languor" "type = const unsigned char \\*"
|
|
gdb_test "print *lank" " = 2"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lank" "type = const short( int)? \\*"
|
|
gdb_test "print *lapidary" " = 3"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lapidary" "type = const (unsigned short|short unsigned)( int)? \\*"
|
|
gdb_test "print *larceny" " = 4"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype larceny" "type = const long( int)? \\*"
|
|
gdb_test "print *largess" " = 5"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype largess" "type = const (unsigned long|long unsigned)( int)? \\*"
|
|
gdb_test "print *lascivious" " = 6"
|
|
local_compiler_xfail_check
|
|
|
|
gdb_test "ptype lascivious" "type = const float \\*"
|
|
gdb_test "print *lassitude" " = 7"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lassitude" "type = const double \\*"
|
|
gdb_test "print *lamprey" " = 66 'B'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lamprey" "type = char \\* const"
|
|
gdb_test "print *lariat" " = 10 '\\\\n'"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lariat" "type = unsigned char \\* const"
|
|
gdb_test "print *laudanum" " = 20"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype laudanum" "type = short( int)? \\* const"
|
|
gdb_test "print *lecithin" " = 30"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lecithin" "type = (unsigned short|short unsigned)( int)? \\* const"
|
|
gdb_test "print *leviathan" " = 40"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype leviathan" "type = long( int)? \\* const"
|
|
gdb_test "print *libretto" " = 50"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype libretto" "type = (unsigned long|long unsigned)( int)? \\* const"
|
|
gdb_test "print *lissome" " = 60"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype lissome" "type = float \\* const"
|
|
gdb_test "print *locust" " = 70"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype locust" "type = double \\* const"
|
|
|
|
local_compiler_xfail_check
|
|
local_compiler_xfail_check_2
|
|
gdb_test "ptype crass" "type = struct crass \{\[\r\n\]+\[\ \t\]+char \\* const ptr;\[\r\n\]+\}"
|
|
local_compiler_xfail_check
|
|
gdb_test "ptype crisp" "type = struct crisp \{\[\r\n\]+\[\ \t\]+char \\* const \\*ptr;\[\r\n\]+\}"
|
|
}
|
|
|
|
do_constvar_tests
|