- Archer update to the snapshot: 935f217d3367a642374bc56c6b146d376fc3edab
- Archer backport: 281278326412f9d6a3fabb8adc1d419fd7ddc7d7 - Fix [expr] crash reading invalid DWARF C++ symbol "" (BZ 490319).
This commit is contained in:
parent
5b5fe7db1b
commit
42988d9875
@ -1,69 +0,0 @@
|
|||||||
From aafe933b497eee8cfab736a10bae1a90d4bceb18 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tom Tromey <tromey@redhat.com>
|
|
||||||
Date: Thu, 12 Mar 2009 13:06:15 -0600
|
|
||||||
Subject: [PATCH] Remove duplicate target-wide-charset parameter
|
|
||||||
|
|
||||||
2009-03-11 Tom Tromey <tromey@redhat.com>
|
|
||||||
|
|
||||||
* 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<char,.*>$')] = lambda val: StdStringPrinter(None, val)
|
|
||||||
- pretty_printers_dict[re.compile('^std::basic_string<wchar_t,.*>$')] = lambda val: StdStringPrinter(target_wide_charset, val)
|
|
||||||
+ pretty_printers_dict[re.compile('^std::basic_string<char,.*>$')] = lambda val: StdStringPrinter('@target-charset', val)
|
|
||||||
+ pretty_printers_dict[re.compile('^std::basic_string<wchar_t,.*>$')] = lambda val: StdStringPrinter('@target-wide-charset', val)
|
|
||||||
pretty_printers_dict[re.compile('^std::basic_string<char16_t,.*>$')] = lambda val: StdStringPrinter('UTF-16', val)
|
|
||||||
pretty_printers_dict[re.compile('^std::basic_string<char32_t,.*>$')] = lambda val: StdStringPrinter('UTF-32', val)
|
|
||||||
pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter
|
|
||||||
--
|
|
||||||
1.6.0.6
|
|
||||||
|
|
@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
|
|||||||
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
||||||
|
|
||||||
GIT snapshot:
|
GIT snapshot:
|
||||||
commit a99e30d08ade4a2df0f943b036cd653bcd12b04d
|
commit 935f217d3367a642374bc56c6b146d376fc3edab
|
||||||
|
|
||||||
branch `archer' - the merge of branches:
|
branch `archer' - the merge of branches:
|
||||||
archer-jankratochvil-merge-expr
|
archer-jankratochvil-merge-expr
|
||||||
@ -10784,7 +10784,7 @@ index 76577f1..bf46761 100644
|
|||||||
|
|
||||||
#endif /* dwarf2loc.h */
|
#endif /* dwarf2loc.h */
|
||||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||||
index 55868da..de93d08 100644
|
index 55868da..a82286f 100644
|
||||||
--- a/gdb/dwarf2read.c
|
--- a/gdb/dwarf2read.c
|
||||||
+++ b/gdb/dwarf2read.c
|
+++ b/gdb/dwarf2read.c
|
||||||
@@ -1,8 +1,7 @@
|
@@ -1,8 +1,7 @@
|
||||||
@ -11929,7 +11929,7 @@ index 55868da..de93d08 100644
|
|||||||
+ child_die = die->child;
|
+ child_die = die->child;
|
||||||
+ die_children = 0;
|
+ die_children = 0;
|
||||||
+ while (child_die && child_die->tag)
|
+ while (child_die && child_die->tag)
|
||||||
{
|
+ {
|
||||||
+ process_die (child_die, cu);
|
+ process_die (child_die, cu);
|
||||||
+ child_die = sibling_die (child_die);
|
+ child_die = sibling_die (child_die);
|
||||||
+ die_children++;
|
+ die_children++;
|
||||||
@ -11937,7 +11937,7 @@ index 55868da..de93d08 100644
|
|||||||
+
|
+
|
||||||
+ attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
|
+ attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
|
||||||
+ if (attr)
|
+ if (attr)
|
||||||
+ {
|
{
|
||||||
+ /* For the list of CHILD_DIEs. */
|
+ /* For the list of CHILD_DIEs. */
|
||||||
+ unsigned *offsets;
|
+ unsigned *offsets;
|
||||||
+ unsigned *offsets_end, *offsetp;
|
+ unsigned *offsets_end, *offsetp;
|
||||||
@ -12977,7 +12977,7 @@ index 55868da..de93d08 100644
|
|||||||
+dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
|
+dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
|
||||||
+ struct obstack *obstack)
|
+ struct obstack *obstack)
|
||||||
+{
|
+{
|
||||||
+ if (cu->language == language_cplus)
|
+ if (name && cu->language == language_cplus)
|
||||||
+ {
|
+ {
|
||||||
+ char *canon_name = cp_canonicalize_string (name);
|
+ char *canon_name = cp_canonicalize_string (name);
|
||||||
+
|
+
|
||||||
@ -20918,10 +20918,10 @@ index 0000000..fe7c072
|
|||||||
+register_libstdcxx_printers (gdb.current_objfile ())
|
+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
|
diff --git a/gdb/python/lib/gdb/libstdcxx/v6/printers.py b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..c0dc987
|
index 0000000..2572731
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
+++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
||||||
@@ -0,0 +1,647 @@
|
@@ -0,0 +1,629 @@
|
||||||
+# Pretty-printers for libstc++.
|
+# Pretty-printers for libstc++.
|
||||||
+
|
+
|
||||||
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
|
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
|
||||||
@ -21360,22 +21360,6 @@ index 0000000..c0dc987
|
|||||||
+ def to_string(self):
|
+ def to_string(self):
|
||||||
+ return self.val['_M_cur'].dereference()
|
+ 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:
|
+class StdStringPrinter:
|
||||||
+ "Print a std::basic_string of some kind"
|
+ "Print a std::basic_string of some kind"
|
||||||
+
|
+
|
||||||
@ -21386,10 +21370,8 @@ index 0000000..c0dc987
|
|||||||
+ def to_string(self):
|
+ def to_string(self):
|
||||||
+ # Look up the target encoding as late as possible.
|
+ # Look up the target encoding as late as possible.
|
||||||
+ encoding = self.encoding
|
+ encoding = self.encoding
|
||||||
+ if encoding is None:
|
+ if encoding[0] is '@':
|
||||||
+ encoding = gdb.parameter('target-charset')
|
+ encoding = gdb.parameter(encoding[1:])
|
||||||
+ elif isinstance(encoding, WideEncoding):
|
|
||||||
+ encoding = encoding.value
|
|
||||||
+ return self.val['_M_dataplus']['_M_p'].string(encoding)
|
+ return self.val['_M_dataplus']['_M_p'].string(encoding)
|
||||||
+
|
+
|
||||||
+ def display_hint (self):
|
+ def display_hint (self):
|
||||||
@ -21523,8 +21505,8 @@ index 0000000..c0dc987
|
|||||||
+ # libstdc++ objects requiring pretty-printing.
|
+ # libstdc++ objects requiring pretty-printing.
|
||||||
+ # In order from:
|
+ # In order from:
|
||||||
+ # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html
|
+ # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html
|
||||||
+ pretty_printers_dict[re.compile('^std::basic_string<char,.*>$')] = lambda val: StdStringPrinter(None, val)
|
+ pretty_printers_dict[re.compile('^std::basic_string<char,.*>$')] = lambda val: StdStringPrinter('@target-charset', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::basic_string<wchar_t,.*>$')] = lambda val: StdStringPrinter(target_wide_charset, val)
|
+ pretty_printers_dict[re.compile('^std::basic_string<wchar_t,.*>$')] = lambda val: StdStringPrinter('@target-wide-charset', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::basic_string<char16_t,.*>$')] = lambda val: StdStringPrinter('UTF-16', val)
|
+ pretty_printers_dict[re.compile('^std::basic_string<char16_t,.*>$')] = lambda val: StdStringPrinter('UTF-16', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::basic_string<char32_t,.*>$')] = lambda val: StdStringPrinter('UTF-32', val)
|
+ pretty_printers_dict[re.compile('^std::basic_string<char32_t,.*>$')] = lambda val: StdStringPrinter('UTF-32', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter
|
+ pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter
|
||||||
@ -34860,6 +34842,53 @@ index 0000000..1c6e84a
|
|||||||
+gdb_test "step" \
|
+gdb_test "step" \
|
||||||
+ "func.* \\(.*\\) at .*" \
|
+ "func.* \\(.*\\) at .*" \
|
||||||
+ "step"
|
+ "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
|
diff --git a/gdb/testsuite/gdb.fortran/common-block.exp b/gdb/testsuite/gdb.fortran/common-block.exp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..888f6c3
|
index 0000000..888f6c3
|
||||||
|
9
gdb.spec
9
gdb.spec
@ -13,7 +13,7 @@ Version: 6.8.50.20090302
|
|||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# 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.
|
# `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+
|
License: GPLv3+
|
||||||
Group: Development/Debuggers
|
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
|
# The merged branch `archer' of: http://sourceware.org/gdb/wiki/ProjectArcher
|
||||||
Patch349: gdb-archer.patch
|
Patch349: gdb-archer.patch
|
||||||
Patch354: gdb-archer-backport.patch
|
|
||||||
|
|
||||||
# Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187).
|
# Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187).
|
||||||
# - Turn on 64-bit BFD support, globally enable AC_SYS_LARGEFILE.
|
# - 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
|
###patch232 -p1
|
||||||
%patch349 -p1
|
%patch349 -p1
|
||||||
%patch354 -p1
|
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
@ -853,6 +851,11 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Mar 15 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 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 <jan.kratochvil@redhat.com> - 6.8.50.20090302-9
|
* Thu Mar 12 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-9
|
||||||
- Archer backport: aafe933b497eee8cfab736a10bae1a90d4bceb18
|
- Archer backport: aafe933b497eee8cfab736a10bae1a90d4bceb18
|
||||||
- [python] Remove duplicate target-wide-charset parameter
|
- [python] Remove duplicate target-wide-charset parameter
|
||||||
|
Loading…
Reference in New Issue
Block a user