- Make the package buildable on RHEL-5/CentOS-5 (without librpm there).

- archer-jankratochvil-fedora12 commit:
    5b73ea6a0f74e63db3b504792fc1d37f548bdf5c
This commit is contained in:
Jan Kratochvil 2009-10-23 20:05:50 +00:00
parent 5135752b6b
commit c5c5004db4
4 changed files with 93 additions and 79 deletions

View File

@ -1,2 +1,2 @@
libstdc++-v3-python-r151798.tar.xz
gdb-7.0.tar.bz2 gdb-7.0.tar.bz2
libstdc++-v3-python-r151798.tar.bz2

View File

@ -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 ce4ead356654b951a49ca78d81ebfff95e758bf5 commit 5b73ea6a0f74e63db3b504792fc1d37f548bdf5c
branch `archer' - the merge of branches: branch `archer' - the merge of branches:
archer-tromey-call-frame-cfa archer-tromey-call-frame-cfa
@ -4963,7 +4963,7 @@ index 0bfcfca..01018d6 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 4cce36b..c2f5f23 100644 index 4cce36b..fb0a693 100644
--- a/gdb/dwarf2read.c --- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c
@@ -48,6 +48,12 @@ @@ -48,6 +48,12 @@
@ -5701,7 +5701,7 @@ index 4cce36b..c2f5f23 100644
if (die->child != NULL && (die->tag == DW_TAG_imported_declaration if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
|| cu->language != language_fortran)) || cu->language != language_fortran))
complaint (&symfile_complaints, _("Tag '%s' has unexpected children"), complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
@@ -3310,41 +3583,68 @@ process_die (struct die_info *die, struct dwarf2_cu *cu) @@ -3310,41 +3583,71 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
/* Return the fully qualified name of DIE, based on its DW_AT_name. /* Return the fully qualified name of DIE, based on its DW_AT_name.
If scope qualifiers are appropriate they will be added. The result If scope qualifiers are appropriate they will be added. The result
will be allocated on the objfile_obstack, or NULL if the DIE does will be allocated on the objfile_obstack, or NULL if the DIE does
@ -5776,14 +5776,17 @@ index 4cce36b..c2f5f23 100644
return name; return name;
} }
+/* read the given die's decl_line number. Return -1 if in case of an error */ +/* Read the given DIE's DW_AT_decl_line number. Return -1 if in case of an
+static const int dwarf2_read_decl_line (struct die_info *die, struct dwarf2_cu *cu){ + error. */
+
+static int
+dwarf2_read_decl_line (struct die_info *die, struct dwarf2_cu *cu)
+{
+ struct attribute *line_attr; + struct attribute *line_attr;
+ +
+ line_attr = dwarf2_attr (die, DW_AT_decl_line, cu); + line_attr = dwarf2_attr (die, DW_AT_decl_line, cu);
+ if (line_attr){ + if (line_attr)
+ return DW_UNSND (line_attr); + return DW_UNSND (line_attr);
+ }
+ +
+ return -1; + return -1;
+} +}
@ -5791,7 +5794,7 @@ index 4cce36b..c2f5f23 100644
/* Read the import statement specified by the given die and record it. */ /* Read the import statement specified by the given die and record it. */
static void static void
@@ -3354,9 +3654,15 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu) @@ -3354,9 +3657,15 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
struct die_info *imported_die; struct die_info *imported_die;
const char *imported_name; const char *imported_name;
const char *imported_name_prefix; const char *imported_name_prefix;
@ -5809,7 +5812,7 @@ index 4cce36b..c2f5f23 100644
import_attr = dwarf2_attr (die, DW_AT_import, cu); import_attr = dwarf2_attr (die, DW_AT_import, cu);
if (import_attr == NULL) if (import_attr == NULL)
{ {
@@ -3404,17 +3710,27 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu) @@ -3404,17 +3713,27 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
return; return;
} }
@ -5843,7 +5846,7 @@ index 4cce36b..c2f5f23 100644
canonical_name = alloca (strlen (imported_name_prefix) + 2 + strlen (imported_name) + 1); canonical_name = alloca (strlen (imported_name_prefix) + 2 + strlen (imported_name) + 1);
strcpy (canonical_name, imported_name_prefix); strcpy (canonical_name, imported_name_prefix);
strcat (canonical_name, "::"); strcat (canonical_name, "::");
@@ -3425,8 +3741,14 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu) @@ -3425,8 +3744,14 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
canonical_name = alloca (strlen (imported_name) + 1); canonical_name = alloca (strlen (imported_name) + 1);
strcpy (canonical_name, imported_name); strcpy (canonical_name, imported_name);
} }
@ -5860,7 +5863,7 @@ index 4cce36b..c2f5f23 100644
} }
static void static void
@@ -3695,6 +4017,14 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) @@ -3695,6 +4020,14 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
struct attribute *attr; struct attribute *attr;
attr = dwarf2_attr (die, DW_AT_abstract_origin, cu); attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
@ -5875,7 +5878,7 @@ index 4cce36b..c2f5f23 100644
if (!attr) if (!attr)
return; return;
@@ -3793,6 +4123,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -3793,6 +4126,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
char *name; char *name;
CORE_ADDR baseaddr; CORE_ADDR baseaddr;
struct block *block; struct block *block;
@ -5883,7 +5886,7 @@ index 4cce36b..c2f5f23 100644
int inlined_func = (die->tag == DW_TAG_inlined_subroutine); int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
if (inlined_func) if (inlined_func)
@@ -3811,13 +4142,23 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -3811,13 +4145,23 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
@ -5910,7 +5913,7 @@ index 4cce36b..c2f5f23 100644
lowpc += baseaddr; lowpc += baseaddr;
highpc += baseaddr; highpc += baseaddr;
@@ -3844,14 +4185,19 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -3844,14 +4188,19 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
cu->list_in_scope = &local_symbols; cu->list_in_scope = &local_symbols;
@ -5937,7 +5940,7 @@ index 4cce36b..c2f5f23 100644
} }
inherit_abstract_dies (die, cu); inherit_abstract_dies (die, cu);
@@ -3867,6 +4213,13 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -3867,6 +4216,13 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
determine_prefix (die, cu), determine_prefix (die, cu),
processing_has_namespace_info); processing_has_namespace_info);
@ -5951,7 +5954,7 @@ index 4cce36b..c2f5f23 100644
/* If we have address ranges, record them. */ /* If we have address ranges, record them. */
dwarf2_record_block_ranges (die, block, baseaddr, cu); dwarf2_record_block_ranges (die, block, baseaddr, cu);
@@ -3903,7 +4256,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -3903,7 +4259,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
as multiple lexical blocks? Handling children in a sane way would as multiple lexical blocks? Handling children in a sane way would
be nasty. Might be easier to properly extend generic blocks to be nasty. Might be easier to properly extend generic blocks to
describe ranges. */ describe ranges. */
@ -5960,7 +5963,7 @@ index 4cce36b..c2f5f23 100644
return; return;
lowpc += baseaddr; lowpc += baseaddr;
highpc += baseaddr; highpc += baseaddr;
@@ -3920,7 +4273,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -3920,7 +4276,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
} }
new = pop_context (); new = pop_context ();
@ -5969,7 +5972,7 @@ index 4cce36b..c2f5f23 100644
{ {
struct block *block struct block *block
= finish_block (0, &local_symbols, new->old_blocks, new->start_addr, = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
@@ -4075,7 +4428,8 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return, @@ -4075,7 +4431,8 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
discontinuous, i.e. derived from DW_AT_ranges information. */ discontinuous, i.e. derived from DW_AT_ranges information. */
static int static int
dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
@ -5979,7 +5982,7 @@ index 4cce36b..c2f5f23 100644
{ {
struct attribute *attr; struct attribute *attr;
CORE_ADDR low = 0; CORE_ADDR low = 0;
@@ -4103,7 +4457,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, @@ -4103,7 +4460,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
{ {
/* Value of the DW_AT_ranges attribute is the offset in the /* Value of the DW_AT_ranges attribute is the offset in the
.debug_ranges section. */ .debug_ranges section. */
@ -5988,7 +5991,7 @@ index 4cce36b..c2f5f23 100644
return 0; return 0;
/* Found discontinuous range of addresses. */ /* Found discontinuous range of addresses. */
ret = -1; ret = -1;
@@ -4142,7 +4496,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die, @@ -4142,7 +4499,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die,
CORE_ADDR low, high; CORE_ADDR low, high;
struct die_info *child = die->child; struct die_info *child = die->child;
@ -5997,7 +6000,7 @@ index 4cce36b..c2f5f23 100644
{ {
*lowpc = min (*lowpc, low); *lowpc = min (*lowpc, low);
*highpc = max (*highpc, high); *highpc = max (*highpc, high);
@@ -4179,7 +4533,7 @@ get_scope_pc_bounds (struct die_info *die, @@ -4179,7 +4536,7 @@ get_scope_pc_bounds (struct die_info *die,
CORE_ADDR best_high = (CORE_ADDR) 0; CORE_ADDR best_high = (CORE_ADDR) 0;
CORE_ADDR current_low, current_high; CORE_ADDR current_low, current_high;
@ -6006,7 +6009,7 @@ index 4cce36b..c2f5f23 100644
{ {
best_low = current_low; best_low = current_low;
best_high = current_high; best_high = current_high;
@@ -4474,7 +4828,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, @@ -4474,7 +4831,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
return; return;
/* Get physical name. */ /* Get physical name. */
@ -6015,7 +6018,7 @@ index 4cce36b..c2f5f23 100644
/* The name is already allocated along with this objfile, so we don't /* The name is already allocated along with this objfile, so we don't
need to duplicate it for the type. */ need to duplicate it for the type. */
@@ -4617,7 +4971,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, @@ -4617,7 +4974,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
return; return;
/* Get the mangled name. */ /* Get the mangled name. */
@ -6024,7 +6027,7 @@ index 4cce36b..c2f5f23 100644
/* Look up member function name in fieldlist. */ /* Look up member function name in fieldlist. */
for (i = 0; i < fip->nfnfields; i++) for (i = 0; i < fip->nfnfields; i++)
@@ -4661,7 +5015,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, @@ -4661,7 +5018,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
/* The name is already allocated along with this objfile, so we don't /* The name is already allocated along with this objfile, so we don't
need to duplicate it for the type. */ need to duplicate it for the type. */
fnp->physname = physname ? physname : ""; fnp->physname = physname ? physname : "";
@ -6033,7 +6036,7 @@ index 4cce36b..c2f5f23 100644
this_type = read_type_die (die, cu); this_type = read_type_die (die, cu);
if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC) if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
{ {
@@ -4721,18 +5075,18 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, @@ -4721,18 +5078,18 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
{ {
/* Support the .debug_loc offsets */ /* Support the .debug_loc offsets */
if (attr_form_is_block (attr)) if (attr_form_is_block (attr))
@ -6059,7 +6062,7 @@ index 4cce36b..c2f5f23 100644
} }
} }
@@ -4845,7 +5199,7 @@ quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu) @@ -4845,7 +5202,7 @@ quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu)
return NULL; return NULL;
domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0)); domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
@ -6068,7 +6071,7 @@ index 4cce36b..c2f5f23 100644
smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type), smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type),
TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type), TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
TYPE_VARARGS (pfn_type)); TYPE_VARARGS (pfn_type));
@@ -4898,7 +5252,7 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) @@ -4898,7 +5255,7 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
return set_die_type (die, type, cu); return set_die_type (die, type, cu);
} }
@ -6077,7 +6080,7 @@ index 4cce36b..c2f5f23 100644
INIT_CPLUS_SPECIFIC (type); INIT_CPLUS_SPECIFIC (type);
name = dwarf2_name (die, cu); name = dwarf2_name (die, cu);
@@ -4907,14 +5261,18 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) @@ -4907,14 +5264,18 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
if (cu->language == language_cplus if (cu->language == language_cplus
|| cu->language == language_java) || cu->language == language_java)
{ {
@ -6099,7 +6102,7 @@ index 4cce36b..c2f5f23 100644
} }
} }
@@ -5124,7 +5482,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5124,7 +5485,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
return set_die_type (die, type, cu); return set_die_type (die, type, cu);
} }
@ -6108,7 +6111,7 @@ index 4cce36b..c2f5f23 100644
TYPE_CODE (type) = TYPE_CODE_ENUM; TYPE_CODE (type) = TYPE_CODE_ENUM;
name = dwarf2_full_name (die, cu); name = dwarf2_full_name (die, cu);
@@ -5152,51 +5510,6 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5152,51 +5513,6 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
return set_die_type (die, type, cu); return set_die_type (die, type, cu);
} }
@ -6160,7 +6163,7 @@ index 4cce36b..c2f5f23 100644
/* Given a pointer to a die which begins an enumeration, process all /* Given a pointer to a die which begins an enumeration, process all
the dies that define the members of the enumeration, and create the the dies that define the members of the enumeration, and create the
symbol for the enumeration type. symbol for the enumeration type.
@@ -5274,6 +5587,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -5274,6 +5590,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
new_symbol (die, this_type, cu); new_symbol (die, this_type, cu);
} }
@ -6190,7 +6193,7 @@ index 4cce36b..c2f5f23 100644
/* Extract all information from a DW_TAG_array_type DIE and put it in /* Extract all information from a DW_TAG_array_type DIE and put it in
the DIE's type field. For now, this only handles one dimensional the DIE's type field. For now, this only handles one dimensional
arrays. */ arrays. */
@@ -5287,7 +5623,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5287,7 +5626,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *element_type, *range_type, *index_type; struct type *element_type, *range_type, *index_type;
struct type **range_types = NULL; struct type **range_types = NULL;
struct attribute *attr; struct attribute *attr;
@ -6199,7 +6202,7 @@ index 4cce36b..c2f5f23 100644
struct cleanup *back_to; struct cleanup *back_to;
char *name; char *name;
@@ -5334,16 +5670,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5334,16 +5673,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
type = element_type; type = element_type;
if (read_array_order (die, cu) == DW_ORD_col_major) if (read_array_order (die, cu) == DW_ORD_col_major)
@ -6221,7 +6224,7 @@ index 4cce36b..c2f5f23 100644
/* Understand Dwarf2 support for vector types (like they occur on /* Understand Dwarf2 support for vector types (like they occur on
the PowerPC w/ AltiVec). Gcc just adds another attribute to the the PowerPC w/ AltiVec). Gcc just adds another attribute to the
@@ -5410,12 +5741,14 @@ read_set_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5410,12 +5744,14 @@ read_set_type (struct die_info *die, struct dwarf2_cu *cu)
return set_die_type (die, set_type, cu); return set_die_type (die, set_type, cu);
} }
@ -6238,7 +6241,7 @@ index 4cce36b..c2f5f23 100644
struct attribute *attr; struct attribute *attr;
struct symbol *sym; struct symbol *sym;
CORE_ADDR base = (CORE_ADDR) 0; CORE_ADDR base = (CORE_ADDR) 0;
@@ -5425,25 +5758,55 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu) @@ -5425,25 +5761,55 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu)
{ {
/* Support the .debug_loc offsets */ /* Support the .debug_loc offsets */
if (attr_form_is_block (attr)) if (attr_form_is_block (attr))
@ -6301,7 +6304,7 @@ index 4cce36b..c2f5f23 100644
attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu); attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
if (attr) if (attr)
{ {
@@ -5461,8 +5824,25 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu) @@ -5461,8 +5827,25 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu)
SYMBOL_VALUE_ADDRESS (sym) = base + byte_offset; SYMBOL_VALUE_ADDRESS (sym) = base + byte_offset;
add_symbol_to_list (sym, &global_symbols); add_symbol_to_list (sym, &global_symbols);
} }
@ -6327,7 +6330,7 @@ index 4cce36b..c2f5f23 100644
} }
} }
@@ -5530,7 +5910,7 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu) @@ -5530,7 +5913,7 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
if (is_anonymous) if (is_anonymous)
{ {
const char *previous_prefix = determine_prefix (die, cu); const char *previous_prefix = determine_prefix (die, cu);
@ -6336,7 +6339,7 @@ index 4cce36b..c2f5f23 100644
} }
} }
@@ -5546,20 +5926,155 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu) @@ -5546,20 +5929,155 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
} }
} }
@ -6376,18 +6379,18 @@ index 4cce36b..c2f5f23 100644
+ +
+ if (die_is_declaration (die, cu)) + if (die_is_declaration (die, cu))
+ return NULL; + return NULL;
+
- /* FIXME: Support the separate Fortran module namespaces. */
+ module_name = dwarf2_name (die, cu); + module_name = dwarf2_name (die, cu);
+ if (!module_name) + if (!module_name)
+ complaint (&symfile_complaints, _("DW_TAG_module has no name, offset 0x%x"), + complaint (&symfile_complaints, _("DW_TAG_module has no name, offset 0x%x"),
+ die->offset); + die->offset);
+ type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile); + type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
+
+ /* Create a context for reading the module variables. */ + /* Create a context for reading the module variables. */
+
- /* FIXME: Support the separate Fortran module namespaces. */
+ new = push_context (0, 0); + new = push_context (0, 0);
+
+ save_file_symbols = file_symbols; + save_file_symbols = file_symbols;
+ file_symbols = NULL; + file_symbols = NULL;
+ save_global_symbols = global_symbols; + save_global_symbols = global_symbols;
@ -6495,7 +6498,7 @@ index 4cce36b..c2f5f23 100644
} }
/* Return the name of the namespace represented by DIE. Set /* Return the name of the namespace represented by DIE. Set
@@ -5724,29 +6239,113 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5724,29 +6242,113 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
struct gdbarch *gdbarch = get_objfile_arch (objfile); struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type; struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr; struct attribute *attr;
@ -6623,7 +6626,7 @@ index 4cce36b..c2f5f23 100644
char_type = language_string_char_type (cu->language_defn, gdbarch); char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type); type = create_string_type (NULL, char_type, range_type);
@@ -5841,7 +6440,6 @@ static struct type * @@ -5841,7 +6443,6 @@ static struct type *
read_typedef (struct die_info *die, struct dwarf2_cu *cu) read_typedef (struct die_info *die, struct dwarf2_cu *cu)
{ {
struct objfile *objfile = cu->objfile; struct objfile *objfile = cu->objfile;
@ -6631,7 +6634,7 @@ index 4cce36b..c2f5f23 100644
const char *name = NULL; const char *name = NULL;
struct type *this_type; struct type *this_type;
@@ -5949,8 +6547,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5949,8 +6550,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *base_type; struct type *base_type;
struct type *range_type; struct type *range_type;
struct attribute *attr; struct attribute *attr;
@ -6641,7 +6644,7 @@ index 4cce36b..c2f5f23 100644
char *name; char *name;
base_type = die_type (die, cu); base_type = die_type (die, cu);
@@ -5963,42 +6560,89 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) @@ -5963,42 +6563,89 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
0, NULL, cu->objfile); 0, NULL, cu->objfile);
} }
@ -6760,7 +6763,7 @@ index 4cce36b..c2f5f23 100644
name = dwarf2_name (die, cu); name = dwarf2_name (die, cu);
if (name) if (name)
@@ -6469,6 +7113,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr, @@ -6469,6 +7116,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
&& abbrev->tag != DW_TAG_lexical_block && abbrev->tag != DW_TAG_lexical_block
&& abbrev->tag != DW_TAG_variable && abbrev->tag != DW_TAG_variable
&& abbrev->tag != DW_TAG_namespace && abbrev->tag != DW_TAG_namespace
@ -6768,7 +6771,7 @@ index 4cce36b..c2f5f23 100644
&& abbrev->tag != DW_TAG_member) && abbrev->tag != DW_TAG_member)
{ {
/* Otherwise we skip to the next sibling, if any. */ /* Otherwise we skip to the next sibling, if any. */
@@ -6689,9 +7334,6 @@ read_partial_die (struct partial_die_info *part_die, @@ -6689,9 +7337,6 @@ read_partial_die (struct partial_die_info *part_die,
if (part_die->dirname == NULL) if (part_die->dirname == NULL)
part_die->dirname = DW_STRING (&attr); part_die->dirname = DW_STRING (&attr);
break; break;
@ -6778,7 +6781,7 @@ index 4cce36b..c2f5f23 100644
case DW_AT_low_pc: case DW_AT_low_pc:
has_low_pc_attr = 1; has_low_pc_attr = 1;
part_die->lowpc = DW_ADDR (&attr); part_die->lowpc = DW_ADDR (&attr);
@@ -6923,7 +7565,8 @@ fixup_partial_die (struct partial_die_info *part_die, @@ -6923,7 +7568,8 @@ fixup_partial_die (struct partial_die_info *part_die,
/* If we found a reference attribute and the DIE has no name, try /* If we found a reference attribute and the DIE has no name, try
to find a name in the referred to DIE. */ to find a name in the referred to DIE. */
@ -6788,7 +6791,7 @@ index 4cce36b..c2f5f23 100644
{ {
struct partial_die_info *spec_die; struct partial_die_info *spec_die;
@@ -8265,10 +8908,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym, @@ -8265,10 +8911,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
(i.e. when the value of a register or memory location is (i.e. when the value of a register or memory location is
referenced, or a thread-local block, etc.). Then again, it might referenced, or a thread-local block, etc.). Then again, it might
not be worthwhile. I'm assuming that it isn't unless performance not be worthwhile. I'm assuming that it isn't unless performance
@ -6803,7 +6806,7 @@ index 4cce36b..c2f5f23 100644
} }
/* Given a pointer to a DWARF information entry, figure out if we need /* Given a pointer to a DWARF information entry, figure out if we need
@@ -8290,21 +8935,30 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) @@ -8290,21 +8938,30 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
@ -6841,7 +6844,7 @@ index 4cce36b..c2f5f23 100644
/* Default assumptions. /* Default assumptions.
Use the passed type or decode it from the die. */ Use the passed type or decode it from the die. */
@@ -8402,9 +9056,28 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) @@ -8402,9 +9059,28 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
if (attr) if (attr)
{ {
var_decode_location (attr, sym, cu); var_decode_location (attr, sym, cu);
@ -6871,7 +6874,7 @@ index 4cce36b..c2f5f23 100644
else else
add_symbol_to_list (sym, cu->list_in_scope); add_symbol_to_list (sym, cu->list_in_scope);
} }
@@ -8534,7 +9207,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) @@ -8534,7 +9210,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
add_symbol_to_list (sym, cu->list_in_scope); add_symbol_to_list (sym, cu->list_in_scope);
break; break;
case DW_TAG_enumerator: case DW_TAG_enumerator:
@ -6880,7 +6883,7 @@ index 4cce36b..c2f5f23 100644
attr = dwarf2_attr (die, DW_AT_const_value, cu); attr = dwarf2_attr (die, DW_AT_const_value, cu);
if (attr) if (attr)
{ {
@@ -8558,6 +9231,16 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) @@ -8558,6 +9234,16 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
SYMBOL_CLASS (sym) = LOC_TYPEDEF; SYMBOL_CLASS (sym) = LOC_TYPEDEF;
add_symbol_to_list (sym, &global_symbols); add_symbol_to_list (sym, &global_symbols);
break; break;
@ -6897,7 +6900,7 @@ index 4cce36b..c2f5f23 100644
default: default:
/* Not a tag we recognize. Hopefully we aren't processing /* Not a tag we recognize. Hopefully we aren't processing
trash data, but since we must specifically ignore things trash data, but since we must specifically ignore things
@@ -8571,8 +9254,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) @@ -8571,8 +9257,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
/* For the benefit of old versions of GCC, check for anonymous /* For the benefit of old versions of GCC, check for anonymous
namespaces based on the demangled name. */ namespaces based on the demangled name. */
if (!processing_has_namespace_info if (!processing_has_namespace_info
@ -6907,7 +6910,7 @@ index 4cce36b..c2f5f23 100644
cp_scan_for_anonymous_namespaces (sym); cp_scan_for_anonymous_namespaces (sym);
} }
return (sym); return (sym);
@@ -8823,12 +9505,18 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu) @@ -8823,12 +9508,18 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
case DW_TAG_namespace: case DW_TAG_namespace:
this_type = read_namespace_type (die, cu); this_type = read_namespace_type (die, cu);
break; break;
@ -6926,7 +6929,7 @@ index 4cce36b..c2f5f23 100644
return this_type; return this_type;
} }
@@ -8910,10 +9598,100 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu) @@ -8910,10 +9601,100 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
So it does not need a prefix. */ So it does not need a prefix. */
return ""; return "";
default: default:
@ -7028,7 +7031,7 @@ index 4cce36b..c2f5f23 100644
/* Return a newly-allocated string formed by concatenating PREFIX and /* Return a newly-allocated string formed by concatenating PREFIX and
SUFFIX with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then SUFFIX with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null,
@@ -8963,17 +9741,111 @@ sibling_die (struct die_info *die) @@ -8963,17 +9744,111 @@ sibling_die (struct die_info *die)
return die->sibling; return die->sibling;
} }
@ -7146,7 +7149,7 @@ index 4cce36b..c2f5f23 100644
} }
/* Get name of a die, return NULL if not found. */ /* Get name of a die, return NULL if not found. */
@@ -10200,11 +11072,11 @@ dwarf2_get_ref_die_offset (struct attribute *attr) @@ -10200,11 +11075,11 @@ dwarf2_get_ref_die_offset (struct attribute *attr)
return 0; return 0;
} }
@ -7161,7 +7164,7 @@ index 4cce36b..c2f5f23 100644
{ {
if (attr->form == DW_FORM_sdata) if (attr->form == DW_FORM_sdata)
return DW_SND (attr); return DW_SND (attr);
@@ -11009,8 +11881,6 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, @@ -11009,8 +11884,6 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
{ {
gdb_byte *mac_ptr, *mac_end; gdb_byte *mac_ptr, *mac_end;
struct macro_source_file *current_file = 0; struct macro_source_file *current_file = 0;
@ -7170,7 +7173,7 @@ index 4cce36b..c2f5f23 100644
if (dwarf2_per_objfile->macinfo.buffer == NULL) if (dwarf2_per_objfile->macinfo.buffer == NULL)
{ {
@@ -11018,29 +11888,19 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, @@ -11018,29 +11891,19 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
return; return;
} }
@ -7205,7 +7208,7 @@ index 4cce36b..c2f5f23 100644
} }
macinfo_type = read_1_byte (abfd, mac_ptr); macinfo_type = read_1_byte (abfd, mac_ptr);
@@ -11051,92 +11911,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, @@ -11051,92 +11914,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
/* A zero macinfo type indicates the end of the macro /* A zero macinfo type indicates the end of the macro
information. */ information. */
case 0: case 0:
@ -7299,7 +7302,7 @@ index 4cce36b..c2f5f23 100644
case DW_MACINFO_define: case DW_MACINFO_define:
case DW_MACINFO_undef: case DW_MACINFO_undef:
@@ -11151,31 +11926,19 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, @@ -11151,31 +11929,19 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
mac_ptr += bytes_read; mac_ptr += bytes_read;
if (! current_file) if (! current_file)
@ -7342,7 +7345,7 @@ index 4cce36b..c2f5f23 100644
} }
break; break;
@@ -11189,22 +11952,9 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, @@ -11189,22 +11955,9 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read); file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
mac_ptr += bytes_read; mac_ptr += bytes_read;
@ -7368,7 +7371,7 @@ index 4cce36b..c2f5f23 100644
} }
break; break;
@@ -11258,7 +12008,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, @@ -11258,7 +12011,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
} }
break; break;
} }
@ -7377,7 +7380,7 @@ index 4cce36b..c2f5f23 100644
} }
/* Check if the attribute's form is a DW_FORM_block* /* Check if the attribute's form is a DW_FORM_block*
@@ -11318,6 +12068,34 @@ attr_form_is_constant (struct attribute *attr) @@ -11318,6 +12071,34 @@ attr_form_is_constant (struct attribute *attr)
} }
} }
@ -7412,7 +7415,7 @@ index 4cce36b..c2f5f23 100644
static void static void
dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym, dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
struct dwarf2_cu *cu) struct dwarf2_cu *cu)
@@ -11347,35 +12125,25 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym, @@ -11347,35 +12128,25 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
SYMBOL_COMPUTED_OPS (sym) = &dwarf2_loclist_funcs; SYMBOL_COMPUTED_OPS (sym) = &dwarf2_loclist_funcs;
SYMBOL_LOCATION_BATON (sym) = baton; SYMBOL_LOCATION_BATON (sym) = baton;
} }
@ -7463,7 +7466,7 @@ index 4cce36b..c2f5f23 100644
} }
} }
@@ -11663,6 +12431,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs) @@ -11663,6 +12434,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
return ofs_lhs->offset == ofs_rhs->offset; return ofs_lhs->offset == ofs_rhs->offset;
} }
@ -7495,7 +7498,7 @@ index 4cce36b..c2f5f23 100644
/* Set the type associated with DIE to TYPE. Save it in CU's hash /* Set the type associated with DIE to TYPE. Save it in CU's hash
table if necessary. For convenience, return TYPE. */ table if necessary. For convenience, return TYPE. */
@@ -11671,6 +12464,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu) @@ -11671,6 +12467,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
{ {
struct dwarf2_offset_and_type **slot, ofs; struct dwarf2_offset_and_type **slot, ofs;
@ -7504,7 +7507,7 @@ index 4cce36b..c2f5f23 100644
if (cu->type_hash == NULL) if (cu->type_hash == NULL)
{ {
gdb_assert (cu->per_cu != NULL); gdb_assert (cu->per_cu != NULL);
@@ -11813,23 +12608,13 @@ show_dwarf2_cmd (char *args, int from_tty) @@ -11813,23 +12611,13 @@ show_dwarf2_cmd (char *args, int from_tty)
cmd_show_list (show_dwarf2_cmdlist, from_tty, ""); cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
} }
@ -7532,7 +7535,7 @@ index 4cce36b..c2f5f23 100644
} }
/* munmap debug sections for OBJFILE, if necessary. */ /* munmap debug sections for OBJFILE, if necessary. */
@@ -11838,15 +12623,15 @@ static void @@ -11838,15 +12626,15 @@ static void
dwarf2_per_objfile_free (struct objfile *objfile, void *d) dwarf2_per_objfile_free (struct objfile *objfile, void *d)
{ {
struct dwarf2_per_objfile *data = d; struct dwarf2_per_objfile *data = d;
@ -7557,7 +7560,7 @@ index 4cce36b..c2f5f23 100644
} }
void _initialize_dwarf2_read (void); void _initialize_dwarf2_read (void);
@@ -11854,6 +12639,7 @@ void _initialize_dwarf2_read (void); @@ -11854,6 +12642,7 @@ void _initialize_dwarf2_read (void);
void void
_initialize_dwarf2_read (void) _initialize_dwarf2_read (void)
{ {

View File

@ -14,7 +14,7 @@ Version: 7.0
# 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: 4%{?_with_upstream:.upstream}%{?dist} Release: 5%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+ License: GPLv3+
Group: Development/Debuggers Group: Development/Debuggers
@ -56,7 +56,7 @@ Source3: gdb-gstack.man
# libstdc++ pretty printers from GCC SVN HEAD (4.5 experimental). # libstdc++ pretty printers from GCC SVN HEAD (4.5 experimental).
%define libstdcxxpython libstdc++-v3-python-r151798 %define libstdcxxpython libstdc++-v3-python-r151798
Source4: %{libstdcxxpython}.tar.xz Source4: %{libstdcxxpython}.tar.bz2
# Work around out-of-date dejagnu that does not have KFAIL # Work around out-of-date dejagnu that does not have KFAIL
Patch1: gdb-6.3-rh-dummykfail-20041202.patch Patch1: gdb-6.3-rh-dummykfail-20041202.patch
@ -449,7 +449,7 @@ This package provides a program that allows you to run GDB on a different machin
%setup -q -n %{gdb_src} %setup -q -n %{gdb_src}
# libstdc++ pretty printers. # libstdc++ pretty printers.
xz -dc %{SOURCE4} | tar xf - tar xjf %{SOURCE4}
# Files have `# <number> <file>' statements breaking VPATH / find-debuginfo.sh . # Files have `# <number> <file>' statements breaking VPATH / find-debuginfo.sh .
rm -f gdb/ada-exp.c gdb/ada-lex.c gdb/c-exp.c gdb/cp-name-parser.c gdb/f-exp.c rm -f gdb/ada-exp.c gdb/ada-lex.c gdb/c-exp.c gdb/cp-name-parser.c gdb/f-exp.c
@ -642,7 +642,14 @@ CFLAGS="$CFLAGS -O0 -ggdb2"
%else %else
--without-python \ --without-python \
%endif %endif
$(: Workaround rpm.org#76, BZ 508193 on recent OSes. ) \
$(: RHEL-5 was the last not providing %{dist}. ) \
$(: RHEL-5 librpm has incompatible API. ) \
%if 0%{!?dist:1}
--without-rpm \
%else
--with-rpm=librpm.so.0 \ --with-rpm=librpm.so.0 \
%endif
%ifarch ia64 %ifarch ia64
--with-libunwind \ --with-libunwind \
%else %else
@ -865,6 +872,10 @@ fi
%endif %endif
%changelog %changelog
* Fri Oct 23 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0-5
- Make the package buildable on RHEL-5/CentOS-5 (without librpm there).
- archer-jankratochvil-fedora12 commit: 5b73ea6a0f74e63db3b504792fc1d37f548bdf5c
* Fri Oct 23 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0-4 * Fri Oct 23 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0-4
- Fix rpm --excludedocs (BZ 515998). - Fix rpm --excludedocs (BZ 515998).

View File

@ -1,2 +1,2 @@
1e3a26040dcdd3579d75967085eb92b9 libstdc++-v3-python-r151798.tar.xz
3386a7b69c010785c920ffc1e9cb890a gdb-7.0.tar.bz2 3386a7b69c010785c920ffc1e9cb890a gdb-7.0.tar.bz2
7507540c50a1edeb2fc22a37bc4a08b8 libstdc++-v3-python-r151798.tar.bz2