From 434a474c381357aa9388f4d7baaf326e5b3b74b3 Mon Sep 17 00:00:00 2001 From: David Carlton Date: Fri, 17 Jan 2003 19:22:27 +0000 Subject: [PATCH] 2003-01-16 David Carlton * gdb.c++/cplusfuncs.exp (print_addr_2_kfail): New procedure. (test_paddr_hairy_functions): Call print_addr_2_kfail for hairyfunc5 through hairyfunc7. KFAIL for PR c++/19. --- gdb/testsuite/ChangeLog | 6 +++++ gdb/testsuite/gdb.c++/cplusfuncs.exp | 43 +++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 2831d317ed..b4e8589c6b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2003-01-16 David Carlton + + * gdb.c++/cplusfuncs.exp (print_addr_2_kfail): New procedure. + (test_paddr_hairy_functions): Call print_addr_2_kfail for + hairyfunc5 through hairyfunc7. KFAIL for PR c++/19. + 2003-01-15 Elena Zannoni * gdb.base/break.exp: Fix change of default location, because of diff --git a/gdb/testsuite/gdb.c++/cplusfuncs.exp b/gdb/testsuite/gdb.c++/cplusfuncs.exp index 9057cc290f..6f92817efd 100644 --- a/gdb/testsuite/gdb.c++/cplusfuncs.exp +++ b/gdb/testsuite/gdb.c++/cplusfuncs.exp @@ -1,4 +1,4 @@ -# Copyright 1992, 1997, 1999, 2001, 2002 Free Software Foundation, Inc. +# Copyright 1992, 1997, 1999, 2001, 2002, 2003 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 @@ -269,7 +269,9 @@ proc info_func { name demangled } { # Print the address of a function. # This checks that I can lookup a fully qualified C++ function. # This also checks the argument types on the return string. -# + +# Note: carlton/2003-01-16: If you modify this, make a corresponding +# modification to print_addr_2_kfail. proc print_addr_2 { name good } { global gdb_prompt @@ -291,6 +293,37 @@ proc print_addr_2 { name good } { } } +# NOTE: carlton/2003-01-16: hairyfunc5-6 fail on GCC 3.x (for at least +# x=1 and x=2.1). So I'm modifying print_addr_2 to accept a failure +# condition. FIXME: It would be nice if the failure condition were +# conditional on the compiler version, but I'm not sufficiently +# motivated. I did hardwire in the versions of char * and int *, +# which will give some compiler-specificity to the failure. + +proc print_addr_2_kfail { name good bad bugid } { + global gdb_prompt + global hex + + set good_pattern [string_to_regexp $good] + set bad_pattern [string_to_regexp $bad] + + send_gdb "print &'$name'\n" + gdb_expect { + -re ".* = .* $hex <$good_pattern>\r\n$gdb_prompt $" { + pass "print &'$name'" + } + -re ".* = .* $hex <$bad_pattern>\r\n$gdb_prompt $" { + kfail $bugid "print &'$name'" + } + -re ".*$gdb_prompt $" { + fail "print &'$name'" + } + timeout { + fail "print &'$name' (timeout)" + } + } +} + # # Simple interfaces to print_addr_2. # @@ -490,9 +523,9 @@ proc test_paddr_hairy_functions {} { # gdb-gnats bug gdb/19: # "gdb v3 demangler fails on hairyfunc5 hairyfunc6 hairyfunc7" - print_addr_2 "hairyfunc5" "hairyfunc5(int (*(*)($dm_type_char_star))(long))" - print_addr_2 "hairyfunc6" "hairyfunc6(int (*(*)($dm_type_int_star))(long))" - print_addr_2 "hairyfunc7" "hairyfunc7(int (*(*)(int (*)($dm_type_char_star)))(long))" + print_addr_2_kfail "hairyfunc5" "hairyfunc5(int (*(*)($dm_type_char_star))(long))" "hairyfunc5(int (*)(long) (*)(char*))" "gdb/19" + print_addr_2_kfail "hairyfunc6" "hairyfunc6(int (*(*)($dm_type_int_star))(long))" "hairyfunc6(int (*)(long) (*)(int*))" "gdb/19" + print_addr_2_kfail "hairyfunc7" "hairyfunc7(int (*(*)(int (*)($dm_type_char_star)))(long))" "hairyfunc7(int (*)(long) (*)(int (*)(char*)))" "gdb/19" } proc do_tests {} { -- 2.11.0