OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [gdb/] [testsuite/] [gdb.c++/] [misc.exp] - Diff between revs 107 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 107 Rev 1765
# Copyright (C) 1992, 1994, 1997 Free Software Foundation, Inc.
# Copyright (C) 1992, 1994, 1997 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# 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
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# (at your option) any later version.
#
#
# This program is distributed in the hope that it will be useful,
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# GNU General Public License for more details.
#
#
# You should have received a copy of the GNU General Public License
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Please email any bugs, comments, and/or additions to this file to:
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
# bug-gdb@prep.ai.mit.edu
# This file was written by Fred Fish. (fnf@cygnus.com)
# This file was written by Fred Fish. (fnf@cygnus.com)
if $tracelevel then {
if $tracelevel then {
        strace $tracelevel
        strace $tracelevel
}
}
if { [skip_cplus_tests] } { continue }
if { [skip_cplus_tests] } { continue }
set testfile "misc"
set testfile "misc"
set srcfile ${testfile}.cc
set srcfile ${testfile}.cc
set binfile ${objdir}/${subdir}/${testfile}
set binfile ${objdir}/${subdir}/${testfile}
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
}
#
#
# Deduce language of main()
# Deduce language of main()
#
#
proc deduce_language_of_main {} {
proc deduce_language_of_main {} {
    global gdb_prompt
    global gdb_prompt
    # See what language gdb thinks main() is, prior to reading full symbols.
    # See what language gdb thinks main() is, prior to reading full symbols.
    # I think this fails for COFF targets.
    # I think this fails for COFF targets.
    setup_xfail "a29k-*-udi"
    setup_xfail "a29k-*-udi"
    send_gdb "show language\n"
    send_gdb "show language\n"
    gdb_expect {
    gdb_expect {
        -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
        -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
            pass "deduced language is C++, before full symbols"
            pass "deduced language is C++, before full symbols"
        }
        }
        -re ".*$gdb_prompt $" {
        -re ".*$gdb_prompt $" {
            fail "source language not correct for C++ (psymtabs only)"
            fail "source language not correct for C++ (psymtabs only)"
            return
            return
        }
        }
        timeout {
        timeout {
            fail "can't show language (timeout)"
            fail "can't show language (timeout)"
            return
            return
        }
        }
    }
    }
    runto_main
    runto_main
    # See if our idea of the language has changed.
    # See if our idea of the language has changed.
    send_gdb "show language\n"
    send_gdb "show language\n"
    gdb_expect {
    gdb_expect {
        -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
        -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
            pass "deduced language is C++, after full symbols"
            pass "deduced language is C++, after full symbols"
        }
        }
        -re ".*$gdb_prompt $" {
        -re ".*$gdb_prompt $" {
            fail "source language not correct for C++ (full symbols)"
            fail "source language not correct for C++ (full symbols)"
            return
            return
        }
        }
        timeout {
        timeout {
            fail "can't show language (timeout)"
            fail "can't show language (timeout)"
            return
            return
        }
        }
    }
    }
}
}
proc test_expr { args } {
proc test_expr { args } {
    if { [llength $args] % 2 } {
    if { [llength $args] % 2 } {
        warning "an even # of arguments should be passed to test_expr"
        warning "an even # of arguments should be passed to test_expr"
    }
    }
    set last_ent [expr [llength $args] - 1];
    set last_ent [expr [llength $args] - 1];
    set testname [lindex $args $last_ent];
    set testname [lindex $args $last_ent];
    if [gdb_test [lindex $args 0] "" "$testname (setup)"] {
    if [gdb_test [lindex $args 0] "" "$testname (setup)"] {
        gdb_suppress_tests;
        gdb_suppress_tests;
    }
    }
    for {set x 1} {$x < $last_ent} {set x [expr $x + 2]} {
    for {set x 1} {$x < $last_ent} {set x [expr $x + 2]} {
        if [gdb_test [lindex $args $x] [lindex $args [expr $x + 1]] "$testname ([lindex $args $x])"] {
        if [gdb_test [lindex $args $x] [lindex $args [expr $x + 1]] "$testname ([lindex $args $x])"] {
            gdb_suppress_tests;
            gdb_suppress_tests;
        }
        }
    }
    }
    gdb_stop_suppressing_tests;
    gdb_stop_suppressing_tests;
}
}
proc do_tests {} {
proc do_tests {} {
    global prms_id
    global prms_id
    global bug_id
    global bug_id
    global subdir
    global subdir
    global objdir
    global objdir
    global srcdir
    global srcdir
    global binfile
    global binfile
    global gdb_prompt
    global gdb_prompt
    set prms_id 0
    set prms_id 0
    set bug_id 0
    set bug_id 0
    # Start with a fresh gdb.
    # Start with a fresh gdb.
    gdb_exit
    gdb_exit
    gdb_start
    gdb_start
    gdb_reinitialize_dir $srcdir/$subdir
    gdb_reinitialize_dir $srcdir/$subdir
    gdb_load $binfile
    gdb_load $binfile
    deduce_language_of_main
    deduce_language_of_main
    # Check for fixes for PRs 8916 and 8630
    # Check for fixes for PRs 8916 and 8630
    gdb_test "print s.a" ".* = 0" "print s.a for foo struct (known gcc 2.7.2 and earlier bug)"
    gdb_test "print s.a" ".* = 0" "print s.a for foo struct (known gcc 2.7.2 and earlier bug)"
}
}
do_tests
do_tests
test_expr "set language c++" \
test_expr "set language c++" \
    "print 1 == 1" "print.*\\$\[0-9\]* = true" \
    "print 1 == 1" "print.*\\$\[0-9\]* = true" \
    "print 1 == 2" "print.*\\$\[0-9\]* = false" \
    "print 1 == 2" "print.*\\$\[0-9\]* = false" \
    "print as bool"
    "print as bool"
# Test bool type printing, etc.
# Test bool type printing, etc.
# Note: Language is already set to C++ above!
# Note: Language is already set to C++ above!
gdb_test "print v_bool" "\\$\[0-9\]* = false" "print a bool var"
gdb_test "print v_bool" "\\$\[0-9\]* = false" "print a bool var"
# set a bool variable
# set a bool variable
test_expr "set variable v_bool = true" \
test_expr "set variable v_bool = true" \
    "print v_bool" "\\$\[0-9\]* = true" \
    "print v_bool" "\\$\[0-9\]* = true" \
    "set a bool var"
    "set a bool var"
# next print an array of bool
# next print an array of bool
gdb_test "print v_bool_array" "\\$\[0-9\]* = \\{false, false\\}" "print a bool array"
gdb_test "print v_bool_array" "\\$\[0-9\]* = \\{false, false\\}" "print a bool array"
# set elements of a bool array
# set elements of a bool array
test_expr "set variable v_bool_array\[1\] = true" \
test_expr "set variable v_bool_array\[1\] = true" \
    "print v_bool_array" "\\$\[0-9\]* = \\{false, true\\}" \
    "print v_bool_array" "\\$\[0-9\]* = \\{false, true\\}" \
    "set a bool array elem"
    "set a bool array elem"
# bool constants
# bool constants
gdb_test "print true" "\\$\[0-9\]* = true" "print true"
gdb_test "print true" "\\$\[0-9\]* = true" "print true"
gdb_test "print false" "\\$\[0-9\]* = false" "print false"
gdb_test "print false" "\\$\[0-9\]* = false" "print false"
# arithmetic conversions
# arithmetic conversions
gdb_test "print 1 + true" "\\$\[0-9\]* = 2" "1 + true"
gdb_test "print 1 + true" "\\$\[0-9\]* = 2" "1 + true"
gdb_test "print 3 + false" "\\$\[0-9\]* = 3" "3 + false"
gdb_test "print 3 + false" "\\$\[0-9\]* = 3" "3 + false"
gdb_test "print 1 < 2 < 3" "\\$\[0-9\]* = true" "1 < 2 < 3"
gdb_test "print 1 < 2 < 3" "\\$\[0-9\]* = true" "1 < 2 < 3"
gdb_test "print 2 < 1 > 4" "\\$\[0-9\]* = false" "2 < 1 > 4"
gdb_test "print 2 < 1 > 4" "\\$\[0-9\]* = false" "2 < 1 > 4"
gdb_test "print (bool)43" "\\$\[0-9\]* = true" "(bool)43"
gdb_test "print (bool)43" "\\$\[0-9\]* = true" "(bool)43"
gdb_test "print (bool)0" "\\$\[0-9\]* = false" "(bool)0"
gdb_test "print (bool)0" "\\$\[0-9\]* = false" "(bool)0"
gdb_test "print (bool)17.93" "\\$\[0-9\]* = true" "(bool)17.93"
gdb_test "print (bool)17.93" "\\$\[0-9\]* = true" "(bool)17.93"
gdb_test "print (bool)0.0" "\\$\[0-9\]* = false" "(bool)0.0"
gdb_test "print (bool)0.0" "\\$\[0-9\]* = false" "(bool)0.0"
gdb_test "print (int)true" "\\$\[0-9\]* = 1" "(int)true"
gdb_test "print (int)true" "\\$\[0-9\]* = 1" "(int)true"
gdb_test "print (int)false" "\\$\[0-9\]* = 0" "(int)false"
gdb_test "print (int)false" "\\$\[0-9\]* = 0" "(int)false"
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.