forked from Imagelibrary/binutils-gdb
gdb/
* configure.ac (CC_HAS_LONG_LONG): Replace by AC_MSG_ERROR. * defs.h (LONGEST, ULONGEST): Remove conditionalization for CC_HAS_LONG_LONG. * dwarf2-frame.c (DW64_CIE_ID): Likewise. * dwarf2read.c (extract_cu_value): Remove the function. (create_cus_from_index_list): Make the return type void, inline the extract_cu_value caller, include new gdb_static_assert. (create_cus_from_index): Make the return type void, update the function comment, update the create_cus_from_index_list caller. (create_signatured_type_table_from_index): Make the return type void, inline the extract_cu_value caller, include new gdb_static_assert. (dwarf2_read_index): Update the create_cus_from_index and create_signatured_type_table_from_index caller. * printcmd.c (ui_printf): Remove conditionalizations for CC_HAS_LONG_LONG. * config.in: Regenerate. * configure: Regenerate. gdb/doc/ * gdbint.texinfo (Host Definition): Remove CC_HAS_LONG_LONG.
This commit is contained in:
@@ -2356,33 +2356,10 @@ dw2_get_primary_cu (int index)
|
||||
return dwarf2_per_objfile->all_comp_units[index];
|
||||
}
|
||||
|
||||
/* A helper function that knows how to read a 64-bit value in a way
|
||||
that doesn't make gdb die. Returns 1 if the conversion went ok, 0
|
||||
otherwise. */
|
||||
|
||||
static int
|
||||
extract_cu_value (const char *bytes, ULONGEST *result)
|
||||
{
|
||||
if (sizeof (ULONGEST) < 8)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Ignore the upper 4 bytes if they are all zero. */
|
||||
for (i = 0; i < 4; ++i)
|
||||
if (bytes[i + 4] != 0)
|
||||
return 0;
|
||||
|
||||
*result = extract_unsigned_integer (bytes, 4, BFD_ENDIAN_LITTLE);
|
||||
}
|
||||
else
|
||||
*result = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* A helper for create_cus_from_index that handles a given list of
|
||||
CUs. */
|
||||
|
||||
static int
|
||||
static void
|
||||
create_cus_from_index_list (struct objfile *objfile,
|
||||
const gdb_byte *cu_list, offset_type n_elements,
|
||||
struct dwarf2_section_info *section,
|
||||
@@ -2396,9 +2373,9 @@ create_cus_from_index_list (struct objfile *objfile,
|
||||
struct dwarf2_per_cu_data *the_cu;
|
||||
ULONGEST offset, length;
|
||||
|
||||
if (!extract_cu_value (cu_list, &offset)
|
||||
|| !extract_cu_value (cu_list + 8, &length))
|
||||
return 0;
|
||||
gdb_static_assert (sizeof (ULONGEST) >= 8);
|
||||
offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
|
||||
length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
|
||||
cu_list += 2 * 8;
|
||||
|
||||
the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
|
||||
@@ -2412,15 +2389,12 @@ create_cus_from_index_list (struct objfile *objfile,
|
||||
the_cu->is_dwz = is_dwz;
|
||||
dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Read the CU list from the mapped index, and use it to create all
|
||||
the CU objects for this objfile. Return 0 if something went wrong,
|
||||
1 if everything went ok. */
|
||||
the CU objects for this objfile. */
|
||||
|
||||
static int
|
||||
static void
|
||||
create_cus_from_index (struct objfile *objfile,
|
||||
const gdb_byte *cu_list, offset_type cu_list_elements,
|
||||
const gdb_byte *dwz_list, offset_type dwz_elements)
|
||||
@@ -2433,21 +2407,20 @@ create_cus_from_index (struct objfile *objfile,
|
||||
dwarf2_per_objfile->n_comp_units
|
||||
* sizeof (struct dwarf2_per_cu_data *));
|
||||
|
||||
if (!create_cus_from_index_list (objfile, cu_list, cu_list_elements,
|
||||
&dwarf2_per_objfile->info, 0, 0))
|
||||
return 0;
|
||||
create_cus_from_index_list (objfile, cu_list, cu_list_elements,
|
||||
&dwarf2_per_objfile->info, 0, 0);
|
||||
|
||||
if (dwz_elements == 0)
|
||||
return 1;
|
||||
return;
|
||||
|
||||
dwz = dwarf2_get_dwz_file ();
|
||||
return create_cus_from_index_list (objfile, dwz_list, dwz_elements,
|
||||
&dwz->info, 1, cu_list_elements / 2);
|
||||
create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
|
||||
cu_list_elements / 2);
|
||||
}
|
||||
|
||||
/* Create the signatured type hash table from the index. */
|
||||
|
||||
static int
|
||||
static void
|
||||
create_signatured_type_table_from_index (struct objfile *objfile,
|
||||
struct dwarf2_section_info *section,
|
||||
const gdb_byte *bytes,
|
||||
@@ -2470,9 +2443,10 @@ create_signatured_type_table_from_index (struct objfile *objfile,
|
||||
ULONGEST offset, type_offset_in_tu, signature;
|
||||
void **slot;
|
||||
|
||||
if (!extract_cu_value (bytes, &offset)
|
||||
|| !extract_cu_value (bytes + 8, &type_offset_in_tu))
|
||||
return 0;
|
||||
gdb_static_assert (sizeof (ULONGEST) >= 8);
|
||||
offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
|
||||
type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
|
||||
BFD_ENDIAN_LITTLE);
|
||||
signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
|
||||
bytes += 3 * 8;
|
||||
|
||||
@@ -2495,8 +2469,6 @@ create_signatured_type_table_from_index (struct objfile *objfile,
|
||||
}
|
||||
|
||||
dwarf2_per_objfile->signatured_types = sig_types_hash;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Read the address map data from the mapped index, and use it to
|
||||
@@ -2793,9 +2765,8 @@ dwarf2_read_index (struct objfile *objfile)
|
||||
}
|
||||
}
|
||||
|
||||
if (!create_cus_from_index (objfile, cu_list, cu_list_elements,
|
||||
dwz_list, dwz_list_elements))
|
||||
return 0;
|
||||
create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
|
||||
dwz_list_elements);
|
||||
|
||||
if (types_list_elements)
|
||||
{
|
||||
@@ -2809,10 +2780,8 @@ dwarf2_read_index (struct objfile *objfile)
|
||||
section = VEC_index (dwarf2_section_info_def,
|
||||
dwarf2_per_objfile->types, 0);
|
||||
|
||||
if (!create_signatured_type_table_from_index (objfile, section,
|
||||
types_list,
|
||||
types_list_elements))
|
||||
return 0;
|
||||
create_signatured_type_table_from_index (objfile, section, types_list,
|
||||
types_list_elements);
|
||||
}
|
||||
|
||||
create_addrmap_from_index (objfile, &local_map);
|
||||
|
||||
Reference in New Issue
Block a user