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

📄 member-ptr.exp

📁 lwip在ucos上的移植
💻 EXP
📖 第 1 页 / 共 2 页
字号:
# Try to dereference the pointer to data member without any objectsend_gdb "print *pmi\n"gdb_expect {   -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {      pass "attempt to print ptr to member without object"    }    -re ".*$gdb_prompt $" { fail "attempt to print ptr to member without object" }    timeout { fail "(timeout) attempt to print ptr to member without object" }}# Try to ptype a dereference of the pointer to data member without any objectsend_gdb "ptype *pmi\n"gdb_expect {   -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {      pass "attempt to ptype ptr to member without object"    }    -re ".*$gdb_prompt $" { fail "attempt to ptype ptr to member without object" }    timeout { fail "(timeout) attempt to ptype ptr to member without object" }}# Ptype a pointer to a method.setup_xfail "hppa*-*-*" CLLbs16901send_gdb "ptype pmf\n"gdb_expect {   -re "type = int \\( A::\\*\\)\\(\\.\\.\\.\\)\r\n$gdb_prompt $" {      pass "ptype pmf"    }    -re ".*$gdb_prompt $" { fail "ptype pmf" }    timeout { fail "(timeout) ptype pmf" }}# print a pointer to a methodsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print pmf\n"gdb_expect {   -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\(\\.\\.\\.\\)\\) \\?\\? <not supported with HP aCC>\r\n$gdb_prompt $" {      pass "print pmf"    }    -re ".*$gdb_prompt $" { fail "print pmf" }    timeout { fail "(timeout) print pmf" }}# Ptype a pointer to a pointer to a methodsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "ptype pmf_p\n"gdb_expect {   -re "type = int \\( A::\\*\\*\\)\\(\\.\\.\\.\\)\r\n$gdb_prompt $" {      pass "ptype pmf_p"    }    -re ".*$gdb_prompt $" { fail "ptype pmf_p" }    timeout { fail "(timeout) ptype pmf_p" }}# print a pointer to a pointer to a methodsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print pmf_p\n"gdb_expect {   -re "\\$\[0-9\]* = \\(int \\( A::\\*\\*\\)\\(\\.\\.\\.\\)\\) $hex\r\n$gdb_prompt $" {      pass "print pmf_p"    }    -re ".*$gdb_prompt $" { fail "print pmf_p" }    timeout { fail "(timeout) print pmf_p" }}# print dereferenced pointer to methodsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a.*pmf\n"gdb_expect {   -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {      pass "print a.*pmf (known aCC limitation)"    }    -re ".*$gdb_prompt $" { fail "print a.*pmf" }    timeout { fail "(timeout) print a.*pmf" }}# print dereferenced pointer to method, using ->*setup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a_p->*pmf\n"gdb_expect {   -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {      pass "print a_p->*pmf (known aCC limitation)"    }    -re ".*$gdb_prompt $" { fail "print a_p->*pmf" }    timeout { fail "(timeout) print a_p->*pmf" }}# set the pointer to data membersetup_xfail "hppa*-*-*"send_gdb "set var pmf = &A::foo\n"gdb_expect {   -re "Assignment to pointers to methods not implemented with HP aCC\r\n$gdb_prompt $" {      pass "set var pmf (known aCC limitation)"    }    -re ".*$gdb_prompt $" { fail "set var pmf" }    timeout { fail "(timeout) set var pmf" }}# Try to dereference the pointer to method without any objectsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print *pmf\n"gdb_expect {   -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {      pass "attempt to print  ptr to method without object"    }    -re ".*$gdb_prompt $" { fail "attempt to print ptr to method without object" }    timeout { fail "(timeout) attempt to print ptr to method without object" }}# Try to ptype a dereference of the pointer to method without any objectsend_gdb "ptype *pmi\n"gdb_expect {   -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {      pass "attempt to ptype ptr to member without object"    }    -re ".*$gdb_prompt $" { fail "attempt to ptype ptr to member without object" }    timeout { fail "(timeout) attempt to ptype ptr to member without object" }}# Check cast of pointer to member to integersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print (int) pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 8\r\n$gdb_prompt $" {      pass "casting pmi to int"    }    -re ".*$gdb_prompt $" { fail "casting pmi to int" }    timeout { fail "(timeout) casting pmi to int" }}# Check cast of pointer to method to integersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print (int) pmf\n"gdb_expect {   -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {      pass "casting pmf to int (known aCC limitation)"    }    -re ".*$gdb_prompt $" { fail "casting pmf to int" }    timeout { fail "(timeout) casting pmf to int" }}# Try to invoke a function through a pointer to data membersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print (a.*pmi)(3)\n"gdb_expect {   -re "Not implemented: function invocation through pointer to method with HP aCC\r\n$gdb_prompt $" {      pass "print (a.*pmi)(3) -- error message should be different"    }    -re ".*$gdb_prompt $" { fail "print (a.*pmi)(3)" }    timeout { fail "(timeout) print (a.*pmi)(3)" }}# Try to invoke a function through a pointer to a methodsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print (a.*pmf)(3)\n"gdb_expect {   -re "Not implemented: function invocation through pointer to method with HP aCC\r\n$gdb_prompt $" {      pass "print (a.*pmi)(3) -- known aCC limitation"    }    -re ".*$gdb_prompt $" { fail "print (a.*pmf)(3)" }    timeout { fail "(timeout) print (a.*pmf)(3)" }}# Go past assignment of NULL to pmisetup_xfail "hppa*-*-*" CLLbs16901send_gdb "next\n"gdb_expect {   -re "\r\n85\[ \t\]*k = \\(a.\\*pmf\\)\\(3\\);\r\n$gdb_prompt $" {      pass "next past 83"    }    -re ".*$gdb_prompt $" { fail "next past 83" }    timeout { fail "(timeout) next past 83" }}#send_gdb "print pmi\n"#gdb_expect {#   -re "Attempted dereference of null pointer-to-member\r\n$gdb_prompt $" {#      pass ""#    }#    -re ".*$gdb_prompt $" { fail "" }#    timeout { fail "(timeout) " }#}# Dereference the null pointer to membersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a.*pmi\n"gdb_expect {   -re "Attempted dereference of null pointer-to-member\r\n$gdb_prompt $" {      pass "print a.*NULL"    }    -re ".*$gdb_prompt $" { fail "print a.*NULL" }    timeout { fail "(timeout) print a.*NULL" }}# Go to another part of the programsend_gdb "break 91\n"gdb_expect {   -re "Breakpoint \[0-9\]*.*line 91\\.\r\n$gdb_prompt $" {      pass "set break at 91"    }    -re ".*$gdb_prompt $" { fail "set break at 91" }    timeout { fail "(timeout) set break at 91" }}setup_xfail "hppa*-*-*" CLLbs16901send_gdb "continue\n"gdb_expect {   -re "Continuing\\.\r\n\r\nBreakpoint.*at.*member-ptr\\.cc:91\r\n91\[ \t]*k = \\(a.\\*pmf\\)\\(4\\);\r\n$gdb_prompt $" {      pass "continue to 91"    }    -re ".*$gdb_prompt $" { fail "continue to 91" }    timeout { fail "(timeout) continue to 91" }}# Now check again that pmi works even when not set to# something that's at the beginning of the objectsetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print pmi\n"gdb_expect {   -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\) &A::jj\r\n$gdb_prompt $" {      pass "print pmi (2)"    }    -re ".*$gdb_prompt $" { fail "print pmi (2)" }    timeout { fail "(timeout) print pmi (2)" }}# print dereferenced pointer to data membersetup_xfail "hppa*-*-*" CLLbs16901send_gdb "print a.*pmi\n"gdb_expect {   -re "\\$\[0-9\]* = 1331\r\n$gdb_prompt $" {      pass "print a.*pmi (2)"    }    -re ".*$gdb_prompt $" { fail "print a.*pmi (2)" }    timeout { fail "(timeout) print a.*pmi (2)" }}# 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\]* = 1331\r\n$gdb_prompt $" {      pass "print a->*pmi"    }    -re ".*$gdb_prompt $" { fail "print a->*pmi (2)" }    timeout { fail "(timeout) print a->*pmi (2)" }}# p a.*pmf - fail# p pmi# p a.*pmi

⌨️ 快捷键说明

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