# Copyright 1997, 1998, 1999, 2000 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

# 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 {$hp_aCC_compiler || $hp_cc_compiler} {
    set lang "c++"
} else {
    set lang ""
}

if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug $lang]] != "" } {
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

# Create and source the file that provides information about the compiler
# used to compile the test case.

if [get_compiler_info ${binfile}] {
    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

proc local_compiler_xfail_check { } {
    global gcc_compiled;

    if {$gcc_compiled} then {
	if { ![test_debug_format "HP"] \
		&& ![test_debug_format "DWARF 2"] } then {
	    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
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"
    local_compiler_xfail_check
    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"
    local_compiler_xfail_check
    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"
}

do_constvar_tests
