| # Copyright 2005 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. |
| |
| if $tracelevel then { |
| strace $tracelevel |
| } |
| |
| load_lib mi-support.exp |
| set MIFLAGS "-i=mi1" |
| |
| set prms_id 0 |
| set bug_id 0 |
| |
| if [target_info exists nocarbon64] { |
| verbose "Skipping Carbon tests on 64-bit PowerPC." |
| return |
| } |
| |
| set testfile "ostype" |
| set srcfile ${testfile}.c |
| set 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." |
| } |
| |
| # Start with a fresh gdb |
| |
| gdb_exit |
| gdb_start |
| gdb_reinitialize_dir $srcdir/$subdir |
| gdb_load ${binfile} |
| |
| gdb_test "break [gdb_get_line_number "run to this point"]" "Breakpoint 1 at $hex: file.*, line.*\\." "breakpoint after ostypes set up" |
| gdb_test "run" "Starting program: $binfile *\r\n\Reading symbols for shared libraries \(\[.+\]\)+ done.*Breakpoint 1, main.*" "continue to breakpoint in main()" |
| |
| gdb_test "p /T x\[0\]" "= 'FeqA'" |
| gdb_test "p /T x\[1\]" {= '\\000\\000\\000\\000'} |
| gdb_test "p /T x\[2\]" {= '\\012\\012\\012\\012'} |
| |
| # make sure it ignores sizes and counts in the 'p' command |
| gdb_test "p /8Tg x\[0\]" "Size letters are meaningless in \"print\" command." |
| gdb_test "p /8T x\[0\]" "Item count other than 1 is meaningless in \"print\" command." |
| |
| # make sure 'x' honors the count but ignores the size |
| gdb_test "x /4Tg x" {.*'FeqA'.*'\\000\\000\\000\\000'.*'\\012\\012\\012\\012'.*'XXXX'} |
| |
| gdb_test "p/T a" "= 'abcd'" |
| gdb_test "x/T &a" "$hex:\[ \]*'abcd'" |
| |
| gdb_test "help x" ".*T.OSType.*" |
| |
| send_gdb "set interpreter mi1\n" |
| |
| mi_gdb_test "11-stack-list-locals 2 1" "11\\^done,locals=.*" "create varobjs for local variables" |
| mi_gdb_test "22-var-evaluate-expression var1" "22\\^done,value=.1633837924.*" "value of a as an integer" |
| mi_gdb_test "33-var-set-format var1 unsigned" "33\\^done,format=.unsigned.*" "set formatting of a to unsigned" |
| mi_gdb_test "44-var-evaluate-expression var1" "44\\^done,value=.1633837924.*" "value of a as an unsigned" |
| mi_gdb_test "55-var-set-format var1 OSType" "55\\^done,format=.OSType.*" "set formatting of a to OSType" |
| mi_gdb_test "66-var-evaluate-expression var1" "66\\^done,value=.abcd.*" "value of a as an OSType" |
| mi_gdb_test "77-var-set-format var1 unsigned" "77\\^done,format=.unsigned.*" "set formatting of a to unsigned again" |
| mi_gdb_test "88-var-evaluate-expression var1" "88\\^done,value=.1633837924.*" "value of a as an unsigned again" |
| |
| gdb_exit |
| return 0 |