⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 member-ptr.exp

📁 lwip在ucos上的移植
💻 EXP
📖 第 1 页 / 共 2 页
字号:
# Copyright (C) 1998, 1999 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.edu# Tests for pointer-to-member support# Written by Satish Pai <pai@apollo.hp.com> 1997-08-19# This file is part of the gdb testsuiteif $tracelevel then {        strace $tracelevel        }if { [skip_cplus_tests] } { continue }## test running programs## Start with a fresh gdbgdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirset prms_id 0set bug_id 0set testfile "member-ptr"set srcfile ${testfile}.ccset 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} "c++"] {    return -1}# Nearly all of these tests fail when compiled with G++, so just give up# until GDB gets enhanced. -sts 1999-06-22if {$gcc_compiled} {    continue }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_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}if ![runto_main] then {    perror "couldn't run to breakpoint"    continue}send_gdb "break 83\n"gdb_expect {   -re "Breakpoint \[0-9\]*.*line 83\\.\r\n$gdb_prompt $" {      pass "set break at 83"    }    -re ".*$gdb_prompt $" { fail "set break at 83" }    timeout { fail "(timeout) set break at 83" }}send_gdb "continue\n"gdb_expect {   -re "Continuing\\.\r\n\r\nBreakpoint.*at.*member-ptr\\.cc:83\r\n83\[ \t]*pmi = NULL;\r\n$gdb_prompt $" {      pass "continue to 83"    }    -re ".*$gdb_prompt $" { fail "continue to 83" }    timeout { fail "(timeout) continue to 83" }}# ptype on pointer to data membersend_gdb "ptype pmi\n"gdb_expect {   -re "type = int \\( A::\\*\\)\r\n$gdb_prompt $" {      pass "ptype pmi"    }    -re ".*$gdb_prompt $" { fail "ptype pmi" }    timeout { fail "(timeout) ptype pmi" }}# print pointer to data membersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print pmi\n"gdb_expect {   -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\) &A::j\r\n$gdb_prompt $" {      pass "print pmi"    }    -re ".*$gdb_prompt $" { fail "print pmi" }    timeout { fail "(timeout) print pmi" }}# print dereferenced pointer to data membersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a.*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 121\r\n$gdb_prompt $" {      pass "print a.*pmi"    }    -re ".*$gdb_prompt $" { fail "print a.*pmi" }    timeout { fail "(timeout) print a.*pmi" }}# print dereferenced pointer to data member# this time, dereferenced through a pointersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a_p->*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 121\r\n$gdb_prompt $" {      pass "print a->*pmi"    }    -re ".*$gdb_prompt $" { fail "print a->*pmi" }    timeout { fail "(timeout) print a->*pmi" }}# set the pointer to data membersend_gdb "set var pmi = &A::jj\n"gdb_expect {   -re "$gdb_prompt $" {      pass "set var (not really a pass)"    }    timeout { fail "(timeout) " }}# Now print the pointer againsend_gdb "print pmi\n"gdb_expect {   -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\) &A::jj\r\n$gdb_prompt $" {      pass "print pmi after setting"    }    -re ".*$gdb_prompt $" { fail "print pmi after setting" }    timeout { fail "(timeout) print pmi after setting" }}# print dereferenced pointer to data member againsend_gdb "print a.*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 1331\r\n$gdb_prompt $" {      pass "print a.*pmi after setting"    }    -re ".*$gdb_prompt $" { fail "print a.*pmi after setting" }    timeout { fail "(timeout) print a.*pmi after setting" }}# set the pointer to data member back to A::jsend_gdb "set var pmi = &A::j\n"gdb_expect {   -re "$gdb_prompt $" {      pass "set var back to A::j (not really a pass)"    }    timeout { fail "(timeout) set var pmi" }}# print dereferenced pointer to data member yet again (extra check, why not)send_gdb "print a.*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 121\r\n$gdb_prompt $" {      pass "print a.*pmi after resetting"    }    -re ".*$gdb_prompt $" { fail "print a.*pmi after resetting" }    timeout { fail "(timeout) print a.*pmi after resetting" }}# Set the data member pointed to.send_gdb "print a.*pmi = 33\n"gdb_expect {   -re "\\$\[0-9\]* = 33\r\n$gdb_prompt $" {      pass "print command to set"    }    -re ".*$gdb_prompt $" { fail "print command to set" }    timeout { fail "(timeout) print command to set" }}# Now check that the data really was changedsend_gdb "print a.*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 33\r\n$gdb_prompt $" {      pass "print a.*pmi after setting member pointed to"    }    -re ".*$gdb_prompt $" { fail "print a.*pmi after setting member pointed to" }    timeout { fail "(timeout) print a.*pmi after setting member pointed to" }}# Double-check by printing a.setup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a\n"gdb_expect {   -re "\\$\[0-9\]* = \{c = 120 'x', j = 33, jj = 1331, static s = 10, Virtual table at $hex\}\r\n$gdb_prompt $" {      pass "print a after setting member pointed to by pmi"    }    -re ".*$gdb_prompt $" { fail "print a after setting member pointed to by pmi" }    timeout { fail "(timeout) print a after setting member pointed to by pmi" }}# Set the data member pointed to, using ->*send_gdb "print a_p->*pmi = 44\n"gdb_expect {   -re "\\$\[0-9\]* = 44\r\n$gdb_prompt $" {      pass "print command to set (->)"    }    -re ".*$gdb_prompt $" { fail "print command to set (->)" }    timeout { fail "(timeout) print command to set (->)" }}# Now check that the data really was changedsend_gdb "print a_p->*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 44\r\n$gdb_prompt $" {      pass "print a_p->*pmi after setting member pointed to"    }    -re ".*$gdb_prompt $" { fail "print a_p->*pmi after setting member pointed to" }    timeout { fail "(timeout) print a_p->*pmi after setting member pointed to" }}# Double-check by printing a.setup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a\n"gdb_expect {   -re "\\$\[0-9\]* = \{c = 120 'x', j = 44, jj = 1331, static s = 10, Virtual table at $hex\}\r\n$gdb_prompt $" {      pass "print a after setting member pointed to by pmi (->) "    }    -re ".*$gdb_prompt $" { fail "print a after setting member pointed to by pmi (->) " }    timeout { fail "(timeout) print a after setting member pointed to by pmi (->) " }}# Do a ptype on the dereferenced pointer to member# pai/1997-08-20 Doesn't work# send_gdb "ptype a.*pmi\n"# gdb_expect {#   -re "type = int\r\n$gdb_prompt $" {#      pass "ptype a.*pmi"#    }#    -re ".*$gdb_prompt $" { fail "ptype a.*pmi" }#    timeout { fail "(timeout) ptype a.*pmi" }#}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -