diff --git a/gdb-upstream.patch b/gdb-upstream.patch index 4759c7b..934f528 100644 --- a/gdb-upstream.patch +++ b/gdb-upstream.patch @@ -672,3 +672,142 @@ http://sourceware.org/ml/gdb-cvs/2011-02/msg00064.html +if [gdb_breakpoint "myclass::func"] { + pass "setting breakpoint at myclass::func" +} + + + +https://bugzilla.redhat.com/show_bug.cgi?id=678454 +http://sourceware.org/ml/gdb-cvs/2011-02/msg00133.html + +### src/gdb/ChangeLog 2011/02/18 16:43:50 1.12607 +### src/gdb/ChangeLog 2011/02/18 19:10:44 1.12608 +## -1,3 +1,10 @@ ++2011-02-18 Jan Kratochvil ++ Tom Tromey ++ ++ * cp-support.c (make_symbol_overload_list_namespace): Do not call ++ make_symbol_overload_list_block with NULL BLOCK. ++ * valarith.c (unop_user_defined_p): Resolve also TYPE_CODE_TYPEDEF. ++ + 2011-02-18 Pedro Alves + + * breakpoint.c (get_number_trailer): No longer accept a NULL PP. +--- src/gdb/cp-support.c 2011/01/05 22:22:47 1.47 ++++ src/gdb/cp-support.c 2011/02/18 19:10:46 1.48 +@@ -778,11 +778,13 @@ + + /* Look in the static block. */ + block = block_static_block (get_selected_block (0)); +- make_symbol_overload_list_block (name, block); ++ if (block) ++ make_symbol_overload_list_block (name, block); + + /* Look in the global block. */ + block = block_global_block (block); +- make_symbol_overload_list_block (name, block); ++ if (block) ++ make_symbol_overload_list_block (name, block); + + } + +--- src/gdb/valarith.c 2011/02/14 11:30:37 1.98 ++++ src/gdb/valarith.c 2011/02/18 19:10:46 1.99 +@@ -315,15 +315,9 @@ + if (op == UNOP_ADDR) + return 0; + type1 = check_typedef (value_type (arg1)); +- for (;;) +- { +- if (TYPE_CODE (type1) == TYPE_CODE_STRUCT) +- return 1; +- else if (TYPE_CODE (type1) == TYPE_CODE_REF) +- type1 = TYPE_TARGET_TYPE (type1); +- else +- return 0; +- } ++ if (TYPE_CODE (type1) == TYPE_CODE_REF) ++ type1 = check_typedef (TYPE_TARGET_TYPE (type1)); ++ return TYPE_CODE (type1) == TYPE_CODE_STRUCT; + } + + /* Try to find an operator named OPERATOR which takes NARGS arguments +### src/gdb/testsuite/ChangeLog 2011/02/17 22:08:12 1.2594 +### src/gdb/testsuite/ChangeLog 2011/02/18 19:10:46 1.2595 +## -1,3 +1,8 @@ ++2011-02-18 Jan Kratochvil ++ ++ * gdb.cp/typedef-operator.exp: New file. ++ * gdb.cp/typedef-operator.cc: New file. ++ + 2011-02-17 Michael Snyder + + * gdb.threads/thread-find.exp: Fix regular expressions. +--- src/gdb/testsuite/gdb.cp/typedef-operator.cc ++++ src/gdb/testsuite/gdb.cp/typedef-operator.cc 2011-02-21 17:18:30.419734000 +0000 +@@ -0,0 +1,31 @@ ++/* This test case is part of GDB, the GNU debugger. ++ ++ Copyright 2011 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 3 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, see . */ ++ ++class C ++{ ++public: ++ int operator* () { return 42; } ++}; ++typedef C D; ++ ++D u; ++D &v = u; ++ ++int main () ++{ ++ return *v; ++} +--- src/gdb/testsuite/gdb.cp/typedef-operator.exp ++++ src/gdb/testsuite/gdb.cp/typedef-operator.exp 2011-02-21 17:18:30.916753000 +0000 +@@ -0,0 +1,33 @@ ++# Copyright 2011 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 3 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, see . ++ ++# This file is part of the gdb testsuite. ++ ++if {[skip_cplus_tests]} { continue } ++ ++set testfile "typedef-operator" ++if [prepare_for_testing $testfile $testfile $testfile.cc {c++ debug}] { ++ return -1 ++} ++ ++gdb_test_no_output "set language c++" ++ ++gdb_test "p *u" {You can't do that without a process to debug.} "test crash" ++ ++if ![runto_main] { ++ return -1 ++} ++ ++gdb_test "p *v" " = 42" "test typedef" diff --git a/gdb.spec b/gdb.spec index dab40dc..358322d 100644 --- a/gdb.spec +++ b/gdb.spec @@ -27,7 +27,7 @@ Version: 7.2 # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. -Release: 43%{?_with_upstream:.upstream}%{dist} +Release: 44%{?_with_upstream:.upstream}%{dist} License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and GFDL and BSD and Public Domain Group: Development/Debuggers @@ -1447,6 +1447,9 @@ fi %endif %changelog +* Mon Feb 21 2011 Jan Kratochvil - 7.2-44.fc14 +- Fix C++ operators resolving through typedefs (STL from gcc-4.5, BZ 678454). + * Fri Feb 18 2011 Jan Kratochvil - 7.2-43.fc14 - [vla] Fox Fortran vector slices for allocated arrays (for BZ 609782).