# 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
