From 1faf245e876f9b110d1d8f853e303e092cb9d38b Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Feb 13 2011 09:53:30 +0000 Subject: - Fix occasionall unfound source lines (affecting at least glibc debugging). - Fix const/volatile qualifiers of C++ types (PR c++/12328). --- diff --git a/gdb-upstream.patch b/gdb-upstream.patch index ad3d10c..4759c7b 100644 --- a/gdb-upstream.patch +++ b/gdb-upstream.patch @@ -465,3 +465,210 @@ http://sourceware.org/ml/gdb-cvs/2010-09/msg00080.html +gdb_test_no_output "python a = gdb.execute('help', to_string=True)" "collect help from uiout" + +gdb_test "python print a" ".*aliases -- Aliases of other commands.*" "verify help to uiout" + + + +http://sourceware.org/ml/gdb-cvs/2011-02/msg00063.html + +### src/gdb/ChangeLog 2011/02/12 13:07:38 1.12557 +### src/gdb/ChangeLog 2011/02/13 09:09:33 1.12558 +## -1,3 +1,9 @@ ++2011-02-13 Jan Kratochvil ++ ++ * symtab.c (find_pc_sect_line): New variable objfile, initialize it ++ from S. Iterate S using ALL_OBJFILE_SYMTABS. Verify BV for each S. ++ * symtab.h (struct symtab) : Comment extension. ++ + 2011-02-12 Yao Qi + + * Makefile.in (CLEANDIRS): Remove duplicated common dir. +--- src/gdb/symtab.c 2011/01/11 21:53:24 1.257 ++++ src/gdb/symtab.c 2011/02/13 09:09:36 1.258 +@@ -1904,6 +1904,7 @@ + struct blockvector *bv; + struct minimal_symbol *msymbol; + struct minimal_symbol *mfunsym; ++ struct objfile *objfile; + + /* Info on best line seen so far, and where it starts, and its file. */ + +@@ -2031,13 +2032,17 @@ + } + + bv = BLOCKVECTOR (s); ++ objfile = s->objfile; + + /* Look at all the symtabs that share this blockvector. + They all have the same apriori range, that we found was right; + but they have different line tables. */ + +- for (; s && BLOCKVECTOR (s) == bv; s = s->next) ++ ALL_OBJFILE_SYMTABS (objfile, s) + { ++ if (BLOCKVECTOR (s) != bv) ++ continue; ++ + /* Find the best line in this symtab. */ + l = LINETABLE (s); + if (!l) +--- src/gdb/symtab.h 2011/01/11 21:53:25 1.168 ++++ src/gdb/symtab.h 2011/02/13 09:09:36 1.169 +@@ -738,8 +738,7 @@ + + struct symtab + { +- +- /* Chain of all existing symtabs. */ ++ /* Unordered chain of all existing symtabs of this objfile. */ + + struct symtab *next; + + + + +http://sourceware.org/ml/gdb-cvs/2011-02/msg00064.html + +### src/gdb/ChangeLog 2011/02/13 09:09:33 1.12558 +### src/gdb/ChangeLog 2011/02/13 09:15:50 1.12559 +## -1,5 +1,12 @@ + 2011-02-13 Jan Kratochvil + ++ Fix const/volatile qualifiers of C++ types, PR c++/12328. ++ * c-typeprint.c (c_type_print_args): Update the function comment. New ++ variable param_type, initialize it. Remove const/volatile qualifiers ++ for language_cplus and !show_artificial. Use param_type. ++ ++2011-02-13 Jan Kratochvil ++ + * symtab.c (find_pc_sect_line): New variable objfile, initialize it + from S. Iterate S using ALL_OBJFILE_SYMTABS. Verify BV for each S. + * symtab.h (struct symtab) : Comment extension. +--- src/gdb/c-typeprint.c 2011/01/07 19:36:15 1.68 ++++ src/gdb/c-typeprint.c 2011/02/13 09:15:53 1.69 +@@ -371,9 +371,12 @@ c_type_print_modifier (struct type *type + /* Print out the arguments of TYPE, which should have TYPE_CODE_METHOD + or TYPE_CODE_FUNC, to STREAM. Artificial arguments, such as "this" + in non-static methods, are displayed if SHOW_ARTIFICIAL is +- non-zero. LANGUAGE is the language in which TYPE was defined. This is +- a necessary evil since this code is used by the C, C++, and Java +- backends. */ ++ non-zero. If SHOW_ARTIFICIAL is zero and LANGUAGE is language_cplus ++ the topmost parameter types get removed their possible const and volatile ++ qualifiers to match demangled linkage name parameters part of such function ++ type. LANGUAGE is the language in which TYPE was defined. This is ++ a necessary evil since this code is used by the C, C++, and Java backends. ++ */ + + void + c_type_print_args (struct type *type, struct ui_file *stream, +@@ -406,6 +409,8 @@ + + for (i = 0; i < TYPE_NFIELDS (type); i++) + { ++ struct type *param_type; ++ + if (TYPE_FIELD_ARTIFICIAL (type, i) && !show_artificial) + continue; + +@@ -398,10 +403,24 @@ c_type_print_args (struct type *type, st + wrap_here (" "); + } + ++ param_type = TYPE_FIELD_TYPE (type, i); ++ ++ if (language == language_cplus && !show_artificial) ++ { ++ /* C++ standard, 13.1 Overloadable declarations, point 3, item: ++ - Parameter declarations that differ only in the presence or ++ absence of const and/or volatile are equivalent. ++ ++ And the const/volatile qualifiers are not present in the mangled ++ names as produced by GCC. */ ++ ++ param_type = make_cv_type (0, 0, param_type, NULL); ++ } ++ + if (language == language_java) +- java_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); ++ java_print_type (param_type, "", stream, -1, 0); + else +- c_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); ++ c_print_type (param_type, "", stream, -1, 0); + printed_any = 1; + } + +### src/gdb/testsuite/ChangeLog 2011/02/08 13:30:08 1.2576 +### src/gdb/testsuite/ChangeLog 2011/02/13 09:15:53 1.2577 +## -1,3 +1,9 @@ ++2011-02-13 Jan Kratochvil ++ ++ Fix const/volatile qualifiers of C++ types, PR c++/12328. ++ * gdb.cp/overload-const.exp: New file. ++ * gdb.cp/overload-const.cc: New file. ++ + 2011-02-08 Ulrich Weigand + + * gdb.opencl/callfuncs.cl: New file. +--- src/gdb/testsuite/gdb.cp/overload-const.cc ++++ src/gdb/testsuite/gdb.cp/overload-const.cc 2011-02-13 09:24:14.258748000 +0000 +@@ -0,0 +1,28 @@ ++/* 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 myclass ++{ ++public: ++ static void func(const int aa) {} ++}; ++ ++int ++main () ++{ ++ myclass::func (42); ++} +--- src/gdb/testsuite/gdb.cp/overload-const.exp ++++ src/gdb/testsuite/gdb.cp/overload-const.exp 2011-02-13 09:24:14.561175000 +0000 +@@ -0,0 +1,29 @@ ++# 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 "overload-const" ++if [prepare_for_testing $testfile $testfile $testfile.cc {c++ debug}] { ++ return -1 ++} ++ ++gdb_test_no_output "set language c++" ++ ++if [gdb_breakpoint "myclass::func"] { ++ pass "setting breakpoint at myclass::func" ++} diff --git a/gdb.spec b/gdb.spec index 92ca7ac..69e58e5 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: 41%{?_with_upstream:.upstream}%{dist} +Release: 42%{?_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 @@ -1441,6 +1441,10 @@ fi %endif %changelog +* Sun Feb 13 2011 Jan Kratochvil - 7.2-42.fc14 +- Fix occasionall unfound source lines (affecting at least glibc debugging). +- Fix const/volatile qualifiers of C++ types (PR c++/12328). + * Fri Feb 4 2011 Jan Kratochvil - 7.2-41.fc14 - Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz).