Hello community, here is the log from the commit of package gdb for openSUSE:Factory checked in at Mon Mar 2 15:46:35 CET 2009. -------- --- gdb/gdb.changes 2009-02-16 11:40:05.000000000 +0100 +++ /mounts/work_src_done/STABLE/gdb/gdb.changes 2009-03-02 11:42:24.000000000 +0100 @@ -1,0 +2,5 @@ +Mon Mar 2 11:42:03 CET 2009 - rguenther@suse.de + +- Integrate support for transparently debugging inline functions. + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- gdb-6.8-inlining-addon.patch gdb-6.8-inlining-by-name.patch gdb-6.8-inlining.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gdb.spec ++++++ --- /var/tmp/diff_new_pack.B25920/_old 2009-03-02 15:46:20.000000000 +0100 +++ /var/tmp/diff_new_pack.B25920/_new 2009-03-02 15:46:20.000000000 +0100 @@ -20,7 +20,7 @@ Name: gdb Summary: The GNU Debugger Version: 6.8.50.20090216 -Release: 1 +Release: 2 BuildRequires: bison dejagnu flex gcc-c++ gcc-fortran gcc-java gcc-objc python-devel readline-devel zlib-devel %if 0%{?suse_version} > 1020 BuildRequires: libexpat-devel @@ -43,6 +43,7 @@ PreReq: %{install_info_prereq} Recommends: python %define sss -cvs +BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: gdb-%{version}%{sss}.tar.bz2 Patch: cell-combined.diff Patch1: find-pc-sect-line.diff @@ -54,7 +55,11 @@ Patch8: find-separate-debug-file.diff Patch9: fix-gdb-backtrace.diff Patch10: expand-line-sal-maybe.diff -BuildRoot: %{_tmppath}/%{name}-%{version}-build +# Patches from Fedora +# Support transparent debugging of inlined functions for an optimized code. +Patch327: gdb-6.8-inlining.patch +Patch350: gdb-6.8-inlining-addon.patch +Patch328: gdb-6.8-inlining-by-name.patch %description You can use GDB to debug programs written in C, C++, Ada, and Modula-2. @@ -123,6 +128,9 @@ %patch8 %patch9 %patch10 +%patch327 -p1 +%patch350 -p1 +%patch328 -p1 %build %ifarch %ix86 ia64 ppc ppc64 s390 s390x x86_64 @@ -199,6 +207,8 @@ %endif %changelog +* Mon Mar 02 2009 rguenther@suse.de +- Integrate support for transparently debugging inline functions. * Mon Feb 16 2009 schwab@suse.de - Update to head to trunk. * Tue Feb 03 2009 schwab@suse.de ++++++ gdb-6.8-inlining-addon.patch ++++++ ++++ 677 lines (skipped) ++++++ gdb-6.8-inlining-by-name.patch ++++++ Implement `b <funcname>' for <funcname> with concete inlined instances by a multiple-PC breakpoint. Index: gdb-6.8.50.20081128/gdb/ada-lang.c =================================================================== --- gdb-6.8.50.20081128.orig/gdb/ada-lang.c 2008-11-25 00:21:15.000000000 +0100 +++ gdb-6.8.50.20081128/gdb/ada-lang.c 2008-12-06 21:39:56.000000000 +0100 @@ -4614,7 +4614,7 @@ remove_irrelevant_renamings (struct ada_ if (current_block == NULL) return nsyms; - current_function = block_linkage_function (current_block); + current_function = block_function (current_block); if (current_function == NULL) return nsyms; @@ -6625,7 +6625,7 @@ ada_find_renaming_symbol (const char *na static struct symbol * find_old_style_renaming_symbol (const char *name, struct block *block) { - const struct symbol *function_sym = block_linkage_function (block); + const struct symbol *function_sym = block_function (block); char *rename; if (function_sym != NULL) Index: gdb-6.8.50.20081128/gdb/block.c =================================================================== --- gdb-6.8.50.20081128.orig/gdb/block.c 2008-12-06 14:06:16.000000000 +0100 +++ gdb-6.8.50.20081128/gdb/block.c 2008-12-06 21:40:29.000000000 +0100 @@ -75,6 +75,19 @@ block_linkage_function (const struct blo return BLOCK_FUNCTION (bl); } +/* Return the symbol for the function which contains a specified + lexical block, described by a struct block BL. Inlined functions + can be returned. */ + +struct symbol * +block_function (const struct block *bl) +{ + while (BLOCK_FUNCTION (bl) == NULL && BLOCK_SUPERBLOCK (bl) != NULL) + bl = BLOCK_SUPERBLOCK (bl); + + return BLOCK_FUNCTION (bl); +} + /* Return one if BL represents an inlined function. */ int Index: gdb-6.8.50.20081128/gdb/block.h =================================================================== --- gdb-6.8.50.20081128.orig/gdb/block.h 2008-12-06 14:06:16.000000000 +0100 +++ gdb-6.8.50.20081128/gdb/block.h 2008-12-06 21:39:56.000000000 +0100 @@ -133,6 +133,7 @@ struct blockvector enum { GLOBAL_BLOCK = 0, STATIC_BLOCK = 1, FIRST_LOCAL_BLOCK = 2 }; extern struct symbol *block_linkage_function (const struct block *); +extern struct symbol *block_function (const struct block *bl); extern int block_inlined_p (const struct block *block); Index: gdb-6.8.50.20081128/gdb/blockframe.c =================================================================== --- gdb-6.8.50.20081128.orig/gdb/blockframe.c 2008-12-06 14:06:16.000000000 +0100 +++ gdb-6.8.50.20081128/gdb/blockframe.c 2008-12-06 21:39:56.000000000 +0100 @@ -143,7 +143,7 @@ find_pc_sect_function (CORE_ADDR pc, str struct block *b = block_for_pc_sect (pc, section); if (b == 0) return 0; - return block_linkage_function (b); + return block_function (b); } /* Return the function containing pc value PC. Index: gdb-6.8.50.20081128/gdb/breakpoint.c =================================================================== --- gdb-6.8.50.20081128.orig/gdb/breakpoint.c 2008-12-06 14:06:17.000000000 +0100 +++ gdb-6.8.50.20081128/gdb/breakpoint.c 2008-12-06 21:39:56.000000000 +0100 @@ -5712,7 +5712,7 @@ resolve_sal_pc (struct symtab_and_line * bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab); if (bv != NULL) { - sym = block_linkage_function (b); + sym = block_function (b); if (sym != NULL) { fixup_symbol_section (sym, sal->symtab->objfile); Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.opt/inline-cmds.exp =================================================================== --- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.opt/inline-cmds.exp 2008-12-06 21:37:27.000000000 +0100 +++ gdb-6.8.50.20081128/gdb/testsuite/gdb.opt/inline-cmds.exp 2008-12-06 21:41:37.000000000 +0100 @@ -45,8 +45,10 @@ if { [skip_inline_frame_tests] } { # First, check that the things we expected to be inlined really were, # and those that shouldn't be weren't. -set line1 [gdb_get_line_number "set breakpoint 1 here" ${srcfile2}] -gdb_breakpoint $srcfile2:$line1 +# We test also inlining by the function name, otherwise we would use: +# set line1 [gdb_get_line_number "set breakpoint 1 here" ${srcfile2}] +# gdb_breakpoint $srcfile2:$line1 +gdb_breakpoint "bar" set line2 [gdb_get_line_number "set breakpoint 2 here" ${srcfile2}] gdb_breakpoint $srcfile2:$line2 ++++++ gdb-6.8-inlining.patch ++++++ ++++ 3271 lines (skipped) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org