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

📄 templates.exp

📁 这个是LINUX下的GDB调度工具的源码
💻 EXP
📖 第 1 页 / 共 2 页
字号:
# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004# 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.  # This file was written by Fred Fish. (fnf@cygnus.com)set ws "\[\r\n\t \]+"if $tracelevel then {	strace $tracelevel}if { [skip_cplus_tests] } { continue }set testfile "templates"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}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."}##  Test printing of the types of templates.#proc test_ptype_of_templates {} {    global gdb_prompt    global ws    send_gdb "ptype T5<int>\n"    gdb_expect {	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {	    pass "ptype T5<int>"	}	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" {	    pass "ptype T5<int>"	}	-re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { pass "ptype T5<int> -- new with unsigned int" }	-re "type = class T5<int> \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5<int> &\\);.*void ~T5 \\(int\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" { pass "ptype T5<int> -- new with unsigned long" }	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\((T5<int> const|const T5<int>) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" {	    pass "ptype T5<int> (obsolescent gcc or gdb)"	}	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\(unsigned( int| long|)\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {	    # This also triggers gdb/1113...	    kfail "gdb/1111" "ptype T5<int>"	}	-re ".*$gdb_prompt $" {	    fail "ptype T5<int>"	}	timeout {	    fail "ptype T5<int> (timeout)"	}    }    send_gdb "ptype t5i\n"    gdb_expect {        -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5\\(int\\);${ws}T5\\(T5<int> const ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype T5<int> -- with several fixes from 4.17" }        -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype t5i<int> -- new with unsigned int" }        -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype t5i<int> -- new with unsigned long" }        -re "type = class T5<int> \{.*public:.*static int X;.*int x;.*int val;.*.*T5 \\(int\\);.*.*void ~T5 \\(int\\).*.*.*int value \\((void|)\\);.*\}.*$gdb_prompt $" {             pass "ptype t5i"        }	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {	    pass "ptype t5i"	}	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" {	    pass "ptype t5i"	}	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\(T5<int> const ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" {	    pass "ptype t5i (obsolescent gcc or gdb)"	}	-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\(unsigned( int| long|)\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {	    # This also triggers gdb/1113...	    kfail "gdb/1111" "ptype T5<int>"	}	-re ".*$gdb_prompt $" {	    fail "ptype t5i"	}	timeout {	    fail "ptype t5i (timeout)"	}    }}##  Test breakpoint setting on template methods.#proc test_template_breakpoints {} {    global gdb_prompt    global testfile    global srcdir    global hp_aCC_compiler    send_gdb "break T5<int>::T5\n"    gdb_expect {	-re "0. cancel.*\[\r\n\]*.1. all.*\[\r\n\]*.2. T5<int>::T5\\(int\\) at .*\[\r\n\]*.3. T5<int>::T5\\((T5<int> const|const T5<int>) ?&\\) at .*\[\r\n\]*> $" {	    gdb_test "0" \		"canceled" \		"constructor breakpoint (obsolete format!)"	}	-re ".0. cancel\[\r\n\]*.1. all\[\r\n\]*.2. T5<int>::T5\\((T5<int> const|const T5<int>) ?&\\) at .*templates.cc:.*\[\r\n\]*.3. T5<int>::T5\\(int\\) at .*templates.cc:.*\[\r\n\]*> $" {	    gdb_test "0" \		"canceled" \		"constructor breakpoint"	}	-re "0. cancel.*\[\r\n\]*.1. all.*\[\r\n\]*.2. T5 at .*\[\r\n\]*.3. T5 at .*\[\r\n\]*> $" {	    setup_kfail "gdb/1062" "*-*-*"	    gdb_test "0" \		"nonsense intended to insure that this test fails" \		"constructor breakpoint"	}        -re ".*\n> $" {	    gdb_test "0" \		    "nonsense intended to insure that this test fails" \		    "constructor breakpoint (bad menu choices)"	}	-re ".*$gdb_prompt $" { fail "constructor breakpoint" }	default { fail "constructor breakpoint (timeout)" }    }    # See CLLbs14792    if {$hp_aCC_compiler} {setup_xfail hppa*-*-* CLLbs14792}    gdb_test_multiple "break T5<int>::~T5" "destructor_breakpoint" {	-re "Breakpoint.*at.* file .*${testfile}.cc, line.*$gdb_prompt $"	{	    pass "destructor breakpoint"	}	-re "the class `T5<int>' does not have destructor defined\r\nHint: try 'T5<int>::~T5<TAB> or 'T5<int>::~T5<ESC-\\?>\r\n\\(Note leading single quote.\\)\r\n$gdb_prompt $"	{	    kfail "gdb/1112" "destructor breakpoint"	}    }        gdb_test "break T5<int>::value" \	"Breakpoint.*at.* file .*${testfile}.cc, line.*" \	"value method breakpoint"    delete_breakpoints}##  Test calling of template methods.#proc test_template_calls {} {    global gdb_prompt    global hp_aCC_compiler    if [target_info exists gdb,cannot_call_functions] {	setup_xfail "*-*-*" 2416	fail "This target can not call functions"	return    }    if {!$hp_aCC_compiler} {setup_xfail hppa*-*-*}    send_gdb "print t5i.value()\n"    gdb_expect {	-re ".* = 2\[\r\n\]*$gdb_prompt $" { pass "print t5i.value()" }	-re "Cannot invoke functions on this machine.*$gdb_prompt $" {	    fail "print t5i.value()"	}        -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {	    setup_xfail hppa*-*-* CLLbs16899            xfail "print t5i.value"	}	-re ".*$gdb_prompt $" { fail "print t5i.value()" }	timeout { fail "print t5i.value() (timeout)" }    }}proc do_tests {} {    global prms_id    global bug_id    global subdir    global objdir    global srcdir    global binfile    global gdb_prompt    set prms_id 0    set bug_id 0    # Start with a fresh gdb.    gdb_exit    gdb_start    gdb_reinitialize_dir $srcdir/$subdir    gdb_load $binfile    runto_main    test_ptype_of_templates    test_template_breakpoints    if [ runto_main] {	test_template_calls    }}do_tests# More tests for different kinds of template parameters,# templates with partial specializations, nested templates, etc.# These have been tested only with HP aCC.  They probably won't# work with other compilers because of differences in mangling# schemes. # Added by Satish Pai <pai@apollo.hp.com> 1997-09-25 # As of 2000-06-03, C++ support has been improved to the point that g++ can# pass all of theses, excluding what appears to be one that exposes a stabs bug. - djb# I don't know how HP could be passing these tests without this. They# weren't breakpointing past a point where the below expressions were# initialized in the actual source. - djbsend_gdb "b 770\n"gdb_expect {		-re ".*$gdb_prompt $"}send_gdb "c\n"gdb_expect {		-re ".*$gdb_prompt $"}send_gdb "print fint\n"   gdb_expect {      -re "\\$\[0-9\]* = \\{x = 0, t = 0\\}\r\n$gdb_prompt $" { pass "print fint" }   -re "$gdb_prompt $"                     { fail "print fint" }   timeout                             { fail "(timeout) print fint" }}send_gdb "print fvpchar\n"   gdb_expect {      -re "\\$\[0-9\]* = \\{x = 0, t = 0x0\\}\r\n$gdb_prompt $" { pass "print fvpchar" }   -re "$gdb_prompt $"                     { fail "print fvpchar" }   timeout                             { fail "(timeout) print fvpchar" }}# Template Foo<T># Neither stabs nor DWARF-2 contains type information about templates# (as opposed to instantiations of templates), so in those# circumstances we expect GDB to not find a symbol.  HP has a debug# format that contains more info, though, so it's also correct to# print out template info.  (This affects several subsequent tests as# well.)# NOTE: carlton/2003-02-26: However, because of a bug in the way GDB# handles nested types, we don't get this right in the DWARF-2 case.

⌨️ 快捷键说明

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