# Copyright 1997-2004, 2007-2012 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

#
# test running programs
#

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 "*-*-*"
	}
    }
}

gdb_test "break marker1" "Breakpoint $decimal at .*" 

gdb_test_multiple "cont" "up from marker1" {
    -re "Break.* marker1 \\(\\) at .*:$decimal.*$gdb_prompt $" {
	pass "continue to marker1"
	gdb_test "up" " main .*" "up from marker1"
    }
    -re "Break.* marker1__.* \\(\\) at .*:$decimal.*$gdb_prompt $" {
	fail "continue to marker1 (demangling)"
	gdb_test "up" " main .*" "up from marker1"
    }
}

# test function parameters

local_compiler_xfail_check
local_compiler_xfail_check_2

gdb_test "ptype qux1" \
    "type = int \\(const char, const char, const char \\*, char \\* const\\).*"

# 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
    gdb_test "ptype logical" "type = const char \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype lugged" "type = const unsigned char \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype luck" "type = const short( int)? \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype lunar" "type = const (unsigned short|short unsigned)( int)? \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype lumen" "type = const long( int)? \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype lurk" "type = const (unsigned long|long unsigned)( int)? \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype lush" "type = const float \\\[2\\\]"
    local_compiler_xfail_check
    gdb_test "ptype lynx" "type = const double \\\[2\\\]"

    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
