2 changed files with 126 additions and 0 deletions
@ -0,0 +1,122 @@ |
|||||
|
# Copyright 2007 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. |
||||
|
# |
||||
|
# Test essential Machine interface (MI) operations |
||||
|
# |
||||
|
# Verify that once binary file has changed, GDB correctly handles |
||||
|
# previously defined MI variables. |
||||
|
# |
||||
|
|
||||
|
|
||||
|
load_lib mi-support.exp |
||||
|
set MIFLAGS "-i=mi" |
||||
|
|
||||
|
gdb_exit |
||||
|
if [mi_gdb_start] { |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
set testfile "var-cmd" |
||||
|
set srcfile ${testfile}.c |
||||
|
set binfile ${objdir}/${subdir}/${testfile} |
||||
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } { |
||||
|
untested mi-var-invalidate.exp |
||||
|
return -1 |
||||
|
} |
||||
|
# Just change the output binary. |
||||
|
set binfile_bis ${objdir}/${subdir}/${testfile}_bis |
||||
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile_bis}" executable {debug additional_flags=-DFAKEARGV}] != "" } { |
||||
|
untested mi-var-invalidate.exp |
||||
|
return -1 |
||||
|
} |
||||
|
|
||||
|
set testfile2 "basics" |
||||
|
set srcfile2 ${testfile2}.c |
||||
|
set binfile2 ${objdir}/${subdir}/${testfile2} |
||||
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug additional_flags=-DFAKEARGV}] != "" } { |
||||
|
untested mi-var-invalidate.exp |
||||
|
return -1 |
||||
|
} |
||||
|
|
||||
|
mi_delete_breakpoints |
||||
|
mi_gdb_reinitialize_dir $srcdir/$subdir |
||||
|
mi_gdb_load ${binfile} |
||||
|
|
||||
|
# Desc: Create global variable. |
||||
|
mi_gdb_test "-var-create global_simple * global_simple" \ |
||||
|
"\\^done,name=\"global_simple\",numchild=\"6\",value=\".*\",type=\"simpleton\"" \ |
||||
|
"create global variable" |
||||
|
|
||||
|
mi_runto do_locals_tests |
||||
|
|
||||
|
# Desc: create local variables |
||||
|
mi_gdb_test "-var-create linteger * linteger" \ |
||||
|
"\\^done,name=\"linteger\",numchild=\"0\",value=\".*\",type=\"int\"" \ |
||||
|
"create local variable linteger" |
||||
|
|
||||
|
# |
||||
|
# Reload the same binary. |
||||
|
# Global variable should remain, local should be invalidated. |
||||
|
# |
||||
|
mi_delete_breakpoints |
||||
|
mi_gdb_load ${binfile_bis} |
||||
|
mi_runto main |
||||
|
|
||||
|
# Check local variable is "invalid". |
||||
|
mi_gdb_test "-var-update linteger" \ |
||||
|
"\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"invalid\"\}\\\]" \ |
||||
|
"linteger not anymore in scope due to binary changes" |
||||
|
|
||||
|
mi_gdb_test "-var-info-type linteger" \ |
||||
|
"\\^done,type=\"\"" \ |
||||
|
"no type for invalid variable linteger (1)" |
||||
|
|
||||
|
# Check global variable is still correct. |
||||
|
mi_gdb_test "-var-update global_simple" \ |
||||
|
"\\^done,changelist=\\\[\]" \ |
||||
|
"global_simple still alive" |
||||
|
|
||||
|
mi_gdb_test "-var-info-type global_simple" \ |
||||
|
"\\^done,type=\"simpleton\"" \ |
||||
|
"type simpleton for valid variable global_simple" |
||||
|
|
||||
|
|
||||
|
# |
||||
|
# Load an other binary. |
||||
|
# All variables must be invalidated. |
||||
|
# |
||||
|
mi_delete_breakpoints |
||||
|
mi_gdb_load ${binfile2} |
||||
|
# Check local variable are "invalid" |
||||
|
mi_gdb_test "-var-update linteger" \ |
||||
|
"\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"invalid\"\}\\\]" \ |
||||
|
"linteger not valid anymore due to binary changes" |
||||
|
|
||||
|
mi_gdb_test "-var-info-type linteger" \ |
||||
|
"\\^done,type=\"\"" \ |
||||
|
"no type for invalid variable linteger (2)" |
||||
|
|
||||
|
# Check global variable are still correct. |
||||
|
mi_gdb_test "-var-update global_simple" \ |
||||
|
"\\^done,changelist=\\\[\{name=\"global_simple\",in_scope=\"invalid\"\}\\\]" \ |
||||
|
"global_simple not anymore in scope due to binary changes" |
||||
|
|
||||
|
mi_gdb_test "-var-info-type global_simple" \ |
||||
|
"\\^done,type=\"\"" \ |
||||
|
"no type for invalid variable global_simple" |
||||
|
|
||||
|
mi_gdb_exit |
||||
|
return 0 |
||||
Loading…
Reference in new issue