# Copyright (C) 1997, 1998 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}

if [istarget "hppa*-*-*"] {
    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
}

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 ".*$gdb_prompt $" {}
                timeout { fail "up from marker1" }
            }
        }
        -re "Break.* marker1__.* \\(\\) at .*:$decimal.*$gdb_prompt $" {
	    fail "continue to marker1 (demangling)"
            send_gdb "up\n"
            gdb_expect {
                -re ".*$gdb_prompt $" {}
                timeout { fail "up from marker1" }
            }
        }
        -re "$gdb_prompt $" { fail "continue to marker1"  }
        timeout { fail "(timeout) continue to marker1"  }
    }

# test function parameters

if {$gcc_compiled} then { setup_xfail "*-*-*" }
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 {} {
    global gcc_compiled

    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"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lecherous" "type = unsigned short.*"
    gdb_test "print lechery" " = 40"
    gdb_test "ptype lechery" "type = long.*"
    gdb_test "print lectern" " = 50"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lectern" "type = unsigned long.*"
    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'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype laconic" "type = const char"
    gdb_test "print laggard" " = 1 '.001'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype laggard" "type = const unsigned char"
    gdb_test "print lagoon" " = 2"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lagoon" "type = const short"
    gdb_test "print laity" " = 3"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype laity" "type = const unsigned short"
    gdb_test "print lambent" " = 4"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lambent" "type = const long"
    gdb_test "print laminated" " = 5"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype laminated" "type = const unsigned long"
    gdb_test "print lampoon" " = 6"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lampoon" "type = const float"
    gdb_test "print languid" " = 7"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype languid" "type = const double"
    gdb_test "print *legend" " = 66 'B'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype legend" "type = const char \\*"
    gdb_test "print *legerdemain" " = 10 '\\\\n'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype legerdemain" "type = const unsigned char \\*"
    gdb_test "print *leniency" " = 20"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype leniency" "type = const short \\*"
    gdb_test "print *leonine" " = 30"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype leonine" "type = const unsigned short \\*"
    gdb_test "print *lesion" " = 40"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lesion" "type = const long \\*"
    gdb_test "print *lethal" " = 50"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lethal" "type = const unsigned long \\*"
    gdb_test "print *lethargic" " = 60"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lethargic" "type = const float \\*"
    gdb_test "print *levity" " = 70"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype levity" "type = const double \\*"
    gdb_test "print *lewd" " = 65 'A'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lewd" "type = const char \\* const"
    gdb_test "print *lexicographer" " = 1 '.001'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lexicographer" "type = const unsigned char \\* const"
    gdb_test "print *lexicon" " = 2"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lexicon" "type = const short \\* const"
    gdb_test "print *liaison" " = 3"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype liaison" "type = const unsigned short \\* const"
    gdb_test "print *libation" " = 4"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype libation" "type = const long \\* const"
    gdb_test "print *libelous" " = 5"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype libelous" "type = const unsigned long \\* const"
    gdb_test "print *libertine" " = 6"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype libertine" "type = const float \\* const"
    gdb_test "print *libidinous" " = 7"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype libidinous" "type = const double \\* const"
    gdb_test "print *languish" " = 65 'A'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype languish" "type = const char \\*"
    gdb_test "print *languor" " = 1 '.001'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype languor" "type = const unsigned char \\*"
    gdb_test "print *lank" " = 2"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lank" "type = const short \\*"
    gdb_test "print *lapidary" " = 3"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lapidary" "type = const unsigned short \\*"
    gdb_test "print *larceny" " = 4"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype larceny" "type = const long \\*"
    gdb_test "print *largess" " = 5"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype largess" "type = const unsigned long \\*"
    gdb_test "print *lascivious" " = 6"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lascivious" "type = const float \\*"
    gdb_test "print *lassitude" " = 7"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lassitude" "type = const double \\*"
    gdb_test "print *lamprey" " = 66 'B'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lamprey" "type = char \\* const"
    gdb_test "print *lariat" " = 10 '\\\\n'"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lariat" "type = unsigned char \\* const"
    gdb_test "print *laudanum" " = 20"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype laudanum" "type = short \\* const"
    gdb_test "print *lecithin" " = 30"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lecithin" "type = unsigned short \\* const"
    gdb_test "print *leviathan" " = 40"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype leviathan" "type = long \\* const"
    gdb_test "print *libretto" " = 50"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype libretto" "type = unsigned long \\* const"
    gdb_test "print *lissome" " = 60"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype lissome" "type = float \\* const"
    gdb_test "print *locust" " = 70"
    if {$gcc_compiled} then { setup_xfail "*-*-*" }
    gdb_test "ptype locust" "type = double \\* const"
}

do_constvar_tests
