[gdb] - Rebase to FSF GDB 7.2.50.20110125 (which is a 7.3 pre-release). - Fix discontiguous address ranges

Jan Kratochvil jankratochvil at fedoraproject.org
Tue Jan 25 21:59:29 UTC 2011


commit ea07d44ec298f210aea4ca907241f66c07133073
Author: Jan Kratochvil <jan.kratochvil at redhat.com>
Date:   Tue Jan 25 22:59:16 2011 +0100

    - Rebase to FSF GDB 7.2.50.20110125 (which is a 7.3 pre-release).
    - Fix discontiguous address ranges in .gdb_index - v3->v4 (BZ 672281).
    - Fix DWARF-3+ DW_AT_accessibility default assumption for F15 gcc-4.6.

 gdb-dwarf3-accessibility.patch |   86 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 86 insertions(+), 0 deletions(-)
---
diff --git a/gdb-dwarf3-accessibility.patch b/gdb-dwarf3-accessibility.patch
new file mode 100644
index 0000000..d54dc34
--- /dev/null
+++ b/gdb-dwarf3-accessibility.patch
@@ -0,0 +1,86 @@
+http://sourceware.org/ml/gdb-patches/2011-01/msg00507.html
+Subject: [patch] Fix DWARF-3+ DW_AT_accessibility default assumption
+
+Hi,
+
+GDB regresses on default compiler option -gdwarf-3 on gcc-4.6+ as this gcc
+started to omit DW_AT_accessibility for the default value case.  Normal
+upstream gcc still has -gdwarf-2 default (Fedora uses -gdwarf-3 default).
+
+No regressions on {x86_64,x86_64-m32,i686}-fedora15-linux-gnu.
+(There are other regressions to be fixed due to gcc45->gcc46.)
+
+I will check it in in some time.
+
+
+Thanks,
+Jan
+
+
+-FAIL: gdb.cp/casts.exp: dynamic_cast simple downcast
+-FAIL: gdb.cp/casts.exp: dynamic_cast simple downcast to intermediate class
+-FAIL: gdb.cp/casts.exp: dynamic_cast unique downcast
+-FAIL: gdb.cp/casts.exp: dynamic_cast to sibling
+-FAIL: gdb.cp/classes.exp: ptype class default_private_class // wrong access specifier for field: public
+-FAIL: gdb.cp/classes.exp: ptype class explicit_private_class // wrong access specifier for field: public
+-FAIL: gdb.cp/classes.exp: ptype class mixed_protection_class // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype A // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype B // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype a // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype b // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype pAa // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype pAe // wrong access specifier for field: public
+-FAIL: gdb.cp/virtfunc.exp: ptype pBe // wrong access specifier for field: public
+-FAIL: gdb.mi/gdb792.exp: list children of class A
+-FAIL: gdb.mi/gdb792.exp: list children of A.public
+-FAIL: gdb.mi/gdb792.exp: list children of A.private
+-FAIL: gdb.mi/gdb792.exp: list children of A.protected
+-FAIL: gdb.mi/gdb792.exp: list children of A.protected.b
+-FAIL: gdb.mi/gdb792.exp: list children of A.protected.b.public
+-FAIL: gdb.mi/gdb792.exp: list children of A.protected.b.private
+-FAIL: gdb.mi/gdb792.exp: list children of class C
+-FAIL: gdb.python/py-value.exp: python print bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer()))
+
+
+gdb/
+2011-01-25  Jan Kratochvil  <jan.kratochvil at redhat.com>
+
+	Fix DWARF-3+ DW_AT_accessibility default assumption.
+	* dwarf2read.c (dwarf2_add_field): Fix new_field->accessibility for
+	cu->header.version >= 3.
+
+--- a/gdb/dwarf2read.c
++++ b/gdb/dwarf2read.c
+@@ -6186,13 +6186,25 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
+     }
+   fip->nfields++;
+ 
+-  /* Handle accessibility and virtuality of field.
+-     The default accessibility for members is public, the default
+-     accessibility for inheritance is private.  */
+-  if (die->tag != DW_TAG_inheritance)
+-    new_field->accessibility = DW_ACCESS_public;
++  if (cu->header.version < 3)
++    {
++      /* The default DWARF 2 accessibility for members is public, the default
++	 accessibility for inheritance is private.  */
++
++      if (die->tag != DW_TAG_inheritance)
++	new_field->accessibility = DW_ACCESS_public;
++      else
++	new_field->accessibility = DW_ACCESS_private;
++    }
+   else
+-    new_field->accessibility = DW_ACCESS_private;
++    {
++      /* DWARF 3 specifies the default accessibility explicitly.  */
++
++      if (die->parent->tag == DW_TAG_class_type)
++	new_field->accessibility = DW_ACCESS_private;
++      else
++	new_field->accessibility = DW_ACCESS_public;
++    }
+   new_field->virtuality = DW_VIRTUALITY_none;
+ 
+   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
+


More information about the scm-commits mailing list