* dwarf2read.c (dwarf2_per_objfile): New member types,
signatured_types.
(TYPES_SECTION): New macro.
(dwarf2_per_cu_data): Change size of length field from 30 bits
to 29 bits. New member from_debug_types.
(signatured_type): New struct.
(struct attribute): New union member signatured_type.
(DW_SIGNATURED_TYPE): New macro.
(dwarf2_attr_no_follow): New function.
(read_type_unit_scope): New function.
(follow_die_ref_or_sig, follow_die_sig): New functions.
(dwarf2_locate_sectoins): Handle .debug_types.
(dwarf2_build_psymtabs): Read .debug_types.
(read_type_comp_unit_head): New function.
(hash_type_signature, eq_type_signature): New functions.
(create_debug_types_hash_table): New function.
(lookup_signatured_type): New function.
(process_psymtab_comp_unit): Handle type units too.
(process_type_comp_unit, build_type_psymtabs): New functions.
(dwarf2_build_psymtabs_hard): Call build_type_psymtabs.
(load_partial_comp_unit): Assert not called for a type unit.
(skip_one_die): Handle DW_FORM_sig8.
(queue_comp_unit): Don't call load_full_comp_unit here, or
update read_in_chain.
(psymtab_to_symtab_1): Call read_signatured_type_at_offset for
type units, or load_full_comp_unit for comp units after
queue_comp_unit returns.
(load_full_comp_unit): Assert not called for type units.
(load_full_comp_unit): Update read_in_chain here.
(process_die): Handle DW_TAG_type_unit.
(read_structure_type): Look for signatured types.
(read_enumeration_type): Ditto.
(init_cu_die_reader): Handle .debug_types.
(read_comp_unit): Assert hash not computed yet.
(read_die_and_children): Expand debugging printf to handle .debug_types.
(read_partial_die): Handle DW_TAG_type_unit:
(find_patial_die): Handle .debug_types.
(read_attribute_value): Handle DW_FORM_sig8.
(die_type): Call follow_die_ref_or_sig instead of follow_die_ref.
(die_containing_type): Ditto.
(dwarf_tag_name): Handle DW_TAG_type_unit.
(dwarf_attr_name): Handle DW_AT_signature.
(dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
DW_FORM_flag_present, DW_FORM_sig8.
(dump_die_shallow): Handlel DW_FORM_sig8.
(maybe_queue_comp_unit): Change return type to int from void.
All callers updated.
(follow_die_ref): Handle .debug_types.
(lookup_signatured_type_at_offset): New function.
(read_signatured_type_at_offset): New function.
(read_signatured_type): New function.
* features/gdb-target.dtd (target): Accept an optional 'osabi'
element.
(osabi): Define element.
* features/mips-linux.xml (target): Add an osabi subelement set to
GNU/Linux.
* regformats/regdat.sh (xmlarch, xmlosabi): New variables. Don't
write the architecture into $xmltarget. Store it in $xmlarch.
Handle the 'osabi' type. Handle outputting the osabi element of
the target description.
* regformats/reg-x86-64-linux.dat (osabi): Set to GNU/Linux.
* regformats/reg-i386-linux.dat (osabi): Set to GNU/Linux.
* target-descriptions.h (tdesc_osabi, set_tdesc_osabi): Declare.
* target-descriptions.c (struct target_desc) <osabi>: New field.
(tdesc_osabi): New function.
(set_tdesc_osabi): New function.
* xml-tdesc.c: Include osabi.h.
(tdesc_end_osabi): New.
(target_children): Parse "osabi" elements.
* arch-utils.c (gdbarch_info_fill): Try to get the osabi from the
target description if the user didn't override it or it is not
extractable from the bfd. If that still fails, fallback to the
configured in default.
* osabi.h (osabi_from_tdesc_string): Declare.
* osabi.c (osabi_from_tdesc_string): New.
(gdbarch_lookup_osabi): Return GDB_OSABI_UNKNOWN instead of
GDB_OSABI_DEFAULT.
* NEWS: Mention that target descriptions can now describe the
target OS ABI.
2009-07-20 Pedro Alves <pedro@codesourcery.com>
* gdb.texinfo (Target Description Format): Mention the new <osabi>
optional element.
(subsection OS ABI): New subsection.
(gnu_mourn_inferior): Use the passed in target_ops
instead of the gnu_ops global.
(gnu_create_inferior): Inline `attach_to_child', use the passed in
target_ops instead of the gnu_ops global.
(gnu_can_run): Delete.
(gnu_attach): Use the passed in target_ops instead of the gnu_ops
global.
(gnu_detach): Ditto.
(gnu_prepare_to_store, gnu_open): Delete.
(gnu_store_registers, gnu_fetch_registers): Delete declarations.
(gnu_ops): Delete.
(init_gnu_ops): Delete.
(gnu_target): New.
(_initialize_gnu_nat): Don't call init_gnu_ops or add_target here.
* gnu-nat.h (gnu_target): Declare.
* i386gnu-nat.c (gnu_fetch_registers, gnu_store_registers): Make
static.
(_initialize_i386gnu_nat): New.
cache every time before calling target_wait.
(handle_inferior_event): Make static. Always reset waiton_ptid.
Never call registers_changed.
(prepare_to_wait): Do not invaliate registers or overlay cache
(moved to wait_for_inferior). Do not reset waiton_ptid (moved
to handle_inferior_event).
(fetch_inferior_event): Remove check for always-true condition.
* infrun.c (handle_inferior_event): Remove an execution_direction
check in the "check for subroutine calls" test, and add some
additional handling for reverse-stepping through shared libraries.
* config/tc-i386.c (md_assemble): Update operand types.
(update_imm): Updated.
(finalize_imm): Update the first 2 immediate operands only
for instructions with 2 operands or more.
(_bfd_mips_elf_size_dynamic_sections): For CPUs without load
interlocking, the last PLT entry needs a nop in the branch delay slot.
(_bfd_mips_elf_finish_dynamic_symbol): For CPUs with load itnerlocking,
output the last two PLT entries in reverse order.
* ld-mips-elf/pic-and-nonpic-3b.dd,
ld-mips-elf/pic-and-nonpic-5b.dd,
ld-mips-elf/pic-and-nonpic-6-o32.dd: Updated to use new PLT entries.
* layout.h: #include <map>.
(class Kept_section): Change from struct to class. Add accessors
and setters. Add section size to Comdat_group mapping. Change
Comdat_group to std::map. Add is_comdat_ field. Add
linkonce_size field in union.
(class Layout): Update declaration of find_or_add_kept_section.
Don't declare find_kept_object.
* layout.cc (Layout::find_or_add_kept_section): Remove candidate
parameter. Add object, shndx, is_comdat, and is_group_name
parameters. Change all callers. Adjust for new Kept_section.
(Layout::find_kept_object): Remove.
* object.cc (Sized_relobj::include_section_group): Update use of
Kept_section. Rename secnum to shndx. Only record
Kept_comdat_section if sections are the same size.
(Sized_relobj::include_linkonce_section): Update use of
Kept_section. Only record Kept_comdat_section if sections are the
same size. Set size of linkonce section.
(Sized_relobj::map_to_kept_section): Update call to
get_kept_comdat_section.
* object.h (class Sized_relobj): Rename fields in
Kept_comdat_section to drop trailing underscores; change object
field to Relobj*. Change Kept_comdat_section_table to store
struct rather than pointer.
(Sized_relobj::set_kept_comdat_section): Remove kept parameter.
Add kept_object and kept_shndx parameters. Change all callers.
(Sized_relobj::get_kept_comdat_section): Change return type to
bool. Add kept_object and kept_shndx parameters. Change all
callers.
* plugin.cc (Pluginobj::include_comdat_group): Update call to
Layout::find_or_add_kept_section.
2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_relocate_section): Don't get local
STT_GNU_IFUNC symbol for relocatable link.
* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
ld/testsuite/
2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
* ld-ifunc/ifunc-5r-local-i386.d: New.
* ld-ifunc/ifunc-5r-local-x86-64.d: Likewise.
* dwarf2read.c (struct die_reader_specs): New struct.
(locate_pdi_sibling): New arg buffer. All callers updated.
(load_partial_dies, read_partial_die): Ditto.
(read_8_bytes): Change return type to ULONGEST.
(read_comp_unit): Delete arg abfd. All callers updated.
(read_die_and_children_1): Delete args abfd, cu. New arg reader.
All callers updated.
(read_die_and_children, read_die_and_siblings): Ditto.
(read_full_die): Ditto. Move closer to callers.
(skip_one_die): New arg buffer. All callers updated.
(load_full_comp_unit): Change return type to void. All callers
updated.
(partial_read_comp_unit_head): New args buffer, buffer_size.
All callers updated.
(process_psymtab_comp_unit): New function, split out from
dwarf2_build_psymtabs_hard.
(dwarf2_build_psymtabs_hard): Call it.
(load_partial_comp_unit): Renamed from load_comp_unit.
All callers updated.
(skip_children): New arg buffer. All callers updated.
(init_cu_die_reader): New function.
(is_ref_attr): New function.
(dwarf2_get_ref_die_offset): Call it.
(alloc_one_comp_unit): New function.