diff --git a/gdb-archer-backport.patch b/gdb-archer-backport.patch deleted file mode 100644 index 824a840..0000000 --- a/gdb-archer-backport.patch +++ /dev/null @@ -1,69 +0,0 @@ -From aafe933b497eee8cfab736a10bae1a90d4bceb18 Mon Sep 17 00:00:00 2001 -From: Tom Tromey -Date: Thu, 12 Mar 2009 13:06:15 -0600 -Subject: [PATCH] Remove duplicate target-wide-charset parameter - -2009-03-11 Tom Tromey - - * python/lib/gdb/libstdcxx/v6/printers.py (WideEncoding): Remove. - (target_wide_charset): Likewise. - (StdStringPrinter.to_string): Change encoding lookup. - (build_libstdcxx_dictionary): Update. ---- - gdb/python/lib/gdb/libstdcxx/v6/printers.py | 26 ++++---------------------- - 1 files changed, 4 insertions(+), 22 deletions(-) - -diff --git a/gdb/python/lib/gdb/libstdcxx/v6/printers.py b/gdb/python/lib/gdb/libstdcxx/v6/printers.py -index c0dc987..2572731 100644 ---- a/gdb/python/lib/gdb/libstdcxx/v6/printers.py -+++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py -@@ -436,22 +436,6 @@ class StdDequeIteratorPrinter: - def to_string(self): - return self.val['_M_cur'].dereference() - --class WideEncoding (gdb.Parameter): -- """The target wide character set is the encoding used for wchar_t.""" -- -- set_doc = "Set the target wide character set." -- show_doc = "Show the target wide character set." -- -- # FIXME: needs a complete method -- but does Parameter support it? -- def __init__ (self): -- super (WideEncoding, self).__init__ ("target-wide-charset", -- gdb.COMMAND_SUPPORT, -- gdb.PARAM_STRING) -- # I think this is ok for most glibc locales. -- self.value = 'UTF-32' -- --target_wide_charset = WideEncoding() -- - class StdStringPrinter: - "Print a std::basic_string of some kind" - -@@ -462,10 +446,8 @@ class StdStringPrinter: - def to_string(self): - # Look up the target encoding as late as possible. - encoding = self.encoding -- if encoding is None: -- encoding = gdb.parameter('target-charset') -- elif isinstance(encoding, WideEncoding): -- encoding = encoding.value -+ if encoding[0] is '@': -+ encoding = gdb.parameter(encoding[1:]) - return self.val['_M_dataplus']['_M_p'].string(encoding) - - def display_hint (self): -@@ -599,8 +581,8 @@ def build_libstdcxx_dictionary (): - # libstdc++ objects requiring pretty-printing. - # In order from: - # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html -- pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter(None, val) -- pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter(target_wide_charset, val) -+ pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('@target-charset', val) -+ pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('@target-wide-charset', val) - pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('UTF-16', val) - pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('UTF-32', val) - pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter --- -1.6.0.6 - diff --git a/gdb-archer.patch b/gdb-archer.patch index 6257740..db07dcb 100644 --- a/gdb-archer.patch +++ b/gdb-archer.patch @@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher http://sourceware.org/gdb/wiki/ArcherBranchManagement GIT snapshot: -commit a99e30d08ade4a2df0f943b036cd653bcd12b04d +commit 935f217d3367a642374bc56c6b146d376fc3edab branch `archer' - the merge of branches: archer-jankratochvil-merge-expr @@ -10784,7 +10784,7 @@ index 76577f1..bf46761 100644 #endif /* dwarf2loc.h */ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c -index 55868da..de93d08 100644 +index 55868da..a82286f 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -1,8 +1,7 @@ @@ -11929,7 +11929,7 @@ index 55868da..de93d08 100644 + child_die = die->child; + die_children = 0; + while (child_die && child_die->tag) - { ++ { + process_die (child_die, cu); + child_die = sibling_die (child_die); + die_children++; @@ -11937,7 +11937,7 @@ index 55868da..de93d08 100644 + + attr = dwarf2_attr (die, DW_AT_abstract_origin, cu); + if (attr) -+ { + { + /* For the list of CHILD_DIEs. */ + unsigned *offsets; + unsigned *offsets_end, *offsetp; @@ -12977,7 +12977,7 @@ index 55868da..de93d08 100644 +dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu, + struct obstack *obstack) +{ -+ if (cu->language == language_cplus) ++ if (name && cu->language == language_cplus) + { + char *canon_name = cp_canonicalize_string (name); + @@ -20918,10 +20918,10 @@ index 0000000..fe7c072 +register_libstdcxx_printers (gdb.current_objfile ()) diff --git a/gdb/python/lib/gdb/libstdcxx/v6/printers.py b/gdb/python/lib/gdb/libstdcxx/v6/printers.py new file mode 100644 -index 0000000..c0dc987 +index 0000000..2572731 --- /dev/null +++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py -@@ -0,0 +1,647 @@ +@@ -0,0 +1,629 @@ +# Pretty-printers for libstc++. + +# Copyright (C) 2008, 2009 Free Software Foundation, Inc. @@ -21360,22 +21360,6 @@ index 0000000..c0dc987 + def to_string(self): + return self.val['_M_cur'].dereference() + -+class WideEncoding (gdb.Parameter): -+ """The target wide character set is the encoding used for wchar_t.""" -+ -+ set_doc = "Set the target wide character set." -+ show_doc = "Show the target wide character set." -+ -+ # FIXME: needs a complete method -- but does Parameter support it? -+ def __init__ (self): -+ super (WideEncoding, self).__init__ ("target-wide-charset", -+ gdb.COMMAND_SUPPORT, -+ gdb.PARAM_STRING) -+ # I think this is ok for most glibc locales. -+ self.value = 'UTF-32' -+ -+target_wide_charset = WideEncoding() -+ +class StdStringPrinter: + "Print a std::basic_string of some kind" + @@ -21386,10 +21370,8 @@ index 0000000..c0dc987 + def to_string(self): + # Look up the target encoding as late as possible. + encoding = self.encoding -+ if encoding is None: -+ encoding = gdb.parameter('target-charset') -+ elif isinstance(encoding, WideEncoding): -+ encoding = encoding.value ++ if encoding[0] is '@': ++ encoding = gdb.parameter(encoding[1:]) + return self.val['_M_dataplus']['_M_p'].string(encoding) + + def display_hint (self): @@ -21523,8 +21505,8 @@ index 0000000..c0dc987 + # libstdc++ objects requiring pretty-printing. + # In order from: + # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html -+ pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter(None, val) -+ pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter(target_wide_charset, val) ++ pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('@target-charset', val) ++ pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('@target-wide-charset', val) + pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('UTF-16', val) + pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('UTF-32', val) + pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter @@ -34860,6 +34842,53 @@ index 0000000..1c6e84a +gdb_test "step" \ + "func.* \\(.*\\) at .*" \ + "step" +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-strp.S b/gdb/testsuite/gdb.dwarf2/dw2-strp.S +index a1602a5..293cc1b 100644 +--- a/gdb/testsuite/gdb.dwarf2/dw2-strp.S ++++ b/gdb/testsuite/gdb.dwarf2/dw2-strp.S +@@ -28,7 +28,8 @@ + /* CU die */ + .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ + .4byte .Lproducer /* DW_AT_producer */ +- .byte 1 /* DW_AT_language (C) */ ++ /* Use C++ to exploit a bug in parsing DW_AT_name "". */ ++ .byte 4 /* DW_AT_language (C++) - */ + + .Larray_type: + .uleb128 2 /* Abbrev: DW_TAG_array_type */ +@@ -60,6 +61,10 @@ + .Lconst_type: + .uleb128 6 /* Abbrev: DW_TAG_const_type */ + .4byte .Larray_type-.Lcu1_begin/* DW_AT_type */ ++ ++ .uleb128 7 /* Abbrev: DW_TAG_variable (name "") */ ++ .4byte .Lemptyname /* DW_AT_name */ ++ + .byte 0 /* End of children of CU */ + .Lcu1_end: + +@@ -126,6 +131,15 @@ + .uleb128 0x13 /* DW_FORM_ref4 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ ++ ++ .uleb128 7 /* Abbrev code */ ++ .uleb128 0x34 /* DW_TAG_variable */ ++ .byte 0x0 /* DW_children_no */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0xe /* DW_FORM_strp */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ + .byte 0x0 /* Terminator */ + + /* String table */ +@@ -140,3 +154,5 @@ + .string "a_string" + .Lvarcontents: + .string "hello world!\n" ++.Lemptyname: ++ .string "" diff --git a/gdb/testsuite/gdb.fortran/common-block.exp b/gdb/testsuite/gdb.fortran/common-block.exp new file mode 100644 index 0000000..888f6c3 diff --git a/gdb.spec b/gdb.spec index 2258447..1df7bbd 100644 --- a/gdb.spec +++ b/gdb.spec @@ -13,7 +13,7 @@ Version: 6.8.50.20090302 # 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: 9%{?_with_upstream:.upstream}%{?dist} +Release: 10%{?_with_upstream:.upstream}%{?dist} License: GPLv3+ Group: Development/Debuggers @@ -370,7 +370,6 @@ Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch # The merged branch `archer' of: http://sourceware.org/gdb/wiki/ProjectArcher Patch349: gdb-archer.patch -Patch354: gdb-archer-backport.patch # Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187). # - Turn on 64-bit BFD support, globally enable AC_SYS_LARGEFILE. @@ -462,7 +461,6 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c ###patch232 -p1 %patch349 -p1 -%patch354 -p1 %patch1 -p1 %patch3 -p1 %patch4 -p1 @@ -853,6 +851,11 @@ fi %endif %changelog +* Sun Mar 15 2009 Jan Kratochvil - 6.8.50.20090302-10 +- Archer update to the snapshot: 935f217d3367a642374bc56c6b146d376fc3edab +- Archer backport: 281278326412f9d6a3fabb8adc1d419fd7ddc7d7 + - Fix [expr] crash reading invalid DWARF C++ symbol "" (BZ 490319). + * Thu Mar 12 2009 Jan Kratochvil - 6.8.50.20090302-9 - Archer backport: aafe933b497eee8cfab736a10bae1a90d4bceb18 - [python] Remove duplicate target-wide-charset parameter