+2011-03-22 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Revert:
+ 2011-03-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * dwarf2read.c (producer_is_gxx_lt_4_6): New function.
+ (dwarf2_add_field): Fix new_field->accessibility for
+ cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.
+
2011-03-22 Phil Muldoon <pmuldoon@redhat.com>
PR python/12183
}
}
-/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
- to 4.5.any hwile it is present already in G++ 4.6.0 - the PR has been fixed
- during 4.6.0 experimental. */
-
-static int
-producer_is_gxx_lt_4_6 (const char *producer)
-{
- int major, minor;
-
- /* Whitespaces are ignored in both PRODUCER and the format string. */
- if (sscanf (producer, "GNU C++ %d.%d", &major, &minor) != 2)
- {
- /* For non-GCC compilers expect their behavior is DWARF version
- compliant. */
-
- return 0;
- }
-
- return major < 4 || (major == 4 && minor < 6);
-}
-
/* Add an aggregate field to the field list. */
static void
}
fip->nfields++;
- if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu->producer))
- {
- /* 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;
- }
+ /* 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;
else
- {
- /* DWARF 3+ defines the default accessibility a different way - see
- below - than DWARF 2 has defined. The same rules apply now for
- DW_TAG_inheritance as for the members and it only depends on the
- container kind. */
-
- if (die->parent->tag == DW_TAG_class_type)
- new_field->accessibility = DW_ACCESS_private;
- else
- new_field->accessibility = DW_ACCESS_public;
- }
+ new_field->accessibility = DW_ACCESS_private;
new_field->virtuality = DW_VIRTUALITY_none;
attr = dwarf2_attr (die, DW_AT_accessibility, cu);