URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [insight/] [gdb/] [testsuite/] [gdb.base/] [sizeof.exp] - Rev 1765
Compare with Previous | Blame | View Log
# Copyright 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.eduif $tracelevel {strace $tracelevel}## test running programs#set prms_id 0set bug_id 0set testfile "sizeof"set srcfile ${testfile}.cset binfile ${objdir}/${subdir}/${testfile}if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."}if [get_compiler_info ${binfile}] {return -1;}gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_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}## Query GDB for the size of various types#proc get_sizeof { type default } {global gdb_promptsend_gdb "print/d sizeof (${type})\n"gdb_expect {-re "\\$\[0-9\]* = (\[0-9\]*).*$gdb_prompt $" {set size $expect_out(1,string)pass "get sizeof ${type} ($size)"}timeout {set size ${default}fail "get sizeof ${type} (timeout)"}}return ${size}}set sizeof_char [get_sizeof "char" 1]set sizeof_short [get_sizeof "short" 2]set sizeof_int [get_sizeof "int" 4]set sizeof_long [get_sizeof "long" 4]set sizeof_long_long [get_sizeof "long long" 8]set sizeof_data_ptr [get_sizeof "void *" 4]set sizeof_func_ptr [get_sizeof "void (*)(void)" 4]set sizeof_float [get_sizeof "float" 4]set sizeof_double [get_sizeof "double" 8]set sizeof_long_double [get_sizeof "long double" 8]## Compare GDB's idea of types with the running program#proc check_sizeof { type size } {global gdb_promptif [gdb_skip_stdio_test "check sizeof $type == $size"] {return;}set pat [string_to_regexp ${type}]send_gdb "next\n"gdb_expect {-re "sizeof \\(${pat}\\) == ${size}\[\r\n\].*$gdb_prompt $" {pass "check sizeof ${type} == ${size}"}-re ".*$gdb_prompt $" {fail "check sizeof ${type} == ${size}"}timeout {fail "check sizeof ${type} == ${size} (timeout)"}}}check_sizeof "char" ${sizeof_char}check_sizeof "short" ${sizeof_short}check_sizeof "int" ${sizeof_int}check_sizeof "long" ${sizeof_long}check_sizeof "long long" ${sizeof_long_long}check_sizeof "void *" ${sizeof_data_ptr}check_sizeof "void (*)(void)" ${sizeof_func_ptr}check_sizeof "float" ${sizeof_float}check_sizeof "double" ${sizeof_double}check_sizeof "long double" ${sizeof_long_double}## For reference, dump out the entire architecture## The output is very long so use a while loop to consume itsend_gdb "maint print arch\n"set ok 1while { $ok } {gdb_expect {-re ".*dump" {#pass "maint print arch $ok"#set ok [expr $ok + 1]}-re "$gdb_prompt $" {pass "maint print arch"set ok 0}timeout {fail "maint print arch (timeout)"set ok 0}}}
