📄 inherit.exp
字号:
} -re ".* = 15$nl$gdb_prompt $" { fail "print g_D.A::a (FIXME)" } -re ".* = 11$nl$gdb_prompt $" { fail "print g_D.A::a (FIXME)" } -re ".*$gdb_prompt $" { fail "print g_D.A::a" } timeout { fail "print g_D.A::a (timeout)" ; return } } # The following is ambiguous, and gdb should detect this. # For now, accept gdb's behavior as an expected failure if it # simply prints either member correctly. if {!$hp_aCC_compiler} {setup_xfail "*-*-*"} send_gdb "print g_D.A::x\n" gdb_expect { -re "warning: A ambiguous; using D::C::A. Use a cast to disambiguate.$nl\\$\[0-9\]* = 16$nl$gdb_prompt $" { pass "print g_D.A::x" } -re "warning: A ambiguous; using D::B::A. Use a cast to disambiguate.$nl\\$\[0-9\]* = 12$nl$gdb_prompt $" { pass "print g_D.A::x (using B)" } -re ".* = 16$nl$gdb_prompt $" { fail "print g_D.A::x (FIXME)" } -re ".* = 12$nl$gdb_prompt $" { fail "print g_D.A::x (FIXME)" } -re ".*$gdb_prompt $" { fail "print g_D.A::x" } timeout { fail "print g_D.A::x (timeout)" ; return } } gdb_test "print g_D.B::b" ".* = 13" "print g_D.B::b" gdb_test "print g_D.B::x" ".* = 14" "print g_D.B::x" setup_xfail_format "DWARF 1" gdb_test "print g_D.C::c" ".* = 17" "print g_D.C::c" setup_xfail_format "DWARF 1" gdb_test "print g_D.C::x" ".* = 18" "print g_D.C::x" gdb_test "print g_D.D::d" ".* = 19" "print g_D.D::d" gdb_test "print g_D.D::x" ".* = 20" "print g_D.D::x" # Print all members of g_E. # The following is ambiguous, and gdb should detect this. # For now, accept gdb's behavior as an expected failure if it # simply prints either member correctly. setup_xfail "*-*-*" send_gdb "print g_E.A::a\n" gdb_expect { -re ".* = 21$nl$gdb_prompt $" { fail "print g_E.A::a (FIXME)" } -re ".* = 25$nl$gdb_prompt $" { fail "print g_E.A::a (FIXME)" } -re ".*$gdb_prompt $" { fail "print g_E.A::a" } timeout { fail "print g_E.A::a (timeout)" ; return } } # The following is ambiguous, and gdb should detect this. # For now, accept gdb's behavior as an expected failure if it # simply prints either member correctly. if {!$hp_aCC_compiler} {setup_xfail "*-*-*"} send_gdb "print g_E.A::x\n" gdb_expect { -re "warning: A ambiguous; using E::D::C::A. Use a cast to disambiguate.$nl\\$\[0-9\]* = 26$nl$gdb_prompt $" { pass "print g_E.A::x" } -re "warning: A ambiguous; using E::D::B::A. Use a cast to disambiguate.$nl\\$\[0-9\]* = 22$nl$gdb_prompt $" { pass "print g_E.A::x (using B)" } -re ".* = 26$nl$gdb_prompt $" { fail "print g_E.A::x (FIXME)" } -re ".* = 22$nl$gdb_prompt $" { fail "print g_E.A::x (FIXME)" } -re ".*$gdb_prompt $" { fail "print g_E.A::x" } timeout { fail "print g_E.A::x (timeout)" ; return } } gdb_test "print g_E.B::b" ".* = 23" "print g_E.B::b" gdb_test "print g_E.B::x" ".* = 24" "print g_E.B::x" setup_xfail_format "DWARF 1" gdb_test "print g_E.C::c" ".* = 27" "print g_E.C::c" setup_xfail_format "DWARF 1" gdb_test "print g_E.C::x" ".* = 28" "print g_E.C::x" gdb_test "print g_E.D::d" ".* = 29" "print g_E.D::d" gdb_test "print g_E.D::x" ".* = 30" "print g_E.D::x" gdb_test "print g_E.E::e" ".* = 31" "print g_E.E::e" gdb_test "print g_E.E::x" ".* = 32" "print g_E.E::x"}## Multiple inheritance, print type definitions.#proc test_ptype_mi {} { global nl setup_xfail_format "DWARF 1" gdb_test "ptype D" "type = class D : public B, public C \{$nl\[ \]*public:$nl\[ \]*int d;$nl\[ \]*int x;$nl.*\}" "ptype D" setup_xfail_format "DWARF 1" gdb_test "ptype class D" "type = class D : public B, public C \{$nl\[ \]*public:$nl\[ \]*int d;$nl\[ \]*int x;$nl.*\}" "ptype class D" setup_xfail_format "DWARF 1" gdb_test "ptype g_D" "type = class D : public B, public C \{$nl\[ \]*public:$nl\[ \]*int d;$nl\[ \]*int x;$nl.*\}" "ptype g_D" setup_xfail_format "DWARF 1" gdb_test "ptype E" "type = class E : public D \{$nl\[ \]*public:$nl\[ \]*int e;$nl\[ \]*int x;$nl.*\}" "ptype E" setup_xfail_format "DWARF 1" gdb_test "ptype class E" "type = class E : public D \{$nl\[ \]*public:$nl\[ \]*int e;$nl\[ \]*int x;$nl.*\}" "ptype class E" setup_xfail_format "DWARF 1" gdb_test "ptype g_E" "type = class E : public D \{$nl\[ \]*public:$nl\[ \]*int e;$nl\[ \]*int x;$nl.*\}" "ptype g_E"}## Multiple inheritance, print complete classes.#proc test_print_mi_classes {} { # Print all members of g_D. setup_xfail_format "DWARF 1" gdb_test "print g_D" ".* = \{\<(class |)B\> = \{\<(class |)A\> = \{a = 11, x = 12\}, b = 13, x = 14\}, \<(class |)C\> = \{\<(class |)A\> = \{a = 15, x = 16\}, c = 17, x = 18\}, d = 19, x = 20\}" "print g_D" # Print all members of g_E. setup_xfail_format "DWARF 1" gdb_test "print g_E" ".* = \{\<(class |)D\> = \{\<(class |)B\> = \{\<(class |)A\> = \{a = 21, x = 22\}, b = 23, x = 24\}, \<(class |)C\> = \{\<(class |)A\> = \{a = 25, x = 26\}, c = 27, x = 28\}, d = 29, x = 30\}, e = 31, x = 32\}" "print g_E"}## Single virtual inheritance, print individual members.#proc test_print_svi_members {} { global gdb_prompt global decimal global nl # Print all members of g_vA. gdb_test "print g_vA.vA::va" ".* = 1" "print g_vA.vA::va" gdb_test "print g_vA.vA::vx" ".* = 2" "print g_vA.vA::vx" # Print members of g_vA using compact form. gdb_test "print g_vA.va" ".* = 1" "print g_vA.va" gdb_test "print g_vA.vx" ".* = 2" "print g_vA.vx" # Print all members of g_vB. setup_xfail_format "DWARF 1" send_gdb "print g_vB.vA::va\n" gdb_expect { -re ".* = 3$nl$gdb_prompt $" { pass "print g_vB.vA::va" } -re ".*virtual baseclass botch.*$gdb_prompt $" { # Does not happen with gcc cygnus-2.4.5-930828 fail "print g_vB.vA::va (known bug with gcc cygnus-2.4.5-930417)" # Many of the rest of these tests have the same problem. return 0 } -re ".*$gdb_prompt $" { fail "print g_vB.vA::va" } timeout { fail "print g_vB.vA::va (timeout)" ; return } } setup_xfail_format "DWARF 1" gdb_test "print g_vB.vA::vx" ".* = 4" "print g_vB.vA::vx" gdb_test "print g_vB.vB::vb" ".* = 5" "print g_vB.vB::vb" gdb_test "print g_vB.vB::vx" ".* = 6" "print g_vB.vB::vx" # Print members of g_vB using compact form. setup_xfail_format "DWARF 1" gdb_test "print g_vB.va" ".* = 3" "print g_vB.va" gdb_test "print g_vB.vb" ".* = 5" "print g_vB.vb" gdb_test "print g_vB.vx" ".* = 6" "print g_vB.vx" # Print all members of g_vC. setup_xfail_format "DWARF 1" gdb_test "print g_vC.vA::va" ".* = 7" "print g_vC.vA::va" setup_xfail_format "DWARF 1" gdb_test "print g_vC.vA::vx" ".* = 8" "print g_vC.vA::vx" gdb_test "print g_vC.vC::vc" ".* = 9" "print g_vC.vC::vc" gdb_test "print g_vC.vC::vx" ".* = 10" "print g_vC.vC::vx" # Print members of g_vC using compact form. setup_xfail_format "DWARF 1" gdb_test "print g_vC.va" ".* = 7" "print g_vC.va" gdb_test "print g_vC.vc" ".* = 9" "print g_vC.vc" gdb_test "print g_vC.vx" ".* = 10" "print g_vC.vx"}## Single virtual inheritance, print type definitions.#proc test_ptype_vi {} { global gdb_prompt global ws global nl global vbptr # This class does not use any C++-specific features, so it's fine for # it to print as "struct". send_gdb "ptype vA\n" gdb_expect { -re "type = class vA \{$nl\[ \]*public:$nl\[ \]*int va;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype vA" } -re "type = struct vA \{$nl\[ \]*int va;$nl\[ \]*int vx;$nl\}$nl$gdb_prompt $" { pass "ptype vA" } -re ".*$gdb_prompt $" { fail "ptype vA" } timeout { fail "ptype vA (timeout)" ; return } } # This class does not use any C++-specific features, so it's fine for # it to print as "struct". send_gdb "ptype class vA\n" gdb_expect { -re "type = class vA \{$nl\[ \]*public:$nl\[ \]*int va;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype class vA" } -re "type = struct vA \{$nl\[ \]*int va;$nl\[ \]*int vx;$nl\}$nl$gdb_prompt $" { pass "ptype class vA" } -re ".*$gdb_prompt $" { fail "ptype class vA" } timeout { fail "ptype class vA (timeout)" ; return } } # This class does not use any C++-specific features, so it's fine for # it to print as "struct". send_gdb "ptype g_vA\n" gdb_expect { -re "type = class vA \{$nl\[ \]*public:$nl\[ \]*int va;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype g_vA" } -re "type = struct vA \{$nl\[ \]*int va;$nl\[ \]*int vx;$nl\}$nl$gdb_prompt $" { pass "ptype g_vA" } -re ".*$gdb_prompt $" { fail "ptype g_vA" } timeout { fail "ptype g_vA (timeout)" ; return } } setup_xfail_format "DWARF 1" send_gdb "ptype vB\n" gdb_expect { -re "ptype vB${nl}type = class vB : public virtual vA \{$nl private:${ws}vA \\*${vbptr}vA;$nl public:${ws}int vb;${ws}int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype vB" } -re "ptype vB${nl}type = class vB : public virtual vA \{$nl public:${ws}int vb;${ws}int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype vB (aCC)" } -re ".*$gdb_prompt $" { fail "ptype vB" } timeout { fail "ptype vB (timeout)" } } setup_xfail_format "DWARF 1" send_gdb "ptype class vB\n" gdb_expect { -re "type = class vB : public virtual vA \{$nl\[ \]*private:$nl\[ \]*vA \\*${vbptr}vA;$nl\[ \]*public:$nl\[ \]*int vb;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype class vB" } -re "type = class vB : public virtual vA \{$nl\[ \]*public:$nl\[ \]*int vb;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype class vB (aCC)" } -re ".*$gdb_prompt $" { fail "ptype class vB" } timeout { fail "ptype class vB (timeout)" } } setup_xfail_format "DWARF 1" send_gdb "ptype g_vB\n" gdb_expect { -re "type = class vB : public virtual vA \{$nl\[ \]*private:$nl\[ \]*vA \\*${vbptr}vA;$nl\[ \]*public:$nl\[ \]*int vb;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype g_vB" } -re "type = class vB : public virtual vA \{$nl\[ \]*public:$nl\[ \]*int vb;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype g_vB (aCC)" } -re ".*$gdb_prompt $" { fail "ptype g_vB" } timeout { fail "ptype g_vB (timeout)" } } setup_xfail_format "DWARF 1" send_gdb "ptype vC\n" gdb_expect { -re "type = class vC : public virtual vA \{$nl\[ \]*private:$nl\[ \]*vA \\*${vbptr}vA;$nl\[ \]*public:$nl\[ \]*int vc;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype vC" } -re "type = class vC : public virtual vA \{$nl\[ \]*public:$nl\[ \]*int vc;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype vC (aCC)" } -re ".*$gdb_prompt $" { fail "ptype vC" } timeout { fail "ptype vC (timeout)" } } setup_xfail_format "DWARF 1" send_gdb "ptype class vC\n" gdb_expect { -re "type = class vC : public virtual vA \{$nl\[ \]*private:$nl\[ \]*vA \\*${vbptr}vA;$nl\[ \]*public:$nl\[ \]*int vc;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype class vC" } -re "type = class vC : public virtual vA \{$nl\[ \]*public:$nl\[ \]*int vc;$nl\[ \]*int vx;$nl.*\}$nl$gdb_prompt $" { pass "ptype class vC (aCC)" } -re ".*$gdb_prompt $" { fail "ptype class vC" } timeout { fail "ptype class vC (timeout)" } } setup_xfail_format "DWARF 1" send_gdb "ptype g_vC\n" gdb_expect {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -